Posso usar ansible para iniciar o serviço jboss no modo de domínio?

1

Eu usei sh /usr/local/jboss/bin/domain.sh manualmente e o jboss funciona bem.

Quando eu uso ansible para iniciar o jboss automaticamente, o jboss log sempre mostra " Container is down ".

Arquivo /root/startup_jboss.sh :

#!/bin/bash
/bin/sh /usr/local/jboss/bin/domain.sh &

Meu startup.yml :

---
- name: Tranfser and Execute a script
  hosts: AuditReport

  tasks:
     - name: Tranfser the scipt
       command: chdir=/root /bin/sh startup_jboss.sh

Eu não sei porque?

Alguém poderia me ajudar?

Obrigado.

Atenciosamente, Cloud

    
por user2612797 06.05.2016 / 08:41

1 resposta

1

O erro encontrado está relacionado ao fato de que o contexto da execução do script domain.sh é diferente quando você está conectado e quando é executado remotamente pelo Ansible. Veja este SO pergunta para mais detalhes.

Você precisa concluir o script /root/startup_jboss.sh com as variáveis de ambiente ausentes para funcionar corretamente. Você pode testá-lo nas mesmas condições que o ansible com um comando SSH remoto:

ssh root@<your node> /root/startup_jboss.sh

Você pode usar o Ansible para executar um script de shell em um servidor remoto, mas não acho que seja a solução correta em seu caso de uso.

Ansible é uma ferramenta de Gerenciamento de Configuração projetada para descrever estados desejados para seus recursos (arquivos, processos, direitos, ...) e garantir idempotência (somente o mudanças que são necessárias são feitas, você pode executar seu script várias vezes e sempre obterá o mesmo estado ). Em seu caso de uso, você gostaria de garantir que o JBoss esteja sendo executado no modo de domínio em seu servidor remoto. A maneira como eu lidaria com isso é encapsular o script domain.sh dentro de um script init para que ele seja executado como um serviço e eventualmente configurar esse serviço para ser executado na inicialização do servidor . Eu não sei qual é a sua distribuição linux, mas você pode dar uma olhada aqui para um exemplo de um script init.d para o Debian.

No seu manual de startup.yml você copia primeiro o script init.d e, em seguida, garante que seu serviço esteja sendo executado (o Ansible fornece um módulo nativo para gerenciar serviços ).

    
por 06.05.2016 / 19:08