
This example extends the compute software configuration so that heat metadata is used to model the os-net-config YAML (ultimately JSON) directly. The existing os-net-config element already supports this format. Configuring the physical network layer in this manner would supplant the ever growing list of Heat parameters that we have and is something that could be automatically generated via tuskar. The default is to use net-config-noop.yaml which will pass no config metadata into the os-net-config element which will essentially disable it in favor of using parameters w/ init-neutron-ovs. Change-Id: I30f325b1751caaef5624537e63ee27c2e418d5c8
365 lines
12 KiB
YAML
365 lines
12 KiB
YAML
heat_template_version: 2014-10-16
|
|
|
|
description: >
|
|
OpenStack hypervisor node. Can be wrapped in a ResourceGroup for scaling.
|
|
|
|
parameters:
|
|
AdminPassword:
|
|
default: unset
|
|
description: The password for the keystone admin account, used for monitoring, querying neutron etc.
|
|
type: string
|
|
hidden: true
|
|
CeilometerComputeAgent:
|
|
description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
|
|
type: string
|
|
default: ''
|
|
constraints:
|
|
- allowed_values: ['', Present]
|
|
CeilometerDSN:
|
|
type: string
|
|
CeilometerMeteringSecret:
|
|
default: unset
|
|
description: Secret shared by the ceilometer services.
|
|
type: string
|
|
hidden: true
|
|
CeilometerPassword:
|
|
default: unset
|
|
description: The password for the ceilometer service account.
|
|
type: string
|
|
hidden: true
|
|
Debug:
|
|
default: ''
|
|
description: Set to True to enable debugging on all services.
|
|
type: string
|
|
ExtraConfig:
|
|
default: {}
|
|
description: |
|
|
Additional configuration to inject into the cluster. The JSON should have
|
|
the following structure:
|
|
{"FILEKEY":
|
|
{"config":
|
|
[{"section": "SECTIONNAME",
|
|
"values":
|
|
[{"option": "OPTIONNAME",
|
|
"value": "VALUENAME"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
For instance:
|
|
{"nova":
|
|
{"config":
|
|
[{"section": "default",
|
|
"values":
|
|
[{"option": "force_config_drive",
|
|
"value": "always"
|
|
}
|
|
]
|
|
},
|
|
{"section": "cells",
|
|
"values":
|
|
[{"option": "driver",
|
|
"value": "nova.cells.rpc_driver.CellsRPCDriver"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
type: json
|
|
Flavor:
|
|
description: Flavor for the nova compute node
|
|
type: string
|
|
constraints:
|
|
- custom_constraint: nova.flavor
|
|
GlanceHost:
|
|
type: string
|
|
default: '' # Has to be here because of the ignored empty value bug
|
|
GlancePort:
|
|
default: "9292"
|
|
description: Glance port.
|
|
type: string
|
|
GlanceProtocol:
|
|
default: http
|
|
description: Protocol to use when connecting to glance, set to https for SSL.
|
|
type: string
|
|
Image:
|
|
type: string
|
|
default: overcloud-compute
|
|
constraints:
|
|
- custom_constraint: glance.image
|
|
ImageUpdatePolicy:
|
|
default: 'REBUILD_PRESERVE_EPHEMERAL'
|
|
description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
|
|
type: string
|
|
KeyName:
|
|
description: Name of an existing EC2 KeyPair to enable SSH access to the instances
|
|
type: string
|
|
default: default
|
|
constraints:
|
|
- custom_constraint: nova.keypair
|
|
KeystoneHost:
|
|
type: string
|
|
default: ''
|
|
NeutronBridgeMappings:
|
|
description: >
|
|
The OVS logical->physical bridge mappings to use. See the Neutron
|
|
documentation for details. Defaults to mapping br-ex - the external
|
|
bridge on hosts - to a physical name 'datacentre' which can be used
|
|
to create provider networks (and we use this for the default floating
|
|
network) - if changing this either use different post-install network
|
|
scripts or be sure to keep 'datacentre' as a mapping network name.
|
|
type: string
|
|
default: ""
|
|
NeutronDSN:
|
|
type: string
|
|
NeutronEnableTunnelling:
|
|
type: string
|
|
default: "True"
|
|
NeutronFlatNetworks:
|
|
type: string
|
|
default: ''
|
|
description: >
|
|
If set, flat networks to configure in neutron plugins.
|
|
NeutronHost:
|
|
type: string
|
|
default: '' # Has to be here because of the ignored empty value bug
|
|
NeutronNetworkType:
|
|
type: string
|
|
description: The tenant network type for Neutron, either gre or vxlan.
|
|
default: 'gre'
|
|
NeutronNetworkVLANRanges:
|
|
default: 'datacentre'
|
|
description: >
|
|
The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
|
|
Neutron documentation for permitted values. Defaults to permitting any
|
|
VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
|
|
type: string
|
|
NeutronPassword:
|
|
default: unset
|
|
description: The password for the neutron service account, used by neutron agents.
|
|
type: string
|
|
hidden: true
|
|
NeutronPhysicalBridge:
|
|
default: ''
|
|
description: An OVS bridge to create for accessing external networks.
|
|
type: string
|
|
NeutronPublicInterface:
|
|
default: nic1
|
|
description: A port to add to the NeutronPhysicalBridge.
|
|
type: string
|
|
NeutronTunnelTypes:
|
|
type: string
|
|
description: |
|
|
The tunnel types for the Neutron tenant network. To specify multiple
|
|
values, use a comma separated string, like so: 'gre,vxlan'
|
|
default: 'gre'
|
|
NeutronPublicInterfaceRawDevice:
|
|
default: ''
|
|
type: string
|
|
NeutronDVR:
|
|
default: 'False'
|
|
type: string
|
|
NeutronMetadataProxySharedSecret:
|
|
default: 'unset'
|
|
description: Shared secret to prevent spoofing
|
|
type: string
|
|
NeutronMechanismDrivers:
|
|
default: 'openvswitch'
|
|
description: |
|
|
The mechanism drivers for the Neutron tenant network. To specify multiple
|
|
values, use a comma separated string, like so: 'openvswitch,l2_population'
|
|
type: string
|
|
NeutronAllowL3AgentFailover:
|
|
default: 'True'
|
|
description: Allow automatic l3-agent failover
|
|
type: string
|
|
NeutronAgentMode:
|
|
default: 'dvr_snat'
|
|
description: Agent mode for the neutron-l3-agent on the controller hosts
|
|
type: string
|
|
NovaApiHost:
|
|
type: string
|
|
default: '' # Has to be here because of the ignored empty value bug
|
|
NovaComputeDriver:
|
|
type: string
|
|
default: libvirt.LibvirtDriver
|
|
NovaComputeExtraConfig:
|
|
default: {}
|
|
description: |
|
|
NovaCompute specific configuration to inject into the cluster. Same
|
|
structure as ExtraConfig.
|
|
type: json
|
|
NovaComputeLibvirtType:
|
|
type: string
|
|
default: ''
|
|
NovaDSN:
|
|
type: string
|
|
NovaPassword:
|
|
default: unset
|
|
description: The password for the nova service account, used by nova-api.
|
|
type: string
|
|
hidden: true
|
|
NovaPublicIP:
|
|
type: string
|
|
default: '' # Has to be here because of the ignored empty value bug
|
|
NtpServer:
|
|
type: string
|
|
default: ''
|
|
RabbitHost:
|
|
type: string
|
|
default: '' # Has to be here because of the ignored empty value bug
|
|
RabbitPassword:
|
|
default: guest
|
|
description: The password for RabbitMQ
|
|
type: string
|
|
hidden: true
|
|
RabbitUserName:
|
|
default: guest
|
|
description: The username for RabbitMQ
|
|
type: string
|
|
SnmpdReadonlyUserName:
|
|
default: ro_snmp_user
|
|
description: The user name for SNMPd with readonly rights running on all Overcloud nodes
|
|
type: string
|
|
SnmpdReadonlyUserPassword:
|
|
default: unset
|
|
description: The user password for SNMPd with readonly rights running on all Overcloud nodes
|
|
type: string
|
|
hidden: true
|
|
|
|
|
|
resources:
|
|
|
|
NovaCompute:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
image:
|
|
{get_param: Image}
|
|
image_update_policy:
|
|
get_param: ImageUpdatePolicy
|
|
flavor: {get_param: Flavor}
|
|
key_name: {get_param: KeyName}
|
|
networks:
|
|
- network: ctlplane
|
|
user_data_format: SOFTWARE_CONFIG
|
|
|
|
NetworkConfig:
|
|
type: OS::TripleO::Net::SoftwareConfig
|
|
|
|
NetworkDeployment:
|
|
type: OS::TripleO::SoftwareDeployment
|
|
properties:
|
|
signal_transport: NO_SIGNAL
|
|
config: {get_attr: [NetworkConfig, config_id]}
|
|
server: {get_resource: NovaCompute}
|
|
input_values:
|
|
bridge_name: {get_param: NeutronPhysicalBridge}
|
|
interface_name: {get_param: NeutronPublicInterface}
|
|
|
|
NovaComputeConfig:
|
|
type: OS::TripleO::Compute::SoftwareConfig
|
|
|
|
NovaComputeDeployment:
|
|
type: OS::TripleO::SoftwareDeployment
|
|
properties:
|
|
signal_transport: NO_SIGNAL
|
|
config: {get_attr: [NovaComputeConfig, config_id]}
|
|
server: {get_resource: NovaCompute}
|
|
input_values:
|
|
debug: {get_param: Debug}
|
|
nova_compute_driver: {get_param: NovaComputeDriver}
|
|
nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
|
|
nova_dsn: {get_param: NovaDSN}
|
|
nova_public_ip: {get_param: NovaPublicIP}
|
|
nova_api_host: {get_param: NovaApiHost}
|
|
nova_password: {get_param: NovaPassword}
|
|
ceilometer_dsn: {get_param: CeilometerDSN}
|
|
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
|
|
ceilometer_password: {get_param: CeilometerPassword}
|
|
ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
|
|
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
|
|
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
|
|
glance_host: {get_param: GlanceHost}
|
|
glance_port: {get_param: GlancePort}
|
|
glance_protocol: {get_param: GlanceProtocol}
|
|
keystone_host: {get_param: KeystoneHost}
|
|
neutron_flat_networks: {get_param: NeutronFlatNetworks}
|
|
neutron_host: {get_param: NeutronHost}
|
|
neutron_dsn: {get_param: NeutronDSN}
|
|
neutron_local_ip: {get_attr: [NovaCompute, networks, ctlplane, 0]}
|
|
neutron_tenant_network_type: {get_param: NeutronNetworkType}
|
|
neutron_tunnel_types: {get_param: NeutronTunnelTypes}
|
|
neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
|
|
neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
|
|
neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
|
|
neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
|
|
neutron_public_interface: {get_param: NeutronPublicInterface}
|
|
neutron_password: {get_param: NeutronPassword}
|
|
neutron_agent_mode: {get_param: NeutronAgentMode}
|
|
neutron_router_distributed: {get_param: NeutronDVR}
|
|
neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
|
|
neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
|
|
neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
|
|
neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
|
|
admin_password: {get_param: AdminPassword}
|
|
rabbit_host: {get_param: RabbitHost}
|
|
rabbit_username: {get_param: RabbitUserName}
|
|
rabbit_password: {get_param: RabbitPassword}
|
|
ntp_server: {get_param: NtpServer}
|
|
|
|
NovaComputePassthrough:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: os-apply-config
|
|
config: {get_input: passthrough_config}
|
|
|
|
NovaComputePassthroughSpecific:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: os-apply-config
|
|
config: {get_input: passthrough_config_specific}
|
|
|
|
NovaComputePassthroughDeployment:
|
|
depends_on: [NovaComputeDeployment]
|
|
type: OS::Heat::StructuredDeployment
|
|
properties:
|
|
config: {get_resource: NovaComputePassthrough}
|
|
server: {get_resource: NovaCompute}
|
|
signal_transport: NO_SIGNAL
|
|
input_values:
|
|
passthrough_config: {get_param: ExtraConfig}
|
|
|
|
NovaComputePassthroughDeploymentSpecific:
|
|
depends_on: [NovaComputePassthroughDeployment]
|
|
type: OS::Heat::StructuredDeployment
|
|
properties:
|
|
config: {get_resource: NovaComputePassthroughSpecific}
|
|
server: {get_resource: NovaCompute}
|
|
signal_transport: NO_SIGNAL
|
|
input_values:
|
|
passthrough_config_specific: {get_param: NovaComputeExtraConfig}
|
|
|
|
outputs:
|
|
ip_address:
|
|
description: IP address of the server in the ctlplane network
|
|
value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
|
|
hostname:
|
|
description: Hostname of the server
|
|
value: {get_attr: [NovaCompute, name]}
|
|
hosts_entry:
|
|
description: >
|
|
Server's IP address and hostname in the /etc/hosts format
|
|
value:
|
|
str_replace:
|
|
template: "IP HOST HOST.novalocal"
|
|
params:
|
|
IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
|
|
HOST: {get_attr: [NovaCompute, name]}
|
|
nova_server_resource:
|
|
description: Heat resource handle for the Nova compute server
|
|
value:
|
|
{get_resource: NovaCompute}
|