Ansible组\u变量未基于环境/主机列表加载
我有一本这样的剧本:Ansible组\u变量未基于环境/主机列表加载,ansible,Ansible,我有一本这样的剧本: - hosts: "{{env}}" name: "REDIS Playbook" sudo: no vars: product: redis roles: - redis 我用:ansible playbook pb_redis.yml-I inventory/redis-e env=qa-v 我的目录结构如下: . ├── group_vars │ ├── qa │ │ ├── common │ │ | └──
- hosts: "{{env}}"
name: "REDIS Playbook"
sudo: no
vars:
product: redis
roles:
- redis
我用:ansible playbook pb_redis.yml-I inventory/redis-e env=qa-v
我的目录结构如下:
.
├── group_vars
│ ├── qa
│ │ ├── common
│ │ | └── redis.yml
│ │ ├── products
│ │ | └── abc-1.yml
│ │ | └── xyz-2.yml
│ ├── test
│ │ ├── common
│ │ | └── redis.yml
│ │ ├── products
│ │ | └── abc-1.yml
│ │ | └── xyz-2.yml
├── inventory
└── roles
└── redis
├── files
├── handlers
├── meta
├── tasks
├── templates
└── vars
我有一个清单,比如:
[qa:children]
qa_redis
[qa_redis]
mybox.1.space
mybox.2.space
mybox.3.space
我的问题:当我运行ansible playbook pb_redis.yml-I inventory/redis-e env=qa-v
时,我仍然在学习中定义的组变量
。/test/common/redis.yml
而不是。/qa/common/redis.yml
——我是否误解了这应该如何工作?从资源清册文件中提取正确的主机,但不是正确的组变量。我是否应该将redis.yml
放在。/qa/products/
下?Ansible中的库存(主机和组)变量绑定到主机。组变量的存在是为了方便
如果主机同时位于多个组中,则所有组变量都将应用于该主机。如果不同的组具有相同的变量,则它们在库存加载过程中会相互覆盖 因此,如果在组
qa
和test
中有mybox.1.space
,则组qa
和test
中的变量将应用于此主机
通常,您希望使用单独的清单来处理不同的部署环境。和组用于分隔清单中的不同逻辑单元。清单中的
test
和qa
组中定义了相同的主机吗?嗯。。是的,事实上我们有。我们为qa
、dev
、test
、cert
共享主机,按此顺序定义。