跳到主要内容

Variables

Variable Precedence | 变量优先级

在 Ansible 中,理解不同类型的变量及其优先级是关键,尤其是对于 Group Vars(组变量)、Host Vars(主机变量)、Play Vars(剧本变量)和 Extra Vars(额外变量)。下面是对这些变量类型的解释:

1. Group Vars(组变量)

  • 定义方式:在 Inventory 文件中或是单独的组变量文件中定义。
  • 作用:这些变量适用于 Inventory 中定义的特定组。所有属于该组的主机都将继承这些变量。
  • 使用场景:用于为一组主机定义通用的设置,如环境配置、服务器角色等。

2. Host Vars(主机变量)

  • 定义方式:可以直接在 Inventory 文件中定义,或在单独的主机变量文件中定义。
  • 作用:这些变量仅适用于特定的主机。主机变量通常用于覆盖组级别的变量或定义特定主机的唯一设置。
  • 使用场景:用于指定与特定主机相关的配置,如特定主机的 IP 地址、主机特有的配置等。

3. Play Vars(剧本变量)

  • 定义方式:在 Ansible 剧本(Playbooks)中定义。
  • 作用:这些变量适用于整个剧本或其中的特定 play。它们在剧本的上下文中有效,对剧本中的所有任务都有影响。
  • 使用场景:用于在执行特定任务或剧本时定义变量,如临时的任务参数、执行环境设置等。

4. Extra Vars(额外变量)

  • 定义方式:通过命令行 ansible-playbook 命令的 -e--extra-vars 选项传递。
  • 作用:这些变量具有最高优先级,它们会覆盖所有其他地方设置的同名变量。
  • 使用场景:常用于临时覆盖其他变量,或在命令行执行时传递特定的参数。非常适合用于不同环境的部署,或测试不同配置的影响。