特殊变量
魔术变量
这些变量不能由用户直接设置;Ansible 将始终覆盖它们以反映内部状态。
- ansible_check_mode
布尔值,指示我们是否处于检查模式。
- ansible_collection_name
正在执行的任务所属集合的名称。格式为
namespace.collection
- ansible_config_file
所用 Ansible 配置文件的完整路径。
- ansible_dependent_role_names
当前导入到当前剧本中作为其他剧本依赖项的角色的名称。
- ansible_diff_mode
布尔值,指示我们是否处于差异模式。
- ansible_forks
反映此运行可用的最大 fork 数量的整数。
- ansible_index_var
提供给
loop_control.index_var
的值的名称。在2.9
中添加。- ansible_inventory_sources
用作清单的来源列表。
- ansible_limit
Ansible 当前执行的
--limit
CLI 选项的内容。- ansible_loop
通过
loop_control.extended
启用时,包含扩展循环信息的字典/映射。- ansible_loop_var
提供给
loop_control.loop_var
的值的名称。在2.8
中添加。- ansible_parent_role_names
当当前角色通过 include_role 或 import_role 动作执行时,此变量包含所有父角色的列表,其中最近的角色(换句话说,包含/导入此角色的角色)是列表中的第一个项目。当发生多个包含时,此列表将列出*最后一个*角色(换句话说,包含此角色的角色)作为列表中的*第一个*项目。此列表中也可能存在特定角色多次。
例如:当角色 **A** 包含角色 **B** 时,在角色 B 中,
ansible_parent_role_names
将等于['A']
。如果角色 **B** 然后包含角色 **C**,则列表变为['B', 'A']
。- ansible_parent_role_paths
当当前角色通过 include_role 或 import_role 动作执行时,此变量包含所有父角色路径的列表,其中最近的角色(换句话说,包含/导入此角色的角色)是列表中的第一个项目。请参考
ansible_parent_role_names
以了解此列表中项目的顺序。- ansible_play_batch
当前剧本运行中受 serial(又名“批处理”)限制的活动主机列表。失败/不可达的主机不被认为是“活动”的。
- ansible_play_hosts
当前剧本运行中的主机列表,不受 serial 限制。失败/不可达的主机将从该列表中排除。
- ansible_play_hosts_all
剧本目标的所有主机的列表。
- ansible_play_name
当前执行的剧本的名称。在
2.8
中添加。(剧本的 name 属性,而不是剧本的文件名。)- ansible_play_role_names
当前导入到当前剧本中的角色的名称。此列表不包含通过依赖项隐式包含的角色名称。
- ansible_playbook_python
控制节点上 Ansible 使用的 Python 解释器的路径。
- ansible_role_name
完整的限定集合角色名称,格式为
namespace.collection.role_name
- ansible_role_names
当前导入到当前剧本中的角色的名称,或作为导入到当前剧本的角色的依赖项引用的角色的名称。
--tags
CLI 选项的内容,该选项指定将包含在当前运行中的标签。请注意,如果未传递--tags
,则此变量将默认为["all"]
。- ansible_search_path
操作插件和查找的当前搜索路径,换句话说,当您执行
template: src=myfile
时,我们在哪里搜索相对路径。--skip-tags
CLI 选项的内容,该选项指定将跳过当前运行的标签。- ansible_verbosity
Ansible 的当前详细程度设置。
- ansible_version
包含有关当前运行的 ansible 版本信息的字典/映射,它具有以下键:full、major、minor、revision 和 string。
- group_names
当前主机所属的组列表,它始终反映
inventory_hostname
并忽略委托。- groups
包含清单中所有组的字典/映射,每个组都包含属于它的主机列表。
- hostvars
包含清单中所有主机及其分配变量的字典/映射。
- inventory_dir
首先定义 inventory_hostname 的清单源的目录。这始终反映
inventory_hostname
并忽略委托。- inventory_hostname
剧本中正在迭代的“当前”主机的清单名称。这不受委托的影响,它始终反映任务的原始主机。
- inventory_hostname_short
inventory_hostname 的简短版本,是通过
.
分割后的第一部分。例如,对于inventory_hostname
为www.example.com
,www
将是inventory_hostname_short
。这受委托的影响,因此它将反映委托主机的“简称”。- inventory_file
首先定义 inventory_hostname 的清单源的文件名。忽略委托并始终反映
inventory_hostname
的信息。- omit
特殊变量,允许您在任务中“省略”一个选项,例如
- user: name=bob home={{ bobs_home|default(omit) }}
- play_hosts
已弃用,与 ansible_play_batch 相同。
- playbook_dir
当前正在执行的 playbook 所在目录的路径。注意:当 playbook 包含
import_playbook
语句时,这可能与传递给ansible-playbook
命令行的 playbook 目录不同。- role_name
当前正在执行的角色名称。
- role_names
已弃用,与 ansible_play_role_names 相同。
- role_path
当前正在运行的角色目录的路径。
事实(Facts)
这些变量包含与当前主机(inventory_hostname)相关的信息。只有在首先收集后才可用。更多信息,请参见 发现变量:事实和魔法变量。
- ansible_facts
包含为 inventory_hostname 收集或缓存的任何事实。事实通常由 setup 模块在 playbook 中自动收集,但任何模块都可以返回事实。
- ansible_local
包含为 inventory_hostname 收集或缓存的任何“本地事实”。可用的键取决于创建的自定义事实。更多详情,请参见 setup 模块和 facts.d 或本地事实。
连接变量
连接变量通常用于设置如何在目标上执行操作的细节。它们中的大多数对应于连接插件,但并非所有都特定于它们;其他插件如 shell、terminal 和 become 通常也参与其中。由于每个连接/become/shell/等插件都可以定义自己的覆盖和特定变量,因此此处仅描述常见的变量。有关连接变量如何与 控制 Ansible 的行为:优先级规则、配置设置、命令行选项 和 playbook 关键词 交互,请参见。