Método para integrar scripts Powershell com fluxo de trabalho não Windows?

Método para integrar scripts Powershell com fluxo de trabalho não Windows?

Adoro o cheiro de máquinas novas pela manhã.

Estou automatizando um fluxo de trabalho de criação de máquina que envolve vários sistemas separados em minha infraestrutura, alguns dos quais envolvem scripts perl de 15 anos em hosts Solaris, sistemas PXE Booting Linux e Powershell no Windows Server 2008.

Posso criar scripts para cada uma das partes individuais, e a integração da automação Linux e Unix é bastante simples, mas não sei como vincular de maneira confiável os scripts Powershell ao restante dos processos.

Eu preferiria que o processo começasse em um host Linux, pois imagino que ele acabará como um aplicativo da Web em um servidor Apache, mas se precisar começar no Windows, hesitantemente, concordo com isso.

Eu idealmente gostaria de algo nos moldes depsexecpara o Linux rodar no Windows, mas a resposta nessa direção parece serCygwin, e por mais que eu aprecie todo o trabalho duro que eles fizeram, isso nunca aconteceuparecia certo, se você souber o que quero dizer. É ótimo para um desktop e oferece muitas funcionalidades, mas acho que os servidores Windows deveriam ser tratados como servidores Windows e não como máquinas Unix bastardas (que, aliás, é meu argumento contra os servidores OSX também, e eles sãona verdadeUnix). De qualquer forma, não quero usar o Cygwin, a menos que seja a última e única opção.

Então, acho que estou perguntando se existe uma maneira de executar trabalhos em máquinas Windows a partir do Linux. Sem Cygwin. Estou aberto a ideias e sugestões, incluindo "Olha idiota, todo mundo usa Cygwin, então aguenta e lide com isso". Desde já, obrigado!

Responder1

Passei horas trabalhando nesse mesmo problema e finalmente chegou a doisviávelopções (há muitas opções inviáveis ​​por aí):

  1. Crie uma caixa do Windows com um serviço IIS hospedando uma WebAPI que seja dominada e configurada de forma que as sessões WinRM funcionem.
  2. Cygwin

Com a segunda opção, você está lutando para abrir caminho através da camada de abstração GNU/Posix para obter os bits reais do Windows. O que restringe o que você pode fazer com isso.

A primeira opção praticamente cria uma camada de abstração baseada na Web que você mesmo escreve sobre a instalação completa do Windows na pilha nativa. Se você estiver disposto a trabalhar, o servidor mestre Linux só precisa fazer um monte de chamadas curl para fazer o que precisa ser feito. No entanto, isso funciona melhor quando os scripts são disparados e esquecidos, pois construir um sistema de retorno de chamada exige muito mais esforço.

Responder2

Você também pode comprar software de agendamento multiplataforma ou automação de fluxo de trabalho que pode iniciar scripts nativos em muitos hosts, dependendo de ações anteriores ou até mesmo dos resultados retornados. Grandes empresas usam software como Tivoli, UC4, Espresso (CA dSeries, agora) que faz isso, e eu usei em grandes empresas que precisavam fazer esse tipo de coisa. Para sua informação, eles geralmente têm suporte nativo para coisas como trabalhos da Oracle, para lhe dar uma ideia do preço que você pode estar olhando.

(No meu trabalho anterior, eles também usaram Cygwinde qualquer forma, para que pudessem usar os mesmos scripts Perl sem modificação quando as cargas de trabalho fossem movidas entre plataformas. Muita diversão.)

Você também pode tentar criar o seu próprio, como sugere @sysadmin1138; isso seria um projeto divertido e pode até acabar robusto o suficiente para ser utilizável e não receber uma mensagem às 2 da manhã quando as exportações financeiras falharem na primeira tentativa.

Responder3

Eu usaria o recurso Powershell Web Access introduzido no Powershell v3.0. Isso permite que você use scripts Powershell de um host Linux.

Responder4

Quão nojento você quer se sentir depois, porque sempre há telnet :)

Sério, por que você precisa que o servidor Linux chame o script do PowerShell? Você pode redesenhar seu fluxo de trabalho para que o servidor Linux simplesmente forneça a imagem boot.wim correta via tftp para um host inicializado por PXE? Tive sorte no passado em manter uma imagem do Windows com diferentes arquivos de resposta em um servidor de arquivos do Windows e entregar uma imagem de inicialização personalizada do WinPE usando tftpd de um host Linux. Então, você pode fazer com que o arquivo de resposta chame o script correto do PowerShell e não precisa lidar com problemas de plataforma cruzada como o Cygwin.

informação relacionada