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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:

View File

@@ -148,3 +148,6 @@ outputs:
storage_mgmt_ip_address: storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]} 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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:

View File

@@ -203,3 +203,6 @@ outputs:
storage_mgmt_ip_address: storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]} 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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:

View File

@@ -473,3 +473,6 @@ outputs:
description: Heat resource handle for the Nova compute server description: Heat resource handle for the Nova compute server
value: value:
{get_resource: NovaCompute} {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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:

View File

@@ -1047,3 +1047,6 @@ outputs:
template: "IP:11211" template: "IP:11211"
params: params:
IP: {get_attr: [Controller, networks, ctlplane, 0]} 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] depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
properties: properties:
servers: {get_attr: [Controller, attributes, nova_server_resource]} servers: {get_attr: [Controller, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
ComputeNodesPostDeployment: ComputeNodesPostDeployment:
type: OS::TripleO::ComputePostDeployment type: OS::TripleO::ComputePostDeployment
depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment] depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
properties: properties:
servers: {get_attr: [Compute, attributes, nova_server_resource]} servers: {get_attr: [Compute, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
ObjectStorageNodesPostDeployment: ObjectStorageNodesPostDeployment:
type: OS::TripleO::ObjectStoragePostDeployment type: OS::TripleO::ObjectStoragePostDeployment
depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment] depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
properties: properties:
servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]} servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
BlockStorageNodesPostDeployment: BlockStorageNodesPostDeployment:
type: OS::TripleO::BlockStoragePostDeployment type: OS::TripleO::BlockStoragePostDeployment
depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment] depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
properties: properties:
servers: {get_attr: [BlockStorage, attributes, nova_server_resource]} servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
CephStorageNodesPostDeployment: CephStorageNodesPostDeployment:
type: OS::TripleO::CephStoragePostDeployment type: OS::TripleO::CephStoragePostDeployment
depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment] depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
properties: properties:
servers: {get_attr: [CephStorage, attributes, nova_server_resource]} servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
outputs: outputs:
KeystoneURL: KeystoneURL:

View File

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

View File

@@ -152,3 +152,7 @@ outputs:
storage_mgmt_ip_address: storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]} 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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:

View File

@@ -260,3 +260,6 @@ outputs:
storage_mgmt_ip_address: storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]} 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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:
@@ -23,6 +27,8 @@ resources:
properties: properties:
servers: {get_param: servers} servers: {get_param: servers}
config: {get_resource: ComputePuppetConfig} config: {get_resource: ComputePuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure # Note, this should come last, so use depends_on to ensure
# this is created after any other resources. # this is created after any other resources.

View File

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

View File

@@ -1063,3 +1063,6 @@ outputs:
template: "IP:11211" template: "IP:11211"
params: params:
IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]} 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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:
@@ -21,6 +25,8 @@ resources:
properties: properties:
servers: {get_param: servers} servers: {get_param: servers}
config: {get_resource: StoragePuppetConfig} config: {get_resource: StoragePuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
StorageRingbuilderPuppetConfig: StorageRingbuilderPuppetConfig:
type: OS::Heat::SoftwareConfig type: OS::Heat::SoftwareConfig
@@ -37,6 +43,8 @@ resources:
properties: properties:
servers: {get_param: servers} servers: {get_param: servers}
config: {get_resource: StorageRingbuilderPuppetConfig} config: {get_resource: StorageRingbuilderPuppetConfig}
input_values:
update_identifier: {get_param: NodeConfigIdentifiers}
# Note, this should come last, so use depends_on to ensure # Note, this should come last, so use depends_on to ensure
# this is created after any other resources. # this is created after any other resources.

View File

@@ -212,3 +212,7 @@ outputs:
storage_mgmt_ip_address: storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]} 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: parameters:
servers: servers:
type: json type: json
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
resources: resources:

View File

@@ -194,3 +194,6 @@ outputs:
storage_mgmt_ip_address: storage_mgmt_ip_address:
description: IP address of the server in the storage_mgmt network description: IP address of the server in the storage_mgmt network
value: {get_attr: [StorageMgmtPort, ip_address]} value: {get_attr: [StorageMgmtPort, ip_address]}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
value: "None - NO_SIGNAL"