Add CephExternal role for ceph-ansible
authorGiulio Fidente <gfidente@redhat.com>
Thu, 31 Aug 2017 14:42:16 +0000 (16:42 +0200)
committerGiulio Fidente <gfidente@redhat.com>
Thu, 7 Sep 2017 11:46:20 +0000 (13:46 +0200)
Previously it was only possible to configure the overcloud with
an external Ceph cluster via puppet-ceph-external.

This submission adds a CephExternal implementation which uses
ceph-ansible.

Change-Id: Id0d375f88e27e91e9d89f25a0cd7388b6e45df8b
Depends-On: Ifc57c9cf6ca8017a2abc78d6320c0675ad49ca9f
Closes-Bug: #1714271
(cherry picked from commit 01e55c314de74579196518d958bf5be30e390409)

docker/services/ceph-ansible/ceph-external.yaml [new file with mode: 0644]
environments/ceph-ansible/ceph-ansible-external.yaml [new file with mode: 0644]
environments/puppet-ceph-external.yaml

diff --git a/docker/services/ceph-ansible/ceph-external.yaml b/docker/services/ceph-ansible/ceph-external.yaml
new file mode 100644 (file)
index 0000000..f93dd56
--- /dev/null
@@ -0,0 +1,66 @@
+heat_template_version: pike
+
+description: >
+  Ceph External service.
+
+parameters:
+  ServiceData:
+    default: {}
+    description: Dictionary packing service data
+    type: json
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  RoleName:
+    default: ''
+    description: Role name on which the service is applied
+    type: string
+  RoleParameters:
+    default: {}
+    description: Parameters specific to the role
+    type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  CephExternalMonHost:
+    default: ''
+    type: string
+    description: List of externally managed Ceph Mon Host IPs. Only used for external Ceph deployments.
+
+resources:
+  CephBase:
+    type: ./ceph-base.yaml
+    properties:
+      ServiceData: {get_param: ServiceData}
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
+
+outputs:
+  role_data:
+    description: Role data for the Ceph External service.
+    value:
+      service_name: ceph_client
+      upgrade_tasks: []
+      step_config: ''
+      puppet_config:
+        config_image: ''
+        config_volume: ''
+        step_config: ''
+      docker_config: {}
+      service_workflow_tasks: {get_attr: [CephBase, role_data, service_workflow_tasks]}
+      config_settings:
+        ceph_client_ansible_vars:
+          map_merge:
+          - {get_attr: [CephBase, role_data, config_settings, ceph_common_ansible_vars]}
+          - external_cluster_mon_ips: {get_param: CephExternalMonHost}
\ No newline at end of file
diff --git a/environments/ceph-ansible/ceph-ansible-external.yaml b/environments/ceph-ansible/ceph-ansible-external.yaml
new file mode 100644 (file)
index 0000000..ed3bedb
--- /dev/null
@@ -0,0 +1,30 @@
+resource_registry:
+  OS::TripleO::Services::CephExternal: ../../docker/services/ceph-ansible/ceph-external.yaml
+  OS::TripleO::Services::CephMon: OS::Heat::None
+  OS::TripleO::Services::CephClient: OS::Heat::None
+  OS::TripleO::Services::CephOSD: OS::Heat::None
+
+parameter_defaults:
+  # NOTE: These example parameters are required when using CephExternal
+  #CephClusterFSID: '4b5c8c0a-ff60-454b-a1b4-9747aa737d19'
+  #CephClientKey: 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=='
+  #CephExternalMonHost: '172.16.1.7, 172.16.1.8'
+
+  # the following parameters enable Ceph backends for Cinder, Glance, Gnocchi and Nova
+  NovaEnableRbdBackend: true
+  CinderEnableRbdBackend: true
+  CinderBackupBackend: ceph
+  GlanceBackend: rbd
+  GnocchiBackend: rbd
+  # If the Ceph pools which host VMs, Volumes and Images do not match these
+  # names OR the client keyring to use is not named 'openstack',  edit the
+  # following as needed.
+  NovaRbdPoolName: vms
+  CinderRbdPoolName: volumes
+  CinderBackupRbdPoolName: backups
+  GlanceRbdPoolName: images
+  GnocchiRbdPoolName: metrics
+  CephClientUserName: openstack
+
+  # finally we disable the Cinder LVM backend
+  CinderEnableIscsiBackend: false
index 7718b82..65bbc3e 100644 (file)
@@ -27,6 +27,7 @@ parameter_defaults:
   # following as needed.
   NovaRbdPoolName: vms
   CinderRbdPoolName: volumes
+  CinderBackupRbdPoolName: backups
   GlanceRbdPoolName: images
   GnocchiRbdPoolName: metrics
   CephClientUserName: openstack