aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base.yaml18
-rw-r--r--block-storage-nfs.yaml10
-rw-r--r--block-storage.yaml56
-rw-r--r--controller.yaml12
-rw-r--r--examples/scale2_hot.yaml9
-rw-r--r--examples/scale_map_hot.yaml20
-rw-r--r--examples/scale_map_result_hot.yaml216
-rw-r--r--examples/scale_map_result_hot_blacklist.yaml367
-rw-r--r--examples/scale_result_hot.yaml30
-rw-r--r--examples/source_hot.yaml2
-rw-r--r--nagios3.yaml2
-rw-r--r--nfs-server-source.yaml24
-rw-r--r--nova-compute-config.yaml3
-rw-r--r--nova-compute-instance.yaml15
-rw-r--r--overcloud-source.yaml262
-rw-r--r--ssl-source.yaml3
-rw-r--r--swift-deploy.yaml24
-rw-r--r--swift-source.yaml4
-rw-r--r--swift-storage-source.yaml32
-rwxr-xr-xtest_merge.bash2
-rw-r--r--tripleo_heat_merge/merge.py25
-rw-r--r--undercloud-bm-nova-deploy.yaml2
-rw-r--r--undercloud-source.yaml52
-rw-r--r--undercloud-vm-ironic-deploy.yaml5
-rw-r--r--undercloud-vm-nova-deploy.yaml2
25 files changed, 756 insertions, 441 deletions
diff --git a/base.yaml b/base.yaml
index 43ce7e6f..9c2e4e26 100644
--- a/base.yaml
+++ b/base.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
description: 'Tie OpenStack components together'
parameters:
TemplateRoot:
@@ -12,7 +12,7 @@ resources:
RabbitMQ:
type: AWS::CloudFormation::Stack
TemplateURL:
- list_join:
+ Fn::Join:
- {get_param: TemplateRoot}
- rabbitmq.yaml
parameters:
@@ -22,7 +22,7 @@ resources:
MySQL:
type: AWS::CloudFormation::Stack
TemplateURL:
- list_join:
+ Fn::Join:
- {get_param: TemplateRoot}
- mysql.yaml
parameters:
@@ -32,14 +32,14 @@ resources:
Keystone:
type: AWS::CloudFormation::Stack
TemplateURL:
- list_join:
+ Fn::Join:
- {get_param: TemplateRoot}
- keystone.yaml
parameters:
AdminToken: {get_param: KeystoneAdminToken}
KeyName: default
KeystoneDSN:
- list_join:
+ Fn::Join:
- 'mysql://keystone:'
- {get_attr: [ MySQL , KeystonePassword ]}
- '@'
@@ -48,13 +48,13 @@ resources:
Glance:
type: AWS::CloudFormation::Stack
TemplateURL:
- list_join:
+ Fn::Join:
- {get_param: TemplateRoot}
- glance.yaml
parameters:
KeyName: default
HeatDSN:
- list_join:
+ Fn::Join:
- 'mysql://glance:'
- {get_attr: [ MySQL, GlancePassword ] }
- '@'
@@ -63,13 +63,13 @@ resources:
Heat:
type: AWS::CloudFormation::Stack
TemplateURL:
- list_join:
+ Fn::Join:
- {get_param: TemplateRoot}
- heat.yaml
parameters:
KeyName: default
HeatDSN:
- list_join:
+ Fn::Join:
- 'mysql://heat:'
- {get_attr: [ MySQL, HeatPassword ] }
- '@'
diff --git a/block-storage-nfs.yaml b/block-storage-nfs.yaml
index 9583576f..49473167 100644
--- a/block-storage-nfs.yaml
+++ b/block-storage-nfs.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
description: 'Common Block Storage Configuration'
parameters:
BlockStorageImage:
@@ -50,18 +50,18 @@ resources:
get_attr: [ BlockStorageKey, SecretAccessKey ]
stack_name: {get_param: 'AWS::StackName'}
keystone:
- host: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ host: {get_attr: [controller0, networks, ctlplane, 0]}
cinder:
- db: {list_join: ['', ['mysql://cinder:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] } , '/cinder']]}
+ db: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]}
volume_size_mb: '5000'
service-password:
get_param: CinderPassword
include_nfs_backend: 'true'
nfs_shares:
- - {list_join: ['', [{"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] } , ':/mnt/state/var/lib/nfs_share']]}
+ - {"Fn::Join": ['', [{get_attr: [controller0, networks, ctlplane, 0]} , ':/mnt/state/var/lib/nfs_share']]}
admin-password: {get_param: AdminPassword}
rabbit:
- host: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ host: {get_attr: [controller0, networks, ctlplane, 0]}
username: {get_param: RabbitUserName}
password: {get_param: RabbitPassword}
interfaces:
diff --git a/block-storage.yaml b/block-storage.yaml
index 98f62c44..e75e773f 100644
--- a/block-storage.yaml
+++ b/block-storage.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
description: 'Common Block Storage Configuration'
parameters:
BlockStorageImage:
@@ -8,12 +8,6 @@ parameters:
default: baremetal
description: Flavor for block storage nodes to request when deploying.
type: string
- NeutronNetworkType:
- type: string
- default: 'gre'
- NeutronEnableTunnelling:
- type: string
- default: True
resources:
BlockStorage0:
type: OS::Nova::Server
@@ -24,14 +18,14 @@ resources:
key_name: {get_param: KeyName}
user_data_format: SOFTWARE_CONFIG
BlockStorage0Deployment:
+ depends_on: [controller0AllNodesDeployment]
type: OS::Heat::StructuredDeployment
properties:
server: {get_resource: BlockStorage0}
config: {get_resource: BlockStorageConfig}
input_values:
- controller_host: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
- cinder_dsn: {list_join: ['', ['mysql://cinder:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] } , '/cinder']]}
- neutron_local_ip: {"Fn::Select": [0, "Fn::Select": [ctlplane, {get_attr: [BlockStorage0 , networks]}]]}
+ controller_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ cinder_dsn: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]}
signal_transport: NO_SIGNAL
BlockStorageConfig:
type: OS::Heat::StructuredConfig
@@ -40,7 +34,7 @@ resources:
config:
admin-password: {get_param: AdminPassword}
keystone:
- host: {get_input: controller_host}
+ host: {get_input: controller_virtual_ip}
cinder:
db: {get_input: cinder_dsn}
volume_size_mb:
@@ -49,42 +43,10 @@ resources:
get_param: CinderPassword
iscsi-helper:
get_param: CinderISCSIHelper
- admin-password: {get_param: AdminPassword}
rabbit:
- host: {get_input: controller_host}
+ host: {get_input: controller_virtual_ip}
username: {get_param: RabbitUserName}
password: {get_param: RabbitPassword}
- interfaces:
- control: {get_param: NeutronPublicInterface}
- neutron:
- ovs:
- local_ip: {get_input: neutron_local_ip}
- tenant_network_type: {get_param: NeutronNetworkType}
- enable_tunneling: {get_param: NeutronEnableTunnelling}
- service-password:
- get_param: NeutronPassword
- config:
- keystone:
- host: {get_input: controller_host}
- cinder:
- db: {get_input: cinder_dsn}
- volume_size_mb:
- get_param: CinderLVMLoopDeviceSize
- service-password:
- get_param: CinderPassword
- iscsi-helper:
- get_param: CinderISCSIHelper
- admin-password: {get_param: AdminPassword}
- rabbit:
- host: {get_input: controller_host}
- username: {get_param: RabbitUserName}
- password: {get_param: RabbitPassword}
- interfaces:
- control: {get_param: NeutronPublicInterface}
- neutron:
- ovs:
- local_ip: { get_input: neutron_local_ip }
- tenant_network_type: {get_param: NeutronNetworkType}
- enable_tunneling: {get_param: NeutronEnableTunnelling}
- service-password:
- get_param: NeutronPassword
+ glance:
+ host: {get_input: controller_virtual_ip}
+ port: {get_param: GlancePort}
diff --git a/controller.yaml b/controller.yaml
index 1b0cb541..8aac819f 100644
--- a/controller.yaml
+++ b/controller.yaml
@@ -1,6 +1,6 @@
description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
server,Dedicated RabbitMQ Server
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
parameters:
AdminToken:
type: string
@@ -130,7 +130,7 @@ resources:
password: {get_param: NeutronDBPassword}
glance:
db:
- list_join:
+ Fn::Join:
- ''
- - 'mysql://glance:'
- {get_param: GlanceDBPassword}
@@ -141,7 +141,7 @@ resources:
get_param: GlanceLogFile
heat:
db:
- list_join:
+ Fn::Join:
- ''
- - 'mysql://heat:'
- {get_param: HeatDBPassword}
@@ -168,14 +168,14 @@ resources:
host:
'127.0.0.1'
db:
- list_join:
+ Fn::Join:
- ''
- - 'mysql://keystone:'
- {get_param: KeystoneDBPassword}
- '@127.0.0.1/keystone'
nova:
db:
- list_join:
+ Fn::Join:
- ''
- - 'mysql://nova:'
- {get_param: NovaDBPassword}
@@ -184,7 +184,7 @@ resources:
host:
'127.0.0.1'
ovs_db:
- list_join:
+ Fn::Join:
- ''
- - 'mysql://neutron:'
- {get_param: NeutronDBPassword}
diff --git a/examples/scale2_hot.yaml b/examples/scale2_hot.yaml
index 0f3989cb..eb507616 100644
--- a/examples/scale2_hot.yaml
+++ b/examples/scale2_hot.yaml
@@ -55,14 +55,7 @@ resources:
path: NovaCompute0Config.Metadata
neutron:
ovs:
- local_ip:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
+ local_ip: {get_attr: [NovaCompute0, networks, ctlplane, 0]}
rabbit:
username: {get_param: RabbitUserName}
password: {get_param: RabbitPassword}
diff --git a/examples/scale_map_hot.yaml b/examples/scale_map_hot.yaml
index 24c14dcc..4a6d6843 100644
--- a/examples/scale_map_hot.yaml
+++ b/examples/scale_map_hot.yaml
@@ -30,25 +30,11 @@ resources:
NovaCompute0:
list_join:
- ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
- - Fn::Select:
- - name
- - get_attr:
- - NovaCompute0
- - show
+ - - {get_attr: [NovaCompute0, networks, ctlplane, 0]}
+ - {get_attr: [NovaCompute0, show, name]}
- list_join:
- '.'
- - - Fn::Select:
- - name
- - get_attr:
- - NovaCompute0
- - show
+ - - {get_attr: [NovaCompute0, show, name]}
- 'local'
NovaCompute0:
type: FileInclude
diff --git a/examples/scale_map_result_hot.yaml b/examples/scale_map_result_hot.yaml
index 69f0f241..4e657238 100644
--- a/examples/scale_map_result_hot.yaml
+++ b/examples/scale_map_result_hot.yaml
@@ -46,69 +46,57 @@ resources:
'
- - list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute0
+ - show
- name
- - get_attr:
- - NovaCompute0
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - show
- name
- - get_attr:
- - NovaCompute0
- - show
- local
- list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute1
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute1
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute1
+ - show
- name
- - get_attr:
- - NovaCompute1
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute1
+ - show
- name
- - get_attr:
- - NovaCompute1
- - show
- local
- list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute2
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute2
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute2
+ - show
- name
- - get_attr:
- - NovaCompute2
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute2
+ - show
- name
- - get_attr:
- - NovaCompute2
- - show
- local
os-collect-config:
cfn:
@@ -165,69 +153,57 @@ resources:
'
- - list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute0
+ - show
- name
- - get_attr:
- - NovaCompute0
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - show
- name
- - get_attr:
- - NovaCompute0
- - show
- local
- list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute1
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute1
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute1
+ - show
- name
- - get_attr:
- - NovaCompute1
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute1
+ - show
- name
- - get_attr:
- - NovaCompute1
- - show
- local
- list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute2
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute2
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute2
+ - show
- name
- - get_attr:
- - NovaCompute2
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute2
+ - show
- name
- - get_attr:
- - NovaCompute2
- - show
- local
os-collect-config:
cfn:
@@ -284,69 +260,57 @@ resources:
'
- - list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute0
+ - show
- name
- - get_attr:
- - NovaCompute0
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - show
- name
- - get_attr:
- - NovaCompute0
- - show
- local
- list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute1
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute1
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute1
+ - show
- name
- - get_attr:
- - NovaCompute1
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute1
+ - show
- name
- - get_attr:
- - NovaCompute1
- - show
- local
- list_join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute2
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute2
- - networks
- - Fn::Select:
+ - get_attr:
+ - NovaCompute2
+ - show
- name
- - get_attr:
- - NovaCompute2
- - show
- list_join:
- .
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute2
+ - show
- name
- - get_attr:
- - NovaCompute2
- - show
- local
os-collect-config:
cfn:
diff --git a/examples/scale_map_result_hot_blacklist.yaml b/examples/scale_map_result_hot_blacklist.yaml
new file mode 100644
index 00000000..decb0d5e
--- /dev/null
+++ b/examples/scale_map_result_hot_blacklist.yaml
@@ -0,0 +1,367 @@
+description: examples/scale_map_hot.yaml
+heat_template_version: '2013-05-23'
+resources:
+ ComputeUser:
+ properties:
+ Policies:
+ - get_param: ComputeAccessPolicy
+ type: AWS::IAM::User
+ GlobalAccessPolicy:
+ type: OS::Heat::AccessPolicy
+ NovaCompute0:
+ metadata:
+ os-collect-config:
+ cfn:
+ access_key_id:
+ get_resource: NovaCompute0Key
+ path: NovaCompute0Config.Metadata
+ secret_access_key:
+ get_attr:
+ - NovaCompute0Key
+ - SecretAccessKey
+ stack_name:
+ get_param: AWS::StackName
+ properties:
+ image:
+ get_param: ComputeImage
+ type: OS::Nova::Server
+ NovaCompute0CompletionCondition:
+ depends_on: notcompute
+ properties:
+ Count: '1'
+ Handle:
+ get_resource: NovaCompute0CompletionHandle
+ Timeout: '1800'
+ type: AWS::CloudFormation::WaitCondition
+ NovaCompute0CompletionHandle:
+ type: AWS::CloudFormation::WaitConditionHandle
+ NovaCompute0Config:
+ metadata:
+ completion-handle:
+ get_resource: NovaCompute0CompletionHandle
+ hosts:
+ list_join:
+ - '
+
+ '
+ - - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute0
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute0
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute0
+ - show
+ - local
+ - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute3
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute3
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute3
+ - show
+ - local
+ - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute4
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute4
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute4
+ - show
+ - local
+ os-collect-config:
+ cfn:
+ access_key_id:
+ get_resource: NovaCompute0Key
+ path: NovaCompute0Config.Metadata
+ secret_access_key:
+ get_attr:
+ - NovaCompute0Key
+ - SecretAccessKey
+ stack_name:
+ get_param: AWS::StackName
+ type: AWS::AutoScaling::LaunchConfiguration
+ NovaCompute0Key:
+ properties:
+ UserName:
+ get_param: ComputeUser
+ type: AWS::IAM::AccessKey
+ NovaCompute3:
+ metadata:
+ os-collect-config:
+ cfn:
+ access_key_id:
+ get_resource: NovaCompute3Key
+ path: NovaCompute3Config.Metadata
+ secret_access_key:
+ get_attr:
+ - NovaCompute3Key
+ - SecretAccessKey
+ stack_name:
+ get_param: AWS::StackName
+ properties:
+ image:
+ get_param: ComputeImage
+ type: OS::Nova::Server
+ NovaCompute3CompletionCondition:
+ depends_on: notcompute
+ properties:
+ Count: '1'
+ Handle:
+ get_resource: NovaCompute3CompletionHandle
+ Timeout: '1800'
+ type: AWS::CloudFormation::WaitCondition
+ NovaCompute3CompletionHandle:
+ type: AWS::CloudFormation::WaitConditionHandle
+ NovaCompute3Config:
+ metadata:
+ completion-handle:
+ get_resource: NovaCompute3CompletionHandle
+ hosts:
+ list_join:
+ - '
+
+ '
+ - - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute0
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute0
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute0
+ - show
+ - local
+ - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute3
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute3
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute3
+ - show
+ - local
+ - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute4
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute4
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute4
+ - show
+ - local
+ os-collect-config:
+ cfn:
+ access_key_id:
+ get_resource: NovaCompute3Key
+ path: NovaCompute3Config.Metadata
+ secret_access_key:
+ get_attr:
+ - NovaCompute3Key
+ - SecretAccessKey
+ stack_name:
+ get_param: AWS::StackName
+ type: AWS::AutoScaling::LaunchConfiguration
+ NovaCompute3Key:
+ properties:
+ UserName:
+ get_param: ComputeUser
+ type: AWS::IAM::AccessKey
+ NovaCompute4:
+ metadata:
+ os-collect-config:
+ cfn:
+ access_key_id:
+ get_resource: NovaCompute4Key
+ path: NovaCompute4Config.Metadata
+ secret_access_key:
+ get_attr:
+ - NovaCompute4Key
+ - SecretAccessKey
+ stack_name:
+ get_param: AWS::StackName
+ properties:
+ image:
+ get_param: ComputeImage
+ type: OS::Nova::Server
+ NovaCompute4CompletionCondition:
+ depends_on: notcompute
+ properties:
+ Count: '1'
+ Handle:
+ get_resource: NovaCompute4CompletionHandle
+ Timeout: '1800'
+ type: AWS::CloudFormation::WaitCondition
+ NovaCompute4CompletionHandle:
+ type: AWS::CloudFormation::WaitConditionHandle
+ NovaCompute4Config:
+ metadata:
+ completion-handle:
+ get_resource: NovaCompute4CompletionHandle
+ hosts:
+ list_join:
+ - '
+
+ '
+ - - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute0
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute0
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute0
+ - show
+ - local
+ - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute3
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute3
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute3
+ - show
+ - local
+ - list_join:
+ - ' '
+ - - Fn::Select:
+ - 0
+ - Fn::Select:
+ - ctlplane
+ - get_attr:
+ - NovaCompute4
+ - networks
+ - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute4
+ - show
+ - list_join:
+ - .
+ - - Fn::Select:
+ - name
+ - get_attr:
+ - NovaCompute4
+ - show
+ - local
+ os-collect-config:
+ cfn:
+ access_key_id:
+ get_resource: NovaCompute4Key
+ path: NovaCompute4Config.Metadata
+ secret_access_key:
+ get_attr:
+ - NovaCompute4Key
+ - SecretAccessKey
+ stack_name:
+ get_param: AWS::StackName
+ type: AWS::AutoScaling::LaunchConfiguration
+ NovaCompute4Key:
+ properties:
+ UserName:
+ get_param: ComputeUser
+ type: AWS::IAM::AccessKey
diff --git a/examples/scale_result_hot.yaml b/examples/scale_result_hot.yaml
index c9f865a5..a1b27095 100644
--- a/examples/scale_result_hot.yaml
+++ b/examples/scale_result_hot.yaml
@@ -42,13 +42,11 @@ resources:
neutron:
ovs:
local_ip:
- Fn::Select:
+ get_attr:
+ - NovaCompute0
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
os-collect-config:
cfn:
access_key_id:
@@ -103,13 +101,11 @@ resources:
neutron:
ovs:
local_ip:
- Fn::Select:
+ get_attr:
+ - NovaCompute1
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute1
- - networks
os-collect-config:
cfn:
access_key_id:
@@ -164,13 +160,11 @@ resources:
neutron:
ovs:
local_ip:
- Fn::Select:
+ get_attr:
+ - NovaCompute2
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute2
- - networks
os-collect-config:
cfn:
access_key_id:
diff --git a/examples/source_hot.yaml b/examples/source_hot.yaml
index 7b47f2b5..15314886 100644
--- a/examples/source_hot.yaml
+++ b/examples/source_hot.yaml
@@ -13,4 +13,4 @@ resources:
Path: examples/lib_hot.yaml
SubKey: resources.GenericB
parameters:
- ImportantValue: {list_join: [ '', ['one', 'two', 'three']]}
+ ImportantValue: {"Fn::Join": [ '', ['one', 'two', 'three']]}
diff --git a/nagios3.yaml b/nagios3.yaml
index 06cbb6a2..1e0a4615 100644
--- a/nagios3.yaml
+++ b/nagios3.yaml
@@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
#
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
description: Deploy Nagios
parameters:
adm_web_passwd:
diff --git a/nfs-server-source.yaml b/nfs-server-source.yaml
index bad7cced..8e32e963 100644
--- a/nfs-server-source.yaml
+++ b/nfs-server-source.yaml
@@ -7,22 +7,18 @@ resources:
shares:
Merge::Map:
NovaCompute0:
- list_join:
+ Fn::Join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - NovaCompute0
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
BlockStorage0:
- list_join:
+ Fn::Join:
- ' '
- - - Fn::Select:
+ - - get_attr:
+ - BlockStorage0
+ - networks
+ - ctlplane
- 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - BlockStorage0
- - networks
diff --git a/nova-compute-config.yaml b/nova-compute-config.yaml
index 081ca81a..cb428ea6 100644
--- a/nova-compute-config.yaml
+++ b/nova-compute-config.yaml
@@ -40,7 +40,8 @@ resources:
service-password: {get_input: neutron_password}
admin-password: {get_input: admin_password}
rabbit:
- username: {get_input: rabbit_user_name}
+ host: {get_input: rabbit_host}
+ username: {get_input: rabbit_username}
password: {get_input: rabbit_password}
live-update:
host: {get_input: live_update_host}
diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml
index d8b3a712..86115293 100644
--- a/nova-compute-instance.yaml
+++ b/nova-compute-instance.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
description: 'Nova Compute'
parameters:
AdminPassword:
@@ -77,6 +77,8 @@ parameters:
default: ''
description: A port to add to the NeutronPhysicalBridge.
type: string
+ RabbitHost:
+ type: string
RabbitUserName:
type: string
RabbitPassword:
@@ -181,8 +183,8 @@ resources:
networks:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
- NovaCompute0Deploy:
- depends_on: [controller0AllNodes]
+ NovaCompute0Deployment:
+ depends_on: [controller0AllNodesDeployment]
type: OS::Heat::StructuredDeployment
properties:
signal_transport: NO_SIGNAL
@@ -207,7 +209,7 @@ resources:
neutron_flat_networks: {get_param: NeutronFlatNetworks}
neutron_host: {get_param: NeutronHost}
neutron_dsn: {get_param: NeutronDSN}
- neutron_local_ip: {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { get_attr: [ NovaCompute0, networks ]}]]}
+ neutron_local_ip: {get_attr: [NovaCompute0, networks, ctlplane, 0]}
neutron_tenant_network_type: {get_param: NeutronNetworkType}
neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
@@ -216,6 +218,7 @@ resources:
neutron_public_interface: {get_param: NeutronPublicInterface}
neutron_password: {get_param: NeutronPassword}
admin_password: {get_param: AdminPassword}
+ rabbit_host: {get_param: RabbitHost}
rabbit_username: {get_param: RabbitUserName}
rabbit_password: {get_param: RabbitPassword}
live_update_host: {get_param: LiveUpdateHost}
@@ -225,14 +228,14 @@ resources:
nova_image: {get_param: NovaImage}
live_update_image_id: {get_param: LiveUpdateComputeImage}
ntp_server: {get_param: NtpServer}
- NovaCompute0AllNodesDeploy:
+ NovaCompute0AllNodesDeployment:
depends_on: [NovaCompute0Passthrough]
type: OS::Heat::StructuredDeployment
properties:
config: {get_param: AllNodesConfig}
server: {get_resource: NovaCompute0}
NovaCompute0Passthrough:
- depends_on: [NovaCompute0Deploy]
+ depends_on: [NovaCompute0Deployment]
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: NovaComputePassthrough}
diff --git a/overcloud-source.yaml b/overcloud-source.yaml
index acca8ea1..93a68344 100644
--- a/overcloud-source.yaml
+++ b/overcloud-source.yaml
@@ -1,6 +1,6 @@
description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
server,Dedicated RabbitMQ Server,Group of Nova Computes
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
parameters:
AdminPassword:
default: unset
@@ -308,18 +308,34 @@ resources:
length: 20
salt:
get_param: RabbitCookieSalt
- NovaCompute0Deploy:
+ NovaCompute0Deployment:
type: FileInclude
Path: nova-compute-instance.yaml
- SubKey: resources.NovaCompute0Deploy
+ SubKey: resources.NovaCompute0Deployment
parameters:
- NovaApiHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
- KeystoneHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
- NeutronHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
- GlanceHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
- NovaDSN: {list_join: ['', ['mysql://nova:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}, '/nova']]}
- CeilometerDSN: {list_join: ['', ['mysql://ceilometer:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}, '/ceilometer']]}
- NeutronDSN: {list_join: ['', ['mysql://neutron:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}, '/ovs_neutron']]}
+ NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ NovaDSN:
+ Fn::Join:
+ - ''
+ - - mysql://nova:unset@
+ - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ - /nova
+ CeilometerDSN:
+ Fn::Join:
+ - ''
+ - - mysql://ceilometer:unset@
+ - *compute_database_host
+ - /ceilometer
+ NeutronDSN:
+ Fn::Join:
+ - ''
+ - - mysql://neutron:unset@
+ - *compute_database_host
+ - /ovs_neutron
NeutronNetworkType: "gre"
NeutronEnableTunnelling: "True"
NeutronFlatNetworks:
@@ -331,10 +347,10 @@ resources:
get_param: HypervisorNeutronPublicInterface
NeutronBridgeMappings:
get_param: NeutronBridgeMappings
- NovaCompute0AllNodes:
+ NovaCompute0AllNodesDeployment:
type: FileInclude
Path: nova-compute-instance.yaml
- SubKey: resources.NovaCompute0AllNodesDeploy
+ SubKey: resources.NovaCompute0AllNodesDeployment
parameters:
AllNodesConfig: {get_resource: allNodesConfig}
NovaCompute0Passthrough:
@@ -373,8 +389,16 @@ resources:
- controller0
- show
nodeid: {get_input: bootstack_nodeid}
+ database:
+ host: &database_host
+ {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
cinder:
- db: mysql://cinder:unset@localhost/cinder
+ db:
+ Fn::Join:
+ - ''
+ - - mysql://cinder:unset@
+ - *database_host
+ - /cinder
volume_size_mb:
get_param: CinderLVMLoopDeviceSize
service-password:
@@ -389,7 +413,7 @@ resources:
nodes:
Merge::Map:
controller0:
- ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ ip: {get_attr: [controller0, networks, ctlplane, 0]}
pacemaker:
stonith_enabled : false
recheck_interval : 5
@@ -399,7 +423,12 @@ resources:
registry:
host: {get_input: controller_virtual_ip}
backend: swift
- db: mysql://glance:unset@localhost/glance
+ db:
+ Fn::Join:
+ - ''
+ - - mysql://glance:unset@
+ - *database_host
+ - /glance
host:
get_input: controller_virtual_ip
port:
@@ -421,7 +450,12 @@ resources:
admin_tenant_name: service
admin_user: heat
auth_encryption_key: unset___________
- db: mysql://heat:unset@localhost/heat
+ db:
+ Fn::Join:
+ - ''
+ - - mysql://heat:unset@
+ - *database_host
+ - /heat
stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
watch_server_url: {get_input: heat.watch_server_url}
metadata_server_url: {get_input: heat.metadata_server_url}
@@ -432,9 +466,14 @@ resources:
nodes:
Merge::Map:
controller0:
- {"Fn::Select": [ name, {get_attr: [controller0, show]} ] }
+ {get_attr: [controller0, show, name]}
keystone:
- db: mysql://keystone:unset@localhost/keystone
+ db:
+ Fn::Join:
+ - ''
+ - - mysql://keystone:unset@
+ - *database_host
+ - /keystone
host:
get_input: controller_virtual_ip
ca_certificate: {get_param: KeystoneCACertificate}
@@ -442,12 +481,13 @@ resources:
signing_certificate: {get_param: KeystoneSigningCertificate}
mysql:
innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
+ local_bind: true
nodes:
Merge::Map:
controller0:
- ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ ip: {get_attr: [controller0, networks, ctlplane, 0]}
cluster_name:
- list_join:
+ Fn::Join:
- '-'
- - 'tripleo'
- {get_resource: MysqlClusterUniquePart}
@@ -468,13 +508,23 @@ resources:
get_param: NeutronPublicInterfaceDefaultRoute
physical_bridge: br-ex
tenant_network_type: gre
- ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
+ ovs_db:
+ Fn::Join:
+ - ''
+ - - mysql://neutron:unset@
+ - *database_host
+ - /ovs_neutron?charset=utf8
service-password:
get_param: NeutronPassword
dnsmasq-options:
get_param: NeutronDnsmasqOptions
ceilometer:
- db: mysql://ceilometer:unset@localhost/ceilometer
+ db:
+ Fn::Join:
+ - ''
+ - - mysql://ceilometer:unset@
+ - *database_host
+ - /ceilometer
metering_secret: {get_param: CeilometerMeteringSecret}
service-password:
get_param: CeilometerPassword
@@ -486,7 +536,12 @@ resources:
get_param: SnmpdReadonlyUserPassword
nova:
compute_driver: libvirt.LibvirtDriver
- db: mysql://nova:unset@localhost/nova
+ db:
+ Fn::Join:
+ - ''
+ - - mysql://nova:unset@
+ - *database_host
+ - /nova
default_floating_pool:
ext-net
host: {get_input: controller_virtual_ip}
@@ -494,6 +549,7 @@ resources:
service-password:
get_param: NovaPassword
rabbit:
+ host: {get_input: controller_virtual_ip}
username:
get_param: RabbitUserName
password:
@@ -513,7 +569,7 @@ resources:
get_param: ControlVirtualInterface
priority: 101
virtual_ips:
- - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
interface:
get_param: ControlVirtualInterface
- vrrp_instance_name: VI_PUBLIC
@@ -522,7 +578,7 @@ resources:
get_param: PublicVirtualInterface
priority: 101
virtual_ips:
- - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [PublicVirtualIP, fixed_ips]]]}
+ - ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
interface:
get_param: PublicVirtualInterface
vrrp_sync_groups:
@@ -536,27 +592,27 @@ resources:
priority: 101
virtual_ips:
-
- ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
interface:
get_param: ControlVirtualInterface
-
- ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [PublicVirtualIP, fixed_ips]]]}
+ ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
interface:
get_param: PublicVirtualInterface
haproxy:
nodes:
Merge::Map:
controller0:
- ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
- name: {"Fn::Select": [ name, {get_attr: [controller0, show]} ] }
+ ip: {get_attr: [controller0, networks, ctlplane, 0]}
+ name: {get_attr: [controller0, show, name]}
net_binds:
- - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
services:
- name: keystone_admin
port: 35357
net_binds: &public_binds
- - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
- - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [PublicVirtualIP, fixed_ips]]]}
+ - ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+ - ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
- name: keystone_public
port: 5000
net_binds: *public_binds
@@ -584,6 +640,10 @@ resources:
- name: heat_cfn
port: 8000
net_binds: *public_binds
+ - name: mysql
+ port: 3306
+ extra_server_params:
+ - backup
- name: nova_ec2
port: 8773
- name: nova_osapi
@@ -598,6 +658,11 @@ resources:
- name: swift_proxy_server
port: 8080
net_binds: *public_binds
+ - name: rabbitmq
+ port: 5672
+ options:
+ - timeout client 0
+ - timeout server 0
controllerPassthrough:
type: OS::Heat::StructuredConfig
properties:
@@ -617,7 +682,7 @@ resources:
networks:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
- controller0AllNodes:
+ controller0AllNodesDeployment:
depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0Passthrough]
type: OS::Heat::StructuredDeployment
properties:
@@ -630,39 +695,27 @@ resources:
config: {get_resource: controllerConfig}
server: {get_resource: controller0}
input_values:
- bootstack_nodeid:
- Fn::Select:
- - name
- - get_attr:
- - controller0
- - show
- controller_host:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - controller0
- - networks
+ bootstack_nodeid: {get_attr: [controller0, show, name]}
+ controller_host: {get_attr: [controller0, networks, ctlplane, 0]}
controller_virtual_ip:
- {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
heat.watch_server_url:
- list_join:
+ Fn::Join:
- ''
- - 'http://'
- - {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- ':8003'
heat.metadata_server_url:
- list_join:
+ Fn::Join:
- ''
- - 'http://'
- - {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- ':8000'
heat.waitcondition_server_url:
- list_join:
+ Fn::Join:
- ''
- - 'http://'
- - {'Fn::Select': [ip_address, 'Fn::Select': [0, get_attr: [ControlVirtualIP, fixed_ips]]]}
+ - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- ':8000/v1/waitcondition'
allNodesConfig:
type: OS::Heat::StructuredConfig
@@ -670,68 +723,64 @@ resources:
config:
completion-signal: {get_input: deploy_signal_id}
hosts:
- list_join:
+ Fn::Join:
- "\n"
- - - list_join:
+ - - Fn::Join:
- "\n"
- Merge::Map:
NovaCompute0:
- list_join:
+ Fn::Join:
- ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - NovaCompute0
- - networks
- - Fn::Select:
- - name
- - get_attr:
- - NovaCompute0
- - show
- - list_join:
+ - - {get_attr: [NovaCompute0, networks, ctlplane, 0]}
+ - {get_attr: [NovaCompute0, show, name]}
+ - Fn::Join:
- '.'
- - - Fn::Select:
- - name
- - get_attr:
- - NovaCompute0
- - show
+ - - {get_attr: [NovaCompute0, show, name]}
- 'novalocal'
- - list_join:
+ - Fn::Join:
+ - "\n"
+ - Merge::Map:
+ BlockStorage0:
+ Fn::Join:
+ - ' '
+ - - {get_attr: [BlockStorage0, networks, ctlplane, 0]}
+ - {get_attr: [BlockStorage0, show, name]}
+ - Fn::Join:
+ - '.'
+ - - {get_attr: [BlockStorage0, show, name]}
+ - 'novalocal'
+ - Fn::Join:
+ - "\n"
+ - Merge::Map:
+ SwiftStorage0:
+ Fn::Join:
+ - ' '
+ - - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
+ - {get_attr: [SwiftStorage0, show, name]}
+ - Fn::Join:
+ - '.'
+ - - {get_attr: [SwiftStorage0, show, name]}
+ - 'novalocal'
+ - Fn::Join:
- "\n"
- Merge::Map:
controller0:
- list_join:
+ Fn::Join:
- ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - controller0
- - networks
- - Fn::Select:
- - name
- - get_attr:
- - controller0
- - show
- - list_join:
+ - - {get_attr: [controller0, networks, ctlplane, 0]}
+ - {get_attr: [controller0, show, name]}
+ - Fn::Join:
- '.'
- - - Fn::Select:
- - name
- - get_attr:
- - controller0
- - show
+ - - {get_attr: [controller0, show, name]}
- 'novalocal'
- {get_param: CloudName}
rabbit:
nodes:
- list_join:
+ Fn::Join:
- ','
- Merge::Map:
controller0:
- {"Fn::Select": [ name, {get_attr: [controller0, show]} ] }
+ {get_attr: [controller0, show, name]}
controller0SSLDeployment:
type: OS::Heat::StructuredDeployment
properties:
@@ -739,14 +788,7 @@ resources:
server: {get_resource: controller0}
signal_transport: NO_SIGNAL
input_values:
- controller_host:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - controller0
- - networks
+ controller_host: {get_attr: [controller0, networks, ctlplane, 0]}
ssl_certificate: {get_param: SSLCertificate}
ssl_key: {get_param: SSLKey}
ssl_ca_certificate: {get_param: SSLCACertificate}
@@ -762,14 +804,8 @@ outputs:
KeystoneURL:
description: URL for the Overcloud Keystone service
value:
- list_join:
+ Fn::Join:
- ''
- - http://
- - Fn::Select:
- - ip_address
- - Fn::Select:
- - 0
- - get_attr:
- - ControlVirtualIP
- - fixed_ips
+ - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
- :5000/v2.0/
diff --git a/ssl-source.yaml b/ssl-source.yaml
index 09ea52a2..ac1ef42d 100644
--- a/ssl-source.yaml
+++ b/ssl-source.yaml
@@ -20,6 +20,9 @@ resources:
properties:
group: os-apply-config
config:
+ ssl:
+ ca_certificate:
+ get_input: ssl_ca_certificate
stunnel:
cert:
get_input: ssl_certificate
diff --git a/swift-deploy.yaml b/swift-deploy.yaml
index 2da242e1..239a4d48 100644
--- a/swift-deploy.yaml
+++ b/swift-deploy.yaml
@@ -21,35 +21,29 @@ resources:
swift_hash_suffix: {get_param: SwiftHashSuffix}
swift_password: {get_param: SwiftPassword}
swift_devices:
- list_join:
+ Fn::Join:
- ', '
- Merge::Map:
controller0:
- list_join:
+ Fn::Join:
- ''
- - 'r1z1-'
- - {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ - {get_attr: [controller0, networks, ctlplane, 0]}
- ':%PORT%/d1'
SwiftStorage0:
- list_join:
+ Fn::Join:
- ''
- - 'r1z1-'
- - Fn::Select:
- - 0
- - Fn::Select:
- - 'ctlplane'
- - get_attr:
- - SwiftStorage0
- - networks
+ - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
- ':%PORT%/d1'
swift_proxy_memcache:
- list_join:
+ Fn::Join:
- ','
- Merge::Map:
controller0:
- list_join:
+ Fn::Join:
- ', '
- - - list_join:
+ - - Fn::Join:
- ''
- - - {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ - - {get_attr: [controller0, networks, ctlplane, 0]}
- ':11211'
diff --git a/swift-source.yaml b/swift-source.yaml
index a0336872..9c7b04f5 100644
--- a/swift-source.yaml
+++ b/swift-source.yaml
@@ -12,7 +12,7 @@ resources:
replicas: 1
service-password: { get_input: swift_password }
neutron:
- enable_tunnelling: {get_param: NeutronEnableTunnelling}
- tenant_network_type: {get_param: NeutronNetworkType}
ovs:
local_ip: { get_input: neutron_local_ip }
+ enable_tunnelling: { get_input: neutron_enable_tunnelling}
+ tenant_network_type: { get_input: neutron_tenant_network_type}
diff --git a/swift-storage-source.yaml b/swift-storage-source.yaml
index 92bcf273..3dbdda95 100644
--- a/swift-storage-source.yaml
+++ b/swift-storage-source.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
description: 'Common Swift Storage Configuration'
parameters:
SwiftStorageImage:
@@ -35,7 +35,7 @@ resources:
config: {get_resource: SwiftKeystoneConfig}
signal_transport: NO_SIGNAL
input_values:
- keystone_host: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ keystone_host: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
SwiftStorage0Deploy:
type: OS::Heat::StructuredDeployment
properties:
@@ -43,39 +43,35 @@ resources:
config: {get_resource: SwiftConfig}
signal_transport: NO_SIGNAL
input_values:
- neutron_local_ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [SwiftStorage0, networks]} ]} ] }
+ neutron_local_ip: {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
+ neutron_tenant_network_type: {get_param: NeutronNetworkType}
+ neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
swift_hash_suffix: {get_param: SwiftHashSuffix}
swift_password: {get_param: SwiftPassword}
swift_devices:
- list_join:
+ Fn::Join:
- ', '
- Merge::Map:
controller0:
- list_join:
+ Fn::Join:
- ''
- - 'r1z1-'
- - {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ - {get_attr: [controller0, networks, ctlplane, 0]}
- ':%PORT%/d1'
SwiftStorage0:
- list_join:
+ Fn::Join:
- ''
- - 'r1z1-'
- - Fn::Select:
- - 0
- - Fn::Select:
- - 'ctlplane'
- - get_attr:
- - SwiftStorage0
- - networks
+ - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
- ':%PORT%/d1'
swift_proxy_memcache:
- list_join:
+ Fn::Join:
- ','
- Merge::Map:
controller0:
- list_join:
+ Fn::Join:
- ', '
- - - list_join:
+ - - Fn::Join:
- ''
- - - {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {get_attr: [controller0, networks]} ]} ] }
+ - - {get_attr: [controller0, networks, ctlplane, 0]}
- ':11211'
diff --git a/test_merge.bash b/test_merge.bash
index d076f50a..de29d075 100755
--- a/test_merge.bash
+++ b/test_merge.bash
@@ -36,6 +36,8 @@ run_test "python $merge_py --hot examples/source_include_subkey_hot.yaml" exampl
run_test "python $merge_py --hot examples/launchconfig1_hot.yaml examples/launchconfig2_hot.yaml" examples/launchconfig_result_hot.yaml
run_test "python $merge_py --hot --scale NovaCompute=3 examples/scale1_hot.yaml" examples/scale_result_hot.yaml
run_test "python $merge_py --hot --scale NovaCompute=3 examples/scale_map_hot.yaml" examples/scale_map_result_hot.yaml
+run_test "python $merge_py --hot --scale NovaCompute=5,1,2 examples/scale_map_hot.yaml" examples/scale_map_result_hot_blacklist.yaml
+run_test "python $merge_py --hot --scale NovaCompute=3, examples/scale_map_hot.yaml" examples/scale_map_result_hot.yaml
echo
trap - EXIT
exit $fail
diff --git a/tripleo_heat_merge/merge.py b/tripleo_heat_merge/merge.py
index 3549769d..49aee6f2 100644
--- a/tripleo_heat_merge/merge.py
+++ b/tripleo_heat_merge/merge.py
@@ -26,7 +26,7 @@ class Cfn(object):
class Hot(object):
base_template = {
- 'heat_template_version': '2014-10-16',
+ 'heat_template_version': '2013-05-23',
'description': []
}
get_resource = 'get_resource'
@@ -80,6 +80,8 @@ def apply_scaling(template, scaling, in_copies=None):
in_copies is reset to None when a dict {'Merge::Map': someobject} is
encountered.
+
+ :param scaling: A dict of prefix -> (count, blacklists).
"""
in_copies = dict(in_copies or {})
# Shouldn't be needed but to avoid unexpected side effects/bugs we short
@@ -125,7 +127,7 @@ def scale_value(value, scaling, in_copies):
"""Scale out a value.
:param value: The value to scale (not a container).
- :param scaling: The scaling map to use.
+ :param scaling: The scaling map (prefix-> (copies, blacklist) to use.
:param in_copies: What containers we're currently copying.
:return: An iterator of the new values for the value as tuples:
(prefix, copy_num, value). E.g. Compute0, 1, Compute1Foo
@@ -134,7 +136,7 @@ def scale_value(value, scaling, in_copies):
- and that prefix is not in in_copies
"""
if isinstance(value, (str, unicode)):
- for prefix, copies in scaling.items():
+ for prefix, (copies, blacklist) in scaling.items():
if not value.startswith(prefix):
continue
suffix = value[len(prefix):]
@@ -144,7 +146,8 @@ def scale_value(value, scaling, in_copies):
return
else:
for n in range(copies):
- yield prefix, n, prefix[:-1] + str(n) + suffix
+ if n not in blacklist:
+ yield prefix, n, prefix[:-1] + str(n) + suffix
return
yield None, None, value
else:
@@ -156,9 +159,11 @@ def parse_scaling(scaling_args):
scaling_args = scaling_args or []
result = {}
for item in scaling_args:
- key, value = item.split('=')
- value = int(value)
- result[key + '0'] = value
+ key, values = item.split('=')
+ values = values.split(',')
+ value = int(values[0])
+ blacklist = frozenset(int(v) for v in values[1:] if v)
+ result[key + '0'] = value, blacklist
return result
@@ -251,10 +256,12 @@ def main(argv=None):
help='File to write output to. - for stdout',
default='-')
parser.add_argument('--scale', action="append",
- help="Names to scale out. Pass Prefix=1 to cause a key Prefix0Foo to "
+ help="Names to scale out. Pass Prefix=2 to cause a key Prefix0Foo to "
"be copied to Prefix1Foo in the output, and value Prefix0Bar to be"
"renamed to Prefix1Bar inside that copy, or copied to Prefix1Bar "
- "outside of any copy.")
+ "outside of any copy. Pass Prefix=3,1 to cause Prefix1* to be elided"
+ "when scaling Prefix out. Prefix=4,1,2 will likewise elide Prefix1 and"
+ "Prefix2.")
parser.add_argument(
'--change-image-params', action='store_true', default=False,
help="Change parameters in templates to match resource names. This was "
diff --git a/undercloud-bm-nova-deploy.yaml b/undercloud-bm-nova-deploy.yaml
index 3df85970..d328449c 100644
--- a/undercloud-bm-nova-deploy.yaml
+++ b/undercloud-bm-nova-deploy.yaml
@@ -12,7 +12,7 @@ parameters:
description: Timeout for PXE deployment of baremetal nodes
type: number
resources:
- 01_undercloudNovaDeployment:
+ undercloudNovaDeployment:
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: undercloudNovaConfig}
diff --git a/undercloud-source.yaml b/undercloud-source.yaml
index e39eb5ee..e09b3db5 100644
--- a/undercloud-source.yaml
+++ b/undercloud-source.yaml
@@ -1,5 +1,5 @@
description: All-in-one baremetal OpenStack and all dependencies.
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
parameters:
AdminPassword:
default: unset
@@ -216,6 +216,17 @@ resources:
get_param: NeutronPublicInterfaceIP
controller-address:
get_input: controller_host
+ corosync:
+ bindnetaddr: {get_input: controller_host}
+ mcastport: 5577
+ nodes:
+ Merge::Map:
+ controller0:
+ ip: {get_attr: [undercloud, networks, ctlplane, 0]}
+ pacemaker:
+ stonith_enabled : false
+ recheck_interval : 5
+ quorum_policy : ignore
ceilometer:
db: mysql://ceilometer:unset@localhost/ceilometer
metering_secret: {get_param: CeilometerMeteringSecret}
@@ -308,45 +319,44 @@ resources:
networks:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
- 99_undercloudDeployment:
+ undercloudDeployment:
+ depends_on: [undercloudPassthroughDeployment]
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: undercloudConfig}
server: {get_resource: undercloud}
input_values:
bootstack_nodeid:
- Fn::Select:
- - name
- - get_attr:
- - undercloud
- - show
+ get_attr:
+ - undercloud
+ - show
+ - name
controller_host:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - get_attr:
- - undercloud
- - networks
+ get_attr:
+ - undercloud
+ - networks
+ - ctlplane
+ - 0
heat.watch_server_url:
- list_join:
+ Fn::Join:
- ''
- - 'http://'
- - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { get_attr: [ undercloud, networks ]}]]}
+ - get_attr: [undercloud, networks, ctlplane, 0]
- ':8003'
heat.metadata_server_url:
- list_join:
+ Fn::Join:
- ''
- - 'http://'
- - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { get_attr: [ undercloud, networks ]}]]}
+ - {get_attr: [undercloud, networks, ctlplane, 0]}
- ':8000'
heat.waitcondition_server_url:
- list_join:
+ Fn::Join:
- ''
- - 'http://'
- - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { get_attr: [ undercloud, networks ]}]]}
+ - {get_attr: [undercloud, networks, ctlplane, 0]}
- ':8000/v1/waitcondition'
- 00_undercloudPassthroughDeployment:
+ undercloudPassthroughDeployment:
+ depends_on: [undercloudNovaDeployment]
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: undercloudPassthroughConfig}
diff --git a/undercloud-vm-ironic-deploy.yaml b/undercloud-vm-ironic-deploy.yaml
index 8fff9d54..6e778e59 100644
--- a/undercloud-vm-ironic-deploy.yaml
+++ b/undercloud-vm-ironic-deploy.yaml
@@ -12,7 +12,8 @@ parameters:
type: string
hidden: true
resources:
- 01_undercloudNovaDeployment:
+ undercloudNovaDeployment:
+ depends_on: [undercloudIronicDeployment]
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: undercloudNovaConfig}
@@ -20,7 +21,7 @@ resources:
signal_transport: NO_SIGNAL
input_values:
nova_service_password: {get_param: NovaPassword}
- 02_undercloudIronicDeployment:
+ undercloudIronicDeployment:
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: undercloudIronicConfig}
diff --git a/undercloud-vm-nova-deploy.yaml b/undercloud-vm-nova-deploy.yaml
index 14809384..ebd14ef6 100644
--- a/undercloud-vm-nova-deploy.yaml
+++ b/undercloud-vm-nova-deploy.yaml
@@ -24,7 +24,7 @@ parameters:
description: What username to ssh to the virtual power host with.
type: string
resources:
- 01_undercloudNovaDeployment:
+ undercloudNovaDeployment:
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: undercloudNovaConfig}