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

View File

@ -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:

View File

@ -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"

View File

@ -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:

View File

@ -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"

View File

@ -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:

View File

@ -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"

View File

@ -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:

View File

@ -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"

View File

@ -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:

View File

@ -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.

View File

@ -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]}

View File

@ -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:

View File

@ -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]}

View File

@ -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.

View File

@ -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]}

View File

@ -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.

View File

@ -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]}

View File

@ -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.

View File

@ -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]}

View File

@ -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:

View File

@ -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"