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