在Ansible中,可以使用Jinja2模板引擎将变量作为动态YAML键使用。以下是一个示例:
假设有一个名为my_var
的变量,它包含一个名称为key_name
的键名和一个值为value
的键值。现在,我们想要将my_var
变量作为动态YAML键使用。
inventory.yml文件内容如下:
---
my_var:
key_name: "dynamic_key"
value: "dynamic_value"
playbook.yml文件内容如下:
---
- name: Example playbook
hosts: localhost
tasks:
- name: Load variable from inventory
include_vars:
file: inventory.yml
- name: Create dynamic YAML key
set_fact:
dynamic_key: "{{ my_var.key_name }}"
- name: Create dynamic YAML
set_fact:
dynamic_yaml: "{ '{{ dynamic_key }}': '{{ my_var.value }}' }"
- name: Debug dynamic YAML
debug:
var: dynamic_yaml
在这个示例中,我们首先使用include_vars
任务从inventory.yml
文件中加载变量。然后,我们使用set_fact
任务创建了一个名为dynamic_key
的新变量,其值是my_var.key_name
的内容。
接下来,我们使用set_fact
任务创建了一个名为dynamic_yaml
的新变量,其值是一个动态YAML键值对。在这里,我们使用Jinja2模板引擎将dynamic_key
和my_var.value
的值插入到动态YAML中。
最后,我们使用debug
任务来打印出dynamic_yaml
变量的值,以验证动态YAML的输出结果。
运行这个playbook,你将会得到如下输出:
TASK [Debug dynamic YAML] ******************************************************************************************************************************************************
ok: [localhost] => {
"dynamic_yaml": {
"dynamic_key": "dynamic_value"
}
}
可以看到,my_var
变量中的值已经成功作为动态YAML键使用,并且得到了正确的输出结果。