Add Ceph related templates needed to configure Cinder with Ceph
authorGiulio Fidente <gfidente@redhat.com>
Mon, 24 Nov 2014 21:55:22 +0000 (16:55 -0500)
committerGiulio Fidente <gfidente@redhat.com>
Mon, 9 Feb 2015 16:06:31 +0000 (17:06 +0100)
The new ceph-source.yaml file provides the config settings needed
by the elements which configure Ceph on controllers (monitors) and
storage nodes (OSDs) as well as the Cinder backend which uses it.

There is also a without-mergepy copy named ceph-storage.yaml

Change-Id: I954861536c41b2a7e6cbd86a0f0b55004eed4c70

Makefile
ceph-source.yaml [new file with mode: 0644]
ceph-storage-puppet.yaml [new file with mode: 0644]
ceph-storage.yaml [new file with mode: 0644]
overcloud-resource-registry-puppet.yaml
overcloud-resource-registry.yaml
overcloud-without-mergepy.yaml

index 2db9d45..dd7e5fb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@ $(VALIDATE):
 # - overcloud-vlan-port.yaml to activate the VLAN auto-assignment from Neutron
 # - nfs-source.yaml to configure Cinder with NFS
 overcloud.yaml: overcloud-source.yaml block-storage.yaml swift-deploy.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml nova-compute-config.yaml $(overcloud_source_deps)
-       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml ${CONTROLEXTRA} > $@.tmp
+       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} --scale CephStorage=$${CEPHSTORAGESCALE:-'0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml ${CONTROLEXTRA} > $@.tmp
        mv $@.tmp $@
 
 undercloud-vm.yaml: undercloud-source.yaml undercloud-vm-nova-config.yaml undercloud-vm-nova-deploy.yaml
diff --git a/ceph-source.yaml b/ceph-source.yaml
new file mode 100644 (file)
index 0000000..512053f
--- /dev/null
@@ -0,0 +1,106 @@
+heat_template_version: 2013-05-23
+description: 'Common Ceph Storage Configuration'
+parameters:
+  CephStorageImage:
+    type: string
+    default: overcloud-ceph-storage
+  OvercloudCephStorageFlavor:
+    default: baremetal
+    description: Flavor for Ceph storage nodes to request when deploying.
+    type: string
+  CephClusterFSID:
+    default: ''
+    type: string
+    description: The Ceph cluster FSID.
+  CephMonKey:
+    default: ''
+    description: The Ceph monitors key.
+    type: string
+  CephAdminKey:
+    default: ''
+    description: The Ceph admin client key.
+    type: string
+resources:
+  CephStorage0:
+    type: OS::Nova::Server
+    properties:
+      image:
+        {get_param: CephStorageImage}
+      flavor: {get_param: OvercloudCephStorageFlavor}
+      key_name: {get_param: KeyName}
+      user_data_format: SOFTWARE_CONFIG
+  CephStorage0AllNodesDeployment:
+    depends_on: [CephStorage0Deployment,controller0CephDeployment]
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: CephStorage0}
+      config: {get_resource: allNodesConfig}
+      signal_transport: {get_param: DefaultSignalTransport}
+  CephStorage0Deployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: CephStorage0}
+      config: {get_resource: CephStorage0Config}
+      signal_transport: NO_SIGNAL
+  CephStorage0Config:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        ceph:
+          fsid: {get_param: CephClusterFSID}
+          keyrings:
+            admin:
+              key: {get_param: CephAdminKey}
+          mon_nodes:
+            Merge::Map:
+              controller0:
+                ip: {get_attr: [controller0, networks, ctlplane, 0]}
+                name: {get_attr: [controller0, name]}
+  controller0CephDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: controller0}
+      config: {get_resource: controller0CephConfig}
+      signal_transport: NO_SIGNAL
+  controller0CephConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        cinder:
+          include_ceph_backend: true
+        ceph:
+          fsid: {get_param: CephClusterFSID}
+          keyrings:
+            mon:
+              key: {get_param: CephMonKey}
+            admin:
+              key: {get_param: CephAdminKey}
+          mon_nodes:
+            Merge::Map:
+              controller0:
+                ip: {get_attr: [controller0, networks, ctlplane, 0]}
+                name: {get_attr: [controller0, name]}
+  NovaCompute0CephDeployment:
+    depends_on: [controller0CephDeployment]
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: NovaCompute0}
+      config: {get_resource: NovaCompute0CephConfig}
+      signal_transport: NO_SIGNAL
+  NovaCompute0CephConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        ceph:
+          fsid: {get_param: CephClusterFSID}
+          keyrings:
+            admin:
+              key: {get_param: CephAdminKey}
+          mon_nodes:
+            Merge::Map:
+              controller0:
+                ip: {get_attr: [controller0, networks, ctlplane, 0]}
+                name: {get_attr: [controller0, name]}
diff --git a/ceph-storage-puppet.yaml b/ceph-storage-puppet.yaml
new file mode 100644 (file)
index 0000000..c9aa7bc
--- /dev/null
@@ -0,0 +1,2 @@
+heat_template_version: 2014-10-16
+description: 'Common Ceph Storage Configuration by Puppet'
diff --git a/ceph-storage.yaml b/ceph-storage.yaml
new file mode 100644 (file)
index 0000000..2f5104b
--- /dev/null
@@ -0,0 +1,105 @@
+heat_template_version: 2014-10-16
+description: 'Common Ceph Storage Configuration'
+parameters:
+  Image:
+    type: string
+    default: overcloud-ceph-storage
+  KeyName:
+    default: default
+    description: Name of an existing EC2 KeyPair to enable SSH access to the instances
+    type: string
+  Flavor:
+    default: baremetal
+    description: Flavor for block storage nodes to request when deploying.
+    type: string
+  CephClusterFSID:
+    default: ''
+    type: string
+    description: The Ceph cluster FSID.
+  CephMonKey:
+    default: ''
+    description: The Ceph monitors key.
+    type: string
+  CephAdminKey:
+    default: ''
+    description: The Ceph admin client key.
+    type: string
+  CephMonitors:
+    default: ''
+    description: The list of ip/names to use as Ceph monitors
+    type: string
+resources:
+  CephStorage:
+    type: OS::Nova::Server
+    properties:
+      image:
+        {get_param: Image}
+      flavor: {get_param: OvercloudCephStorageFlavor}
+      key_name: {get_param: KeyName}
+      user_data_format: SOFTWARE_CONFIG
+      networks:
+        - network: ctlplane
+  CephStorageDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: CephStorage}
+      config: {get_resource: CephStorageConfig}
+      signal_transport: NO_SIGNAL
+  CephStorageConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        ceph:
+          fsid: {get_param: CephClusterFSID}
+          keyrings:
+            admin:
+              key: {get_param: CephAdminKey}
+          mon_nodes: {get_param: CephMonitors}
+  ControllerCephDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: Controller}
+      config: {get_resource: ControllerCephConfig}
+      signal_transport: NO_SIGNAL
+  ControllerCephConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        cinder:
+          include_ceph_backend: true
+        ceph:
+          fsid: {get_param: CephClusterFSID}
+          keyrings:
+            mon:
+              key: {get_param: CephMonKey}
+            admin:
+              key: {get_param: CephAdminKey}
+          mon_nodes: {get_param: CephMonitors}
+  NovaComputeCephDeployment:
+    depends_on: [ControllerCephDeployment]
+    type: OS::Heat::StructuredDeployment
+    properties:
+      server: {get_resource: NovaCompute}
+      config: {get_resource: NovaComputeCephConfig}
+      signal_transport: NO_SIGNAL
+  NovaComputeCephConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        ceph:
+          fsid: {get_param: CephClusterFSID}
+          keyrings:
+            admin:
+              key: {get_param: CephAdminKey}
+          mon_nodes: {get_param: CephMonitors}
+outputs:
+  hosts_entry:
+    value:
+      str_replace:
+        template: "IP HOST HOST.novalocal"
+        params:
+          IP: {get_attr: [CephStorage, networks, ctlplane, 0]}
+          HOST: {get_attr: [CephStorage, name]}
index f8e7cc9..f7b237c 100644 (file)
@@ -5,6 +5,7 @@ resource_registry:
   OS::TripleO::Controller: controller-puppet.yaml
   OS::TripleO::ObjectStorage: swift-storage-puppet.yaml
   OS::TripleO::Net::SoftwareConfig: net-config-bridge.yaml
