Me encanta el olor de las máquinas nuevas en la mañana.
Estoy automatizando un flujo de trabajo de creación de máquinas que involucra varios sistemas separados en mi infraestructura, algunos de los cuales involucran scripts perl de 15 años en hosts Solaris, sistemas Linux de arranque PXE y Powershell en Windows Server 2008.
Puedo guiar cada una de las partes individuales, e integrar la automatización de Linux y Unix es bastante sencillo, pero no sé cómo vincular de manera confiable los scripts de Powershell con el resto de los procesos.
Preferiría que el proceso comenzara en un host Linux, ya que imagino que terminará como una aplicación web que vive en un servidor Apache, pero si necesita comenzar en Windows, dudo que esté de acuerdo con eso.
Idealmente me gustaría algo similar a psexec para que Linux se ejecute contra Windows, pero Cygwin parece responder a esa dirección , y aunque aprecio todo el arduo trabajo que hicieron, nunca se sintió bien , Si sabes a lo que me refiero. Es ideal para un escritorio y ofrece mucha funcionalidad, pero siento que los servidores de Windows deberían tratarse como servidores de Windows y no como máquinas Unix bastardas (que, por cierto, es mi argumento en contra de los servidores OSX, y en realidad son Unix) . De todos modos, no quiero ir con Cygwin a menos que sea la última y única opción.
Entonces, supongo que lo que pregunto es si hay una manera de ejecutar trabajos en máquinas Windows desde Linux. Sin Cygwin Estoy abierto a ideas y sugerencias, incluyendo "Mira idiota, todos usan Cygwin, así que aguanta y lidia con eso". ¡Gracias por adelantado!
fuente
También puede comprar software multiplataforma de programación o automatización de flujo de trabajo que puede iniciar scripts nativos en muchos hosts en función de acciones anteriores, o incluso sus resultados devueltos. Las grandes empresas usan software como Tivoli, UC4, Espresso (CA dSeries, ahora) que hace esto, y lo he usado en grandes empresas que necesitaban hacer este tipo de cosas. Para su información, a menudo tienen soporte nativo para cosas como trabajos de Oracle, para darle una idea del precio que podría estar viendo.
(En mi trabajo anterior, también usaban Cygwin de todos modos , para poder usar los mismos scripts de Perl sin modificaciones cuando las cargas de trabajo se movían entre plataformas. Mucha diversión).
También podría intentar crear el suyo, como sugiere @ sysadmin1138; eso sería un proyecto divertido, e incluso podría terminar siendo lo suficientemente robusto como para ser utilizable y no molestarlo a las 2 AM cuando las exportaciones financieras fracasan en el primer intento.
fuente
Usaría la función Powershell Web Access presentada en Powershell v3.0. Esto le permite usar scripts de Powershell desde un host Linux.
fuente
El servidor PowerShell le permite ingresar SSH a un servidor Windows y obtener una consola PowerShell. No lo he usado más allá de la prueba gratuita, pero mi uso informal me demostró que era un producto bastante confiable.
fuente
Qué asqueroso quieres sentirte después, porque siempre hay telnet :)
En serio, ¿por qué necesita el servidor Linux para llamar al script de PowerShell? ¿Puede rediseñar su flujo de trabajo para que el servidor Linux simplemente entregue la imagen boot.wim correcta a través de tftp a un host con arranque PXE? He tenido buena suerte en el pasado manteniendo una imagen de Windows con diferentes archivos de respuesta en un servidor de archivos de Windows y entregando una imagen de arranque WinPE personalizada usando tftpd desde un host Linux. Luego, puede hacer que el archivo de respuesta llame al script de PowerShell correcto y no tiene que lidiar con la astucia multiplataforma como Cygwin.
fuente
Podría usar algo como nrpe para ejecutar de forma remota el script de PowerShell en el host de Windows. Es posible que desee modificar sus scripts de PowerShell para devolver códigos de salida como se esperaba por nrpe, pero no hay ninguna razón por la que no pueda llamar a check_nrpe desde sus scripts en su host de Linux.
fuente
Sobre el tema de los hacks contraintuitivos , ¿ha considerado abusar del software de integración continua como una herramienta de orquestación multiplataforma?
Instale el maestro de CI donde sea más conveniente, instale el agente en su caja de Windows (ya sea esto o esto ), configure un trabajo para ejecutar su script de PowerShell (ya sea invocando directamente usando la configuración de Comando por lotes de Windows o usando un complemento si lo desea escribir / mantener su script dentro de la aplicación CI) en su agente de Windows y activar el trabajo de forma remota a través de curl o similar.
fuente
Trabajo en una gran empresa donde este problema es común. Para los procesos que actualmente admitimos, nuestro enfoque es hacer que los sistemas Unix realicen llamadas web a un servidor Windows "administrador" que ejecuta ColdFusion en IIS. Tenemos clases y funciones que se activan a partir de solicitudes GET que utilizan la directiva "cfexecute" para lanzar scripts de PowerShell específicos. Es feo pero funciona. Estamos analizando las características del servicio web powershell v3 para migrar y evitar que ColdFusion actúe como intermediario.
fuente