Команда Shell работает вручную, без использования Ansible - PullRequest
1 голос
/ 28 июня 2019

Я играю с Ansible (все еще учусь), но столкнулся с проблемой, которую не могу придумать для решения.

Я пытаюсь установить и запустить Tomcat на удаленном сервере с помощью Ansible.

Установка работает, но последний шаг, который является активацией сервера Tomcat, терпит неудачу.

Если я вручную запускаю скрипт startup.sh (как su -), используя следующую команду: bash /opt/tomcat/startup.sh, я вижу домашнюю страницу tomcat.

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

Вот задача, которую я выполняю:

   - name: Launch Tomcat
      command: bash /opt/tomcat/startup.sh
      become: true

Я пытался добавить become_user: root и become_method: sudo, но безуспешно.

Я думаю, это может быть связано с тем, как become: true обрабатывается ansible, но я не уверен.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Может быть проблема с окружающей средой.«sudo su» отличается от «su -», где

-, -l, --login Предоставляет среду, аналогичную той, которую пользователь ожидал бы при непосредственном входе в систему.

Попробуйте shell (потому что он допускает каналы, перенаправление, логические операции, ...) без become: true

shell: su - && bash /opt/tomcat/startup.sh

Убедитесь, что remote_user - это то же самое, для кого команда su - отлично работает.

0 голосов
/ 28 июня 2019

Вы также пытались использовать модуль shell вместо командного модуля?

С модулем Command команда будет выполнена без прохождения через оболочку. Как следствие, некоторые переменные, такие как $ HOME, недоступны. А также потоковые операции, такие как <,>, | и & не будет работать.

Модуль Shell запускает команду через оболочку, по умолчанию / bin / sh. Это может быть изменено с параметром исполняемого файла. Трубопровод и перенаправление здесь для этого доступны. (Источник: https://blog.confirm.ch/ansible-modules-shell-vs-command/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...