Получите IP-адрес хоста от Vagrant и используйте его с Ansible

Я играю с vagrant, чтобы настроить несколько дроплетов и развернуть свой сервер nodejs с помощью ansible (я использую DigitalOcean). В моем js-коде есть некоторые части, где мне нужно установить текущий IP-адрес в скрипт. Проблема в том, что я не могу установить IP-адрес вручную, поэтому я получаю случайный IP-адрес через vagrant от DO. Как я могу «получить» этот IP-адрес и использовать его в своем скрипте Ansible? конечно, я мог бы просто сделать wget http://ipinfo.io/ip -qO - на самом хосте или проверить его с помощью ip, но я думаю, что это также должно работать, чтобы получить эту информацию от Vagrant?


person Dude    schedule 24.10.2016    source источник


Ответы (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