Simple Bash and AWK script to generate Ansible inventory from SSH config file, it's really simple and assume you have "Host", "Hostname", "Port", "User" in separated lines, and valid SSH config file (there are no checks or tests done at all).
./generate_ansible_inventory_from_ssh_config.sh -h
Description:
Simple Bash and AWK script to generate Ansible inventory from SSH config file.
This script assumes you have "Host", "Hostname", "Port", "User" in separated lines,
and valid SSH config file (there are no checks or tests done at all).
Syntax:
./generate_ansible_inventory_from_ssh_config.sh [-s ansible_version] [-f ssh_config_file]
Options:
-h/--help
Display this help message.
-s/--syntax
Ansible syntax, e.g. v1 or v2 (default: v2).
-f/--file
The path of SSH config file (default: ~/.ssh/config).
You can run it directly, and it will use your default ssh config file (~/.ssh/config) and using Ansible v2.x syntax:
./generate_ansible_inventory_from_ssh_config.sh
You can specify ssh config file using "-f" or Ansible v1.x using "-s v1":
./generate_ansible_inventory_from_ssh_config.sh -s v1 -f ~/any_ssh_config_file
If you have ssh config file like this:
Host Server1
Hostname 10.0.0.1
Port 22
User xuser
Host Server2
Hostname 10.0.0.2
Port 22
User xuser
You will get that:
Ansible v2.0 syntax:
Server1 ssh_host=10.0.0.1 ssh_port=22 ssh_user=xuser
Server2 ssh_host=10.0.0.2 ssh_port=22 ssh_user=xuser
Ansible v1.0 syntax:
Server1 ansible_ssh_host=10.0.0.1 ansible_ssh_port=22 ansible_ssh_user=xuser
Server2 ansible_ssh_host=10.0.0.2 ansible_ssh_port=22 ansible_ssh_user=xuser
- By: Ahmed M. AbouZaid (tech.aabouzaid.com).
- Version: v0.01
- License: GPL v2.0 or later.