Ví dụ, với hàng tồn kho
vỏ> vật chủ mèo
máy chủ01
máy chủ02
máy chủ03
và danh sách
danh sách:
- máy chủ: máy chủ01
đĩa: đĩa0
hệ điều hành: 13.0
- máy chủ: máy chủ02
đĩa: đĩa4
hệ điều hành: 13.0
- chủ nhà: host06
đĩa: hdisk7
hệ điều hành: 13.0
Tạo danh sách các máy chủ được phép
my_hosts: "{{list|map(attribute='host')|list }}"
cho
my_host:
- máy chủ01
- máy chủ02
- máy chủ06
Tiếp theo, tạo từ điển các máy chủ được phép và phiên bản hệ điều hành
my_os: "{{list|items2dict(key_name='host', value_name='os') }}"
cho
my_os:
máy chủ01: 13.0
máy chủ02: 13.0
máy chủ06: 13.0
Bây giờ, các tác vụ bên dưới xóa tệp có điều kiện và hiển thị kết quả đã đăng ký
- name: Xóa tệp khỏi máy khách
tập tin:
trạng thái: vắng mặt
đường dẫn: /tmp/tôi
khi nào:
-ventory_hostname trong my_hosts
- ansible_distribution_version ==
my_os[inventory_hostname]|default('None')|string
đăng ký: fileopt
- gỡ lỗi:
var: fileopt
cho
NHIỆM VỤ [Xóa tệp khỏi máy khách] ********************************************* **
bỏ qua: [host03]
được rồi: [máy chủ02]
được rồi: [máy chủ01]
NHIỆM VỤ [gỡ lỗi] ************************************************ ******************
được rồi: [máy chủ01] =>
tập tin:
đã thay đổi: sai
thất bại: sai
đường dẫn: /tmp/tôi
trạng thái: vắng mặt
được rồi: [máy chủ02] =>
tập tin:
đã thay đổi: sai
thất bại: sai
đường dẫn: /tmp/tôi
trạng thái: vắng mặt
được rồi: [host03] =>
tập tin:
đã thay đổi: sai
Skip_reason: Kết quả có điều kiện là Sai
bỏ qua: đúng
Như mong đợi, máy chủ03 cái bị thiếu trong danh sách đã bị bỏ qua.
Theo tùy chọn, việc tạo một nhóm động có thể hiệu quả hơn nếu danh sách các máy chủ được phép nhỏ hơn nhiều so với tất cả các máy chủ. Ví dụ: tạo một nhóm máy chủ được phép trong lần chơi đầu tiên và sử dụng nó trong lần chơi thứ hai
- tên: Tạo nhóm my_hosts
máy chủ: tất cả
thu thập_sự thật: đúng
lọ:
danh sách:
- máy chủ: máy chủ01
đĩa: đĩa0
hệ điều hành: 13.0
- máy chủ: máy chủ02
đĩa: đĩa4
hệ điều hành: 13.0
- chủ nhà: host06
đĩa: hdisk7
hệ điều hành: 13.0
my_hosts: "{{list|map(attribute='host')|list }}"
my_os: "{{list|items2dict(key_name='host', value_name='os') }}"
nhiệm vụ:
- bộ_thực tế:
_my_os: "{{ ansible_distribution_version ==
my_os[inventory_hostname]|default('None')|string }}"
- tên: Tạo nhóm my_hosts
add_host:
tên: "{{mục}}"
nhóm: my_hosts
vòng lặp: "{{ hostvars|dict2items|
selectattr('key', 'in', my_hosts)|
selectattr('value._my_os')|
bản đồ(thuộc tính='key')|
danh sách }}"
run_once: đúng
- tên: Xóa tệp khỏi my_hosts
máy chủ: my_hosts
thu thập_facts: sai
nhiệm vụ:
- name: Xóa tệp khỏi máy khách
tập tin:
trạng thái: vắng mặt
đường dẫn: /tmp/tôi
đăng ký: fileopt
- gỡ lỗi:
var: fileopt
cho
CHƠI [Tạo nhóm my_hosts] ***************************************
NHIỆM VỤ [Thu thập thông tin] *********************************************
được rồi: [máy chủ03]
được rồi: [máy chủ01]
được rồi: [máy chủ02]
NHIỆM VỤ [set_fact] ************************************************ ******
được rồi: [máy chủ03]
được rồi: [máy chủ02]
được rồi: [máy chủ01]
NHIỆM VỤ [Tạo nhóm my_hosts] ***************************************
được rồi: [host01] => (mục=host01)
được rồi: [host01] => (mục=host02)
CHƠI [Xóa tệp khỏi my_hosts] ************************************
NHIỆM VỤ [Xóa tệp khỏi máy khách] ***************************************
được rồi: [máy chủ01]
được rồi: [máy chủ02]
NHIỆM VỤ [gỡ lỗi] ************************************************ *********
được rồi: [máy chủ01] =>
tập tin:
đã thay đổi: sai
thất bại: sai
đường dẫn: /tmp/tôi
trạng thái: vắng mặt
được rồi: [máy chủ02] =>
tập tin:
đã thay đổi: sai
thất bại: sai
đường dẫn: /tmp/tôi
trạng thái: vắng mặt