я использую «оболочки:», чтобы получить какие-то данные, обернув над «with_items:» и зарегистрировать его в качестве другой переменной. Позже с помощью «lineinfile:» я пытаюсь применить содержимое ранее переменной, но не в состоянии использовать «{{}} variable.stdout», как он показывает, как не определено в «with_items:»анзибль с помощью петли и нескольких переменных
есть ли способ сказать анзибль, что для "variable.stdout" не смотрите в "with_items:"
---
- include_vars: /root/template.yml
- name: Getting MAC
shell: "cat /sys/class/net/{{item.name}}/address"
register: mac
with_items:
- "{{ interfaces_ipv4 }}"
- name: Setting MAC
lineinfile:
state=present
dest=/etc/sysconfig/network-scripts/ifcfg-{{item.name}}
regexp='^HWADDR=.*'
line="HWADDR={{mac.stdout}}"
with_items:
- "{{ interfaces_ipv4 }}"
tags:
- set_mac
Содержание переменной файла
#/root/tempplate.yml
- name: ens35
bootproto: dhcp
- name: ens34
bootproto: none
При выполнении:
ЗАДАЧА: [макинтош | Настройка MAC] *********************************************** ****** фатальным: [192.168.211.146] =>один или более неопределенные переменные: 'ДИКТ' объект не имеет атрибута 'STDOUT'
FATAL: все хозяева уже не удалось - ABORTING
Пожалуйста, дайте сильное внимание к использованию анзибля в 'template' модуля вместо' lineinfile'. Последний - антипаттерн; он имеет тенденцию к значительной сложности и болью. – tedder42