为 ansible provisioner 使用自定义配置文件

Use custom configuration file for ansible provisioner

我正在尝试使用其 ansible 配置程序配置使用 packer 构建的机器;

配置无法找到我在自定义 ansible.cfg 文件中设置的某些角色,如下所示:

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

Packer documentation 未指明将位置传递给自定义 ansible.cfg 文件的方法;

有办法解决这个问题吗?

使用ansible environmental vars

似乎可以解决问题

例如

  "provisioners": [
    {
    "type": "ansible",
    "playbook_file": "ansible/playbooks/install.yml",
    "ansible_env_vars": [ "ANSIBLE_ROLES_PATH=ansible/roles", "ANSIBLE_VAULT_PASSWORD_FILE=ansible/.vault" ]
   },

您可以使用 packer 的环境变量来设置 ansible.cfg 位置,而不是将所有配置移动到 packer。

"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