ตัวอย่างเช่น กำหนดสินค้าคงคลัง
เปลือก> เจ้าภาพแมว
โฮสต์01
โฮสต์02
โฮสต์03
และรายการ
รายการ:
- โฮสต์: host01
ดิสก์: disk0
ระบบปฏิบัติการ: 13.0
- โฮสต์: host02
ดิสก์: disk4
ระบบปฏิบัติการ: 13.0
- โฮสต์: host06
ดิสก์: hdisk7
ระบบปฏิบัติการ: 13.0
สร้างรายชื่อโฮสต์ที่อนุญาต
my_hosts: "{{ รายการ|แผนที่(attribute='host')|รายการ }}"
ให้
my_hosts:
- โฮสต์ 01
-host02
- โฮสต์ 06
จากนั้น สร้างพจนานุกรมของโฮสต์และเวอร์ชันของระบบปฏิบัติการที่อนุญาต
my_os: "{{ list|items2dict(key_name='host', value_name='os') }}"
ให้
my_os:
โฮสต์ 01: 13.0
โฮสต์ 02: 13.0
โฮสต์06:13.0
ตอนนี้ งานด้านล่างจะลบไฟล์ตามเงื่อนไขและแสดงผลลัพธ์ที่ลงทะเบียน
- ชื่อ: ลบไฟล์ออกจากไคลเอนต์
ไฟล์:
สถานะ: ขาด
เส้นทาง: /tmp/me
เมื่อไร:
- inventory_hostname ใน my_hosts
- ansible_distribution_version ==
my_os[inventory_hostname]|default('ไม่มี')|string
ลงทะเบียน: fileopt
- แก้ปัญหา:
var: fileopt
ให้
งาน [ลบไฟล์ออกจากไคลเอนต์] ******************************************* **
การข้าม: [host03]
ตกลง: [host02]
ตกลง: [host01]
งาน [แก้ไขข้อบกพร่อง] *********************************************** *****************
ตกลง: [host01] =>
ตัวเลือกไฟล์:
เปลี่ยน: เท็จ
ล้มเหลว: เท็จ
เส้นทาง: /tmp/me
สถานะ: ขาด
ตกลง: [host02] =>
ตัวเลือกไฟล์:
เปลี่ยน: เท็จ
ล้มเหลว: เท็จ
เส้นทาง: /tmp/me
สถานะ: ขาด
ตกลง: [host03] =>
ตัวเลือกไฟล์:
เปลี่ยน: เท็จ
skip_reason: ผลลัพธ์ตามเงื่อนไขเป็นเท็จ
ข้าม: จริง
อย่างที่คาดไว้, โฮสต์03 ที่หายไปจากรายการถูกข้ามไป
ทางเลือก การสร้างกลุ่มไดนามิกอาจมีประสิทธิภาพมากกว่าหากรายการของโฮสต์ที่อนุญาตนั้นมีขนาดเล็กกว่ามากเมื่อเทียบกับโฮสต์ทั้งหมด ตัวอย่างเช่น สร้างกลุ่มโฮสต์ที่อนุญาตในการเล่นครั้งแรกและใช้ในการเล่นครั้งที่สอง
- ชื่อ: สร้างกลุ่ม my_hosts
โฮสต์: ทั้งหมด
Gather_facts: จริง
วาร์:
รายการ:
- โฮสต์: host01
ดิสก์: disk0
ระบบปฏิบัติการ: 13.0
- โฮสต์: host02
ดิสก์: disk4
ระบบปฏิบัติการ: 13.0
- โฮสต์: host06
ดิสก์: hdisk7
ระบบปฏิบัติการ: 13.0
my_hosts: "{{ รายการ|แผนที่(attribute='host')|รายการ }}"
my_os: "{{ list|items2dict(key_name='host', value_name='os') }}"
งาน:
- set_fact:
_my_os: "{{ ansible_distribution_version ==
my_os[inventory_hostname]|default('None')|string }}"
- ชื่อ: สร้างกลุ่ม my_hosts
add_host:
ชื่อ: "{{ รายการ }}"
กลุ่ม: my_hosts
วนซ้ำ: "{{ hostvars|dict2items|
selectattr('คีย์', 'ใน', my_hosts)|
selectattr('value._my_os')|
แผนที่(แอตทริบิวต์='คีย์')|
รายการ }}"
run_once: จริง
- ชื่อ: ลบไฟล์ออกจาก my_hosts
โฮสต์: my_hosts
Gather_facts: เท็จ
งาน:
- ชื่อ: ลบไฟล์ออกจากไคลเอนต์
ไฟล์:
สถานะ: ขาด
เส้นทาง: /tmp/me
ลงทะเบียน: fileopt
- แก้ปัญหา:
var: fileopt
ให้
เล่น [สร้างกลุ่ม my_hosts] ***************************************
TASK [รวบรวมข้อเท็จจริง] *********************************************
ตกลง: [host03]
ตกลง: [host01]
ตกลง: [host02]
งาน [set_fact] *********************************************** ******
ตกลง: [host03]
ตกลง: [host02]
ตกลง: [host01]
งาน [สร้างกลุ่ม my_hosts] ***************************************
ตกลง: [host01] => (รายการ=host01)
ตกลง: [host01] => (รายการ=host02)
เล่น [ลบไฟล์ออกจาก my_hosts] ***********************************
งาน [ลบไฟล์ออกจากไคลเอนต์] *************************************
ตกลง: [host01]
ตกลง: [host02]
งาน [แก้ไขข้อบกพร่อง] *********************************************** *********
ตกลง: [host01] =>
ตัวเลือกไฟล์:
เปลี่ยน: เท็จ
ล้มเหลว: เท็จ
เส้นทาง: /tmp/me
สถานะ: ขาด
ตกลง: [host02] =>
ตัวเลือกไฟล์:
เปลี่ยน: เท็จ
ล้มเหลว: เท็จ
เส้นทาง: /tmp/me
สถานะ: ขาด