在顶级剧本中选择group_var变量文件

Nag*_*nan 1 ansible ansible-2.x ansible-inventory

我已经定义了所有变量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
Run Code Online (Sandbox Code Playgroud)

现在我有3个环境dev / staging / production。根据环境的不同,我曾经在group_vars下更改vars_file.yml,然后运行ansible-play。

有什么办法可以保留3个文件,例如“ group_vars / dev”,“ group_vars / staging”,“ group_vars / production”,并在我的主站点中指定它。yml

我有3个清单文件,如下所示,并根据环境在播放环境中指定清单文件名

[webclient]
10.20.30.40

[appserver]
10.20.30.41
Run Code Online (Sandbox Code Playgroud)

tec*_*raf 5

与其使用保存在单个目录中的清单文件,不如将清单文件放在单独的目录中并放入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
Run Code Online (Sandbox Code Playgroud)

然后指向ansible-playbook呼叫中的目录:

ansible-playbook -i dev <the_rest>
Run Code Online (Sandbox Code Playgroud)