Ansible: изменить расположение плейбуков - PullRequest
1 голос
/ 08 мая 2020

У меня есть все playbooks в / etc / ansible / playbooks, и я хочу выполнить их где угодно на p c

Я попытался настроить переменную playbook_dir в ansible .cfg

[defaults]
playbook_dir = /etc/ansible/playbooks/

и пытался поместить переменную ANSIBLE_PLAYBOOK_DIR в ~ / .bashr c

export ANSIBLE_PLAYBOOK_DIR=/etc/ansible/playbooks/

, но я получил ту же ошибку в обоих случаях:

nor@nor:~$ ansible-playbook test3.yaml
ERROR! the playbook: test3.yaml could not be found

Это мой ansible версия:

ansible 2.9.7
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/nor/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.3 (default, Oct  7 2019, 12:56:13) [GCC 8.3.0]

Кто-нибудь знает проблему и как ее решить?

Ответы [ 3 ]

0 голосов
/ 09 мая 2020

Согласно https://manpages.debian.org/testing/ansible/ansible-inventory.1.en.html:

- playbook-dir 'BASEDIR'

Поскольку этот инструмент не использует playbooks, используйте его как подключаемый каталог playbook. Это устанавливает относительный путь для многих функций, включая роли / group_vars / et c.

Это означает, что ANSIBLE_PLAYBOOK_DIR не используется в качестве замены для указания абсолютного / относительного пути к ваш playbook, но он сообщает playbook, где искать роли, переменные хоста / группы и т. д. c.

Цель, которую вы пытаетесь достичь, не имеет решения на стороне ansible, вам необходимо добиться этого, соответствующим образом настроив свой профиль оболочки. установите следующее в вашем .bashr c файле:

export playbooks_dir=/path/to/playbooks

при вызове playbook используйте ansible-playbook $playbooks_dir/test3.yml

0 голосов
/ 13 мая 2020

Как уже говорили другие, ANSIBLE_PLAYBOOK_DIR предназначен для установки относительного каталога для ролей /, файлов / и т.д. c. ИМХО, это не очень полезно.

Если я понимаю оп, вот как я добился sh аналогичного результата со всеми версиями ansible ...

PPWD=$PWD cd /my/playbook/dir && ansible-playbook my_playbook.yml; cd $PPWD

Объяснено ,

PPWD = $ PWD - это запомнить текущий / текущий / предыдущий рабочий каталог, затем cd / my / playbook / dir и, если это удастся, запустить ansible -playbook my_playbook.yml (оттуда все относительно ); в любом случае всегда возвращаться к предыдущему рабочему каталогу

0 голосов
/ 08 мая 2020

PLAYBOOK_DIR говорит:

«Ряд интерфейсов командной строки, не относящихся к playbook, имеют аргумент --playbook-dir; это устанавливает для него значение по умолчанию».

К сожалению, в do c нет намека на то, что может быть "не-playbook CLI". ansible -playbook, очевидно, не входит в их число.


FWIW. Если вы ищете платформу, ориентированную на командную строку, попробуйте ansible -runner . Например, экспортируйте расположение private_data_dir
shell> export ansible_private=/path/to/<private-data-dir>

Затем запустите playbook

shell> ansible-runner -p playbook.yml run $ansible_private
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...