Ansible 可解角色全局变量

Ansible 可解角色全局变量,ansible,ansible-role,Ansible,Ansible Role,我使用角色部署我的机器,角色有变量,但有时我有多个角色,我想在根文件夹中放置一个全局变量文件,因此可以使用vars/global.yml和覆盖role/vars/main.yml #vars/global.yml somevariable: somevalue 但若根文件夹中有全局变量,只需覆盖基于角色的变量并实现vars/global即可 ├── Playbook.yml ├── ansible.cfg ├── roles │ ├── Ansible-Role-UserProfile │

我使用角色部署我的机器,角色有变量,但有时我有多个角色,我想在根文件夹中放置一个全局变量文件,因此可以使用
vars/global.yml
覆盖
role/vars/main.yml

#vars/global.yml
somevariable: somevalue
但若根文件夹中有全局变量,只需覆盖基于角色的变量并实现vars/global即可

├── Playbook.yml
├── ansible.cfg
├── roles
│   ├── Ansible-Role-UserProfile
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   ├── rm.j2
│   │   │   └── vimrc.j2
│   │   └── vars
│   │       └── main.yml
└── vars
    └── global.yml
角色和变量的可重用性与本机有关吗?

请看本章

列表中“角色变量”后面列出的所有角色都具有优先权,因此请使用其中任何一个

  • 块变量(仅适用于块中的任务)
  • 任务变量(仅用于任务)
  • 角色(和include_角色)参数
  • 包括参数
  • 包括
  • 设置事实/注册变量
  • 额外变量(始终赢得优先权)

否则,使用优先级最低的角色默认值来定义变量值。角色默认值由问题示例中的play vars覆盖。

将全局变量放入组变量/all中。在中查看它如何适合您的目录结构


角色变量优先于组变量,因此您可以覆盖角色中的全局值。

OP写道“我想在根文件夹中放置一个全局变量文件,因此可以使用vars/global.yml并覆盖Role/vars/main.yml”——您正好回答了相反的请求。我遗漏了什么?如果他是这个意思,我误解了这个问题。请详细说明你的答案。