Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vagrant 与流浪汉对话:从流浪汉档案中读取库存;额外“VAR”;_Vagrant_Provisioning_Ansible - Fatal编程技术网

Vagrant 与流浪汉对话:从流浪汉档案中读取库存;额外“VAR”;

Vagrant 与流浪汉对话:从流浪汉档案中读取库存;额外“VAR”;,vagrant,provisioning,ansible,Vagrant,Provisioning,Ansible,我们的本地开发盒正在运行Virtualbox/Vagrant,由ansible提供。现在我们为这个盒子设置了一个固定的IP地址,我们需要在三个不同的地方使用它。我们的文件如下所示: #设置Vagrantbox IP地址 流浪者网络IP=“10.0.0.10” #设置Ansible配置环境变量 ENV['ANSIBLE_CONFIG']=“/ANSIBLE/.ANSIBLE.cfg” Vagrant.configure(“2”)do | config| config.vm.box=“ubuntu-

我们的本地开发盒正在运行Virtualbox/Vagrant,由ansible提供。现在我们为这个盒子设置了一个固定的IP地址,我们需要在三个不同的地方使用它。我们的文件如下所示:

#设置Vagrantbox IP地址
流浪者网络IP=“10.0.0.10”
#设置Ansible配置环境变量
ENV['ANSIBLE_CONFIG']=“/ANSIBLE/.ANSIBLE.cfg”
Vagrant.configure(“2”)do | config|
config.vm.box=“ubuntu-precise-64”
config.vm.box_url=”http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.network“forwarded_port”,来宾:80,主机:8080
config.vm.network:private_network,ip:VAGRANT_network_ip
config.vm.synced_文件夹“.”,“/var/www”
config.vm.provision“ansible”do | ansible|
ansible.playbook=“ansible/playbook.yml”
ansible.limit=“全部”
ansible.inventory\u path=“ansible/hosts/vagrant”
ansible.extra_vars={target:VAGRANT_NETWORK_IP}
结束
结束
还有我们的ansible剧本:

---
-主机:“{target}}”
苏多:是的
角色:
# ...
以及我们的库存文件:

10.0.0.10 ansible_ssh_user=vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key
我们使用可变的VAGRANT_NETWORK_IP重用了VAGRANT文件中的IP地址。但是,我们仍然需要在库存中设置此IP地址是否可以在库存文件中使用ansible变量作为主机?在清单中简单地使用
{{target}
是行不通的


或者,有没有另一种方法让这更容易?如果可能,我们希望在单个文件中配置Box IP地址。

Vagrantfile只是一个普通的ruby文件,因此您可以从中生成清单文件:

File.open('ansible/hosts/vagrant' ,'w') do |f|
  f.write "[default]\n"
  f.write "#{VAGRANT_NETWORK_IP} ansible_ssh_user=vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key\n"
end
默认情况下,vagrant框以名称“default”开头,因此我通常将ansible托管主机限制为vagrant的主机(您可以设置ansible.limit=“default”)

如果您希望有多个带有一个库存的浮动框,可以在一个浮动文件中定义这些框并为其生成库存