特殊变量
魔术变量
这些变量不能由用户直接设置;Ansible 始终会覆盖它们以反映内部状态。
- ansible_check_mode
布尔值,指示是否处于检查模式
- ansible_collection_name
当前正在执行任务所属的集合名称。格式为
namespace.collection- ansible_config_file
所用 Ansible 配置文件的完整路径
- ansible_dependent_role_names
作为其他剧本依赖项而导入当前剧本的角色名称
- ansible_diff_mode
布尔值,指示是否处于差异模式
- ansible_forks
整数,反映当前运行可用的最大并行进程数(forks)
- ansible_index_var
提供给
loop_control.index_var的值名称。于2.9版本添加- ansible_inventory_sources
用作清单(inventory)的源列表
- ansible_limit
当前 Ansible 执行中
--limit命令行选项的内容- 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命令行选项的内容,指定本次运行包含哪些标签。注意,如果没有传递--tags,此变量默认为["all"]。- ansible_search_path
当前动作插件和查找(lookups)的搜索路径,换句话说,当你执行
template: src=myfile时,在何处搜索相对路径。--skip-tags命令行选项的内容,指定本次运行跳过哪些标签。- 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 的短版本,即通过
.分割后的第一部分。例如,对于www.example.com的inventory_hostname,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
当前执行剧本所在的目录路径。注意:当剧本包含
import_playbook语句时,这可能与传递给ansible-playbook命令行剧本的目录不同。- role_name
当前正在执行的角色名称。
- role_names
已弃用,与 ansible_play_role_names 相同
- role_path
当前正在运行的角色目录路径
事实(Facts)
这些变量包含与当前主机 (inventory_hostname) 相关的信息。仅在首先收集后才可用。更多信息请参阅 发现变量:事实和魔术变量。
- ansible_facts
包含为 inventory_hostname 收集或缓存的任何事实。事实通常由 setup 模块在剧本中自动收集,但任何模块都可以返回事实。
- ansible_local
包含为 inventory_hostname 收集或缓存的任何“本地事实”。可用的键取决于创建的自定义事实。更多详情请参阅 setup 模块和 facts.d 或本地事实。
连接变量
连接变量通常用于设置如何在目标上执行操作的具体细节。它们大多数对应于连接插件,但并非所有都特定于连接插件;shell、terminal 和 become 等其他插件通常也会参与。这里仅描述通用变量,因为每个连接/become/shell 等插件都可以定义自己的覆盖项和特定变量。有关连接变量如何与 配置设置、命令行选项 和 剧本关键字 交互,请参阅 控制 Ansible 的行为:优先级规则。