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

Я пытаюсь подготовить машину, созданную с помощью packer, используя ее ansible;

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

[defaults]
stdout_callback = yaml
retry_files_enabled = False
vault_password_file = .vault
roles_path = ./roles

В документации Packer не указан способ передачи местоположения в пользовательский ansible.cfg файл;

Есть ли способ обойти это?


person pkaramol    schedule 19.10.2018    source источник


Ответы (2)


Вы можете использовать env vars упаковщика, чтобы установить местоположение ansible.cfg вместо того, чтобы перемещать все конфигурации в упаковщик.

"provisioners": [
    {
    "type": "ansible",
    "playbook_file": "ansible/playbooks/install.yml",
    "ansible_env_vars": [ "ANSIBLE_CONFIG=ansible/ansible.cfg" ]
   }
]

Ссылка: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#the-configuration-file

person Thiago Caiubi    schedule 18.06.2019

Кажется, проблема решена с помощью переменных окружения ansible

e.g.

  "provisioners": [
    {
    "type": "ansible",
    "playbook_file": "ansible/playbooks/install.yml",
    "ansible_env_vars": [ "ANSIBLE_ROLES_PATH=ansible/roles", "ANSIBLE_VAULT_PASSWORD_FILE=ansible/.vault" ]
   },
person pkaramol    schedule 19.10.2018
comment
да, просто мне нужно еще 2 дня для этого... :) - person pkaramol; 19.10.2018
comment
Я хочу заметить, что при использовании ANSIBLE_ROLES_PATH, если вы добавите относительный путь, он будет исходить из того места, где вы в данный момент выполняете упаковщик, а не там, где плейбук и json-файл упаковщика. - person froblesmartin; 13.02.2019