From 6d73310afaffec276085de76123bc5967747c611 Mon Sep 17 00:00:00 2001 From: Chris Hines <chris.hines@monash.edu> Date: Thu, 5 Feb 2015 05:22:32 +0000 Subject: [PATCH] allow the heat template to specify an ansible_host_groups list instead of a single value --- dynamicInventory | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/dynamicInventory b/dynamicInventory index cd93e153..eeeb2a64 100755 --- a/dynamicInventory +++ b/dynamicInventory @@ -174,7 +174,15 @@ class OpenStackConnection: inventory['_meta'] = { 'hostvars': {} } for server in nc.servers.list(): if server.id in instance_ids: - if server.metadata and 'ansible_host_group' in server.metadata: + if server.metadata and 'ansible_host_groups' in server.metadata: + hostname=server.name + groups = json.loads(server.metadata['ansible_host_groups']) + for group in groups: + if group in inventory: + inventory[group].append(hostname) + else: + inventory[group] = [ hostname ] + elif server.metadata and 'ansible_host_group' in server.metadata: #hostname = socket.gethostbyaddr(server.networks.values()[0][0])[0] hostname = server.name # Set Ansible Host Group @@ -182,16 +190,14 @@ class OpenStackConnection: inventory[server.metadata['ansible_host_group']].append(hostname) else: inventory[server.metadata['ansible_host_group']] = [hostname] - # Set the other host variables - inventory['_meta']['hostvars'][hostname] = {} - inventory['_meta']['hostvars'][hostname]['ansible_ssh_host'] = server.networks.values()[0][0] - inventory['_meta']['hostvars'][hostname]['ansible_remote_tmp'] = '/tmp/ansible' - for key in server.metadata.keys(): - if 'ansible_ssh' in key: - inventory['_meta']['hostvars'][hostname][key] = server.metadata[key] - - else: - continue + # Set the other host variables + inventory['_meta']['hostvars'][hostname] = {} + inventory['_meta']['hostvars'][hostname]['ansible_ssh_host'] = server.networks.values()[0][0] + inventory['_meta']['hostvars'][hostname]['ansible_remote_tmp'] = '/tmp/ansible' + for key in server.metadata.keys(): + if 'ansible_ssh' in key: + inventory['_meta']['hostvars'][hostname][key] = server.metadata[key] + inventory['_meta']['hostvars'][hostname]['ansible_ssh_user'] = 'root' print json.dumps(inventory) if __name__ == "__main__": -- GitLab