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
共享主机,按此顺序定义。