diff options
-rw-r--r-- | base.yaml | 18 | ||||
-rw-r--r-- | block-storage-nfs.yaml | 10 | ||||
-rw-r--r-- | block-storage.yaml | 56 | ||||
-rw-r--r-- | controller.yaml | 12 | ||||
-rw-r--r-- | examples/scale2_hot.yaml | 9 | ||||
-rw-r--r-- | examples/scale_map_hot.yaml | 20 | ||||
-rw-r--r-- | examples/scale_map_result_hot.yaml | 216 | ||||
-rw-r--r-- | examples/scale_map_result_hot_blacklist.yaml | 367 | ||||
-rw-r--r-- | examples/scale_result_hot.yaml | 30 | ||||
-rw-r--r-- | examples/source_hot.yaml | 2 | ||||
-rw-r--r-- | nagios3.yaml | 2 | ||||
-rw-r--r-- | nfs-server-source.yaml | 24 | ||||
-rw-r--r-- | nova-compute-config.yaml | 3 | ||||
-rw-r--r-- | nova-compute-instance.yaml | 15 | ||||
-rw-r--r-- | overcloud-source.yaml | 262 | ||||
-rw-r--r-- | ssl-source.yaml | 3 | ||||
-rw-r--r-- | swift-deploy.yaml | 24 | ||||
-rw-r--r-- | swift-source.yaml | 4 | ||||
-rw-r--r-- | swift-storage-source.yaml | 32 | ||||
-rwxr-xr-x | test_merge.bash | 2 | ||||
-rw-r--r-- | tripleo_heat_merge/merge.py | 25 | ||||
-rw-r--r-- | undercloud-bm-nova-deploy.yaml | 2 | ||||
-rw-r--r-- | undercloud-source.yaml | 52 | ||||
-rw-r--r-- | undercloud-vm-ironic-deploy.yaml | 5 | ||||
-rw-r--r-- | undercloud-vm-nova-deploy.yaml | 2 |
25 files changed, 756 insertions, 441 deletions
@@ -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} |