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