在我local.yml能够运行剧本和参考变量group_vars/all但我无法访问其中的变量group_vars/phl-stage.我们假设如下.
ansible-playbook -i phl-stage site.yml
Run Code Online (Sandbox Code Playgroud)
我有一个变量,让我们称之为deploy_path每个环境都不同.我把变量放在里面group_vars/< environment name >.如果我group_vars/phl-stage在vars_files其中包含文件,但我会认为组文件会自动加载?
site.yml
- include: local.yml
Run Code Online (Sandbox Code Playgroud)
local.yml
- hosts: 127.0.0.1
connection: local
vars_files:
- "group_vars/perlservers"
- "group_vars/deploy_list"
Run Code Online (Sandbox Code Playgroud)
group_vars/PHL级
[webservers]
phl-web1
phl-web2
[perlservers]
phl-perl1
phl-perl2
[phl-stage:children]
webservers
perlservers
Run Code Online (Sandbox Code Playgroud)
目录结构:
group_vars
all
phl-stage
phl-prod
site.yml
local.yml
Run Code Online (Sandbox Code Playgroud)
hka*_*iti 60
你有点困惑这个结构.
group_vars目录包含清单文件中定义的每个主机组的文件.这些文件定义了成员主机可以使用的变量.group_varsdir中,它应该在外面.group_vars/all.你想要的是这个dir结构:
group_vars/
all
perlservers
phl-stage
hosts
site.yml
local.yml
Run Code Online (Sandbox Code Playgroud)
您的hosts文件应该如下所示,假设127.0.0.1只是一个登台服务器而不是perl或Web服务器:
[webservers]
phl-web1
phl-web2
[perlservers]
phl-perl1
phl-perl2
[phl-stage]
127.0.0.1
[phl-stage:children]
webservers
perlservers
Run Code Online (Sandbox Code Playgroud)
因此,您可以定义哪些主机属于清单中的哪个组,然后为每个组定义其group_vars文件中的变量.
| 归档时间: |
|
| 查看次数: |
41828 次 |
| 最近记录: |