упаковщик + ансибл, как указать файл инвентаря

Когда я использую vagrant, я могу указать файл инвентаризации в файле Vagrantfile.

Пример:

config.vm.provision "ansible" do |ansible|
    ansible.playbook = "my_folder/playbook.yml"
    ansible.inventory_path = "my_folder/inventory_file"
end

Как настроить файл inventory_file при использовании упаковщика?

Я не вижу соответствующей информации в официальной документации упаковщика:

http://www.packer.io/docs/provisioners/ansible-local.html

Мне нужно указать файл инвентаризации, потому что, когда я запускаю свой packager.json, это вывод:

digitalocean: Executing Ansible: ansible-playbook /tmp/my_folder/playbook.yml -c local -i "127.0.0.1,"
digitalocean:
digitalocean: PLAY [foo] ******************************************************************
digitalocean: skipping: no hosts matched

Упаковщик, кажется, использует файл инвентаризации с именем «127.0.0.1», и я не знаю, почему.

Как я могу указать свой файл инвентаризации?

Спасибо!


person fj123x    schedule 23.02.2014    source источник
comment
Можете ли вы показать доступную часть вашего packer.json?   -  person leucos    schedule 23.02.2014
comment
provisioners: [ { тип: файл, источник: моя_папка, место назначения: /tmp/}, { тип: оболочка, сценарий: provisioner.sh }, { тип: ansible-local, промежуточный_каталог: /tmp/моя_папка, playbook_file: my_folder/playbook .yml # это локальная книга воспроизведения } ] Я копирую свою локальную папку ansible в /tmp/my_folder, а затем запускаю ansible, но не могу указать свой файл инвентаризации :/   -  person fj123x    schedule 23.02.2014


Ответы (2)


Ну, я предполагаю, что, поскольку ansible с упаковщиком использует локальное соединение (-c local), нет необходимости предоставлять файл инвентаризации.

Вам просто нужно убедиться, что в вашем playbook ваша строка (строки) -hosts содержит all или 127.0.0.1, и все должно работать нормально.

person leucos    schedule 23.02.2014

Установка hosts: all подходит, если playbook используется исключительно для вашей сборки Packer.

Если вы повторно используете playbook, который также должен работать на хостах, указанных в файле инвентаризации, например:

[web_servers]
web1.example.com
web2.example.com

[db_servers]
db.example.com

... затем вы можете добавить атрибут inventory_groups к вашему ansible-local провайдеру, и Packer назначит локальный хост этим группам:

"provisioners": [ 
  { "type": "file", "source": "my_folder", "destination": "/tmp/" }, 
  { "type": "shell", "script": "provisioner.sh" }, 
  { 
    "type": "ansible-local", 
    "staging_directory": "/tmp/my_folder",
    "playbook_file": "my_folder/playbook.yml",
    "inventory_groups": "web_servers"
  }
]

Дополнительные сведения см. в подразделе Необязательно документа Packer для Справочник по конфигурации ansible-local provisioner

person thinkmassive    schedule 22.02.2017