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

ansible-playbook 2.5 не находит групповые переменные при прямом указании файла инвентаризации

Я использовал скрипты ansible для некоторых однократных задач, например, выполняя первую настройку после подготовки виртуальной машины.

У меня есть сценарий, который создает временный файл инвентаризации, использует его для запуска доступной книги воспроизведения и впоследствии удаляет временный файл:

INVENTORY=$(mktemp /tmp/inst-inventory.XXXXXX)
echo "[$FLAVOR]" > $INVENTORY
echo "$HOSTNAME user_password='$USER_PASSWORD' admin_password='$ADMIN_PASSWORD'" >> $INVENTORY
ansible-playbook -i $INVENTORY `dirname $0`/firstsetup_$FLAVOR.yml --become
rm $INVENTORY

Это сработало отлично, но после обновления ansible с 2.4 до 2.5 игровые книги не могут найти переменные, определенные в group_vars каталог больше.

$ playbooks/firstsetup.sh HOSTNAME ubuntu
Password for localadmin: PASSWORD

Running ansible-playbook firstsetup_ubuntu.yml on HOSTNAME

PLAY [ubuntu] *********************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************
fatal: [HOSTNAME]: FAILED! => {"msg": "The field 'become_pass' has an invalid value, which includes an undefined variable. The error was: 'ubuntu_inisc_initialpass' is undefined"}
        to retry, use: --limit @/home/geschnei/playbooks/firstsetup_ubuntu.retry

PLAY RECAP ************************************************************************************************************
HOSTNAME                    : ok=0    changed=0    unreachable=0    failed=1

это undefined variable определяется в ~/.ansible/group_vars/ubuntu.yml и обнаруживается, когда я запускаю ту же книгу для хоста, который указан в обычном файле инвентаризации.

В Дорожная карта для Ansible 2.5 списки:

Добавить опцию для установки директории playbook для adhoc, инвентаря и консоли, чтобы разрешить "относительную загрузку пути"

Похоже, это может быть связано, но я не могу найти более конкретной информации об этом. В 2.5 Руководство по переносу об этом тоже ничего не упоминается.

Что мне нужно настроить, чтобы ansible-playbook находил group_vars файлы снова?

После перехода на версию ansible до 2.4 я понял, что с этой версией он тоже не работает.

Дальнейшее чтение показало, что это невозможно изменить местоположение из host_vars или group_vars, они всегда относительно hostfile.

В конце концов я решил это, изменив местоположение временного инвентаря на ~/.ansible dir, где также находится обычный инвентарь.

INVENTORY=$(mktemp ~/.ansible/inst-inventory.XXXXXX)

Не знаю, почему раньше это работало. Теперь он снова работает.