在Ansible的vars文件中,可以使用Jinja2模板语法来为嵌套的动态变量赋值。
假设我们有一个vars文件,名为vars.yml,其中包含了一个嵌套的字典变量nested_var。我们想要为nested_var中的某个键赋值。
示例代码如下:
# vars.yml
nested_var:
key1: value1
key2: value2
我们可以使用Jinja2模板语法来动态赋值。在Ansible任务中,我们可以使用set_fact模块来完成这一操作。
# playbook.yml
- hosts: localhost
tasks:
- name: Load vars file
include_vars:
file: vars.yml
- name: Set nested variable
set_fact:
nested_var:
key1: "{{ nested_var.key1 }}"
key2: "new_value"
- name: Debug nested variable
debug:
var: nested_var
在上述示例中,我们使用set_fact模块将nested_var变量重新定义为一个新的字典,其中key2键的值被设为"new_value"。这样就完成了在vars文件中为嵌套的动态变量赋值的操作。
运行该playbook后,可以通过debug模块来查看nested_var的值是否被成功修改。
注意:在vars文件中,Jinja2模板语法使用双大括号{{ }}来包裹变量。在set_fact模块中,我们使用nested_var.key1来引用嵌套变量的值。