Ansible: попытка разобрать IP-адрес Loopback0 - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь сохранить IP-адрес моего loopback0 как переменную.Я могу вызвать информацию ipv4, но она не позволяет мне назвать информацию об адресе.[Очистить информацию для конфиденциальности]

Код:

- name: Configure IPSLA on Americas Router
  gather_facts: false
  hosts: IP_SLA
  connection: local
  serial: 1

  tasks:
    - name: Gather Switch Info
      ios_facts:

    - name: Debug
      debug:
        var: ansible_facts["net_interfaces"]["Loopback0"]["ipv4"]
...

Вывод:

PLAY [Configure IPSLA on Americas Router] ***************************************************************************************************************************************************************************************************

TASK [Gather Switch Info] *******************************************************************************************************************************************************************************************************************
ok: [host] => {"ansible_facts": {"ansible_net_interfaces": {"Loopback0": {"bandwidth": 8000000, "description": null, "duplex": null, "ipv4": [{"address": "10.x.x.x", "subnet": "32"}], "lineprotocol": "up ", "macaddress": null, "mediatype": null, "mtu": 1514, "operstatus": "up", "type": null}

TASK [Debug] ********************************************************************************************************************************************************************************************************************************
ok: [host] => {
    "ansible_facts[\"net_interfaces\"][\"Loopback0\"][\"ipv4\"]": [
        {
            "address": "10.x.x.x",
            "subnet": "32"
        }
    ]
}

Но когда я пытаюсь позвонить по адресу:

- name: Debug
  debug:
  var: ansible_facts["net_interfaces"]["Loopback0"]["ipv4"]["address"]

Я получаю эту ошибку:

TASK [Debug] ****************************************************************************************************************************************
ok: [host] => {
    "ansible_facts[\"net_interfaces\"][\"Loopback0\"][\"ipv4\"][\"address\"]": "VARIABLE IS NOT DEFINED!: 'list object' has no attribute 'address'"

Как получить адрес, хранящийся в виде переменной, чтобы я мог использовать его в будущих задачах?

1 Ответ

0 голосов
/ 26 февраля 2019

Квадратные скобки в:

ok: [host] => {
    "ansible_facts[\"net_interfaces\"][\"Loopback0\"][\"ipv4\"]": [
        {
            "address": "10.x.x.x",
            "subnet": "32"
        }
    ]
}

Укажите, что ["net_interfaces"]["Loopback0"]["ipv4"] является массивом с одним элементом.

Используйте [0], чтобы указать первый элемент массива, какдемонстрируется следующим кодом:

ansible_facts["net_interfaces"]["Loopback0"]["ipv4"][0]["address"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...