从 Vagrant 获取主机 IP 并将其与 Ansible 一起使用

Get host IP from Vagrant and use it with Ansible

我使用 vagrant 来设置一些 droplet 并使用 ansible 部署我的 nodejs 服务器(我正在使用 DigitalOcean)。我的 js 代码中有一些部分需要将 当前 IP 设置到脚本中。问题是我不能手动设置IP所以我通过vagrant从DO获得了一个随机IP。我如何 "get" 这个 IP 并在我的 Ansible 脚本中使用它?当然我可以在主机本身上做一个 wget http://ipinfo.io/ip -qO - 或用 ip 检查它,但我想它也应该可以从 Vagrant 获取此信息?

How can I "get" this IP and make use of it in my Ansible script?

使用ipify_facts:

- name: Get my public IP
  ipify_facts:

- debug: var=ipify_public_ip

从文档(特别是:http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts)来看,Ansible 似乎有一个包含您的网络信息的预定义变量:

"ansible_eth0": {
    "active": true,
    "device": "eth0",
    "ipv4": {
        "address": "REDACTED",
        "netmask": "255.255.255.0",
        "network": "REDACTED"
    },
    "ipv6": [
        {
            "address": "REDACTED",
            "prefix": "64",
            "scope": "link"
        }
    ],
    "macaddress": "REDACTED",
    "module": "e1000",
    "mtu": 1500,
    "type": "ether"
},

我不记得哪个是 DigitalOcean 上的 public 界面,但你应该可以在你的剧本中使用 {{ ansible_eth0.ipv4.address }}

旁注,您可以使用此命令列出所有 "discovered" 个变量:

ansible hostname -m setup