tripleo-heat-templates/ceph-storage.yaml

140 lines
4.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
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}
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]}