diff options
author | Markos Chandras <mchandras@suse.de> | 2018-05-15 10:56:23 +0100 |
---|---|---|
committer | Markos Chandras <mchandras@suse.de> | 2018-05-16 14:46:00 +0100 |
commit | 0ed80c59846e9e1b23d26869f05f109dac7495c5 (patch) | |
tree | ff57633e68f9a557bd69a4b2ba3327e10e91635f /xci/playbooks | |
parent | 8dc9f3a0d2c4db3bd9720966043dda0d2d4431bb (diff) |
xci: kubespray: Switch kubespray to dynamic inventory
The kubespray installer contains one inventory per flavor. We can get
rid of these files and use the dynamic inventory similar to OSA.
Moreover, we extend the dynamic inventory to read additional group
variables per flavor if necessary. This way we can still pass additional
information to inventory on per-flavor basis. This also fixes a typo
in the 'IDF' file. We also need to bump Ansible for kubespray since the
version we were using is having troubles with dynamic inventories.
Change-Id: Ic58101555f81aec5fee3c193608440aa89bbe445
Signed-off-by: Markos Chandras <mchandras@suse.de>
Diffstat (limited to 'xci/playbooks')
-rwxr-xr-x | xci/playbooks/dynamic_inventory.py | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/xci/playbooks/dynamic_inventory.py b/xci/playbooks/dynamic_inventory.py index 8f498742..535dc259 100755 --- a/xci/playbooks/dynamic_inventory.py +++ b/xci/playbooks/dynamic_inventory.py @@ -13,6 +13,7 @@ # Based on https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/cobbler.py import argparse +import glob import os import sys import yaml @@ -30,10 +31,12 @@ class XCIInventory(object): self.inventory['_meta']['hostvars'] = {} self.installer = os.environ.get('INSTALLER_TYPE', 'osa') self.flavor = os.environ.get('XCI_FLAVOR', 'mini') + self.flavor_files = os.path.dirname(os.path.realpath(__file__)) + "/../installer/" + self.installer + "/files/" + self.flavor # Static information for opnfv host for now self.add_host('opnfv') - self.add_hostvar('opnfv', 'ansible_ssh_host', '192.168.122.2') + self.add_hostvar('opnfv', 'ansible_host', '192.168.122.2') + self.add_hostvar('opnfv', 'ip', '192.168.122.2') self.add_to_group('deployment', 'opnfv') self.add_to_group('opnfv', 'opnfv') @@ -93,6 +96,7 @@ class XCIInventory(object): pdf_host_info = filter(lambda x: x['name'] == host, pdf['nodes'])[0] native_vlan_if = filter(lambda x: x['vlan'] == 'native', pdf_host_info['interfaces']) self.add_hostvar(hostname, 'ansible_host', native_vlan_if[0]['address']) + self.add_hostvar(hostname, 'ip', native_vlan_if[0]['address']) host_networks[hostname] = {} # And now record the rest of the information for network in idf['idf']['net_config'].keys(): @@ -107,6 +111,24 @@ class XCIInventory(object): for parent in idf['xci'][self.installer]['groups'].keys(): map(lambda x: self.add_group(x, parent), idf['xci'][self.installer]['groups'][parent]) + # Read additional group variables + self.read_additional_group_vars() + + def read_additional_group_vars(self): + if not os.path.exists(self.flavor_files + "/inventory/group_vars"): + return + group_dir = self.flavor_files + "/inventory/group_vars/*.yml" + group_file = glob.glob(group_dir) + for g in group_file: + with open(g) as f: + try: + group_vars = yaml.safe_load(f) + except yaml.YAMLError as e: + print(e) + sys.exit(1) + for k,v in group_vars.items(): + self.add_groupvar(os.path.basename(g.replace('.yml', '')), k, v) + def dump(self, data): print (json.dumps(data, sort_keys=True, indent=2)) @@ -134,8 +156,8 @@ class XCIInventory(object): self.inventory['_meta']['hostvars'][host].update({param: value}) def add_groupvar(self, group, param, value): - if group not in self.groupvars(group): - self.inventory[group]['vars'] = {} + if param not in self.groupvars(group): + self.inventory[group]['vars'][param] = {} self.inventory[group]['vars'].update({param: value}) def hostvars(self): |