Default: []
Description: Should be used for arbitrary ips.
Type: Json
+ PublicVirtualFixedIPs:
+ Default: []
+ Description: |
+ Control the IP allocation for the PublicVirtualInterface port. E.g.
+ [{'ip_address':'1.2.3.4'}]
+ Type: Json
+ PublicVirtualInterface:
+ Default: 'br-ex'
+ Description: >
+ Specifies the interface where the public-facing virtual ip will be assigned.
+ This should be int_public when a VLAN is being used.
+ Type: String
+ PublicVirtualNetwork:
+ Default: 'ctlplane'
+ Type: String
+ Description: >
+ Neutron network to allocate public virtual IP port on.
KeystoneCACertificate:
Default: ''
Description: Keystone self-signed certificate authority certificate.
network_id: {Ref: NeutronControlPlaneID}
fixed_ips:
Ref: ControlFixedIPs
+ MysqlClusterUniquePart:
+ Type: OS::Heat::RandomString
+ Properties:
+ length: 10
+ PublicVirtualIP:
+ Type: OS::Neutron::Port
+ Properties:
+ name: public_virtual_ip
+ network: {Ref: PublicVirtualNetwork}
+ fixed_ips:
+ Ref: PublicVirtualFixedIPs
RabbitCookie:
Type: OS::Heat::RandomString
Properties:
length: 20
salt:
Ref: RabbitCookieSalt
- NovaCompute0Config:
+ NovaCompute0Deploy:
Type: FileInclude
Path: nova-compute-instance.yaml
SubKey: Resources.NovaCompute0Deploy
Parameters:
NovaApiHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
KeystoneHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
- RabbitHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
NeutronHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
GlanceHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
NovaDSN: {"Fn::Join": ['', ['mysql://nova:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/nova']]}
CeilometerDSN: {"Fn::Join": ['', ['mysql://ceilometer:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/ceilometer']]}
- NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/neutron']]}
+ NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/ovs_neutron']]}
NeutronNetworkType: "gre"
NeutronEnableTunnelling: "True"
NeutronFlatNetworks:
Ref: HypervisorNeutronPublicInterface
NeutronBridgeMappings:
Ref: NeutronBridgeMappings
- NovaCompute0Hosts:
+ NovaCompute0AllNodes:
Type: FileInclude
Path: nova-compute-instance.yaml
- SubKey: Resources.NovaCompute0HostsDeploy
+ SubKey: Resources.NovaCompute0AllNodesDeploy
Parameters:
- HostsConfig: {Ref: allHostsConfig}
+ AllNodesConfig: {Ref: allNodesConfig}
NovaCompute0Passthrough:
- Type: OS::Heat::StructuredDeployment
- Properties:
- config: {Ref: NovaComputePassthrough}
- server: {Ref: NovaCompute0}
- signal_transport: NO_SIGNAL
- input_values:
+ Type: FileInclude
+ Path: nova-compute-instance.yaml
+ SubKey: Resources.NovaCompute0Passthrough
+ Parameters:
passthrough_config: {Ref: ExtraConfig}
NovaCompute0:
Type: FileInclude
Properties:
group: os-apply-config
config:
- completion-signal: {get_input: deploy_signal_id}
admin-password:
Ref: AdminPassword
admin-token:
Ref: CinderISCSIHelper
controller-address:
get_input: controller_host
+ corosync:
+ bindnetaddr: {get_input: controller_host}
+ mcastport: 5577
+ nodes:
+ Merge::Map:
+ controller0:
+ ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] }
+ pacemaker:
+ stonith_enabled : false
+ recheck_interval : 5
+ quorum_policy : ignore
db-password: unset
glance:
registry:
backend: swift
db: mysql://glance:unset@localhost/glance
host:
- get_input: controller_host
+ get_input: controller_virtual_ip
port:
Ref: GlancePort
protocol:
watch_server_url: {get_input: heat.watch_server_url}
metadata_server_url: {get_input: heat.metadata_server_url}
waitcondition_server_url: {get_input: heat.waitcondition_server_url}
+ horizon:
+ caches:
+ memcached:
+ nodes:
+ Merge::Map:
+ controller0:
+ {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] }
keystone:
db: mysql://keystone:unset@localhost/keystone
host:
- get_input: controller_host
+ get_input: controller_virtual_ip
ca_certificate: {Ref: KeystoneCACertificate}
signing_key: {Ref: KeystoneSigningKey}
signing_certificate: {Ref: KeystoneSigningCertificate}
mysql:
innodb_buffer_pool_size: {Ref: MysqlInnodbBufferPoolSize}
+ nodes:
+ Merge::Map:
+ controller0:
+ ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] }
+ cluster_name:
+ Fn::Join:
+ - '-'
+ - - 'tripleo'
+ - {Ref: MysqlClusterUniquePart}
neutron:
flat-networks: {Ref: NeutronFlatNetworks}
host: {get_input: controller_virtual_ip}
service-password:
Ref: NovaPassword
rabbit:
- host:
- get_input: controller_host
username:
Ref: RabbitUserName
password:
ntp:
servers:
- {server: {Ref: NtpServer}, fudge: "stratum 0"}
+ virtual_interfaces:
+ instances:
+ - vrrp_instance_name: VI_CONTROL
+ virtual_router_id: 51
+ keepalive_interface:
+ Ref: ControlVirtualInterface
+ priority: 101
+ virtual_ips:
+ - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+ interface:
+ Ref: ControlVirtualInterface
+ - vrrp_instance_name: VI_PUBLIC
+ virtual_router_id: 52
+ keepalive_interface:
+ Ref: PublicVirtualInterface
+ priority: 101
+ virtual_ips:
+ - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]}
+ interface:
+ Ref: PublicVirtualInterface
+ vrrp_sync_groups:
+ - name: VG1
+ members:
+ - VI_CONTROL
+ - VI_PUBLIC
keepalived:
keepalive_interface:
- Ref: NeutronPublicInterface
+ Ref: PublicVirtualInterface
priority: 101
virtual_ips:
-
ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
interface:
Ref: ControlVirtualInterface
+ -
+ ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]}
+ interface:
+ Ref: PublicVirtualInterface
+ haproxy:
+ nodes:
+ Merge::Map:
+ controller0:
+ ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] }
+ name: {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] }
+ net_binds:
+ - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+ services:
+ - name: keystone_admin
+ port: 35357
+ net_binds: &public_binds
+ - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+ - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]}
+ - name: keystone_public
+ port: 5000
+ net_binds: *public_binds
+ - name: horizon
+ port: 80
+ net_binds: *public_binds
+ - name: neutron
+ port: 9696
+ net_binds: *public_binds
+ - name: cinder
+ port: 8776
+ net_binds: *public_binds
+ - name: glance_api
+ port: 9292
+ net_binds: *public_binds
+ - name: glance_registry
+ port: 9191
+ net_binds: *public_binds
+ - name: heat_api
+ port: 8004
+ net_binds: *public_binds
+ - name: heat_cloudwatch
+ port: 8003
+ net_binds: *public_binds
+ - name: heat_cfn
+ port: 8000
+ net_binds: *public_binds
+ - name: nova_ec2
+ port: 8773
+ - name: nova_osapi
+ port: 8774
+ net_binds: *public_binds
+ - name: nova_metadata
+ port: 8775
+ net_binds: *public_binds
+ - name: ceilometer
+ port: 8777
+ net_binds: *public_binds
+ - name: swift_proxy_server
+ port: 8080
+ net_binds: *public_binds
controllerPassthrough:
Type: OS::Heat::StructuredConfig
Properties:
Ref: OvercloudControlFlavor
key_name:
Ref: KeyName
+ networks:
+ - network: ctlplane
user_data_format: SOFTWARE_CONFIG
- controller0Hosts:
+ controller0AllNodes:
+ DependsOn: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0Passthrough]
Type: OS::Heat::StructuredDeployment
Properties:
- config: {Ref: allHostsConfig}
+ config: {Ref: allNodesConfig}
server: {Ref: controller0}
- signal_transport: NO_SIGNAL
controller0Deployment:
Type: OS::Heat::StructuredDeployment
Properties:
+ signal_transport: NO_SIGNAL
config: {Ref: controllerConfig}
server: {Ref: controller0}
input_values:
- - 'http://'
- {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
- ':8000/v1/waitcondition'
- allHostsConfig:
+ allNodesConfig:
Type: OS::Heat::StructuredConfig
Properties:
config:
+ completion-signal: {get_input: deploy_signal_id}
hosts:
Fn::Join:
- "\n"
- show
- 'novalocal'
- {Ref: CloudName}
+ rabbit:
+ nodes:
+ Fn::Join:
+ - ','
+ - Merge::Map:
+ controller0:
+ {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] }
controller0SSLDeployment:
Type: OS::Heat::StructuredDeployment
Properties:
server: {Ref: controller0}
signal_transport: NO_SIGNAL
input_values:
+ controller_host:
+ Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - Fn::GetAtt:
+ - controller0
+ - networks
ssl_certificate: {Ref: SSLCertificate}
ssl_key: {Ref: SSLKey}
ssl_ca_certificate: {Ref: SSLCACertificate}