在Ansible中,可以使用注册变量来获取命令输出或者模块返回的结果,并将其动态地作为变量名来使用。下面是一个示例解决方法:
- name: 执行命令并注册结果
command: echo "Hello, World!"
register: command_output
- name: 动态命名变量
set_fact:
"dynamic_var_{{ inventory_hostname }}": "{{ command_output.stdout }}"
- name: 打印动态命名的变量
debug:
var: dynamic_var_{{ inventory_hostname }}
在上述示例中,首先使用command模块执行命令echo "Hello, World!",并将其注册到变量command_output中。
然后,使用set_fact模块来动态命名变量。在这个示例中,使用inventory_hostname来获取主机名,并将其作为变量名的一部分。command_output.stdout表示命令输出的内容,将其赋值给动态命名的变量。
最后,使用debug模块来打印动态命名的变量。可以通过dynamic_var_{{ inventory_hostname }}来引用动态命名的变量。
请注意,这个示例假设你有一个包含多个主机的Ansible inventory文件。如果你只有一个主机,可以直接使用该主机的名称来动态命名变量,而不需要使用inventory_hostname。
上一篇:Ansible转义字符串"\"
下一篇:Ansible注册变量未定义