select group_var 顶级剧本中的变量文件

select group_var variable file in top level playbook

我已经在 group_vars/all/vars_file.yml 中定义了所有变量,我的剧本如下:

---
# Top level play site.yml
- hosts: webclient

  roles:
    - common
    - nginx
    - nvm
    - deploy_web_client

- hosts: appserver
  roles:
    - common
    - gradle
    - tomcat
    - deploy_sb_war

现在我有 3 个开发/暂存/生产环境。根据环境,我曾经更改 group_vars 下的 vars_file.yml,然后 运行 ansible-play。

有什么方法可以保留 "group_vars/dev"、"group_vars/staging"、"group_vars/production" 等 3 个文件,并在我的主 site.yml

中指定它

我有如下 3 个清单文件,根据 ansible-play 期间的环境,我指定了清单文件名

[webclient]
10.20.30.40

[appserver]
10.20.30.41

不要使用保存在单个目录中的清单文件,而是使用单独目录中的清单文件并将 group_vars 放入每个目录中。

.
├── dev
│   ├── group_vars
│   │   └── all
│   │       └── vars_file.yml
│   └── inventory
├── production
│   ├── group_vars
│   │   └── all
│   │       └── vars_file.yml
│   └── inventory
└── staging
    ├── group_vars
    │   └── all
    │       └── vars_file.yml
    └── inventory

然后指向ansible-playbook调用中的目录:

ansible-playbook -i dev <the_rest>