packer + ansible, как да посочите файла с инвентара

Когато използвам vagrant, мога да посоча файла с инвентара във Vagrantfile.

Пример:

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

Как мога да конфигурирам inventory_file, когато използвам packer?

Не виждам свързана информация в официалната документация на packer:

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

Трябва да посоча файла с инвентара, защото, когато стартирам своя packer.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

Packer изглежда използва инвентарен файл с име "127.0.0.1" и не знам защо.

Как мога да посоча моя файл с инвентара?

Благодаря!


person fj123x    schedule 23.02.2014    source източник
comment
Можете ли да покажете анзибълната част на вашия packer.json?   -  person leucos    schedule 23.02.2014
comment
providers: [ { тип: файл, източник: my_folder, местоназначение: /tmp/ }, { type: shell, скрипт: provisioner.sh }, { type: ansible-local, staging_directory: /tmp/my_folder, playbook_file: my_folder/playbook .yml # this is a local playbook } ] Копирам моята локална папка ansible в /tmp/my_folder и след това стартирам ansible, но не мога да посоча моя файл с инвентара :/   -  person fj123x    schedule 23.02.2014


Отговори (2)


Е, моето предположение е, че тъй като ansible с packer използва локална връзка (-c local), не е необходимо да се предоставя инвентарен файл.

Просто трябва да се уверите, че в книгата ви с игри вашият -hosts ред(ове) съдържа all или 127.0.0.1 и трябва да работи добре.

person leucos    schedule 23.02.2014

Настройката hosts: all е добра, ако книгата за игра се използва изключително за вашата компилация на Packer.

Ако използвате повторно книга за игри, която също трябва да работи срещу хостове, посочени във файл с инвентар, например:

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

[db_servers]
db.example.com

... тогава можете да добавите атрибута inventory_groups към вашия ansible-local доставчик и Packer ще присвои localhost на тези групи:

"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 provider

person thinkmassive    schedule 22.02.2017