중복된 질문이라면 죄송합니다. 온라인에서 몇 가지 유사한 질문을 찾았지만 어떤 것도 알아낼 수 없었습니다.
서버에서 사용 가능한 모든 네트워크 인터페이스를 찾은 다음 이를 반복하여 각 인터페이스의 MAC 주소를 추출하는 플레이북을 만들려고 합니다. 그런 다음 Ansible이 사용자에게 메시지를 인쇄하길 원합니다.
모든 인터페이스를 찾는 것은 매우 간단합니다.
- name: Find NICs
ansible.builtin.debug:
msg: Found network interface {{ item }}
with_items:
- "{{ ansible_interfaces }}"
이는 운영 체제의 인터페이스 이름(문자열 ens123
등) 을 인쇄합니다 enp456
.
MAC을 찾는 것도 매우 간단합니다.
- name: Find NICs MAC
ansible.builtin.debug:
msg: "{{ ansible_facts[' {{ item }}']['macaddress'] }}"
with_items:
- "{{ ansible_interfaces }}"
이제 {{ item }}
변수는 발견된 인터페이스 이름입니다(예 ens123
: : ). 매번 실제 이름으로 바꾸면 명령이 작동합니다.
또한 이것이 셸을 통해 수행하는 간단한 작업이라는 것도 알고 있지만 광범위한 시스템에서 작동하도록 되어 있으므로 Ansible 전용 솔루션을 시도하고 있습니다.
문서를 자세히 살펴봤지만 이해할 수 없습니다. 도움을 주시면 대단히 감사하겠습니다.
감사해요!
답변1
Vladimir가 위에서 제안한 것처럼 해결책은 다음과 같습니다.
msg: "{{ ansible_facts[item]['macaddress']|default(None) }}"
전체 블록:
- name: Find NICs MAC
ansible.builtin.debug:
msg: " interface {{ item }}'s MAC is {{ ansible_facts[item]['macaddress']|default(None) }}"
with_items:
- "{{ ansible_interfaces }}"