tripleo-heat-templates/ceph-storage.yaml
Steven Hardy 53924336a2 Wire in hieradata overrides via ExtraConfig for CephStorage
Adds support for global (ExtraConfig) and role-specific
(CephStorageExtraConfig) hiera overrides, similar to those added
for the Controller, NovaCompute, BlockStorage, ObjectStorage roles.

Change-Id: Idbe73b86a772491cd3c55ba69b5a95cc291d2598
2015-07-16 17:55:48 +01:00

170 lines
5.1 KiB
YAML

heat_template_version: 2015-04-30
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. Must be a UUID.
CephMonKey:
default: ''
description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
type: string
CephAdminKey:
default: ''
description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
type: string
CephMonitors:
default: ''
description: The list of ip/names to use as Ceph monitors
type: json
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
UpdateIdentifier:
default: ''
type: string
description: >
Setting to a previously unused value during stack-update will trigger
package update on all nodes
Hostname:
type: string
default: '' # Defaults to Heat created hostname
ExtraConfig:
default: {}
description: |
Additional configuration to inject into the cluster. Note
that CephStorageExtraConfig takes precedence over ExtraConfig.
type: json
CephStorageExtraConfig:
default: {}
description: |
Role specific additional configuration to inject into the cluster.
type: json
resources:
CephStorage:
type: OS::Nova::Server
properties:
image:
{get_param: Image}
flavor: {get_param: OvercloudCephStorageFlavor}
key_name: {get_param: KeyName}
networks:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
user_data: {get_resource: NodeUserData}
name: {get_param: Hostname}
NodeUserData:
type: OS::TripleO::NodeUserData
StoragePort:
type: OS::TripleO::CephStorage::Ports::StoragePort
properties:
ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
StorageMgmtPort:
type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
properties:
ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
NetworkConfig:
type: OS::TripleO::CephStorage::Net::SoftwareConfig
properties:
StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
config: {get_resource: NetworkConfig}
server: {get_resource: CephStorage}
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"
params:
IP: {get_attr: [CephStorage, networks, ctlplane, 0]}
HOST: {get_attr: [CephStorage, name]}
storage_ip_address:
description: IP address of the server in the storage network
value: {get_attr: [StoragePort, ip_address]}
storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: "None - NO_SIGNAL"