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
This commit is contained in:
Giulio Fidente 2014-11-24 16:55:22 -05:00
parent d5eee576cc
commit 874e07dee1
7 changed files with 257 additions and 2 deletions

View File

@ -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

106
ceph-source.yaml Normal file
View File

@ -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]}

2
ceph-storage-puppet.yaml Normal file
View File

@ -0,0 +1,2 @@
heat_template_version: 2014-10-16
description: 'Common Ceph Storage Configuration by Puppet'

105
ceph-storage.yaml Normal file
View File

@ -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]}

View 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:

View 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

View 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: