네트워크 인터페이스를 반복하고 Ansible을 통해 MAC 주소를 추출합니다.

네트워크 인터페이스를 반복하고 Ansible을 통해 MAC 주소를 추출합니다.

중복된 질문이라면 죄송합니다. 온라인에서 몇 가지 유사한 질문을 찾았지만 어떤 것도 알아낼 수 없었습니다.

서버에서 사용 가능한 모든 네트워크 인터페이스를 찾은 다음 이를 반복하여 각 인터페이스의 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 }}"

관련 정보