heat_template_version: pike parameters: image: type: string default: unused flavor: type: string default: unused key_name: type: string default: unused description: Name of keypair to assign to servers security_groups: type: json default: [] # Require this so we can validate the parent passes the # correct value user_data_format: type: string user_data: type: string default: '' name: type: string default: 'deployed-server' image_update_policy: type: string default: '' networks: type: comma_delimited_list default: '' metadata: type: json default: {} software_config_transport: default: POLL_SERVER_CFN type: string scheduler_hints: type: json description: Optional scheduler hints to pass to nova default: {} UpgradeInitCommand: type: string description: | Command or script snippet to run on all overcloud nodes to initialize the upgrade process. E.g. a repository switch. default: '' deployment_swift_data: type: json default: {} resources: deployed-server: type: OS::Heat::DeployedServer properties: name: {get_param: name} software_config_transport: {get_param: software_config_transport} deployment_swift_data: {get_param: deployment_swift_data} UpgradeInitConfig: type: OS::Heat::SoftwareConfig properties: group: script config: list_join: - '' - - "#!/bin/bash\n\n" - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n" - get_param: UpgradeInitCommand UpgradeInitDeployment: type: OS::Heat::SoftwareDeployment properties: name: UpgradeInitDeployment server: {get_resource: deployed-server} config: {get_resource: UpgradeInitConfig} InstanceIdConfig: type: OS::Heat::StructuredConfig properties: group: apply-config config: instance-id: {get_resource: deployed-server} InstanceIdDeployment: type: OS::Heat::StructuredDeployment properties: name: InstanceIdDeployment config: {get_resource: InstanceIdConfig} server: {get_resource: deployed-server} depends_on: UpgradeInitDeployment HostsEntryConfig: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash set -eux mkdir -p $heat_outputs_path host=$(hostname -s) echo -n $host > $heat_outputs_path.hostname cat $heat_outputs_path.hostname outputs: - name: hostname description: hostname HostsEntryDeployment: type: OS::Heat::SoftwareDeployment properties: name: HostsEntryDeployment config: {get_resource: HostsEntryConfig} server: {get_resource: deployed-server} DeployedServerBootstrapConfig: type: OS::TripleO::DeployedServer::Bootstrap properties: server: {get_resource: deployed-server} ControlPlanePort: type: OS::TripleO::DeployedServer::ControlPlanePort properties: network: ctlplane name: list_join: - '-' - - yaql: expression: switch(not $.data.hostname.isEmpty() => $.data.hostname, $.data.name=>$.data.name) data: hostname: {get_attr: [HostsEntryDeployment, hostname]} name: {get_param: name} - ctlplane replacement_policy: AUTO outputs: OS::stack_id: value: {get_resource: deployed-server} networks: value: ctlplane: - {get_attr: [ControlPlanePort, fixed_ips, 0, ip_address]} name: value: yaql: expression: switch(not $.data.hostname.isEmpty() => $.data.hostname, $.data.name=>$.data.name) data: hostname: {get_attr: [HostsEntryDeployment, hostname]} name: {get_param: name} os_collect_config: value: {get_attr: [deployed-server, os_collect_config]}