+  OS::TripleO::CephStorage: ceph-storage-puppet.yaml
 
 # NOTE(dprince): requires a new release of python-heatclient
 #default_parameters:
index 8a1398b..2b2c357 100644 (file)
@@ -5,3 +5,4 @@ resource_registry:
   OS::TripleO::Controller: controller.yaml
   OS::TripleO::ObjectStorage: swift-storage.yaml
   OS::TripleO::Net::SoftwareConfig: net-config-noop.yaml
+  OS::TripleO::CephStorage: ceph-storage.yaml
index b7f529a..2261d64 100644 (file)
@@ -194,7 +194,18 @@ parameters:
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
-
+  CephClusterFSID:
+    default: ''
+    type: string
+    description: The Ceph cluster FSID.
+  CephMonKey:
+    default: ''
+    description: The Ceph monitors key.
+    type: string
+  CephAdminKey:
+    default: ''
+    description: The Ceph admin client key.
+    type: string
 
   # Controller-specific params
   AdminToken:
@@ -468,6 +479,18 @@ parameters:
     default: overcloud-swift-storage
     type: string
 
+# Ceph storage specific parameters
+  CephStorageCount:
+    type: number
+    default: 0
+  CephStorageImage:
+    default: overcloud-ceph-storage
+    type: string
+  OvercloudCephStorageFlavor:
+    default: baremetal
+    description: Flavor for Ceph storage nodes to request when deploying.
+    type: string
+
 resources:
 
   Controller:
@@ -630,6 +653,20 @@ resources:
           Replicas: { get_param: SwiftReplicas}
           NtpServer: {get_param: NtpServer}
 
+  CephStorage:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: CephStorageCount}
+      resource_def:
+        type: OS::TripleO::CephStorage
+        properties:
+          Image: {get_param: CephStorageImage}
+          KeyName: {get_param: KeyName}
+          Flavor: {get_param: OvercloudCephStorageFlavor}
+          CephClusterFSID: {get_param: CephClusterFSID}
+          CephMonKey: {get_param: CephMonKey}
+          CephAdminKey: {get_param: CephAdminKey}
+          CephMonitors: {get_attr: [Controller, corosync_node]}
 
   allNodesConfig:
     type: OS::Heat::StructuredConfig
@@ -651,6 +688,9 @@ resources:
             - list_join:
               - "\n"
               - {get_attr: [ObjectStorage, hosts_entry]}
+            - list_join:
+              - "\n"
+              - {get_attr: [CephStorage, hosts_entry]}
         rabbit:
           nodes:
             list_join: