44ef2a3ec1
The new master branch should point now to rocky. So, HOT templates should specify that they might contain features for rocky release [1] Also, this submission updates the yaml validation to use only latest heat_version alias. There are cases in which we will need to set the version for specific templates i.e. mixed versions, so there is added a variable to assign specific templates to specific heat_version aliases, avoiding the introductions of error by bulk replacing the the old version in new releases. [1]: https://docs.openstack.org/heat/latest/template_guide/hot_spec.html#rocky Change-Id: Ib17526d9cc453516d99d4659ee5fa51a5aa7fb4b
157 lines
4.1 KiB
YAML
157 lines
4.1 KiB
YAML
heat_template_version: rocky
|
|
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: {}
|
|
ControlPlaneSubnet:
|
|
default: ctlplane-subnet
|
|
description: The name of the undercloud Neutron control plane subnet
|
|
type: string
|
|
|
|
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
|
|
fixed_ips: [{subnet: {get_param: ControlPlaneSubnet}}]
|
|
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]}
|