heat_template_version: rocky description: > Do some configuration, then reboot - sometimes needed for early-boot changes such as modifying kernel configuration parameters: server: type: string RoleParameters: type: json description: Parameters specific to the role default: {} ServiceNames: type: comma_delimited_list default: [] deployment_actions: default: ['CREATE', 'UPDATE'] type: comma_delimited_list description: > List of stack actions that will trigger any deployments in this templates. The actions will be an empty list of the server is in the toplevel DeploymentServerBlacklist parameter's value. conditions: deployment_actions_empty: equals: - {get_param: deployment_actions} - [] resources: SomeConfig: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash echo "did some config before reboot" > /root/pre-reboot-config SomeDeployment: type: OS::Heat::SoftwareDeployment properties: name: SomeDeployment server: {get_param: server} config: {get_resource: SomeConfig} actions: if: - deployment_actions_empty - [] - ['CREATE'] # Only do this on CREATE actions: ['CREATE'] # Only do this on CREATE RebootConfig: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash # Stop os-collect-config to avoid any race collecting another # deployment before reboot happens systemctl stop os-collect-config.service /sbin/reboot RebootDeployment: type: OS::Heat::SoftwareDeployment depends_on: SomeDeployment properties: name: RebootDeployment server: {get_param: server} config: {get_resource: RebootConfig} actions: if: - deployment_actions_empty - [] - ['CREATE'] # Only do this on CREATE signal_transport: NO_SIGNAL