Is it possible to write Ansible hosts/inventory files in YAML?

前端 未结 3 1708
栀梦
栀梦 2020-12-01 07:38

In the best practices page, there is an example that uses hosts.yml for hosts files:

In the docs, however, I can only find the INI syntax for w

相关标签:
3条回答
  • 2020-12-01 07:57

    Previous answers are correct but here is simple hosts.yaml and INI like side by side in the screenshot and I'm just copying the actual hosts.yaml here too so if you want copy and paste and edit it for yourself

    --- 
    all: 
      hosts:               
        xmp: 
          ansible_connection: ssh
          ansible_host: "192.1.0.1"
          ansible_port: 7822
          ansible_user: nanoseco
    

    some more info:

    https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

    0 讨论(0)
  • 2020-12-01 08:08

    I just discovered Ansible INI to YAML inventory converter on github which worked fine for me:

    This repository contains a Python script for converting Ansible inventories in INI format to YAML format.

    For some reason, the conversion ended up with host ranges ([01:03]) being seperated by = instead of the shown and correct :.

    0 讨论(0)
  • 2020-12-01 08:21

    Yes.

    It's been deprecated in version 0.6 in 2012 and reintroduced in a commit first included in version 2.1 in 2016.

    The example file on GitHub contains the guidelines and examples:

    • Comments begin with the '#' character
    • Blank lines are ignored
    • Top level entries are assumed to be groups
    • Hosts must be specified in a group's hosts: and they must be a key (: terminated)
    • groups can have children, hosts and vars keys
    • Anything defined under a hosts is assumed to be a var
    • You can enter hostnames or ip addresses
    • A hostname/ip can be a member of multiple groups

    Ex 1: Ungrouped hosts, put in 'ungrouped' group

    ungrouped:
      hosts:
          green.example.com:
              ansible_ssh_host: 191.168.100.32
          blue.example.com:
          192.168.100.1:
          192.168.100.10:
    

    Ex 2: A collection of hosts belonging to the 'webservers' group

    webservers:
      hosts:
          alpha.example.org:
          beta.example.org:
          192.168.1.100:
          192.168.1.110:
    

    Ex 3: You can create hosts using ranges and add children groups and vars to a group. The child group can define anything you would normally add to a group

    testing:
      hosts:
          www[001:006].example.com:
      vars:
          testing1: value1
      children:
          webservers:
              hosts:
                  beta.example.org:
    
    0 讨论(0)
提交回复
热议问题