Read in an Ansible inventory file or script
Flat inventory files should be in the regular ansible inventory format.
[servers] salt.gtmanfred.com ansible_ssh_user=gtmanfred ansible_ssh_host=127.0.0.1 ansible_ssh_port=22 ansible_ssh_pass='password' [desktop] home ansible_ssh_user=gtmanfred ansible_ssh_host=12.34.56.78 ansible_ssh_port=23 ansible_ssh_pass='password' [computers:children] desktop servers [names:vars] http_port=80
then salt-ssh can be used to hit any of them
[~]# salt-ssh -N all test.ping
salt.gtmanfred.com:
    True
home:
    True
[~]# salt-ssh -N desktop test.ping
home:
    True
[~]# salt-ssh -N computers test.ping
salt.gtmanfred.com:
    True
home:
    True
[~]# salt-ssh 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
echo '{
  "servers": [
    "salt.gtmanfred.com"
  ],
  "desktop": [
    "home"
  ],
  "computers": {
    "hosts": [],
    "children": [
      "desktop",
      "servers"
    ]
  },
  "_meta": {
    "hostvars": {
      "salt.gtmanfred.com": {
        "ansible_ssh_user": "gtmanfred",
        "ansible_ssh_host": "127.0.0.1",
        "ansible_sudo_pass": "password",
        "ansible_ssh_port": 22
      },
      "home": {
        "ansible_ssh_user": "gtmanfred",
        "ansible_ssh_host": "12.34.56.78",
        "ansible_sudo_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-file /etc/salt/hosts salt.gtmanfred.com test.ping
salt.gtmanfred.com:
        True Any of the [groups] or direct hostnames will return. The 'all' is special, and returns everything.
Return the targets from the ansible inventory_file Default: /etc/salt/roster
    © 2019 SaltStack.
Licensed under the Apache License, Version 2.0.
    https://docs.saltstack.com/en/latest/ref/roster/all/salt.roster.ansible.html