我需要将YAML格式的某些文件从一个“大” yml更改为几个较小的文件。不幸的是,我不知道哪一部分属于哪里。例如,我有以下.yml:
all:
hosts:
station01:
dns_name: localhost
ansible_host: localhost
work01:
dns_name: X.X.X.X
ansible_host: Y.Y.Y.Y
vars:
yum_proxy: false
zabbix_proxy_ip: A.A.A.A
yum_proxy_ip:
dns_servers:
- B.B.B.B
- C.C.C.C
timezone: XXX
ntp_servers:
- D.D.D.D
disable_firewall_tasks: true
children:
deploy:
hosts:
station01:
linux:
hosts:
work01:
work_users:
hosts:
work01:
vars:
users:
- john: user
- mike: user
我相信主机文件应如下所示:
all:
hosts:
station01
work01
children:
deploy:
hosts:
station01:
linux:
hosts:
work01:
work_users:
hosts:
work01:
group_vars“ all.yml”看起来像这样:
---
all:
yum_proxy: false
zabbix_proxy_ip: A.A.A.A
yum_proxy_ip:
dns_servers:
- B.B.B.B
- C.C.C.C
timezone: XXX
ntp_servers:
- D.D.D.D
disable_firewall_tasks: true
这是问题开始的地方。我不知道将“用户:”放在哪里。应该在分配给一个主机的host_vars“ work01.yml”中,例如:
---
work01:
dns_name: X.X.X.X
ansible_host: Y.Y.Y.Y
users:
- john: user
- mike: user
还是应该将其包含在名为“ work_users.yml”的group_vars文件中?
---
users:
- john: user
- mike: user
host_vars和group_vars文件应该是什么样?任何帮助将不胜感激。
答案 0 :(得分:2)
Q:“ host_vars和group_vars文件应该是什么样?”
A:关于如何命名和组织目录和文件,还有更多选项。参见Organizing host and group variables。
以相应的组和主机名命名的文件
下面是将变量放入以相应组和主机名命名的文件中的示例
shell> cat group_vars/all.yml
---
yum_proxy: false
zabbix_proxy_ip: A.A.A.A
yum_proxy_ip:
dns_servers:
- B.B.B.B
- C.C.C.C
timezone: XXX
ntp_servers:
- D.D.D.D
disable_firewall_tasks: true
shell> cat group_vars/work_users.yml
---
users:
- john: user
- mike: user
shell> cat host_vars/work01.yml
---
dns_name: X.X.X.X
ansible_host: Y.Y.Y.Y
shell> cat host_vars/station01.yml
---
dns_name: localhost
ansible_host: localhost
以相应组和主机名命名的目录中的文件
下一个选择是将变量放入以相应组和主机名命名的目录内的文件中
shell> cat group_vars/all/network.yml
---
yum_proxy: false
zabbix_proxy_ip: A.A.A.A
yum_proxy_ip:
dns_servers:
- B.B.B.B
- C.C.C.C
timezone: XXX
ntp_servers:
- D.D.D.D
disable_firewall_tasks: true
shell> cat group_vars/work_users/users.yml
---
users:
- john: user
- mike: user
shell> cat host_vars/work01/network.yml
---
dns_name: X.X.X.X
ansible_host: Y.Y.Y.Y
shell> cat host_vars/station01/network.yml
---
dns_name: localhost
ansible_host: localhost