Ansible 可分离主机、组变量和主机变量

Ansible 可分离主机、组变量和主机变量,ansible,yaml,ansible-inventory,Ansible,Yaml,Ansible Inventory,我需要将一些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 za

我需要将一些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
我认为hosts文件应该如下所示:

all:
  hosts:
    station01
    work01

  children:
    deploy:
      hosts:
        station01:
    linux:
      hosts:
        work01:
    work_users:
      hosts:
        work01:
---
work01:
  dns_name: X.X.X.X
  ansible_host: Y.Y.Y.Y
  users:
    - john: user
    - mike: user
“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
这就是问题的开始。我不知道把“用户:”放在哪里。应该在主机变量“work01.yml”中分配给一个主机,如下所示:

all:
  hosts:
    station01
    work01

  children:
    deploy:
      hosts:
        station01:
    linux:
      hosts:
        work01:
    work_users:
      hosts:
        work01:
---
work01:
  dns_name: X.X.X.X
  ansible_host: Y.Y.Y.Y
  users:
    - john: user
    - mike: user
还是应该包含在名为“work\u users.yml”的组变量文件中

宿主变量和组变量的文件应该是什么样子?任何形式的帮助都将不胜感激。

Q:文件宿主变量和组变量应该是什么样子?

答:关于如何命名和组织目录和文件,还有更多选项。看

以相应组和主机名命名的文件

下面是将变量放入以相应组和主机名命名的文件的示例

shell>cat组变量/all.yml
---
yum\u代理:false
zabbix_proxy_ip:A.A.A.A
yum\u proxy\u ip:
dns_服务器:
-B.B.B.B
-C.C.C.C
时区:XXX
ntp_服务器:
-D.D.D.D.D
禁用防火墙任务:true
shell>cat group\u vars/work\u users.yml
---
用户:
-约翰:用户
-迈克:用户
shell>cat主机变量/work01.yml
---
域名系统名称:X.X.X.X
主持人:Y.Y.Y.Y
shell>cat主机变量/station01.yml
---
dns\u名称:本地主机
ansible_主机:本地主机

以相应组和主机名命名的目录中的文件

下一个选项是将变量放入以相应组和主机名命名的目录中的文件中

shell>cat group\u vars/all/network.yml
---
yum\u代理:false
zabbix_proxy_ip:A.A.A.A
yum\u proxy\u ip:
dns_服务器:
-B.B.B.B
-C.C.C.C
时区:XXX
ntp_服务器:
-D.D.D.D.D
禁用防火墙任务:true
shell>cat group\u vars/work\u users/users.yml
---
用户:
-约翰:用户
-迈克:用户
shell>cat host\u vars/work01/network.yml
---
域名系统名称:X.X.X.X
主持人:Y.Y.Y.Y
shell>cat host\u vars/station01/network.yml
---
dns\u名称:本地主机
ansible_主机:本地主机