aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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: