77c82f6645
The subnet property is added to puppet/role.role.j2.yaml as `{{role}}ControlPlaneSubnet`. Roles with a different subnet specified can be used to deploy a routed network architecture by using one role per routed network. When enabling the neutron segments plug-in to support routed-networks the neutron IPAM code will defer ipallocation unless the port create request contain enough details. (Ref: LP Bug: #1695740) By adding the subnet to port create request this change enables tripleo deployment on an undercloud with Neutron segments plug-in and routed networks. This depends on a Heat change that improves network logic in server resource to not replace the current port if new props match what is on the current interface. Without this adding the subnet property on update/upgrades would cause a port replacement, which in turn would cause IPAM info in undercloud neutron to miss-match the deployed overcloud nodes. Depends-On: Iab75ec49b962617943017dcaf1b04b89f91a982e Change-Id: I33804bfd105a13c25d6057e8414e09957939e8af Implements: blueprint tripleo-routed-networks-deployment
157 lines
4.1 KiB
YAML
157 lines
4.1 KiB
YAML
heat_template_version: queens
|
|
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]}
|