Split out allNodesConfig SoftwareConfig

This patch splits out the allNodesConfig config
such that alternate implementation (puppet for example)
can implement their own SoftwareConfig's via a nested stack.

This is controlled by the standard overcloud heat environment.

For os-apply-config deployments the implementation should work the
same as before.

For puppet deployments the implementation uses hiera metadata
to configure rabbit_nodes. The puppet deployment doesn't support
hosts, or freeform sysctl metadata yet so those are the same
for now as well.

Change-Id: I34ae30b1f37aca8b39586f7e350511462d66f694
This commit is contained in:
Dan Prince 2015-02-12 21:54:57 -05:00 committed by Giulio Fidente
parent f98f2bdf4d
commit b639d3c7c2
6 changed files with 129 additions and 32 deletions

57
all-nodes-config.yaml Normal file
View File

@ -0,0 +1,57 @@
heat_template_version: 2014-10-16
description: 'All Nodes Config'
parameters:
compute_hosts:
type: comma_delimited_list
controller_hosts:
type: comma_delimited_list
block_storage_hosts:
type: comma_delimited_list
object_storage_hosts:
type: comma_delimited_list
ceph_storage_hosts:
type: comma_delimited_list
controller_names:
type: comma_delimited_list
resources:
allNodesConfigImpl:
type: OS::Heat::StructuredConfig
properties:
config:
completion-signal: {get_input: deploy_signal_id}
hosts:
list_join:
- "\n"
- - list_join:
- "\n"
- {get_param: compute_hosts}
- list_join:
- "\n"
- {get_param: controller_hosts}
- list_join:
- "\n"
- {get_param: block_storage_hosts}
- list_join:
- "\n"
- {get_param: object_storage_hosts}
- list_join:
- "\n"
- {get_param: ceph_storage_hosts}
rabbit:
nodes:
list_join:
- ','
- {get_param: controller_names}
sysctl:
net.ipv4.tcp_keepalive_time: 5
net.ipv4.tcp_keepalive_probes: 5
net.ipv4.tcp_keepalive_intvl: 1
outputs:
config_id:
description: The ID of the allNodesConfigImpl resource.
value:
{get_resource: allNodesConfigImpl}

View File

@ -8,6 +8,7 @@ resource_registry:
OS::TripleO::CephStorage: puppet/ceph-storage-puppet.yaml OS::TripleO::CephStorage: puppet/ceph-storage-puppet.yaml
OS::TripleO::ControllerPostDeployment: puppet/controller-post-puppet.yaml OS::TripleO::ControllerPostDeployment: puppet/controller-post-puppet.yaml
OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: puppet/swift-devices-and-proxy-config.yaml OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: puppet/swift-devices-and-proxy-config.yaml
OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
# NOTE(dprince): requires a new release of python-heatclient # NOTE(dprince): requires a new release of python-heatclient
#default_parameters: #default_parameters:

View File

@ -8,3 +8,4 @@ resource_registry:
OS::TripleO::CephStorage: ceph-storage.yaml OS::TripleO::CephStorage: ceph-storage.yaml
OS::TripleO::ControllerPostDeployment: controller-post.yaml OS::TripleO::ControllerPostDeployment: controller-post.yaml
OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: swift-devices-and-proxy-config.yaml OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: swift-devices-and-proxy-config.yaml
OS::TripleO::AllNodes::SoftwareConfig: all-nodes-config.yaml

View File

@ -669,37 +669,14 @@ resources:
CephMonitors: {get_attr: [Controller, corosync_node]} CephMonitors: {get_attr: [Controller, corosync_node]}
allNodesConfig: allNodesConfig:
type: OS::Heat::StructuredConfig type: OS::TripleO::AllNodes::SoftwareConfig
properties: properties:
config: compute_hosts: {get_attr: [Compute, hosts_entry]}
completion-signal: {get_input: deploy_signal_id} controller_hosts: {get_attr: [Controller, hosts_entry]}
hosts: block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
list_join: object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
- "\n" ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
- - list_join: controller_names: {get_attr: [Controller, hostname]}
- "\n"
- {get_attr: [Compute, hosts_entry]}
- list_join:
- "\n"
- {get_attr: [Controller, hosts_entry]}
- list_join:
- "\n"
- {get_attr: [BlockStorage, hosts_entry]}
- list_join:
- "\n"
- {get_attr: [ObjectStorage, hosts_entry]}
- list_join:
- "\n"
- {get_attr: [CephStorage, hosts_entry]}
rabbit:
nodes:
list_join:
- ','
- {get_attr: [Controller, hostname]}
sysctl:
net.ipv4.tcp_keepalive_time: 5
net.ipv4.tcp_keepalive_probes: 5
net.ipv4.tcp_keepalive_intvl: 1
MysqlRootPassword: MysqlRootPassword:
type: OS::Heat::RandomString type: OS::Heat::RandomString
@ -794,13 +771,13 @@ resources:
ControllerAllNodesDeployment: ControllerAllNodesDeployment:
type: OS::Heat::StructuredDeployments type: OS::Heat::StructuredDeployments
properties: properties:
config: {get_resource: allNodesConfig} config: {get_attr: [allNodesConfig, config_id]}
servers: {get_attr: [Controller, attributes, nova_server_resource]} servers: {get_attr: [Controller, attributes, nova_server_resource]}
ComputeAllNodesDeployment: ComputeAllNodesDeployment:
type: OS::Heat::StructuredDeployments type: OS::Heat::StructuredDeployments
properties: properties:
config: {get_resource: allNodesConfig} config: {get_attr: [allNodesConfig, config_id]}
servers: {get_attr: [Compute, attributes, nova_server_resource]} servers: {get_attr: [Compute, attributes, nova_server_resource]}
# Nested stack deployment runs after all other controller deployments # Nested stack deployment runs after all other controller deployments

View File

@ -0,0 +1,60 @@
heat_template_version: 2014-10-16
description: 'All Nodes Config for Puppet'
parameters:
compute_hosts:
type: comma_delimited_list
controller_hosts:
type: comma_delimited_list
block_storage_hosts:
type: comma_delimited_list
object_storage_hosts:
type: comma_delimited_list
ceph_storage_hosts:
type: comma_delimited_list
controller_names:
type: comma_delimited_list
resources:
allNodesConfigImpl:
type: OS::Heat::StructuredConfig
properties:
config:
completion-signal: {get_input: deploy_signal_id}
hosts:
list_join:
- "\n"
- - list_join:
- "\n"
- {get_param: compute_hosts}
- list_join:
- "\n"
- {get_param: controller_hosts}
- list_join:
- "\n"
- {get_param: block_storage_hosts}
- list_join:
- "\n"
- {get_param: object_storage_hosts}
- list_join:
- "\n"
- {get_param: ceph_storage_hosts}
sysctl:
net.ipv4.tcp_keepalive_time: 5
net.ipv4.tcp_keepalive_probes: 5
net.ipv4.tcp_keepalive_intvl: 1
hiera:
datafiles:
rabbit:
mapped_data:
rabbit_nodes:
list_join:
- ','
- {get_param: controller_names}
outputs:
config_id:
description: The ID of the allNodesConfigImpl resource.
value:
{get_resource: allNodesConfigImpl}

View File

@ -555,6 +555,7 @@ resources:
- controller - controller
- object - object
- swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
- rabbit # provided by allNodesConfig
- common - common
datafiles: datafiles:
common: common: