Назад | Перейти на главную страницу

Ansible на IOS для прохождения подмножества интерфейсов

Запуск WISL в Windows 10 и Ubuntu с ansible 2.9.9. Я новичок в Ansible. Я выполняю шоу на устройстве Cisco, чтобы получить интерфейсы, на которых работает данный сетевой протокол. Затем я хочу извлечь интерфейсы и выполнить на них команды. В этом случае отключить протокол. В идеале команда show могла бы легко измениться. Что касается многих протоколов, это единственный способ проверить это состояние. Возможны способы, которыми Ansible хранит эту информацию протокола. Может с фактами? Я нашел примеры использования ios_config в https://docs.ansible.com/ansible/latest/modules/ios_config_module.html но интерфейсы жестко запрограммированы, как показано здесь в вспомогательном примере:

- name: configure ip helpers on multiple interfaces
  ios_config:
    lines:
      - ip helper-address 172.26.1.10
      - ip helper-address 172.26.3.8
    parents: "{{ item }}"
  with_items:
    - interface Ethernet1
    - interface Ethernet2
    - interface GigabitEthernet1

Моя попытка заключается в следующем, что дает мне два интерфейса с активной многоадресной рассылкой. Но что дальше делать с этими интерфейсами в цикле? :

  tasks:
  - name: Gather interfaces running PIM
    ios_command:
      commands:
        - show ip pim interface
    register: pim

  - name: Write PIM interface data to file
    copy:
      content: "{{pim.stdout_lines[0]}}"
      dest: "backups/{{ansible_alias}}-pim-interfaces.txt"


  - name: Glean PIM INTF's
    shell: cat backups/{{ ansible_alias }}-pim-interfaces.txt | tr ' ' '\n' | grep 'GigabitEthernet'
    register: pim

  - debug: msg='{{ pim.stdout_lines }}'


TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [10.239.121.2] => {
    "msg": [
        "GigabitEthernet0/0/0",
        "GigabitEthernet0/0/1.125"
    ]
}

Большое спасибо за любые советы.

Здесь вы используете loop (который также с версии 2.5 вызвал все with_ устаревшие директивы, хотя в большинстве документов это еще не отражено).

Изменение примера Ansible дает нам:

- name: configure ip helpers on multiple interfaces
  ios_config:
    lines:
      - ip helper-address 172.26.1.10
      - ip helper-address 172.26.3.8
    parents: "{{ item }}"
  loop: "interface {{ pim.stdout_lines|list }}"