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

时间:2016-10-24 22:06:05

标签: node.js vagrant ansible ansible-facts

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

2 个答案:

答案 0 :(得分:3)

  

我怎样才能"得到"这个IP并在我的Ansible脚本中使用它?

使用ipify_facts

- name: Get my public IP
  ipify_facts:

- debug: var=ipify_public_ip

答案 1 :(得分: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