Ansible 分离主机,group_vars 和 host_vars
Ansible separating hosts, group_vars and host_vars
我需要将一些 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 应该是什么样子?任何形式的帮助将不胜感激。
问:"文件 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
我需要将一些 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 应该是什么样子?任何形式的帮助将不胜感激。
问:"文件 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