Vagrant 如何从ansible中的其他主机获取ip地址?
我已配置多台机器和ansible:Vagrant 如何从ansible中的其他主机获取ip地址?,vagrant,ansible,Vagrant,Ansible,我已配置多台机器和ansible: config.vm.box = "ubuntu/trusty64" config.vm.define "my_server" do |my_server| my_server.vm.network "private_network", ip: "192.168.50.4" end config.vm.define "my_agent" do |my_agent| my_agent.vm.network "private_network",
config.vm.box = "ubuntu/trusty64"
config.vm.define "my_server" do |my_server|
my_server.vm.network "private_network", ip: "192.168.50.4"
end
config.vm.define "my_agent" do |my_agent|
my_agent.vm.network "private_network", ip: "192.168.50.5"
end
config.vm.provision "ansible" do |ansible|
ansible.groups = {
"my-server" => ["my_server"],
"my-agent" => ["my_agent"],
"all_groups:children" => ["my-server", "my-agent"]
}
ansible.playbook = "./ansible/my.yml"
end
并生成库存文件:
# Generated by Vagrant
my_server ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_private_key_file=/.../private_key
my_agent ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200 ansible_ssh_private_key_file=/.../private_key
...
当我运行vagrant时,我的_服务器获得ip:
eth0: 10.0.2.15
eth1: 192.168.50.4
eth0: 10.0.2.15
eth1: 192.168.50.5
并且my_agent
获取ip:
eth0: 10.0.2.15
eth1: 192.168.50.4
eth0: 10.0.2.15
eth1: 192.168.50.5
我想添加服务器的代理配置ip地址(来自eth1)。
我尝试调试有关服务器的信息:
- debug: var=hostvars[item]
with_items: groups['my-server']
但我只得到:
ok: [my_agent] => (item=my_server) => {
"item": "my_server",
"var": {
"hostvars[item]": {
"ansible_ssh_host": "127.0.0.1",
"ansible_ssh_port": 2222,
"ansible_ssh_private_key_file": ".../private_key",
"group_names": [
"all_groups",
"my-server"
],
"inventory_hostname": "my_server",
"inventory_hostname_short": "my_server"
}
}
}
是否可以在代理角色中获取服务器的ip地址?如果可能的话,我怎么做?我解决问题。我需要补充
ansible.limit = "all"
在ansible配置中,因为vagrant运行ansible两次:第一次用于my_服务器,第二次用于my_代理。第二次运行ansible不收集有关我的服务器的信息。现在ansible为每台服务器运行两次
工作流浪配置:
config.vm.provision "ansible" do |ansible|
ansible.groups = {
"my-server" => ["my_server"],
"my-agent" => ["my_agent"],
"all_groups:children" => ["my-server", "my-agent"]
}
ansible.limit = "all"
ansible.playbook = "./ansible/my.yml"
end
和责任代理角色:
- debug: var=hostvars[item]["ansible_eth1"]["ipv4"]["address"]
with_items: groups['my-server']
sudo: yes
在你的剧本中是否有收集事实:没有?你能使用Ansible的内置事实吗?资料来源:我没有收集事实。我试着使用hostvars。但我解决了这个问题。我需要添加ansible.limit=“all”,因为vagrant为每个机器或组运行单独的进程。这绝对有效!为什么Ansible的文档中没有用黑体粗体字记录?