1

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

4

2 回答 2

3

如何“获取”这个 IP 并在我的 Ansible 脚本中使用它?

使用ipify_facts

- name: Get my public IP
  ipify_facts:

- debug: var=ipify_public_ip
于 2016-10-24T22:52:29.920 回答
1

从文档(特别是: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 上的公共接口是哪个,但你应该可以{{ ansible_eth0.ipv4.address }}在你的剧本中使用。

旁注,您可以使用此命令列出所有“发现”变量:

ansible hostname -m setup
于 2016-10-24T23:01:07.237 回答