Browse Source

add cinder mountpoint to inventory

Tzu-Mainn Chen 7 years ago
parent
commit
693824ba52

+ 15 - 1
playbooks/openstack/inventory.py

@@ -76,6 +76,16 @@ def build_inventory():
 
     inventory['_meta'] = {'hostvars': {}}
 
+    # cinder volumes used for docker storage
+    docker_storage_volume_mountpoints = {}
+    for volume in cloud.list_volumes():
+        if 'purpose' in volume.metadata and volume.metadata.purpose == "openshift_docker_storage":
+            for attachment in volume.attachments:
+                if attachment.server_id in docker_storage_volume_mountpoints:
+                    docker_storage_volume_mountpoints[attachment.server_id].append(attachment.device)
+                else:
+                    docker_storage_volume_mountpoints[attachment.server_id] = [attachment.device]
+
     for server in cluster_hosts:
         ssh_ip_address = server.public_v4 or server.private_v4
         hostvars = {
@@ -111,9 +121,13 @@ def build_inventory():
         if node_labels:
             hostvars['openshift_node_labels'] = node_labels
 
+        # check for attached docker storage volumes
+        if 'os-extended-volumes:volumes_attached' in server:
+            if server.id in docker_storage_volume_mountpoints:
+                hostvars['docker_storage_volume_mountpoints'] = ' '.join(docker_storage_volume_mountpoints[server.id])
+
         inventory['_meta']['hostvars'][server.name] = hostvars
     return inventory
 
-
 if __name__ == '__main__':
     print(json.dumps(build_inventory(), indent=4, sort_keys=True))

+ 4 - 0
roles/openshift_openstack/templates/docker-storage-setup-dm.j2

@@ -1,4 +1,8 @@
+{% if docker_storage_volume_mountpoints is defined %}
+DEVS="{{ docker_storage_volume_mountpoints }}"
+{% else %}
 DEVS="{{ openshift_openstack_container_storage_setup.docker_dev }}"
+{% endif %}
 VG="{{ openshift_openstack_container_storage_setup.docker_vg }}"
 DATA_SIZE="{{ openshift_openstack_container_storage_setup.docker_data_size }}"
 EXTRA_DOCKER_STORAGE_OPTIONS="--storage-opt dm.basesize={{ openshift_openstack_container_storage_setup.docker_dm_basesize }}"

+ 4 - 0
roles/openshift_openstack/templates/docker-storage-setup-overlayfs.j2

@@ -1,4 +1,8 @@
+{% if docker_storage_volume_mountpoints is defined %}
+DEVS="{{ docker_storage_volume_mountpoints }}"
+{% else %}
 DEVS="{{ openshift_openstack_container_storage_setup.docker_dev }}"
+{% endif %}
 VG="{{ openshift_openstack_container_storage_setup.docker_vg }}"
 DATA_SIZE="{{ openshift_openstack_container_storage_setup.docker_data_size }}"
 STORAGE_DRIVER=overlay2

+ 2 - 0
roles/openshift_openstack/templates/heat_stack_server.yaml.j2

@@ -261,6 +261,8 @@ resources:
     properties:
       size: { get_param: volume_size }
       availability_zone: { get_param: availability_zone }
+      metadata:
+        purpose: openshift_docker_storage
 
   volume_attachment:
     type: OS::Cinder::VolumeAttachment