Системные специфические переменные в недоступных

Ansible ожидает python 2. В моей системе (Arch Linux) "python" - это Python 3, поэтому мне нужно передать -e "ansible_python_interpreter=/usr/bin/python2" с каждой командой.

ansible-playbook my-playbook.yml -e "ansible_python_interpreter=/usr/bin/python2"

Есть ли возможность установить ansible_python_interpreter глобально в моей системе, поэтому мне не нужно передавать ее каждой команде? Я не хочу добавлять его в свои плей-книжки, так как не все системы, в которых работает учебник, имеют настройку, похожую на мою.

Ответы

Ответ 1

Ну вы можете установить тремя способами

  • http://docs.ansible.com/intro_inventory.html#list-of-behavioral-inventory-parameters ansible_python_interpreter=/usr/bin/python2 это установит его на хост
  • Задайте его host_vars/ ansible_python_interpreter: "/usr/bin/python2", это установит его на хост
  • установите для всех узлов в файле group_vars/all (вам может понадобиться создать каталог group_vars и файл all) как ansible_python_interpreter: "/usr/bin/python2"

Надеюсь, что поможет

Ответ 2

Я решил использовать возможность Ansible для источника инвентаря из каталога. Таким образом, я мог бы определить ansible_python_interpreter для localhost только для локальной машины

inventory_dir/local

[local]
localhost ansible_python_interpreter="/path/to/alternate/bin/python"

И тогда просто используйте каталог, как файл инвентаря.

ansible-playbook -i inventory_dir playbook.yml