我正在嘗試修改一個值,如果所有任務都正常,它應該有一個值 = A,如果一個或多個任務需要更改它應該有一個值 = B。我正在將所有任務結果注冊到一個變數中,我有有條件更改主題,然后發送電子郵件。
- name: Task05:summary, set setting_config fact
set_fact:
settings_config: false
when: task01.changed == false and task02.changed == false
- name: Task006:summary, set summary fact
set_fact:
sujectmail : "{{ 'Ansible email Summary Status:green ' if settings_config == false else 'Ansible email Report Status: red!' }}"
- name: task10 report HTML report for infrastructure
template:
src: "{{ settings_report_template }}"
dest: "{{ settings_report_file }}"
delegate_to: localhost
run_once: true
check_mode: no
- name: task11 Send email report
mail:
host: "{{ mail_gateway }}"
port: "{{ mail_gateway_port }}"
sender: "{{ mail_sender }}"
subtype: html
to: "{{ mail_recipients }}"
subject: "{{sujectm}}"
body: "{{ lookup('file', config_check_report_file) }}"
secure: starttls
register: mail_output
delegate_to: localhost
run_once: true
check_mode: no
問題是 task10/task11 只選擇一個主機。有什么方法可以在所有已注冊的事實中找到,如果找到“settings_config”變數,它會應用相應的值而不是一個或最新的主機?
uj5u.com熱心網友回復:
問:“在所有注冊的 'settings_config' 中查找。”
A: 將以下宣告放入vars并創建字典
configs: "{{ dict(ansible_play_hosts|
zip(ansible_play_hosts|
map('extract', hostvars, 'settings_config')|
list)) }}"
例如,給定用于測驗的庫存
shell> cat hosts
host_1 tasks_changed=true
host_2 tasks_changed=true
host_3 tasks_changed=false
劇本
- hosts: host_1,host_2,host_3
gather_facts: false
vars:
configs: "{{ dict(ansible_play_hosts|
zip(ansible_play_hosts|
map('extract', hostvars, 'settings_config')|
list)) }}"
tasks:
- name: Task05:summary, set setting_config fact
set_fact:
settings_config: "{{ tasks_changed|bool }}"
- debug:
var: configs
run_once: true
給出(刪節)
configs:
host_1: true
host_2: true
host_3: false
筆記
- 簡化代碼。而不是條件
- name: Task05:summary, set setting_config fact
set_fact:
settings_config: false
when: task01.changed == false and task02.changed == false
直接設定變數。您不必稍后測驗此變數的存在。
- name: Task05:summary, set setting_config fact
set_fact:
settings_config: task01.changed or task02.changed
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/506954.html
標籤:变量 可靠的 ansible-facts