Команда оболочки Ansible `pod2man` не найдена

#shell #ansible #archlinux #pacman-package-manager

#оболочка #ansible #archlinux #pacman-менеджер пакетов

Вопрос:

Я пытаюсь установить pacaur с помощью скрипта через Ansible:

 curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash
  

С помощью команды ansible

 ansible 192.168.1.2 -m shell -a "curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash" 
  

Но я pacman жалуюсь pod2man на отсутствие. Похоже, проблема с ПУТЕМ к команде ansible.

Запуск команды на компьютере напрямую с использованием ssh работает корректно.


Вот результат: ansible -m all shell -a 'echo $PATH'

 localhost | SUCCESS | rc=0 >>
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

192.168.1.2| SUCCESS | rc=0 >>
/usr/bin:/bin:/usr/sbin:/sbin
  

Комментарии:

1. Нужно ли это делать специальным способом (в этом случае самый быстрый способ решить проблему — войти по ssh и установить его вручную), или вы согласны с написанием сборника пьес? Вы пробовали использовать command or shell вместо этого? Как насчет запуска скрипта, который сначала повторяет PATH ?

2. более вероятный ПУТЬ sudo. pacaur_install.sh вызывает pacman через sudo. Похоже, что pod2man не находится в ПУТИ sudo. Вам нужно либо настроить сценарий установки, чтобы задать ПУТЬ в вызове sudo, либо настроить ПУТЬ в sudoers.

3. @XiongChiamiov причина, по которой мне нужен ansible, заключается в том, что на самом деле мне нужно установить его на нескольких машинах :). Однако я опубликовал результат скрипта, повторяющий PATH @sborsky, который, по-видимому, является причиной. этот вопрос кажется связанным. Хотя при обычном ssh я получаю правильное PATH .

Ответ №1:

free-form Параметр модуля сценария ожидает

путь к локальному файлу скрипта, за которым следуют необязательные аргументы.

Так ansible 192.168.1.2 -m script -a "https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh" не должно работать. Это должно сработать, если вы загрузите скрипт на свой хост управления Ansible и установите параметр произвольной формы в локальный путь скрипта.

Комментарии:

1. Вы правы. Я вставил неправильную команду ansible. Теперь я отредактировал текст вопроса. Извините и спасибо.

2. Вы проверили, что скрипт является исполняемым?

3. Также script является правильным модулем, чем. shell модуль значительно лучше.

4. Вы правы. Я соответствующим образом отредактировал тело после тестирования правильной команды. Все еще проблема.

5. Вам необходимо установить PATH через docs.ansible.com/ansible/playbooks_environment.html или задайте полный путь в скрипте.

Ответ №2:

Как сообщается в комментариях, проблема заключается в том, что при переключении пользователей sudo происходит очистка PATH (подробности см. В Этом вопросе ServerFault).

Специальная команда для экспорта локального PATH файла на хосты, которую я предлагаю, кажется немного хакерской, но она работает (она использует --extra-vars опцию ansible command вместе с введением переменной Jinja)

 ansible all -m shell -a "export PATH={{path}}; curl -s https://gist.githubusercontent.com/Tadly/0e65d30f279a34c33e9b/raw/pacaur_install.sh | bash" -e path=$PATH
  

Вы также можете использовать {{ lookup('env', 'PATH') }} для пересылки PATH .