ネットワークインターフェイスを繰り返し、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 }}"

おすすめ記事