-heat_template_version: 2015-04-30
+heat_template_version: 2016-10-14
description: 'OpenStack ceph storage node configured by Puppet'
parameters:
- Flavor:
+ OvercloudCephStorageFlavor:
description: Flavor for the Ceph Storage node.
+ default: baremetal
type: string
constraints:
- custom_constraint: nova.flavor
- Image:
+ CephStorageImage:
type: string
- default: overcloud-ceph-storage
+ default: overcloud-full
constraints:
- custom_constraint: glance.image
ImageUpdatePolicy:
default: default
constraints:
- custom_constraint: nova.keypair
- NtpServer:
- default: ''
- description: Comma-separated list of ntp servers
- type: comma_delimited_list
- EnablePackageInstall:
- default: 'false'
- description: Set to true to enable package installation via Puppet
- type: boolean
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
- TimeZone:
- default: 'UTC'
- description: The timezone to be set on Ceph nodes.
- type: string
UpdateIdentifier:
default: ''
type: string
constraints:
- allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
CloudDomain:
- default: ''
type: string
description: >
The DNS domain used for the hosts. This should match the dhcp_domain
Extra properties or metadata passed to Nova for the created nodes in
the overcloud. It's accessible via the Nova metadata API.
type: json
- SchedulerHints:
+ CephStorageSchedulerHints:
type: json
description: Optional scheduler hints to pass to nova
default: {}
NodeIndex:
type: number
default: 0
+ ServiceConfigSettings:
+ type: json
+ default: {}
+ ServiceNames:
+ type: comma_delimited_list
+ default: []
+ ConfigCommand:
+ type: string
+ description: Command which will be run whenever configuration data changes
+ default: os-refresh-config --timeout 14400
resources:
CephStorage:
- type: OS::Nova::Server
+ type: OS::TripleO::Server
+ metadata:
+ os-collect-config:
+ command: {get_param: ConfigCommand}
properties:
- image: {get_param: Image}
+ image: {get_param: CephStorageImage}
image_update_policy: {get_param: ImageUpdatePolicy}
- flavor: {get_param: Flavor}
+ flavor: {get_param: OvercloudCephStorageFlavor}
key_name: {get_param: KeyName}
networks:
- network: ctlplane
params: {get_param: HostnameMap}
software_config_transport: {get_param: SoftwareConfigTransport}
metadata: {get_param: ServerMetadata}
- scheduler_hints: {get_param: SchedulerHints}
+ scheduler_hints: {get_param: CephStorageSchedulerHints}
# Combine the NodeAdminUserData and NodeUserData mime archives
UserData:
properties:
ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
ExternalIp: {get_attr: [ExternalPort, ip_address]}
+ ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
+ InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
StorageIp: {get_attr: [StoragePort, ip_address]}
+ StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
+ StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
TenantIp: {get_attr: [TenantPort, ip_address]}
+ TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
ManagementIp: {get_attr: [ManagementPort, ip_address]}
- ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
-
- NetIpSubnetMap:
- type: OS::TripleO::Network::Ports::NetIpSubnetMap
- properties:
- ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
- ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
- InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
- StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
- StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
- TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
+ ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
config: {get_resource: CephStorageConfig}
server: {get_resource: CephStorage}
input_values:
- ntp_servers: {get_param: NtpServer}
- timezone: {get_param: TimeZone}
- enable_package_install: {get_param: EnablePackageInstall}
enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
- ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
- ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
+ ceph_cluster_network:
+ get_attr:
+ - NetIpMap
+ - net_ip_map
+ - str_replace:
+ template: "NETWORK_subnet"
+ params:
+ NETWORK: {get_param: [ServiceNetMap, CephClusterNetwork]}
+ ceph_public_network:
+ get_attr:
+ - NetIpMap
+ - net_ip_map
+ - str_replace:
+ template: "NETWORK_subnet"
+ params:
+ NETWORK: {get_param: [ServiceNetMap, CephPublicNetwork]}
CephStorageConfig:
type: OS::Heat::StructuredConfig
- heat_config_%{::deploy_config_name}
- ceph_extraconfig
- extraconfig
+ - service_names
+ - service_configs
- ceph_cluster # provided by CephClusterConfig
- ceph
+ - all_nodes # provided by allNodesConfig
- '"%{::osfamily}"'
- - common
+ merge_behavior: deeper
datafiles:
- common:
- raw_data: {get_file: hieradata/common.yaml}
+ service_names:
+ mapped_data:
+ service_names: {get_param: ServiceNames}
+ service_configs:
+ mapped_data:
+ map_replace:
+ - {get_param: ServiceConfigSettings}
+ - values: {get_attr: [NetIpMap, net_ip_map]}
ceph_extraconfig:
mapped_data: {get_param: CephStorageExtraConfig}
extraconfig:
mapped_data: {get_param: ExtraConfig}
ceph:
- raw_data: {get_file: hieradata/ceph.yaml}
mapped_data:
- ntp::servers: {get_input: ntp_servers}
- timezone::timezone: {get_input: timezone}
- tripleo::packages::enable_install: {get_input: enable_package_install}
tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
ceph::profile::params::public_network: {get_input: ceph_public_network}
get_param: UpdateIdentifier
outputs:
+ ip_address:
+ description: IP address of the server in the ctlplane network
+ value: {get_attr: [CephStorage, networks, ctlplane, 0]}
+ hostname:
+ description: Hostname of the server
+ value: {get_attr: [CephStorage, name]}
hosts_entry:
value:
str_replace:
template: |
PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
- EXTERNALIP EXTERNALHOST
- INTERNAL_APIIP INTERNAL_APIHOST
- STORAGEIP STORAGEHOST
- STORAGE_MGMTIP STORAGE_MGMTHOST
- TENANTIP TENANTHOST
- MANAGEMENTIP MANAGEMENTHOST
+ EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
+ INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
+ STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
+ STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
+ TENANTIP TENANTHOST.DOMAIN TENANTHOST
+ MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
params:
PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
DOMAIN: {get_param: CloudDomain}
EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
EXTERNALHOST:
list_join:
- - '-'
+ - '.'
- - {get_attr: [CephStorage, name]}
- external
INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
INTERNAL_APIHOST:
list_join:
- - '-'
+ - '.'
- - {get_attr: [CephStorage, name]}
- internalapi
STORAGEIP: {get_attr: [StoragePort, ip_address]}
STORAGEHOST:
list_join:
- - '-'
+ - '.'
- - {get_attr: [CephStorage, name]}
- storage
STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
STORAGE_MGMTHOST:
list_join:
- - '-'
+ - '.'
- - {get_attr: [CephStorage, name]}
- storagemgmt
TENANTIP: {get_attr: [TenantPort, ip_address]}
TENANTHOST:
list_join:
- - '-'
+ - '.'
- - {get_attr: [CephStorage, name]}
- tenant
MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
MANAGEMENTHOST:
list_join:
- - '-'
+ - '.'
- - {get_attr: [CephStorage, name]}
- management
nova_server_resource:
management_ip_address:
description: IP address of the server in the management network
value: {get_attr: [ManagementPort, ip_address]}
- config_identifier:
- description: identifier which changes if the node configuration may need re-applying
- value:
- list_join:
- - ','
- - - {get_attr: [CephStorageDeployment, deploy_stdout]}
- - {get_attr: [NodeTLSCAData, deploy_stdout]}
- - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
- - {get_param: UpdateIdentifier}