c3d595c49a
This patch provides a set of templates that enables tripleo-heat-templates to be used with a set of already deployed, installed, and running servers. In this method, Nova and Ironic are not used to deploy any servers. This approach is attractive for POC deployments where dedicated provisioning networks are not available, or other server install methods are dictated for various reasons. There are also assumptions that currently have to be made about the software installed on the already deployed servers. Effectively, they must match the standard TripleO overcloud-full image. Co-Authored-By: Steve Hardy <shardy@redhat.com> Change-Id: I4ab1531f69c73457653f1cca3fe30cc32a04c129
123 lines
3.3 KiB
YAML
123 lines
3.3 KiB
YAML
heat_template_version: 2014-10-16
|
|
parameters:
|
|
image:
|
|
type: string
|
|
default: unused
|
|
flavor:
|
|
type: string
|
|
default: unused
|
|
key_name:
|
|
type: string
|
|
default: unused
|
|
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: ''
|
|
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: {}
|
|
|
|
resources:
|
|
# We just need something which returns a unique ID, but we can't
|
|
# use RandomString because RefId returns the value, not the physical
|
|
# resource ID, SoftwareConfig should work as it returns a UUID
|
|
deployed-server:
|
|
type: OS::TripleO::DeployedServerConfig
|
|
properties:
|
|
user_data_format: SOFTWARE_CONFIG
|
|
|
|
InstanceIdConfig:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: os-apply-config
|
|
config:
|
|
instance-id: {get_attr: [deployed-server, "OS::stack_id"]}
|
|
|
|
InstanceIdDeployment:
|
|
type: OS::Heat::StructuredDeployment
|
|
properties:
|
|
config: {get_resource: InstanceIdConfig}
|
|
server: {get_resource: deployed-server}
|
|
|
|
HostsEntryConfig:
|
|
type: OS::Heat::SoftwareConfig
|
|
properties:
|
|
group: script
|
|
config: |
|
|
#!/bin/bash
|
|
set -eux
|
|
mkdir -p $heat_outputs_path
|
|
host=$(hostnamectl --static)
|
|
echo -n "$host " > $heat_outputs_path.hosts_entry
|
|
host_ip=$(python -c "import socket; print socket.gethostbyname(\"$host\")")
|
|
echo -n "$host_ip " >> $heat_outputs_path.hosts_entry
|
|
echo >> $heat_outputs_path.hosts_entry
|
|
cat $heat_outputs_path.hosts_entry
|
|
echo -n $host_ip > $heat_outputs_path.ip_address
|
|
cat $heat_outputs_path.ip_address
|
|
echo -n $host > $heat_outputs_path.hostname
|
|
cat $heat_outputs_path.hostname
|
|
outputs:
|
|
- name: hosts_entry
|
|
description: hosts_entry
|
|
- name: ip_address
|
|
description: ip_address
|
|
- name: hostname
|
|
description: hostname
|
|
|
|
HostsEntryDeployment:
|
|
type: OS::Heat::SoftwareDeployment
|
|
properties:
|
|
config: {get_resource: HostsEntryConfig}
|
|
server: {get_resource: deployed-server}
|
|
|
|
ControlPlanePort:
|
|
type: OS::Neutron::Port
|
|
properties:
|
|
network: ctlplane
|
|
name:
|
|
list_join:
|
|
- '-'
|
|
- - {get_attr: [HostsEntryDeployment, hostname]}
|
|
- ctlplane
|
|
- port
|
|
replacement_policy: AUTO
|
|
|
|
outputs:
|
|
# FIXME(shardy) this is needed because TemplateResource returns an
|
|
# ARN not a UUID, which overflows the Deployment server_id column..
|
|
OS::stack_id:
|
|
value: {get_attr: [deployed-server, "OS::stack_id"]}
|
|
networks:
|
|
value:
|
|
ctlplane:
|
|
- {get_attr: [ControlPlanePort, fixed_ips, 0, ip_address]}
|
|
name:
|
|
value: {get_attr: [HostsEntryDeployment, hostname]}
|
|
hosts_entry:
|
|
value: {get_attr: [HostsEntryDeployment, hosts_entry]}
|
|
ip_address:
|
|
value: {get_attr: [HostsEntryDeployment, ip_address]}
|