Я пытаюсь создать образ 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