tripleo-heat-templates/ceph-storage.yaml
Dan Prince bccb698984 Configure ctlplane network with a static IP
This patch updates all network configuration templates so that
we configure the ctlplane network interface with a static IP
instead of using DHCP.

The IP address used for the static IP is passed into each
nested stack network configuration template via the ControlPlaneIp
parameter.

Three new nested stack parameters called ControlPlaneSubnetCidr,
ControlPlaneDefaultRoute, and EC2MetadataIp have been added to help
configure the CIDR, default route, and EC2 metadata route on the ctlplane
statically.  These parameters can be customized via the
parameter_defaults section in the heat environment.

A single new template called net-config-static-bridge.yaml has
been added to help migrate towards using the static
configuration templates when not using network isolation.

Depends-On: I257e1cba6dee16f73f75512d1284e1e3b9d4c831

Change-Id: Ib267e6dcf2d5ff77f7a82ee20a123965c2d07565
2015-09-17 20:39:54 -04:00

171 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:
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
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"