Назад | Перейти на главную страницу

Могу ли я использовать ansible для запуска службы jboss в режиме домена?

я использовал sh /usr/local/jboss/bin/domain.sh вручную, и jboss работает нормально.

Когда я использую ansible для автоматического запуска jboss, журнал jboss всегда показывает "Container is down".

файл /root/startup_jboss.sh :

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

Мой startup.yml:

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

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

Не знаю почему?

Кто-нибудь может мне помочь?

Спасибо.

С уважением, облако

Возникшая ошибка связана с тем, что контекст выполнения domain.shСценарий отличается, когда вы вошли в систему и когда он удаленно выполняется Ansible. Посмотри это ТАК вопрос Больше подробностей.

Вам необходимо заполнить /root/startup_jboss.shскрипт с пропущенными переменными окружения для правильной работы. Вы можете протестировать его в тех же условиях, что и ansible, с помощью удаленной команды SSH:

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

Вы может используйте Ansible для выполнения сценария оболочки на удаленном сервере, но я не думаю, что это правильное решение в вашем случае использования.

Ansible - это инструмент управления конфигурацией, предназначенный для описания желаемые состояния для ваших ресурсов (файлов, процессов, прав, ...) и убедитесь, что идемпотентность (вносятся только необходимые изменения, вы можете запускать свой скрипт несколько раз, и вы всегда получаете то же самое штат). В вашем случае вы хотите, чтобы JBoss работал в доменном режиме на вашем удаленном сервере. Я бы решил, как бы инкапсулировать domain.sh сценарий внутри в этом скрипт, чтобы он работал как служба и в конечном итоге настроить эту службу для запуска при запуске сервера. Я не знаю, какой у вас дистрибутив linux, но вы можете посмотреть Вот для примера init.d скрипт для Debian.

В твоем startup.yml playbook, вы сначала скопируете init.d скрипт, а затем убедитесь, что ваша служба запущена (Ansible предоставляет собственный модуль для управления сервисами).