
Запуск WISL на Windows 10 и Ubuntu с ansible 2.9.9. Я новичок в Ansible. Я запускаю show на устройстве 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
Моя попытка заключается в следующем, что дает мне два интерфейса с активным multicast. Но что дальше делать с этими интерфейсами в цикле? :
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"
]
}
Большое спасибо за любые рекомендации.
решение1
Здесь вы используете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 "]|product(pim.stdout_lines)|map("join")|list }}'
Чтобы просто проверить вывод:
- debug:
var: item
loop: '{{ ["interface "]|product(pim.stdout_lines)|map("join")|list }}'
Это loop
было изменено сКак добавить префикс к каждой строке в списке в Ansible.