#!/usr/bin/env python
import yaml
import json
with open('containers.yml') as fp:
c = yaml.load(fp)
containers = c['containers']
inventory = {
'containers': { 'hosts': [] },
'_meta': { 'hostvars': {} }
}
for k, v in containers.items():
inventory['containers']['hosts'].append(k)
if 'groups' in v:
for group in v['groups']:
if group not in inventory:
inventory[group] = { 'hosts':[] }
inventory[group]['hosts'].append(k)
inventory['_meta']['hostvars'][k] = {}
inventory['_meta']['hostvars'][k]['ansible_ssh_host'] = v['address']
print(json.dumps(inventory,indent=2))
containers:
vpn:
address: 192.168.114.4
forwards:
- { transport: udp, host: 1194, container: 1194 }
reverseproxy:
address: 192.168.114.10
forwards:
- { transport: tcp, host: 80, container: 80 }
- { transport: tcp, host: 443, container: 443 }
web1:
hostname: web1.example.lan
address: 192.168.114.11
cnames:
- moreweb.example.lan
- another.example.lan
groups:
- web
web2:
hostname: web2.example.lan
address: 192.168.114.12
groups:
- web