ansible常用模块 -- set_fact模块 -- 从任务中设置宿主事实
set_fact模块 – 从任务中设置宿主事实
一、摘要
- 这个模块允许设置新变量。
- 变量是在逐个主机的基础上设置的,就像设置模块发现的事实一样。
- 这些变量将在后续的ansible-playbook作业中使用。
- 将cacheable设置为yes以使用事实缓存在执行过程中保存变量。使用set_fact创建的变量具有不同的优先级,这取决于它们是否被缓存。
- 根据标准的Ansible变量优先级规则,许多其他类型的变量具有更高的优先级,因此这个值可能会被覆盖。
- Windows目标也支持此模块。
二、参数
参数 | 选项/默认值 | 描述 |
---|---|---|
cacheable boolean | · no ← · yes | 这个布尔值将变量转换为一个实际的“事实”,如果启用了事实缓存,这个“事实”也将被添加到事实缓存中。 通常这个模块创建“主机级变量”,并具有更高的优先级,这个选项改变了创建变量的性质和优先级(7步)。 这实际上创建了该变量的两个副本,一个是具有高优先级的普通’set_fact’主机变量,另一个是通过事实缓存插件持久化的’ansible_fact’主机变量。这可能会与meta: clear_facts产生令人困惑的交互,因为它将删除’ansible_fact’而不是主机变量。 |
key_value required | set_fact模块将key=value对作为变量在playbook作用域中进行设置。或者,使用args: statement接受复杂参数。 |
三、示例
# Example setting host facts using key=value pairs, note that this always creates strings or booleans
- set_fact: one_fact="something" other_fact="{{ local_var }}"
# Example setting host facts using complex arguments
- set_fact:
one_fact: something
other_fact: "{{ local_var * 2 }}"
another_fact: "{{ some_registered_var.results | map(attribute='ansible_facts.some_fact') | list }}"
# Example setting facts so that they will be persisted in the fact cache
- set_fact:
one_fact: something
other_fact: "{{ local_var * 2 }}"
cacheable: yes
# As of Ansible 1.8, Ansible will convert boolean strings ('true', 'false', 'yes', 'no')
# to proper boolean values when using the key=value syntax, however it is still
# recommended that booleans be set using the complex argument style:
- set_fact:
one_fact: yes
other_fact: no
官方文档:https://docs.ansible.com/ansible/2.9/modules/set_fact_module.html#set-fact-module