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"