# salt.roster.ansible

Read in an Ansible inventory file or script.

Flat inventory files should be in the regular ansible inventory format.

    # /tmp/example_roster
    [servers]
    salt.gtmanfred.com ansible_ssh_user=gtmanfred ansible_ssh_host=127.0.0.1 ansible_ssh_port=22 ansible_ssh_pass='password' ansible_sudo_pass='password'

    [desktop]
    home ansible_ssh_user=gtmanfred ansible_ssh_host=12.34.56.78 ansible_ssh_port=23 ansible_ssh_pass='password' ansible_sudo_pass='password'

    [computers:children]
    desktop
    servers

    [computers:vars]
    http_port=80

then salt-ssh can be used to hit any of them

    [~]# salt-ssh --roster=ansible --roster-file=/tmp/example_roster -N all test.ping
    salt.gtmanfred.com:
        True
    home:
        True
    [~]# salt-ssh --roster=ansible --roster-file=/tmp/example_roster -N desktop test.ping
    home:
        True
    [~]# salt-ssh --roster=ansible --roster-file=/tmp/example_roster -N computers test.ping
    salt.gtmanfred.com:
        True
    home:
        True
    [~]# salt-ssh --roster=ansible --roster-file=/tmp/example_roster salt.gtmanfred.com test.ping
    salt.gtmanfred.com:
        True

There is also the option of specifying a dynamic inventory, and generating it on the fly

    #!/bin/bash
    # filename: /etc/salt/hosts
    echo '{
        "servers": [
            "salt.gtmanfred.com"
        ],
        "desktop": [
            "home"
        ],
        "computers": {
            "hosts": [],
            "children": [
                "desktop",
                "servers"
            ],
            "vars": {
                "http_port": 80
            }
        },
        "_meta": {
            "hostvars": {
                "salt.gtmanfred.com": {
                    "ansible_ssh_user": "gtmanfred",
                    "ansible_ssh_host": "127.0.0.1",
                    "ansible_sudo_pass": "password",
                    "ansible_ssh_pass": "password",
                    "ansible_ssh_port": 22
                },
                "home": {
                    "ansible_ssh_user": "gtmanfred",
                    "ansible_ssh_host": "12.34.56.78",
                    "ansible_sudo_pass": "password",
                    "ansible_ssh_pass": "password",
                    "ansible_ssh_port": 23
                }
            }
        }
    }'

This is the format that an inventory script needs to output to work with ansible, and thus here.

    [~]# salt-ssh --roster=ansible --roster-file /etc/salt/hosts salt.gtmanfred.com test.ping
    salt.gtmanfred.com:
            True

Note

A dynamic inventory script must have the executable bit set. In the above example, `chmod +x /etc/salt/hosts`.

Any of the [groups] or direct hostnames will return. The 'all' is special, and returns everything.

salt.roster.ansible.targets(tgt, tgt_type='glob', **kwargs)

  Return the targets from the ansible inventory_file Default: /etc/salt/roster