私は異なるホストと異なるネットワークを持つネットワークを持っています。それぞれのネットワークで各ホストにpingを実行したいと思います。ダイキャットアイランドの子要素を取得
私のhost_varsディレクトリには、すべてのホストとそのネットワークに関するすべての情報が専用のファイルに保存されています。ホストファイルは次のようになります:
bond:
- conn_name: net1
ip4: '10.10.44.21'
gw4: '10.10.44.1'
- conn_name: net2
ip4: '10.10.47.21'
gw4: '10.10.47.1'
- conn_name: net3
ip4: '10.10.46.21'
gw4: '10.10.46.1'
bond_slave:
- conn_name: eno1
ifname: eno1
master: net1
- conn_name: eno2
ifname: eno2
master: net2
- conn_name: ens2f1
ifname: ens2f1
master: net2
- conn_name: ens2f0
ifname: ens2f0
master: net2
- conn_name: ens4f1
ifname: ens4f1
master: net3
- conn_name: ens4f0
ifname: ens4f0
master: net3
私の目的は、すべてのip4値を取得し、すべてのホストからpingすることです。私ができることは、host_varsディレクトリからすべてのファイルを取り込み、各ファイルの最初のボンド項目のip-addressをpingすることです。
---
- hosts: all
- name: Include information about all hosts
include_vars: ../../host_vars/{{ item }}.yaml
with_items: hosts
register: "r"
- name: execute ping
command: ping {{ bond[0].ip4 }} -c 3
with_items: "{{ r.results }}"
しかし、結合は、2から4つのネットワークを持つことができます。どのように私はすべてのIPアドレスにアクセスするために各ボンドをループするのですか?あなたがホストごとに
bond
VARを定義した場合
- name: execute ping
command: ping {{ item.ip4 }} -c 3
with_items: "{{ r.results | map(attribute='ansible_facts.bond') | list }}"
ご協力いただきありがとうございます。 pingの実行に正しい構文を見つけるのに役立ちました。 – JustOneQuestion