Я играю с vagrant, чтобы настроить несколько дроплетов и развернуть свой сервер nodejs с помощью ansible (я использую DigitalOcean
). В моем js-коде есть некоторые части, где мне нужно установить текущий IP-адрес в скрипт. Проблема в том, что я не могу установить IP-адрес вручную, поэтому я получаю случайный IP-адрес через vagrant от DO
. Как я могу «получить» этот IP-адрес и использовать его в своем скрипте Ansible? конечно, я мог бы просто сделать wget http://ipinfo.io/ip -qO -
на самом хосте или проверить его с помощью ip
, но я думаю, что это также должно работать, чтобы получить эту информацию от Vagrant?
Получите IP-адрес хоста от Vagrant и используйте его с Ansible
Ответы (2)
Из документации (в частности: 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
person
slugonamission
schedule
24.10.2016
Как я могу «получить» этот IP-адрес и использовать его в своем скрипте Ansible?
Используйте ipify_facts:
- name: Get my public IP
ipify_facts:
- debug: var=ipify_public_ip
person
techraf
schedule
24.10.2016