Ansible:在多个重头戏/任务中定义"vars"的有效方法?



Ansible:高效定义"var "在多个游戏/任务

我们有100的剧本,任务等。在许多任务中,我们需要提取唯一的变量&基于另一组"变量"从查找中。这主要用于元信息和附加到模板。但是每次我要放变量的时候,我们需要把它们一个一个地放到任务中。有没有更好/更有效的方法来制造"价值"?本身就像一个模板?所以我可以用模板填满所有变量吗?

请找一个例子

- name: "play1, task1"
file:
something..
loop: my_dict1
vars:
empID: {{item|someSplitting|anothercalculation}}
empFirstName: {{empID|some_filter}}
... set_of_20_vars_based_on_empID_lookup
- name: "a separate play/task"
<another_activity>:
something..
loop: another_dict_to_stitch_together_to_my_dict1
vars:
somethingDifferent: {{item|someCalculation}}
empID: {{somethingDifferent|someSplitting|anothercalculation}}
empFirstName: {{empID|some_filter}}
... set_of_20_vars_based_on_empID_lookup repeated

所以我在var中寻找一个选项,在那里我可以将所有这些20+ var定义到一个地方,所以我可以重复使用它?

- name: "Any task"
template:
<fill_my_template_with_vars>
loop: my_any_dict_or_list
vars:
somethingDifferent2: {{item|someCalculation}}
empID: {{somethingDifferent2|someSplitting|anothercalculation}}
my_employee_vars: {{import_List_of_all_standard_20vars_lookup}}

如有任何帮助,不胜感激

那么,您可以将数据放入字典中:

group_vars/all.yml

employee_data:
'1234567':
first: Fred
last: Flintstone
start_date: "8-OCT-29,118BC"
filing_status: married
dependents: 2
'1847882':
first: Barney
last: Rubble
start_date: "12-JUN-29,110BC"
filing_status: married
dependents: 2

show_emp_data.yml:

---
- hosts: Client1
become: no
gather_facts: no
vars:
emp_data: "{{ employee_data[emp_id] }}"
tasks:
- debug:
var: employee_data
- debug:
var: emp_data

现在运行ansible-playbook show_emp_data.yml -e emp_id=1847882

PLAY [Client1] *************************************************************************
TASK [debug] ***************************************************************************
ok: [Client1] => {
"employee_data": {
"1234567": {
"dependents": 2,
"filing_status": "married",
"first": "Fred",
"last": "Flintstone",
"start_date": "8-OCT-29,118BC"
},
"1847882": {
"dependents": 2,
"filing_status": "married",
"first": "Barney",
"last": "Rubble",
"start_date": "12-JUN-29,110BC"
}
}
}
TASK [debug] ***************************************************************************
ok: [Client1] => {
"emp_data": {
"dependents": 2,
"filing_status": "married",
"first": "Barney",
"last": "Rubble",
"start_date": "12-JUN-29,110BC"
}
}
PLAY RECAP *****************************************************************************
Client1                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

最新更新