Невозможно использовать пользовательский Ansible файл конфигурации в Packer - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать образ Docker с помощью Packer и использовать Ansible для предоставления указанного образа. Я хотел бы использовать пользовательские плагины Ansible, которые будут определены в файле конфигурации, но, похоже, не смогут заставить Packer правильно настроить целевой файл конфигурации. Я попытался поместить путь к файлу конфигурации в ansible_env_vars, а также попытался использовать блок extra_arguments, чтобы также указать файл конфигурации. Я также хотел бы отметить, что сборка Packer будет по-прежнему создавать образ Docker независимо от того, сможет ли он правильно найти файл пользовательской конфигурации или нет.

Ниже приведен пример того, как выглядит мой блок Ansible Provisioner, моя файловая структура, а также журналы вывода сборки Packer. Любой совет будет высоко ценится.

Блок упаковщика

    "provisioners": [
        {
            "type": "ansible",
            "playbook_file": "src/playbook.yml",
            "ansible_env_vars": "src/ansible.cfg",
            "extra_arguments": [
                "-vvv",
                "--extra-vars", 
                "'variable={{ user `variable` }} ..... '" 
            ]
        }
    ],

Вывод сборки пакета

    docker: ansible-playbook 2.9.2
    docker:   config file = None
    docker:   configured module search path = ['/Users/andrewgonzalez/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
    docker:   ansible python module location = /usr/local/lib/python3.7/site-packages/ansible
    docker:   executable location = /usr/local/bin/ansible-playbook

Структура файла

Имейте в виду, у меня есть Makefile, который будет создавать Docker изображение, которое находится в моем каталоге Packer. У меня также есть Makefile в каталоге root, который будет вызывать Makefile в каталоге Packer для выполнения сборки.

$ tree -d -L 2
.
├── packer
│   ├── log
│   └── src
├── packerenv
│   ├── bin
│   ├── include
│   └── lib
└── test

1 Ответ

1 голос
/ 27 января 2020

Если вы используете Ansible (удаленный) инициатор для Packer, блок должен быть:

"provisioners": [
    {
        "type": "ansible",
        "playbook_file": "src/playbook.yml",
        "ansible_env_vars": [ 
          "ANSIBLE_CONFIG=src/ansible.cfg"
        ],
        "extra_arguments": [
            "-vvv",
            "--extra-vars", 
            "'variable={{ user `variable` }} ..... '" 
        ]
    }
],
...