Ansible:如何在playbook中声明全局变量?

Shi*_*kar 7 ansible ansible-inventory

如何在Ansible playbook中声明全局变量.我在谷歌搜索并找到了以下解决方案,但它没有按预期工作.

- hosts: all
  vars:
    prod-servers:
     - x.x.x.x
     - x.x.x.x


- hosts: "{{prod-servers}}"
  tasks:
  - name: ping
    action: ping
Run Code Online (Sandbox Code Playgroud)

当我尝试上面的代码时,它说变量prod-servers是未定义的.

tec*_*raf 7

无法在播放中定义可在剧本级别(全局变量)上访问的变量.

可变范围

Ansible有3个主要范围:

  • 全局:这由配置,环境变量和命令行设置

  • 播放:每个播放和包含的结构,vars条目(vars; vars_files; vars_prompt),角色默认值和变量.

  • 主机:与主机直接关联的变量,如库存,include_vars,事实或已注册的任务输出

因此,您在游戏中声明的任何内容都只能是播放变量或(主机)事实.


要定义一个可以在hosts声明中使用的变量:

  • 运行ansible-playbook--extra-vars选项,并通过在所述参数的值;

或者实现相同的功能(决定在前一个游戏中运行游戏的主机):