Vagrant 如何从ansible中的其他主机获取ip地址?

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",

我已配置多台机器和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", 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的文档中没有用黑体粗体字记录?