Skip to content

Instantly share code, notes, and snippets.

@greghaynes
Created April 2, 2014 04:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save greghaynes/9927862 to your computer and use it in GitHub Desktop.
Save greghaynes/9927862 to your computer and use it in GitHub Desktop.
Description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
server,Dedicated RabbitMQ Server,Group of Nova Computes
HeatTemplateFormatVersion: '2012-12-12'
Parameters:
AdminPassword:
Default: unset
Description: The password for the keystone admin account, used for monitoring, querying neutron etc.
Type: String
NoEcho: true
AdminToken:
Default: unset
Description: The keystone auth secret.
Type: String
NoEcho: true
CinderPassword:
Default: unset
Description: The password for the cinder service account, used by cinder-api.
Type: String
NoEcho: true
OvercloudControlFlavor:
Default: baremetal
Description: Flavor for control nodes to request when deploying.
Type: String
OvercloudComputeFlavor:
Default: baremetal
Description: Flavor for compute nodes to request when deploying.
Type: String
GlancePassword:
Default: unset
Description: The password for the glance service account, used by the glance services.
Type: String
NoEcho: true
GlanceNotifierStrategy:
Description: Strategy to use for Glance notification queue
Type: String
Default: noop
GlanceLogFile:
Description: The filepath of the file to use for logging messages from Glance.
Type: String
Default: ''
HeatPassword:
Default: unset
Description: The password for the Heat service account, used by the Heat services.
Type: String
NoEcho: true
ImageUpdatePolicy:
Default: 'REPLACE'
Description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
Type: String
KeyName:
Default: default
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
Type: String
NeutronBridgeMappings:
Description: The OVS logical->physical bridge mappings to use.
Type: String
Default: ''
NeutronPassword:
Default: unset
Description: The password for the neutron service account, used by neutron agents.
Type: String
NoEcho: true
CeilometerComputeAgent:
Description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
Type: String
Default: ''
AllowedValues: ['', Present]
CeilometerMeteringSecret:
Default: unset
Description: Secret shared by the ceilometer services.
Type: String
NoEcho: true
CeilometerPassword:
Default: unset
Description: The password for the ceilometer service account.
Type: String
NoEcho: true
CloudName:
Default: ''
Description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
Type: String
NovaComputeDriver:
Default: libvirt.LibvirtDriver
Type: String
NovaComputeLibvirtType:
Default: ''
Type: String
NovaImage:
Type: String
Default: overcloud-compute
NovaPassword:
Default: unset
Description: The password for the nova service account, used by nova-api.
Type: String
NoEcho: true
NeutronFlatNetworks:
Type: String
Default: ''
Description: If set, flat networks to configure in neutron plugins.
HypervisorNeutronPhysicalBridge:
Default: ''
Description: An OVS bridge to create on each hypervisor.
Type: String
HypervisorNeutronPublicInterface:
Default: ''
Description: What interface to add to the HypervisorNeutronPhysicalBridge.
Type: String
MysqlSstUserName:
Default: 'sstuser'
Description: User name used for SST authentication.
Type: String
MysqlSstPassword:
Default: 'sstpass'
Description: Password used for SST authentication.
Type: String
NoEcho: true
NeutronPublicInterface:
Default: eth0
Description: What interface to bridge onto br-ex for network nodes.
Type: String
NeutronPublicInterfaceDefaultRoute:
Default: ''
Description: A custom default route for the NeutronPublicInterface.
Type: String
NeutronPublicInterfaceIP:
Default: ''
Description: A custom IP address to put onto the NeutronPublicInterface.
Type: String
NeutronPublicInterfaceRawDevice:
Default: ''
Description: If set, the public interface is a vlan with this device as the raw device.
Type: String
notcomputeImage:
Type: String
Default: overcloud-control
NtpServer:
Type: String
Default: ''
RabbitUserName:
Default: guest
Description: The username for RabbitMQ
Type: String
RabbitPassword:
Default: guest
Description: The password for RabbitMQ
Type: String
NoEcho: true
RabbitCookieSalt:
Type: String
Default: unset
Description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
HeatStackDomainAdminPassword:
Description: Password for heat_domain_admin user.
Type: String
Default: ''
NoEcho: true
LiveUpdateUserName:
Type: String
Description: The live-update username for the undercloud Glance API.
Default: ''
LiveUpdateTenantName:
Type: String
Description: The live-update tenant name for the undercloud Glance API.
Default: ''
LiveUpdateHost:
Type: String
Description: The IP address for the undercloud Glance API.
Default: ''
LiveUpdatePassword:
Type: String
Default: ''
Description: The live-update password for the undercloud Glance API.
NoEcho: true
LiveUpdateComputeImage:
Type: String
Description: The image ID for live-updates to the overcloud compute nodes.
Default: ''
Resources:
MysqlClusterUniquePart:
Type: OS::Heat::RandomString
Properties:
length: 10
RabbitCookie:
Type: OS::Heat::RandomString
Properties:
length: 20
salt:
Ref: RabbitCookieSalt
AccessPolicy:
Properties:
AllowedResources:
- notCompute0
- notCompute0Config
- notCompute1
- notCompute1Config
Type: OS::Heat::AccessPolicy
ComputeAccessPolicy:
Properties:
AllowedResources:
- NovaCompute0
- NovaCompute0Config
- NovaCompute1
- NovaCompute1Config
Type: OS::Heat::AccessPolicy
notCompute0Key:
Properties:
UserName:
Ref: User
Type: AWS::IAM::AccessKey
notCompute0CompletionCondition:
Type: AWS::CloudFormation::WaitCondition
DependsOn: notCompute0Config
Properties:
Handle: {Ref: notCompute0CompletionHandle}
Count: '1'
Timeout: '1800'
notCompute0CompletionHandle:
Type: OS::Heat::UpdateWaitConditionHandle
notCompute1Key:
Properties:
UserName:
Ref: User
Type: AWS::IAM::AccessKey
notCompute1CompletionCondition:
Type: AWS::CloudFormation::WaitCondition
DependsOn: notCompute1Config
Properties:
Handle: {Ref: notCompute1CompletionHandle}
Count: '1'
Timeout: '1800'
notCompute1CompletionHandle:
Type: OS::Heat::UpdateWaitConditionHandle
NovaCompute0Key:
Type: FileInclude
Path: nova-compute-instance.yaml
SubKey: Resources.NovaCompute0Key
NovaCompute0CompletionCondition:
Type: FileInclude
Path: nova-compute-instance.yaml
SubKey: Resources.NovaCompute0CompletionCondition
NovaCompute0CompletionHandle:
Type: FileInclude
Path: nova-compute-instance.yaml
SubKey: Resources.NovaCompute0CompletionHandle
ComputeUser:
Properties:
Policies:
- Ref: ComputeAccessPolicy
Type: AWS::IAM::User
NovaCompute0Config:
Type: FileInclude
Path: nova-compute-instance.yaml
SubKey: Resources.NovaCompute0Config
Parameters:
NovaApiHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
KeystoneHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
RabbitHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
NeutronHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
GlanceHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ] }
NovaDSN: {"Fn::Join": ['', ['mysql://nova:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ]}, '/nova']]}
CeilometerDSN: {"Fn::Join": ['', ['mysql://ceilometer:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ]}, '/ceilometer']]}
NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notCompute0, networks]} ]} ]}, '/neutron']]}
NeutronNetworkType: "gre"
NeutronEnableTunnelling: "True"
NeutronFlatNetworks:
Ref: NeutronFlatNetworks
NeutronNetworkVLANRanges: ""
NeutronPhysicalBridge:
Ref: HypervisorNeutronPhysicalBridge
NeutronPublicInterface:
Ref: HypervisorNeutronPublicInterface
NeutronBridgeMappings:
Ref: NeutronBridgeMappings
StaticHosts:
Fn::Join:
- "\n"
- - Fn::Join:
- "\n"
- Merge::Map:
NovaCompute0:
Fn::Join:
- ' '
- - Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- NovaCompute0
- networks
- Fn::Select:
- name
- Fn::GetAtt:
- NovaCompute0
- show
- Fn::Join:
- '.'
- - Fn::Select:
- name
- Fn::GetAtt:
- NovaCompute0
- show
- 'novalocal'
- Fn::Join:
- ' '
- - Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute0
- networks
- {Ref: CloudName}
# If CloudName is unset, make the hosts line still valid
- unused
NovaCompute0:
Type: FileInclude
Path: nova-compute-instance.yaml
SubKey: Resources.NovaCompute0
User:
Properties:
Policies:
- Ref: AccessPolicy
Type: AWS::IAM::User
notCompute0Config:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
ImageId: '0'
InstanceType: '0'
Metadata:
OpenStack::Heat::Stack: {}
OpenStack::ImageBuilder::Elements:
- boot-stack
- heat-cfntools
- heat-localip
- neutron-network-node
admin-password:
Ref: AdminPassword
admin-token:
Ref: AdminToken
bootstack:
public_interface_ip:
Ref: NeutronPublicInterfaceIP
cinder:
db: mysql://cinder:unset@localhost/cinder
volume_size_mb: '5000'
service-password:
Ref: CinderPassword
completion-handle:
Ref: notCompute0CompletionHandle
controller-address:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
db-password: unset
glance:
backend: swift
db: mysql://glance:unset@localhost/glance
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
service-password:
Ref: GlancePassword
swift-store-user: service:glance
swift-store-key:
Ref: GlancePassword
notifier-strategy:
Ref: GlanceNotifierStrategy
log-file:
Ref: GlanceLogFile
heat:
admin_password:
Ref: HeatPassword
admin_tenant_name: service
admin_user: heat
auth_encryption_key: unset___________
db: mysql://heat:unset@localhost/heat
stack_domain_admin_password: {Ref: HeatStackDomainAdminPassword}
watch_server_url:
Fn::Join:
- ''
- - 'http://'
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
- ':8003'
metadata_server_url:
Fn::Join:
- ''
- - 'http://'
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
- ':8000'
waitcondition_server_url:
Fn::Join:
- ''
- - 'http://'
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
- ':8000/v1/waitcondition'
hosts:
Fn::Join:
- ' '
- - Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute0
- networks
- {Ref: CloudName}
keystone:
db: mysql://keystone:unset@localhost/keystone
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
mysql:
cluster-name:
Fn::Join:
- '-'
- - 'tripleo'
- {Ref: MysqlClusterUniquePart}
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
nodes:
Fn::Join:
- ','
- - Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
sstusername:
Ref: MysqlSstUserName
sstpassword:
Ref: MysqlSstPassword
neutron:
flat-networks: {Ref: NeutronFlatNetworks}
host:
Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute0
- networks
metadata_proxy_shared_secret: unset
ovs:
enable_tunneling: 'True'
local_ip:
Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute0
- networks
bridge_mappings: {Ref: NeutronBridgeMappings}
public_interface:
Ref: NeutronPublicInterface
public_interface_raw_device:
Ref: NeutronPublicInterfaceRawDevice
public_interface_route:
Ref: NeutronPublicInterfaceDefaultRoute
physical_bridge: br-ex
tenant_network_type: gre
ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
service-password:
Ref: NeutronPassword
ceilometer:
db: mysql://ceilometer:unset@localhost/ceilometer
metering_secret: {Ref: CeilometerMeteringSecret}
service-password:
Ref: CeilometerPassword
nova:
compute_driver: libvirt.LibvirtDriver
db: mysql://nova:unset@localhost/nova
default_floating_pool:
ext-net
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
metadata-proxy: true
service-password:
Ref: NovaPassword
os-collect-config:
cfn:
access_key_id:
Ref: notCompute0Key
path: notCompute0Config.Metadata
secret_access_key:
Fn::GetAtt:
- notCompute0Key
- SecretAccessKey
stack_name:
Ref: AWS::StackName
rabbit:
host:
Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute0
- networks
username:
Ref: RabbitUserName
password:
Ref: RabbitPassword
cookie:
Fn::GetAtt:
- RabbitCookie
- value
ntp:
servers:
- {server: {Ref: NtpServer}, fudge: "stratum 0"}
notCompute0:
Type: OS::Nova::Server
Properties:
image:
Ref: notcomputeImage
image_update_policy:
Ref: ImageUpdatePolicy
flavor:
Ref: OvercloudControlFlavor
key_name:
Ref: KeyName
Metadata:
os-collect-config:
cfn:
access_key_id:
Ref: notCompute0Key
path: notCompute0Config.Metadata
secret_access_key:
Fn::GetAtt:
- notCompute0Key
- SecretAccessKey
stack_name:
Ref: AWS::StackName
notCompute1Config:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
ImageId: '0'
InstanceType: '0'
Metadata:
OpenStack::Heat::Stack: {}
OpenStack::ImageBuilder::Elements:
- boot-stack
- heat-cfntools
- heat-localip
- neutron-network-node
admin-password:
Ref: AdminPassword
admin-token:
Ref: AdminToken
bootstack:
public_interface_ip:
Ref: NeutronPublicInterfaceIP
cinder:
db: mysql://cinder:unset@localhost/cinder
volume_size_mb: '5000'
service-password:
Ref: CinderPassword
completion-handle:
Ref: notCompute1CompletionHandle
controller-address:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
db-password: unset
glance:
backend: swift
db: mysql://glance:unset@localhost/glance
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
service-password:
Ref: GlancePassword
swift-store-user: service:glance
swift-store-key:
Ref: GlancePassword
notifier-strategy:
Ref: GlanceNotifierStrategy
log-file:
Ref: GlanceLogFile
heat:
admin_password:
Ref: HeatPassword
admin_tenant_name: service
admin_user: heat
auth_encryption_key: unset___________
db: mysql://heat:unset@localhost/heat
stack_domain_admin_password: {Ref: HeatStackDomainAdminPassword}
watch_server_url:
Fn::Join:
- ''
- - 'http://'
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
- ':8003'
metadata_server_url:
Fn::Join:
- ''
- - 'http://'
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
- ':8000'
waitcondition_server_url:
Fn::Join:
- ''
- - 'http://'
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
- ':8000/v1/waitcondition'
hosts:
Fn::Join:
- ' '
- - Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute1
- networks
- {Ref: CloudName}
keystone:
db: mysql://keystone:unset@localhost/keystone
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
mysql:
cluster-name:
Fn::Join:
- '-'
- - 'tripleo'
- {Ref: MysqlClusterUniquePart}
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
nodes:
Fn::Join:
- ','
- - Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute0
- networks
- Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
sstusername:
Ref: MysqlSstUserName
sstpassword:
Ref: MysqlSstPassword
neutron:
flat-networks: {Ref: NeutronFlatNetworks}
host:
Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute1
- networks
metadata_proxy_shared_secret: unset
ovs:
enable_tunneling: 'True'
local_ip:
Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute1
- networks
bridge_mappings: {Ref: NeutronBridgeMappings}
public_interface:
Ref: NeutronPublicInterface
public_interface_raw_device:
Ref: NeutronPublicInterfaceRawDevice
public_interface_route:
Ref: NeutronPublicInterfaceDefaultRoute
physical_bridge: br-ex
tenant_network_type: gre
ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
service-password:
Ref: NeutronPassword
ceilometer:
db: mysql://ceilometer:unset@localhost/ceilometer
metering_secret: {Ref: CeilometerMeteringSecret}
service-password:
Ref: CeilometerPassword
nova:
compute_driver: libvirt.LibvirtDriver
db: mysql://nova:unset@localhost/nova
default_floating_pool:
ext-net
host:
Fn::Select:
- 0
- Fn::Select:
- 'ctlplane'
- Fn::GetAtt:
- notCompute1
- networks
metadata-proxy: true
service-password:
Ref: NovaPassword
os-collect-config:
cfn:
access_key_id:
Ref: notCompute1Key
path: notCompute1Config.Metadata
secret_access_key:
Fn::GetAtt:
- notCompute1Key
- SecretAccessKey
stack_name:
Ref: AWS::StackName
rabbit:
host:
Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute1
- networks
username:
Ref: RabbitUserName
password:
Ref: RabbitPassword
cookie:
Fn::GetAtt:
- RabbitCookie
- value
ntp:
servers:
- {server: {Ref: NtpServer}, fudge: "stratum 0"}
notCompute1:
Type: OS::Nova::Server
Properties:
image:
Ref: notcomputeImage
image_update_policy:
Ref: ImageUpdatePolicy
flavor:
Ref: OvercloudControlFlavor
key_name:
Ref: KeyName
Metadata:
os-collect-config:
cfn:
access_key_id:
Ref: notCompute1Key
path: notCompute1Config.Metadata
secret_access_key:
Fn::GetAtt:
- notCompute1Key
- SecretAccessKey
stack_name:
Ref: AWS::StackName
Outputs:
KeystoneURL:
Description: URL for the Overcloud Keystone service
Value:
Fn::Join:
- ''
- - http://
- Fn::Select:
- 0
- Fn::Select:
- ctlplane
- Fn::GetAtt:
- notCompute0
- networks
- :5000/v2.0/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment