aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiulio Fidente <gfidente@redhat.com>2014-11-24 16:55:22 -0500
committerGiulio Fidente <gfidente@redhat.com>2015-02-09 17:06:31 +0100
commit874e07dee16f75c1147da535a475c4435ed8ea9a (patch)
tree75acc4c6795e0fc1813eb2b6a5dbce89cbc40717
parentd5eee576cc2a53aaa0b8e9c5d7efe1b27c11dfa1 (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--Makefile2
-rw-r--r--ceph-source.yaml106
-rw-r--r--ceph-storage-puppet.yaml2
-rw-r--r--ceph-storage.yaml105
-rw-r--r--overcloud-resource-registry-puppet.yaml1
-rw-r--r--overcloud-resource-registry.yaml1
-rw-r--r--overcloud-without-mergepy.yaml42
7 files changed, 257 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 2db9d45e..dd7e5fb3 100644
--- 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
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: