diff options
author | Giulio Fidente <gfidente@redhat.com> | 2014-11-24 16:55:22 -0500 |
---|---|---|
committer | Giulio Fidente <gfidente@redhat.com> | 2015-02-09 17:06:31 +0100 |
commit | 874e07dee16f75c1147da535a475c4435ed8ea9a (patch) | |
tree | 75acc4c6795e0fc1813eb2b6a5dbce89cbc40717 | |
parent | d5eee576cc2a53aaa0b8e9c5d7efe1b27c11dfa1 (diff) |
Add Ceph related templates needed to configure Cinder with Ceph
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
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | ceph-source.yaml | 106 | ||||
-rw-r--r-- | ceph-storage-puppet.yaml | 2 | ||||
-rw-r--r-- | ceph-storage.yaml | 105 | ||||
-rw-r--r-- | overcloud-resource-registry-puppet.yaml | 1 | ||||
-rw-r--r-- | overcloud-resource-registry.yaml | 1 | ||||
-rw-r--r-- | overcloud-without-mergepy.yaml | 42 |
7 files changed, 257 insertions, 2 deletions
@@ -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 index 00000000..512053f4 --- /dev/null +++ b/ceph-source.yaml @@ -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 index 00000000..c9aa7bcf --- /dev/null +++ b/ceph-storage-puppet.yaml @@ -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 index 00000000..2f5104ba --- /dev/null +++ b/ceph-storage.yaml @@ -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]} diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml index f8e7cc9e..f7b237c8 100644 --- a/overcloud-resource-registry-puppet.yaml +++ b/overcloud-resource-registry-puppet.yaml @@ -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: diff --git a/overcloud-resource-registry.yaml b/overcloud-resource-registry.yaml index 8a1398b6..2b2c357c 100644 --- a/overcloud-resource-registry.yaml +++ b/overcloud-resource-registry.yaml @@ -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 diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml index b7f529a3..2261d647 100644 --- a/overcloud-without-mergepy.yaml +++ b/overcloud-without-mergepy.yaml @@ -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: |