summaryrefslogtreecommitdiffstats
path: root/playbooks/openstack/sample-inventory
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2018-01-17 07:09:19 -0800
committerGitHub <noreply@github.com>2018-01-17 07:09:19 -0800
commita1f7d5067f9e6c5c6de0a933eede664e1afb1fdb (patch)
treebcbb6a3598e486647a492de2d4ab39c64eaf7388 /playbooks/openstack/sample-inventory
parentd5241bd08465db72d5a4c4c36d7c4a14f151d688 (diff)
parent54502cee66db02a659e58aab64fb97ca6f728ca0 (diff)
downloadopenshift-a1f7d5067f9e6c5c6de0a933eede664e1afb1fdb.tar.gz
openshift-a1f7d5067f9e6c5c6de0a933eede664e1afb1fdb.tar.bz2
openshift-a1f7d5067f9e6c5c6de0a933eede664e1afb1fdb.tar.xz
openshift-a1f7d5067f9e6c5c6de0a933eede664e1afb1fdb.zip
Merge pull request #6714 from tomassedovic/move-openstack-inventory
Automatic merge from submit-queue. Move OpenStack inventory.py out of sample-inventory This moves the dynamic inventory for OpenStack from the `sample-inventory` dir users are expected to copy and edit to `/inventory/openstack`. This will ensure that people don't use an outdated inventory as well as communicates that the inventory (similar to the playbooks and roles) is not something they are expected to modify under normal circumstances. The sample inventory will now contain only `group_vars` and as such, moving from that to providing vars explicitly is also more obvious (you replace the `-i inventory` command with `-e @vars.yaml` and you're good to go).
Diffstat (limited to 'playbooks/openstack/sample-inventory')
-rwxr-xr-xplaybooks/openstack/sample-inventory/inventory.py119
1 files changed, 0 insertions, 119 deletions
diff --git a/playbooks/openstack/sample-inventory/inventory.py b/playbooks/openstack/sample-inventory/inventory.py
deleted file mode 100755
index 76e658eb7..000000000
--- a/playbooks/openstack/sample-inventory/inventory.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/env python
-"""
-This is an Ansible dynamic inventory for OpenStack.
-
-It requires your OpenStack credentials to be set in clouds.yaml or your shell
-environment.
-
-"""
-
-from __future__ import print_function
-
-from collections import Mapping
-import json
-
-import shade
-
-
-def build_inventory():
- '''Build the dynamic inventory.'''
- cloud = shade.openstack_cloud()
-
- inventory = {}
-
- # TODO(shadower): filter the servers based on the `OPENSHIFT_CLUSTER`
- # environment variable.
- cluster_hosts = [
- server for server in cloud.list_servers()
- if 'metadata' in server and 'clusterid' in server.metadata]
-
- masters = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'master']
-
- etcd = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'etcd']
- if not etcd:
- etcd = masters
-
- infra_hosts = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'node' and
- server.metadata['sub-host-type'] == 'infra']
-
- app = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'node' and
- server.metadata['sub-host-type'] == 'app']
-
- cns = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'cns']
-
- nodes = list(set(masters + infra_hosts + app + cns))
-
- dns = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'dns']
-
- load_balancers = [server.name for server in cluster_hosts
- if server.metadata['host-type'] == 'lb']
-
- osev3 = list(set(nodes + etcd + load_balancers))
-
- inventory['cluster_hosts'] = {'hosts': [s.name for s in cluster_hosts]}
- inventory['OSEv3'] = {'hosts': osev3}
- inventory['masters'] = {'hosts': masters}
- inventory['etcd'] = {'hosts': etcd}
- inventory['nodes'] = {'hosts': nodes}
- inventory['infra_hosts'] = {'hosts': infra_hosts}
- inventory['app'] = {'hosts': app}
- inventory['glusterfs'] = {'hosts': cns}
- inventory['dns'] = {'hosts': dns}
- inventory['lb'] = {'hosts': load_balancers}
-
- for server in cluster_hosts:
- if 'group' in server.metadata:
- group = server.metadata.group
- if group not in inventory:
- inventory[group] = {'hosts': []}
- inventory[group]['hosts'].append(server.name)
-
- inventory['_meta'] = {'hostvars': {}}
-
- for server in cluster_hosts:
- ssh_ip_address = server.public_v4 or server.private_v4
- hostvars = {
- 'ansible_host': ssh_ip_address
- }
-
- public_v4 = server.public_v4 or server.private_v4
- if public_v4:
- hostvars['public_v4'] = server.public_v4
- hostvars['openshift_public_ip'] = server.public_v4
- # TODO(shadower): what about multiple networks?
- if server.private_v4:
- hostvars['private_v4'] = server.private_v4
- hostvars['openshift_ip'] = server.private_v4
-
- # NOTE(shadower): Yes, we set both hostname and IP to the private
- # IP address for each node. OpenStack doesn't resolve nodes by
- # name at all, so using a hostname here would require an internal
- # DNS which would complicate the setup and potentially introduce
- # performance issues.
- hostvars['openshift_hostname'] = server.metadata.get(
- 'openshift_hostname', server.private_v4)
- hostvars['openshift_public_hostname'] = server.name
-
- if server.metadata['host-type'] == 'cns':
- hostvars['glusterfs_devices'] = ['/dev/nvme0n1']
-
- node_labels = server.metadata.get('node_labels')
- # NOTE(shadower): the node_labels value must be a dict not string
- if not isinstance(node_labels, Mapping):
- node_labels = json.loads(node_labels)
-
- if node_labels:
- hostvars['openshift_node_labels'] = node_labels
-
- inventory['_meta']['hostvars'][server.name] = hostvars
- return inventory
-
-
-if __name__ == '__main__':
- print(json.dumps(build_inventory(), indent=4, sort_keys=True))