Vagrant 打包机&x2B;ansible,如何指定库存文件

Vagrant 打包机&x2B;ansible,如何指定库存文件,vagrant,ansible,digital-ocean,packer,Vagrant,Ansible,Digital Ocean,Packer,使用vagrant时,我可以在vagrant文件中指定库存文件 例如: config.vm.provision "ansible" do |ansible| ansible.playbook = "my_folder/playbook.yml" ansible.inventory_path = "my_folder/inventory_file" end 使用packer时如何配置库存文件 我在packer的官方文档中看不到任何相关信息: 我需要指定清单文件,因为当我运行我的

使用vagrant时,我可以在vagrant文件中指定库存文件

例如:

config.vm.provision "ansible" do |ansible|
    ansible.playbook = "my_folder/playbook.yml"
    ansible.inventory_path = "my_folder/inventory_file"
end
使用packer时如何配置库存文件

我在packer的官方文档中看不到任何相关信息:

我需要指定清单文件,因为当我运行我的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”的库存文件,我不知道为什么

如何指定库存文件


谢谢

嗯,我的猜测是,由于ansible with packer使用本地连接(
-c local
),因此不需要提供清单文件


您只需确保在您的playbook中,您的
-hosts
行包含
all
127.0.0.1
,并且运行正常。

设置
hosts:all
如果playbook专门用于打包机构建,则运行正常

如果您使用的playbook还需要针对清单文件中指定的主机运行,例如:

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

[db_servers]
db.example.com
…然后,您可以将
inventory\u groups
属性添加到您的
ansible local
provisioner,打包程序将为这些组分配localhost:


有关更多详细信息,请参阅Packer文档的可选部分

是否可以显示Packer.json的ansible部分?“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”#这是一个本地playbook}]我正在将我的本地ansible文件夹复制到/tmp/my_文件夹,然后运行ansible,但我无法指定我的清单文件:/
"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"
  }
]