Adoro o cheiro de novas máquinas 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 direta, mas não sei como vincular de maneira confiável os scripts do Powershell ao restante dos processos.
Eu preferiria que o processo começasse em um host Linux, pois imagino que ele acabe como um aplicativo da Web que vive em um servidor Apache, mas se precisar iniciar no Windows, eu hesitantemente aceito isso.
Idealmente, eu gostaria que algo parecido com psexec para Linux fosse executado no Windows, mas a resposta nessa direção parece ser de Cygwin , e por mais que eu aprecie todo o trabalho árduo que eles fazem, nunca pareceu certo , se você souber o que quero dizer. É ótimo para um desktop e oferece muitas funcionalidades, mas acho que os servidores Windows devem ser tratados como servidores Windows e não máquinas Unix bastardizadas (que, aliás, também é o meu argumento contra os servidores OSX e na verdade são Unix) . De qualquer forma, não quero ir com Cygwin, a menos que seja a última e única opção.
Então, acho que o que estou perguntando é se existe uma maneira de executar tarefas em máquinas Windows a partir do Linux. Sem Cygwin. Estou aberto a idéias e sugestões, incluindo "Olha, idiota, todo mundo usa Cygwin, então absorva e lida com isso". Desde já, obrigado!
fonte
Você também pode comprar software de agendamento de plataforma cruzada ou de automação de fluxo de trabalho que pode iniciar scripts nativos em muitos hosts, dependendo das ações anteriores ou mesmo dos resultados retornados. Grandes empresas usam software como Tivoli, UC4, Espresso (CA dSeries, agora) que faz isso, e eu o usei em grandes empresas que precisavam fazer esse tipo de coisa. Para sua informação, muitas vezes eles têm suporte nativo para tarefas como tarefas da Oracle, para lhe dar uma idéia do preço que você está procurando.
(No meu trabalho anterior, eles também usavam o Cygwin de qualquer maneira , para que pudessem usar os mesmos scripts Perl sem modificação quando as cargas de trabalho se moviam entre plataformas. Muita diversão.)
Você também pode tentar criar o seu próprio, como sugere @ sysadmin1138; esse seria um projeto divertido e pode até ser robusto o suficiente para ser utilizável e não ser paginado às 2 da manhã, quando as exportações financeiras falharem na primeira tentativa.
fonte
Eu usaria o recurso Powershell Web Access introduzido no Powershell v3.0. Isso permite que você use scripts do Powershell a partir de um host Linux.
fonte
O servidor PowerShell permite que você faça o SSH em um servidor Windows e obtenha um console do PowerShell. Não o usei além do teste gratuito, mas meu uso informal provou que era um produto bastante confiável.
fonte
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 reprojetar seu fluxo de trabalho para que o servidor Linux simplesmente forneça a imagem boot.wim correta via tftp para um host inicializado pelo PXE? Eu tive sorte no passado, mantendo uma imagem do Windows com diferentes arquivos de resposta em um servidor de arquivos do Windows e fornecendo uma imagem de inicialização personalizada do WinPE usando o tftpd de um host Linux. Em seguida, você pode fazer com que o arquivo de resposta chame o script correto do PowerShell e não precise lidar com a excentricidade entre plataformas, como o Cygwin.
fonte
Você pode usar algo como nrpe para executar remotamente o script do PowerShell no host do Windows. Você pode modificar seus scripts do PowerShell para retornar os códigos de saída conforme o esperado pelo nrpe, mas não há motivo para não chamar o check_nrpe a partir dos scripts no seu host linux.
fonte
No tópico dos hacks contra-intuitivos , você considerou abusar do software de integração contínua como uma ferramenta de orquestração de plataforma cruzada?
Instale o mestre do IC sempre que for mais conveniente, instale o agente na sua caixa do Windows ( isto ou isto ), configure um trabalho para executar o script do PowerShell (invocando-o diretamente usando a configuração do Comando de Lote do Windows ou usando um plug-in, se desejar para escrever / manter seu script dentro do aplicativo de IC) no agente do Windows e acionar o trabalho remotamente por meio de curl ou similar.
fonte
Eu trabalho em uma grande empresa onde esse problema é comum. Para os processos que atualmente apoiamos, nossa abordagem é fazer com que os sistemas Unix façam chamadas na Web para um servidor Windows "admin" que esteja executando o ColdFusion no IIS. Temos classes e funções que são acionadas a partir de solicitações GET que usam a diretiva "cfexecute" para iniciar scripts específicos do PowerShell. É feio, mas funciona. Estamos analisando os recursos de serviço da Web do powershell v3 para migrar para que o ColdFusion atue como intermediário.
fonte