a0e6d30ca2
Presently, "openstack overcloud config download" does not support all Deployment resources, only those included in the RoleData and are natively of type group:ansible. This patch adds support for also pulling all the deployment data for OS::Heat::SoftwareDeployment (singular) resources applied to individual servers of any group type. Those resources are mapped to a new nested stack via the config-download-environment.yaml environment. The nested stack has the same interface as a SoftwareDeployment but only creates a OS::Heat::Value resource. The "config download" code will be updated in a separate patch to read the deployment data from these Value resources and apply them via ansible. The related tripleo-common patch (which depends on this patch) is: I7d7f6b831b8566390d8f747fb6f45e879b0392ba implements: blueprint ansible-config-download Change-Id: Ic2af634403b1ab2924c383035f770453f39a2cd5
152 lines
3.9 KiB
YAML
152 lines
3.9 KiB
YAML
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]}
|