24f4146cbb
When using network isolation you might want to selective move one of the services back to the default ctlplane network by simply using the ServiceNetMap parameter. This patch adds ctlplane to the output parameters for both the net_ip_map and net_ip_list_map nested stacks so that this is possible. As part of this patch we also split out the NetIpSubnetMap into its own unique nested stack so that the Heat input parameters for this stack are more clearly named. Change-Id: Iaa2dcaebeac896404e87ec0c635688b2a59a9e0f
189 lines
6.3 KiB
YAML
189 lines
6.3 KiB
YAML
heat_template_version: 2015-04-30
|
|
description: 'OpenStack ceph storage node configured by Puppet'
|
|
parameters:
|
|
Flavor:
|
|
description: Flavor for the Ceph Storage node.
|
|
type: string
|
|
constraints:
|
|
- custom_constraint: nova.flavor
|
|
Image:
|
|
type: string
|
|
default: overcloud-ceph-storage
|
|
constraints:
|
|
- custom_constraint: glance.image
|
|
ImageUpdatePolicy:
|
|
default: 'REBUILD_PRESERVE_EPHEMERAL'
|
|
description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
|
|
type: string
|
|
KeyName:
|
|
description: Name of an existing EC2 KeyPair to enable SSH access to the instances
|
|
type: string
|
|
default: default
|
|
constraints:
|
|
- custom_constraint: nova.keypair
|
|
NtpServer:
|
|
type: string
|
|
default: ''
|
|
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
|
|
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 hiera configuration to inject into the cluster. Note
|
|
that CephStorageExtraConfig takes precedence over ExtraConfig.
|
|
type: json
|
|
CephStorageExtraConfig:
|
|
default: {}
|
|
description: |
|
|
Role specific additional hiera configuration to inject into the cluster.
|
|
type: json
|
|
|
|
|
|
resources:
|
|
CephStorage:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
image: {get_param: Image}
|
|
image_update_policy: {get_param: ImageUpdatePolicy}
|
|
flavor: {get_param: Flavor}
|
|
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]}
|
|
|
|
NetIpMap:
|
|
type: OS::TripleO::Network::Ports::NetIpMap
|
|
properties:
|
|
ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
|
|
StorageIp: {get_attr: [StoragePort, ip_address]}
|
|
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
|
|
|
|
NetIpSubnetMap:
|
|
type: OS::TripleO::Network::Ports::NetIpSubnetMap
|
|
properties:
|
|
ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
|
|
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
|
|
depends_on: NetworkDeployment
|
|
properties:
|
|
config: {get_resource: CephStorageConfig}
|
|
server: {get_resource: CephStorage}
|
|
input_values:
|
|
ntp_servers:
|
|
str_replace:
|
|
template: '["server"]'
|
|
params:
|
|
server: {get_param: NtpServer}
|
|
enable_package_install: {get_param: EnablePackageInstall}
|
|
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]}]}
|
|
|
|
CephStorageConfig:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: os-apply-config
|
|
config:
|
|
hiera:
|
|
hierarchy:
|
|
- heat_config_%{::deploy_config_name}
|
|
- ceph_extraconfig
|
|
- extraconfig
|
|
- ceph_cluster # provided by CephClusterConfig
|
|
- ceph
|
|
- '"%{::osfamily}"'
|
|
- common
|
|
datafiles:
|
|
common:
|
|
raw_data: {get_file: hieradata/common.yaml}
|
|
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}
|
|
tripleo::packages::enable_install: {get_input: enable_package_install}
|
|
ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
|
|
ceph::profile::params::public_network: {get_input: ceph_public_network}
|
|
|
|
UpdateConfig:
|
|
type: OS::TripleO::Tasks::PackageUpdate
|
|
|
|
UpdateDeployment:
|
|
type: OS::Heat::SoftwareDeployment
|
|
properties:
|
|
config: {get_resource: UpdateConfig}
|
|
server: {get_resource: CephStorage}
|
|
input_values:
|
|
update_identifier:
|
|
get_param: UpdateIdentifier
|
|
|
|
outputs:
|
|
hosts_entry:
|
|
value:
|
|
str_replace:
|
|
template: "IP HOST.localdomain HOST"
|
|
params:
|
|
IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
|
|
HOST: {get_attr: [CephStorage, name]}
|
|
nova_server_resource:
|
|
description: Heat resource handle for the ceph storage server
|
|
value:
|
|
{get_resource: CephStorage}
|
|
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: {get_attr: [CephStorageDeployment, deploy_stdout]}
|