【问题标题】:Ansible separating hosts, group_vars and host_varsAnsible 分离主机、group_vars 和 host_vars
【发布时间】:2020-10-21 15:02:39
【问题描述】:

我需要将一些 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 文件应该是什么样的?任何形式的帮助将不胜感激。

【问题讨论】:

    标签: ansible yaml ansible-inventory


    【解决方案1】:

    问:host_vars 和 group_vars 文件应该是什么样的?

    答:有更多关于如何命名和组织目录和文件的选项。见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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多