Make puppet-applying *Post resources depend on hieradata

When you do a stack-update which affects, e.g ControllerDeployment
such that some value in hieradata is updated (for example changing
the "Debug" parameter to True), we only write the hieradata file and
don't reapply the manifests.

So we introduce a dependency on the deploy_stdout values from all
hieradata applying configs, such that the manifests will be re-applied
on update if the data is changed.

This requires https://review.openstack.org/#/c/190282/ so that
99-refresh-completed will return the derived config ID as part of the
deploy_stdout payload.

Closes-Bug: #1463092
Change-Id: I1175248c3236d0c42e37d062afce550efce8aadc
This commit is contained in:
Steven Hardy 2015-06-12 15:43:30 +01:00
parent 48d07db384
commit ec3137dc6e
21 changed files with 87 additions and 0 deletions

@ -6,6 +6,9 @@ description: 'Ceph Storage Post Deployment'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:

@ -148,3 +148,6 @@ outputs:
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"

@ -6,6 +6,9 @@ description: 'Common Block Storage Post Deployment'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:

@ -203,3 +203,6 @@ outputs:
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"

@ -6,6 +6,9 @@ description: 'Compute Post Deployment'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:

@ -473,3 +473,6 @@ outputs:
description: Heat resource handle for the Nova compute server
value:
{get_resource: NovaCompute}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: "None - NO_SIGNAL"

@ -6,6 +6,9 @@ description: 'Controller Post Deployment'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:

@ -1047,3 +1047,6 @@ outputs:
template: "IP:11211"
params:
IP: {get_attr: [Controller, networks, ctlplane, 0]}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: "None - NO_SIGNAL"

@ -1062,30 +1062,36 @@ resources:
depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
properties:
servers: {get_attr: [Controller, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
ComputeNodesPostDeployment:
type: OS::TripleO::ComputePostDeployment
depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
properties:
servers: {get_attr: [Compute, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
ObjectStorageNodesPostDeployment:
type: OS::TripleO::ObjectStoragePostDeployment
depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
properties:
servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
BlockStorageNodesPostDeployment:
type: OS::TripleO::BlockStoragePostDeployment
depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
properties:
servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
CephStorageNodesPostDeployment:
type: OS::TripleO::CephStoragePostDeployment
depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
properties:
servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
outputs:
KeystoneURL:

@ -6,6 +6,10 @@ description: >
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:
CephStoragePuppetConfig:
@ -22,6 +26,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: CephStoragePuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.

@ -152,3 +152,7 @@ outputs:
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]}

@ -4,6 +4,9 @@ description: 'OpenStack cinder storage post deployment for Puppet'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:

@ -260,3 +260,6 @@ outputs:
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: [BlockStorageDeployment, deploy_stdout]}

@ -6,6 +6,10 @@ description: >
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:
@ -23,6 +27,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: ComputePuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.

@ -513,3 +513,7 @@ outputs:
description: Heat resource handle for the Nova compute server
value:
{get_resource: NovaCompute}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: {get_attr: [NovaComputeDeployment, deploy_stdout]}

@ -6,6 +6,10 @@ description: >
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:
@ -23,6 +27,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 1
update_identifier: {get_param: NodeConfigIdentifiers}
actions: ['CREATE'] # no need for two passes on an UPDATE
ControllerServicesBaseDeployment_Step2:
@ -33,6 +38,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 2
update_identifier: {get_param: NodeConfigIdentifiers}
actions: ['CREATE'] # no need for two passes on an UPDATE
ControllerRingbuilderPuppetConfig:
@ -54,6 +60,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: ControllerRingbuilderPuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
ControllerOvercloudServicesDeployment_Step4:
type: OS::Heat::StructuredDeployments
@ -63,6 +71,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 3
update_identifier: {get_param: NodeConfigIdentifiers}
ControllerOvercloudServicesDeployment_Step5:
type: OS::Heat::StructuredDeployments
@ -72,6 +81,7 @@ resources:
config: {get_resource: ControllerPuppetConfig}
input_values:
step: 4
update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.

@ -1063,3 +1063,6 @@ outputs:
template: "IP:11211"
params:
IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
config_identifier:
description: identifier which changes if the controller configuration may need re-applying
value: {get_attr: [ControllerDeployment, deploy_stdout]}

@ -4,6 +4,10 @@ description: 'OpenStack swift storage node post deployment for Puppet'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:
@ -21,6 +25,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: StoragePuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
StorageRingbuilderPuppetConfig:
type: OS::Heat::SoftwareConfig
@ -37,6 +43,8 @@ resources:
properties:
servers: {get_param: servers}
config: {get_resource: StorageRingbuilderPuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure
# this is created after any other resources.

@ -212,3 +212,7 @@ outputs:
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: [SwiftStorageHieraDeploy, deploy_stdout]}

@ -6,6 +6,9 @@ description: 'Swift Storage Post Deployment'
parameters:
servers:
type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources:

@ -194,3 +194,6 @@ outputs:
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"