BlockStore: Exec puppet after all configuration

This patch adds a new BlockStoreNodesPostDeployment resource
which can be used along with the environment file to
specify a nested stack which is guaranteed to execute
after all the BlockStore config deployments have executed.

This is really useful for Puppet in that Heat actually
controls where puppet executes in the deployment
process and we want to ensure puppet runs after
all hiera configuration data has be deployed to
the nodes. With the previous approach some of the
data would be there, but allNodes data would not be
guaranteed to be there in time.

As os-apply-config (tripleo-image-elements) have their
ordering controlled within the elements themselves an empty stubbed
in nested stack has been added so that we don't break that
implementation.

Change-Id: I29b3574e341eecd53b2867788f415bff153cfa9f
This commit is contained in:
Dan Prince 2015-02-23 14:00:24 -05:00
parent 66aaf72d35
commit 3ced063b49
6 changed files with 48 additions and 16 deletions

8
cinder-storage-post.yaml Normal file
View File

@ -0,0 +1,8 @@
heat_template_version: 2014-10-16
description: 'Common Block Storage Post Deployment'
# NOTE: this is a noop for os-apply-config style deployments because
# post deployment ordering is controlled by tripleo-image-elements
parameters:
servers:
type: json

View File

@ -9,6 +9,7 @@ resource_registry:
OS::TripleO::ControllerPostDeployment: puppet/controller-post-puppet.yaml
OS::TripleO::ComputePostDeployment: puppet/compute-post-puppet.yaml
OS::TripleO::ObjectStoragePostDeployment: puppet/swift-storage-post.yaml
OS::TripleO::BlockStoragePostDeployment: puppet/cinder-storage-post.yaml
OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: puppet/swift-devices-and-proxy-config.yaml
OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
OS::TripleO::BootstrapNode::SoftwareConfig: puppet/bootstrap-config.yaml

View File

@ -9,6 +9,7 @@ resource_registry:
OS::TripleO::ControllerPostDeployment: controller-post.yaml
OS::TripleO::ComputePostDeployment: compute-post.yaml
OS::TripleO::ObjectStoragePostDeployment: swift-storage-post.yaml
OS::TripleO::BlockStoragePostDeployment: cinder-storage-post.yaml
OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: swift-devices-and-proxy-config.yaml
OS::TripleO::AllNodes::SoftwareConfig: all-nodes-config.yaml
OS::TripleO::BootstrapNode::SoftwareConfig: bootstrap-config.yaml

View File

@ -777,6 +777,12 @@ resources:
config: {get_attr: [allNodesConfig, config_id]}
servers: {get_attr: [Compute, attributes, nova_server_resource]}
BlockStorageAllNodesDeployment:
type: OS::Heat::StructuredDeployments
properties:
config: {get_attr: [allNodesConfig, config_id]}
servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
# Nested stack deployment runs after all other controller deployments
ControllerNodesPostDeployment:
type: OS::TripleO::ControllerPostDeployment
@ -796,6 +802,12 @@ resources:
properties:
servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
BlockStorageNodesPostDeployment:
type: OS::TripleO::BlockStoragePostDeployment
depends_on: BlockStorageAllNodesDeployment
properties:
servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
outputs:
KeystoneURL:
description: URL for the Overcloud Keystone service

View File

@ -0,0 +1,26 @@
heat_template_version: 2014-10-16
description: 'Common Block Storage Post Deployment'
# NOTE: this is a noop for os-apply-config style deployments because
# post deployment ordering is controlled by tripleo-image-elements
parameters:
servers:
type: json
resources:
VolumePuppetConfig:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
outputs:
- name: result
config:
get_file: manifests/overcloud_volume.pp
VolumePuppetDeployment:
type: OS::Heat::StructuredDeployments
properties:
name: puppet_1
servers: {get_param: servers}
config: {get_resource: VolumePuppetConfig}

View File

@ -160,22 +160,6 @@ resources:
ntp::servers: {get_input: ntp_servers}
enable_package_install: {get_input: enable_package_install}
VolumePuppetConfig:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
outputs:
- name: result
config:
get_file: manifests/overcloud_volume.pp
VolumePuppetDeployment:
type: OS::Heat::StructuredDeployment
properties:
name: puppet_1
server: {get_resource: BlockStorage}
config: {get_resource: VolumePuppetConfig}
outputs:
hosts_entry:
value: