当我使用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
我需要指定库存文件,因为当我运行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,"的库存文件,我不知道原因。
如何指定库存文件?
谢谢!
答案 0 :(得分:4)
嗯,我猜是因为带有包装工的ansible使用本地连接(-c local
),所以不需要提供库存文件。
您只需要确保在您的游戏手册中,-hosts
行包含all
或127.0.0.1
,它就可以正常运行。
答案 1 :(得分:2)
如果Playbook专门用于您的Packer构建,那么设置hosts: all
就可以了。
如果您重新使用还需要针对清单文件中指定的主机运行的Playbook,例如:
[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"
}
]
有关详细信息,请参阅CASE
的Packer文档的可选子部分