我有一个Vagrantfile,它正在引用YAML文件以使多主机配置更加容易。
[通常可以正常工作,但是我正在使用Ansible供应器,并且我需要引用ansible.groups
项目的列表/数组。
YAML看起来像这样:
hosts:
- host:
provision:
ansible:
enable: yes
playbook_path: webserver.yml
groups:
- web
- vagrant
- live
我正在尝试使用[]在Vagrantfile
中引用它:
if host['provision']['ansible']['enable'] == true
vmhost.vm.provision "ansible" do |ansible|
ansible.verbose = "vv"
ansible.config_file = "./ansible.cfg"
ansible.playbook = host['provision']['ansible']['playbook_path']
ansible.tags = host['provision']['ansible']['tags']
ansible.groups = host['provision']['ansible']['groups']
end
end
但是在构建实际的VM时,这给了我这个错误:
undefined method `each_pair' for ["web", "vagrant", "dev"]:Array
尽管我在Vagrantfile中看到了各种读取列表/数组的模式,但我搜索并没有找到具体解决ansible_groups
的问题。有什么想法吗?
Ansible组不应该是数组,而是散列,将组映射到服务器名称。它应该看起来像:
hosts:
- host:
provision:
ansible:
enable: yes
playbook_path: webserver.yml
groups:
web:
- machine1
- machine2
vagrant:
- machine3
- machine4
live:
- machine5
有关如何使用它的更多详细信息,请参见the documentation。>