summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--README.md10
-rw-r--r--README.rst55
-rw-r--r--base.yaml77
-rw-r--r--debian-mirror.yaml31
-rw-r--r--deprecated/undercloud-bm-nova-config.yaml (renamed from undercloud-bm-nova-config.yaml)0
-rw-r--r--deprecated/undercloud-bm-nova-deploy.yaml (renamed from undercloud-bm-nova-deploy.yaml)0
-rw-r--r--deprecated/undercloud-source.yaml (renamed from undercloud-source.yaml)2
-rw-r--r--deprecated/undercloud-vlan-port.yaml (renamed from undercloud-vlan-port.yaml)0
-rw-r--r--deprecated/undercloud-vm-ironic-config.yaml (renamed from undercloud-vm-ironic-config.yaml)0
-rw-r--r--deprecated/undercloud-vm-ironic-deploy.yaml (renamed from undercloud-vm-ironic-deploy.yaml)0
-rw-r--r--deprecated/undercloud-vm-nova-config.yaml (renamed from undercloud-vm-nova-config.yaml)0
-rw-r--r--deprecated/undercloud-vm-nova-deploy.yaml (renamed from undercloud-vm-nova-deploy.yaml)0
-rw-r--r--docker/README-containers.md50
-rw-r--r--docker/compute-post.yaml228
-rw-r--r--docker/copy-etc.sh3
-rw-r--r--docker/firstboot/install_docker_agents.yaml28
-rw-r--r--docker/firstboot/start_docker_agents.sh74
-rw-r--r--environments/docker-rdo.yaml17
-rw-r--r--environments/neutron-ml2-cisco-n1kv.yaml11
-rw-r--r--examples/launchconfig1.yaml24
-rw-r--r--examples/launchconfig1_hot.yaml24
-rw-r--r--examples/launchconfig2.yaml20
-rw-r--r--examples/launchconfig2_hot.yaml20
-rw-r--r--examples/launchconfig_result.yaml43
-rw-r--r--examples/launchconfig_result_hot.yaml43
-rw-r--r--examples/lib.yaml13
-rw-r--r--examples/lib_hot.yaml13
-rw-r--r--examples/scale1.yaml32
-rw-r--r--examples/scale1_hot.yaml32
-rw-r--r--examples/scale2.yaml69
-rw-r--r--examples/scale2_hot.yaml62
-rw-r--r--examples/scale_map.yaml56
-rw-r--r--examples/scale_map2.yaml54
-rw-r--r--examples/scale_map2_hot.yaml54
-rw-r--r--examples/scale_map_hot.yaml42
-rw-r--r--examples/scale_map_result.yaml367
-rw-r--r--examples/scale_map_result_hot.yaml331
-rw-r--r--examples/scale_map_result_hot_blacklist.yaml367
-rw-r--r--examples/scale_result.yaml193
-rw-r--r--examples/scale_result_hot.yaml187
-rw-r--r--examples/source.yaml16
-rw-r--r--examples/source2.yaml4
-rw-r--r--examples/source2_hot.yaml4
-rw-r--r--examples/source2_lib_result.yaml16
-rw-r--r--examples/source2_lib_result_hot.yaml16
-rw-r--r--examples/source_hot.yaml16
-rw-r--r--examples/source_include_subkey.yaml11
-rw-r--r--examples/source_include_subkey_hot.yaml11
-rw-r--r--examples/source_include_subkey_result.yaml14
-rw-r--r--examples/source_include_subkey_result_hot.yaml14
-rw-r--r--examples/source_lib_result.yaml24
-rw-r--r--examples/source_lib_result_hot.yaml24
-rwxr-xr-xextraconfig/tasks/yum_update.sh47
-rw-r--r--extraconfig/tasks/yum_update.yaml5
-rw-r--r--nagios3.yaml137
-rw-r--r--net-config-static-bridge.yaml5
-rw-r--r--network/config/bond-with-vlans/ceph-storage.yaml5
-rw-r--r--network/config/bond-with-vlans/cinder-storage.yaml5
-rw-r--r--network/config/bond-with-vlans/compute.yaml5
-rw-r--r--network/config/bond-with-vlans/controller.yaml5
-rw-r--r--network/config/bond-with-vlans/swift-storage.yaml5
-rw-r--r--network/config/single-nic-vlans/ceph-storage.yaml5
-rw-r--r--network/config/single-nic-vlans/cinder-storage.yaml5
-rw-r--r--network/config/single-nic-vlans/compute.yaml5
-rw-r--r--network/config/single-nic-vlans/controller.yaml5
-rw-r--r--network/config/single-nic-vlans/swift-storage.yaml5
-rw-r--r--os-apply-config/all-nodes-config.yaml (renamed from all-nodes-config.yaml)0
-rw-r--r--os-apply-config/ceph-cluster-config.yaml (renamed from ceph-cluster-config.yaml)0
-rw-r--r--os-apply-config/ceph-storage-post.yaml (renamed from ceph-storage-post.yaml)0
-rw-r--r--os-apply-config/ceph-storage.yaml (renamed from ceph-storage.yaml)0
-rw-r--r--os-apply-config/cinder-storage-post.yaml (renamed from cinder-storage-post.yaml)0
-rw-r--r--os-apply-config/cinder-storage.yaml (renamed from cinder-storage.yaml)0
-rw-r--r--os-apply-config/compute-post.yaml (renamed from compute-post.yaml)0
-rw-r--r--os-apply-config/compute.yaml (renamed from compute.yaml)0
-rw-r--r--os-apply-config/controller-post.yaml (renamed from controller-post.yaml)0
-rw-r--r--os-apply-config/controller.yaml (renamed from controller.yaml)0
-rw-r--r--os-apply-config/swift-devices-and-proxy-config.yaml (renamed from swift-devices-and-proxy-config.yaml)0
-rw-r--r--os-apply-config/swift-storage-post.yaml (renamed from swift-storage-post.yaml)0
-rw-r--r--os-apply-config/swift-storage.yaml (renamed from swift-storage.yaml)0
-rw-r--r--os-apply-config/vip-config.yaml (renamed from vip-config.yaml)0
-rw-r--r--overcloud-resource-registry.yaml30
-rw-r--r--overcloud-without-mergepy.yaml1
-rw-r--r--puppet/ceph-storage.yaml3
-rw-r--r--puppet/cinder-storage.yaml8
-rw-r--r--puppet/compute.yaml4
-rw-r--r--puppet/controller.yaml18
-rw-r--r--puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml174
-rw-r--r--puppet/hieradata/controller.yaml1
-rw-r--r--puppet/hieradata/object.yaml5
-rw-r--r--puppet/manifests/overcloud_cephstorage.pp1
-rw-r--r--puppet/manifests/overcloud_compute.pp10
-rw-r--r--puppet/manifests/overcloud_controller.pp28
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp106
-rw-r--r--puppet/manifests/overcloud_object.pp3
-rw-r--r--puppet/manifests/overcloud_volume.pp3
-rw-r--r--puppet/manifests/ringbuilder.pp2
-rw-r--r--puppet/swift-storage.yaml8
-rw-r--r--setup.cfg2
99 files changed, 931 insertions, 2530 deletions
diff --git a/Makefile b/Makefile
index 6ead7082..131e1b9e 100644
--- a/Makefile
+++ b/Makefile
@@ -22,19 +22,19 @@ overcloud.yaml: deprecated/overcloud-source.yaml deprecated/block-storage.yaml d
python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} --scale CephStorage=$${CEPHSTORAGESCALE:-'0'} deprecated/overcloud-source.yaml deprecated/block-storage.yaml deprecated/swift-source.yaml deprecated/swift-storage-source.yaml deprecated/ssl-source.yaml deprecated/swift-deploy.yaml deprecated/nova-compute-config.yaml ${CONTROLEXTRA} > $@.tmp
mv $@.tmp $@
-undercloud-vm.yaml: undercloud-source.yaml undercloud-vm-nova-config.yaml undercloud-vm-nova-deploy.yaml
+undercloud-vm.yaml: deprecated/undercloud-source.yaml deprecated/undercloud-vm-nova-config.yaml deprecated/undercloud-vm-nova-deploy.yaml
python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp
mv $@.tmp $@
-undercloud-bm.yaml: undercloud-source.yaml undercloud-bm-nova-config.yaml undercloud-bm-nova-deploy.yaml
+undercloud-bm.yaml: deprecated/undercloud-source.yaml deprecated/undercloud-bm-nova-config.yaml deprecated/undercloud-bm-nova-deploy.yaml
python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp
mv $@.tmp $@
-undercloud-vm-ironic.yaml: undercloud-source.yaml undercloud-vm-ironic-config.yaml undercloud-vm-ironic-deploy.yaml
+undercloud-vm-ironic.yaml: deprecated/undercloud-source.yaml deprecated/undercloud-vm-ironic-config.yaml deprecated/undercloud-vm-ironic-deploy.yaml
python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp
mv $@.tmp $@
-undercloud-vm-ironic-vlan.yaml: undercloud-source.yaml undercloud-vm-ironic-config.yaml undercloud-vm-ironic-deploy.yaml undercloud-vlan-port.yaml
+undercloud-vm-ironic-vlan.yaml: deprecated/undercloud-source.yaml deprecated/undercloud-vm-ironic-config.yaml deprecated/undercloud-vm-ironic-deploy.yaml deprecated/undercloud-vlan-port.yaml
python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp
mv $@.tmp $@
diff --git a/README.md b/README.md
deleted file mode 100644
index 97cc384e..00000000
--- a/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-templates
-=========
-
-Generic templates to describe multi-host infrastructure, consumable by OpenStack Heat, Crowbar, others.
-
-
-merge.py
-========
-
-The Makefile contains several targets for generated templates, see its contents for all of them. To run functional tests for merge.py, run 'make test'.
diff --git a/README.rst b/README.rst
new file mode 100644
index 00000000..148a741f
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,55 @@
+======================
+tripleo-heat-templates
+======================
+
+Heat templates to deploy OpenStack using OpenStack.
+
+* Free software: Apache license
+* Documentation: http://docs.openstack.org/developer/tripleo-docs
+* Source: http://git.openstack.org/cgit/openstack/tripleo-heat-templates
+* Bugs: http://bugs.launchpad.net/tripleo
+
+Features
+--------
+
+The ability to deploy a multi-node, role based OpenStack deployment using
+OpenStack Heat. Notable features include:
+
+ * Choice of deployment/configuration tooling: puppet, os-apply-config, and
+ (soon) docker
+
+ * Role based deployment: roles for the controller, compute, ceph, swift,
+ and cinder storage
+
+ * physical network configuration: support for isolated networks, bonding,
+ and standard ctlplane networking
+
+Directories
+-----------
+
+A description of the directory layout in TripleO Heat Templates.
+
+ * deprecated: contains templates that have been deprecated
+
+ * environments: contains heat environment files that can be used with -e
+ on the command like to enable features, etc.
+
+ * extraconfig: templates used to enable 'extra' functionality. Includes
+ functionality for distro specific registration and upgrades.
+
+ * firstboot: example first_boot scripts that can be used when initially
+ creating instances.
+
+ * network: heat templates to help create isolated networks and ports
+
+ * puppet: templates mostly driven by configuration with puppet. To use these
+ templates you can use the overcloud-resource-registry-puppet.yaml.
+
+ * os-apply-config: templates mostly driven by configuration w/
+ os-collect-config and bash based
+ elements (which use the Heat os-apply-config group).
+ These will soon be deprecated and are no longer part
+ of the upstream CI testing efforts.
+
+ * validation-scripts: validation scripts useful to all deployment
+ configurations
diff --git a/base.yaml b/base.yaml
deleted file mode 100644
index a1ba509f..00000000
--- a/base.yaml
+++ /dev/null
@@ -1,77 +0,0 @@
-heat_template_version: 2013-05-23
-description: 'Tie OpenStack components together'
-parameters:
- KeystoneAdminToken:
- description: Admin Token needed for keystone
- type: string
- hidden: true
- TemplateRoot:
- description: URL Base where all of our templates are available
- type: string
-resources:
- RabbitMQ:
- type: AWS::CloudFormation::Stack
- TemplateURL:
- Fn::Join:
- - {get_param: TemplateRoot}
- - rabbitmq.yaml
- parameters:
- InstanceType: m1.small
- KeyName: default
- RabbitMQImage: image-rabbitmq
- MySQL:
- type: AWS::CloudFormation::Stack
- TemplateURL:
- Fn::Join:
- - {get_param: TemplateRoot}
- - mysql.yaml
- parameters:
- InstanceType: m1.small
- KeyName: default
- MySQLImage: image-mysql
- Keystone:
- type: AWS::CloudFormation::Stack
- TemplateURL:
- Fn::Join:
- - {get_param: TemplateRoot}
- - keystone.yaml
- parameters:
- AdminToken: {get_param: KeystoneAdminToken}
- KeyName: default
- KeystoneDSN:
- Fn::Join:
- - 'mysql://keystone:'
- - {get_attr: [ MySQL , KeystonePassword ]}
- - '@'
- - {get_attr: [ MySQL , MySQLHost ]}
- - '/keystone'
- Glance:
- type: AWS::CloudFormation::Stack
- TemplateURL:
- Fn::Join:
- - {get_param: TemplateRoot}
- - glance.yaml
- parameters:
- KeyName: default
- HeatDSN:
- Fn::Join:
- - 'mysql://glance:'
- - {get_attr: [ MySQL, GlancePassword ] }
- - '@'
- - {get_attr: [ MySQL, MySQLHost ]}
- - '/glance'
- Heat:
- type: AWS::CloudFormation::Stack
- TemplateURL:
- Fn::Join:
- - {get_param: TemplateRoot}
- - heat.yaml
- parameters:
- KeyName: default
- HeatDSN:
- Fn::Join:
- - 'mysql://heat:'
- - {get_attr: [ MySQL, HeatPassword ] }
- - '@'
- - {get_attr: [ MySQL, MySQLHost ]}
- - '/heat'
diff --git a/debian-mirror.yaml b/debian-mirror.yaml
deleted file mode 100644
index ddfff6a6..00000000
--- a/debian-mirror.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-description: 'Debian-mirror: A Debian or Ubuntu mirror in the cloud'
-parameters:
- DebianMirrorArchitectures:
- default: [{"arch": "amd64"}]
- description: The architectures to be mirrored
- type: JSON
- DebianMirrorComponents:
- default: ["main", "restricted", "universe", "multiverse"]
- description: The components to be mirrored
- type: JSON
- DebianMirrorMirror:
- default: http://archive.ubuntu.com/ubuntu
- description: The mirror that is to be used as the source
- type: string
- DebianMirrorSuites:
- default: ["saucy", "saucy-updates", "saucy-security"]
- description: The suites to be mirrored
- type: JSON
-resources:
- debianMirrorConfig:
- type: AWS::AutoScaling::LaunchConfiguration
- metadata:
- debian-mirror:
- mirror:
- get_param: DebianMirrorMirror
- suites:
- get_param: DebianMirrorSuites
- architectures:
- get_param: DebianMirrorArchitectures
- components:
- get_param: DebianMirrorComponents
diff --git a/undercloud-bm-nova-config.yaml b/deprecated/undercloud-bm-nova-config.yaml
index 306dc0a1..306dc0a1 100644
--- a/undercloud-bm-nova-config.yaml
+++ b/deprecated/undercloud-bm-nova-config.yaml
diff --git a/undercloud-bm-nova-deploy.yaml b/deprecated/undercloud-bm-nova-deploy.yaml
index dca68329..dca68329 100644
--- a/undercloud-bm-nova-deploy.yaml
+++ b/deprecated/undercloud-bm-nova-deploy.yaml
diff --git a/undercloud-source.yaml b/deprecated/undercloud-source.yaml
index 6fe2066d..317896d9 100644
--- a/undercloud-source.yaml
+++ b/deprecated/undercloud-source.yaml
@@ -1,4 +1,4 @@
-description: All-in-one baremetal OpenStack and all dependencies.
+description: Deprecated. Use instack-undercloud instead. All-in-one baremetal OpenStack and all dependencies.
heat_template_version: 2013-05-23
parameters:
AdminPassword:
diff --git a/undercloud-vlan-port.yaml b/deprecated/undercloud-vlan-port.yaml
index 7e39f5fc..7e39f5fc 100644
--- a/undercloud-vlan-port.yaml
+++ b/deprecated/undercloud-vlan-port.yaml
diff --git a/undercloud-vm-ironic-config.yaml b/deprecated/undercloud-vm-ironic-config.yaml
index cc0dafb6..cc0dafb6 100644
--- a/undercloud-vm-ironic-config.yaml
+++ b/deprecated/undercloud-vm-ironic-config.yaml
diff --git a/undercloud-vm-ironic-deploy.yaml b/deprecated/undercloud-vm-ironic-deploy.yaml
index 5d23495c..5d23495c 100644
--- a/undercloud-vm-ironic-deploy.yaml
+++ b/deprecated/undercloud-vm-ironic-deploy.yaml
diff --git a/undercloud-vm-nova-config.yaml b/deprecated/undercloud-vm-nova-config.yaml
index 1fb8abb3..1fb8abb3 100644
--- a/undercloud-vm-nova-config.yaml
+++ b/deprecated/undercloud-vm-nova-config.yaml
diff --git a/undercloud-vm-nova-deploy.yaml b/deprecated/undercloud-vm-nova-deploy.yaml
index da15b46d..da15b46d 100644
--- a/undercloud-vm-nova-deploy.yaml
+++ b/deprecated/undercloud-vm-nova-deploy.yaml
diff --git a/docker/README-containers.md b/docker/README-containers.md
new file mode 100644
index 00000000..0e67c183
--- /dev/null
+++ b/docker/README-containers.md
@@ -0,0 +1,50 @@
+# Using Docker Containers With TripleO
+
+## Configuring TripleO with to use a container based compute node.
+
+Steps include:
+- Adding a base OS image to glance
+- Deploy an overcloud configured to use the docker compute heat templates
+
+## Getting base OS image working.
+
+Download the fedora atomic image into glance:
+
+```
+wget https://download.fedoraproject.org/pub/fedora/linux/releases/22/Cloud/x86_64/Images/Fedora-Cloud-Atomic-22-20150521.x86_64.qcow2
+glance image-create --name fedora-atomic --file Fedora-Cloud-Atomic-22-20150521.x86_64.qcow2 --disk-format qcow2 --container-format bare
+```
+
+## Configuring TripleO
+
+You can use the tripleo.sh script up until the point of running the Overcloud.
+https://github.com/openstack/tripleo-common/blob/master/scripts/tripleo.sh
+
+Create the Overcloud:
+```
+$ openstack overcloud deploy --templates=tripleo-heat-templates -e tripleo-heat-templates/environments/docker-rdo.yaml --libvirt-type=qemu
+```
+
+Source the overcloudrc and then you can use the overcloud.
+
+## Debugging
+
+You can ssh into the controller/compute nodes by using the heat key, eg:
+```
+nova list
+ssh heat-admin@<compute_node_ip>
+```
+
+You can check to see what docker containers are running:
+```
+sudo docker ps -a
+```
+
+To enter a container that doesn't seem to be working right:
+```
+sudo docker exec -ti <container name> /bin/bash
+```
+
+Then you can check logs etc.
+
+You can also just do a 'docker logs' on a given container.
diff --git a/docker/compute-post.yaml b/docker/compute-post.yaml
new file mode 100644
index 00000000..0d049ebc
--- /dev/null
+++ b/docker/compute-post.yaml
@@ -0,0 +1,228 @@
+heat_template_version: 2015-04-30
+
+description: >
+ OpenStack compute node post deployment for Docker.
+
+parameters:
+ servers:
+ type: json
+ NodeConfigIdentifiers:
+ type: json
+ description: Value which changes if the node configuration may need to be re-applied
+ DockerComputeImage:
+ type: string
+ DockerComputeDataImage:
+ type: string
+ DockerLibvirtImage:
+ type: string
+ DockerNeutronAgentImage:
+ type: string
+ DockerOpenvswitchImage:
+ type: string
+ DockerOvsVswitchdImage:
+ type: string
+ DockerOpenvswitchDBImage:
+ type: string
+
+resources:
+
+ ComputePuppetConfig:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: puppet
+ options:
+ enable_hiera: True
+ enable_facter: False
+ tags: package,file,concat,file_line,nova_config,neutron_config,neutron_agent_ovs,neutron_plugin_ml2
+ inputs:
+ - name: tripleo::packages::enable_install
+ type: Boolean
+ default: True
+ outputs:
+ - name: result
+ config:
+ get_file: ../puppet/manifests/overcloud_compute.pp
+
+ ComputePuppetDeployment:
+ type: OS::Heat::SoftwareDeployments
+ properties:
+ servers: {get_param: servers}
+ config: {get_resource: ComputePuppetConfig}
+ input_values:
+ update_identifier: {get_param: NodeConfigIdentifiers}
+ tripleo::packages::enable_install: True
+
+ CopyEtcConfig:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: script
+ outputs:
+ - name: result
+ config: {get_file: ./copy-etc.sh}
+
+ CopyEtcDeployment:
+ type: OS::Heat::SoftwareDeployments
+ depends_on: ComputePuppetDeployment
+ properties:
+ config: {get_resource: CopyEtcConfig}
+ servers: {get_param: servers}
+
+ NovaComputeContainersDeploymentOVS:
+ type: OS::Heat::StructuredDeployments
+ properties:
+ config: {get_resource: NovaComputeContainersConfigOVS}
+ servers: {get_param: servers}
+
+ NovaComputeContainersConfigOVS:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: docker-compose
+ config:
+ ovsvswitchd:
+ image: {get_param: DockerOvsVswitchdImage}
+ container_name: ovs-vswitchd
+ net: host
+ privileged: true
+ restart: always
+ volumes:
+ - /run:/run
+ - /lib/modules:/lib/modules:ro
+ environment:
+ - KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
+
+ openvswitchdb:
+ image: {get_param: DockerOpenvswitchDBImage}
+ container_name: ovs-db-server
+ net: host
+ restart: always
+ volumes:
+ - /run:/run
+ environment:
+ - KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
+
+ NovaComputeContainersDeploymentNetconfig:
+ type: OS::Heat::SoftwareDeployments
+ depends_on: NovaComputeContainersDeploymentOVS
+ properties:
+ config: {get_resource: NovaComputeContainersConfigNetconfig}
+ servers: {get_param: servers}
+
+ # We run os-net-config here because we depend on the ovs containers to be up
+ # and running before we configure the network. This allows explicit timing
+ # of the network configuration.
+ NovaComputeContainersConfigNetconfig:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: script
+ outputs:
+ - name: result
+ config: |
+ #!/bin/bash
+ /usr/local/bin/run-os-net-config
+
+ LibvirtContainersDeployment:
+ type: OS::Heat::StructuredDeployments
+ depends_on: [CopyEtcDeployment, ComputePuppetDeployment, NovaComputeContainersDeploymentNetconfig]
+ properties:
+ config: {get_resource: LibvirtContainersConfig}
+ servers: {get_param: servers}
+
+ LibvirtContainersConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: docker-compose
+ config:
+ computedata:
+ image: {get_param: DockerComputeDataImage}
+ container_name: computedata
+
+ libvirt:
+ image: {get_param: DockerLibvirtImage}
+ container_name: libvirt
+ net: host
+ pid: host
+ privileged: true
+ restart: always
+ volumes:
+ - /run:/run
+ - /lib/modules:/lib/modules:ro
+ - /var/lib/etc-data/libvirt/libvirtd.conf:/opt/kolla/libvirtd/libvirtd.conf
+ - /var/lib/nova/instances:/var/lib/nova/instances
+ environment:
+ - KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
+ volumes_from:
+ - computedata
+
+ NovaComputeContainersDeployment:
+ type: OS::Heat::StructuredDeployments
+ depends_on: [CopyEtcDeployment, ComputePuppetDeployment, NovaComputeContainersDeploymentNetconfig, LibvirtContainersDeployment]
+ properties:
+ config: {get_resource: NovaComputeContainersConfig}
+ servers: {get_param: servers}
+
+ NovaComputeContainersConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: docker-compose
+ config:
+ openvswitch:
+ image: {get_param: DockerOpenvswitchImage}
+ container_name: openvswitch
+ net: host
+ privileged: true
+ restart: always
+ volumes:
+ - /run:/run
+ - /lib/modules:/lib/modules:ro
+ - /var/lib/etc-data/neutron/neutron.conf:/etc/kolla/neutron-openvswitch-agent/:ro
+ - /var/lib/etc-data/neutron/plugins/ml2/ml2_conf.ini:/etc/kolla/neutron-openvswitch-agent/:ro
+ environment:
+ - KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
+ volumes_from:
+ - computedata
+ # FIXME: Kolla now uses a JSON model to run custom commands. We rebuilt a custom container to read in KOLLA_COMMAND_ARGS
+
+ # FIXME: Here we're subjugating kolla's start scripts because we want our custom run command
+ neutronagent:
+ image: {get_param: DockerOpenvswitchImage}
+ container_name: neutronagent
+ net: host
+ pid: host
+ privileged: true
+ restart: always
+ volumes:
+ - /run:/run
+ - /lib/modules:/lib/modules:ro
+ - /var/lib/etc-data/neutron/neutron.conf:/etc/neutron/neutron.conf:ro
+ - /var/lib/etc-data/neutron/plugins/ml2/openvswitch_agent.ini:/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini:ro
+ environment:
+ - KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
+ # FIXME: Kolla now uses a JSON model to run custom commands. We rebuilt a custom container to read in KOLLA_COMMAND_ARGS
+ - KOLLA_COMMAND_ARGS=--config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
+ volumes_from:
+ - computedata
+
+ novacompute:
+ image: {get_param: DockerComputeImage}
+ container_name: novacompute
+ net: host
+ privileged: true
+ restart: always
+ volumes:
+ - /run:/run
+ - /sys/fs/cgroup:/sys/fs/cgroup
+ - /lib/modules:/lib/modules:ro
+ - /var/lib/etc-data/:/etc/:ro
+ - /var/lib/nova/instances:/var/lib/nova/instances
+ volumes_from:
+ - computedata
+ # FIXME: this skips the kolla start.sh script and just starts Nova
+ # Ideally we'd have an environment that switched the kolla container
+ # to be externally configured.
+ command: /usr/bin/nova-compute
+
+ ExtraConfig:
+ depends_on: NovaComputeContainersDeployment
+ type: OS::TripleO::NodeExtraConfigPost
+ properties:
+ servers: {get_param: servers}
diff --git a/docker/copy-etc.sh b/docker/copy-etc.sh
new file mode 100644
index 00000000..1a6cd520
--- /dev/null
+++ b/docker/copy-etc.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+echo "Copying agent container /etc to /var/lib/etc-data"
+cp -a /etc/* /var/lib/etc-data/
diff --git a/docker/firstboot/install_docker_agents.yaml b/docker/firstboot/install_docker_agents.yaml
new file mode 100644
index 00000000..8adc8939
--- /dev/null
+++ b/docker/firstboot/install_docker_agents.yaml
@@ -0,0 +1,28 @@
+heat_template_version: 2014-10-16
+
+parameters:
+ DockerAgentImage:
+ type: string
+ default: dprince/heat-docker-agents-centos
+
+resources:
+
+ userdata:
+ type: OS::Heat::MultipartMime
+ properties:
+ parts:
+ - config: {get_resource: install_docker_agents}
+
+ install_docker_agents:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: script
+ config:
+ str_replace:
+ params:
+ $agent_image: {get_param: DockerAgentImage}
+ template: {get_file: ./start_docker_agents.sh}
+
+outputs:
+ OS::stack_id:
+ value: {get_resource: userdata}
diff --git a/docker/firstboot/start_docker_agents.sh b/docker/firstboot/start_docker_agents.sh
new file mode 100644
index 00000000..caf511bd
--- /dev/null
+++ b/docker/firstboot/start_docker_agents.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+set -eux
+
+# firstboot isn't split out by role yet so we handle it this way
+if ! hostname | grep compute &>/dev/null; then
+ echo "Exiting. This script is only for the compute role."
+ exit 0
+fi
+
+mkdir -p /var/lib/etc-data/ #FIXME: this should be a docker data container
+
+# heat-docker-agents service
+cat <<EOF > /etc/systemd/system/heat-docker-agents.service
+
+[Unit]
+Description=Heat Docker Agent Container
+After=docker.service
+Requires=docker.service
+
+[Service]
+User=root
+Restart=on-failure
+ExecStartPre=-/usr/bin/docker kill heat-agents
+ExecStartPre=-/usr/bin/docker rm heat-agents
+ExecStartPre=/usr/bin/docker pull $agent_image
+ExecStart=/usr/bin/docker run --name heat-agents --privileged --net=host -v /var/lib/etc-data:/var/lib/etc-data -v /run:/run -v /etc:/host/etc -v /usr/bin/atomic:/usr/bin/atomic -v /var/lib/dhclient:/var/lib/dhclient -v /var/lib/cloud:/var/lib/cloud -v /var/lib/heat-cfntools:/var/lib/heat-cfntools --entrypoint=/usr/bin/os-collect-config $agent_image
+ExecStop=/usr/bin/docker stop heat-agents
+
+[Install]
+WantedBy=multi-user.target
+
+EOF
+
+# update docker for local insecure registry(optional)
+# Note: This is different for different docker versions
+# For older docker versions < 1.4.x use commented line
+#echo "OPTIONS='--insecure-registry $docker_registry'" >> /etc/sysconfig/docker
+#echo "ADD_REGISTRY='--registry-mirror $docker_registry'" >> /etc/sysconfig/docker
+
+# Local docker registry 1.8
+#/bin/sed -i s/ADD_REGISTRY/#ADD_REGISTRY/ /etc/sysconfig/docker
+
+/sbin/setenforce 0
+/sbin/modprobe ebtables
+
+# Create /var/lib/etc-data for now. FIXME: This should go into a data container.
+#mkdir -p /var/lib/etc-data
+
+echo nameserver 8.8.8.8 > /etc/resolv.conf
+
+# We need hostname -f to return in a centos container for the puppet hook
+HOSTNAME=$(hostname)
+echo "127.0.0.1 $HOSTNAME.localdomain $HOSTNAME" >> /etc/hosts
+
+# Another hack.. we need latest docker..
+/usr/bin/systemctl stop docker.service
+/bin/curl -o /tmp/docker https://get.docker.com/builds/Linux/x86_64/docker-latest
+/bin/mount -o remount,rw /usr
+/bin/rm /bin/docker
+/bin/cp /tmp/docker /bin/docker
+/bin/chmod 755 /bin/docker
+
+# enable and start docker
+/usr/bin/systemctl enable docker.service
+/usr/bin/systemctl restart --no-block docker.service
+
+# enable and start heat-docker-agents
+chmod 0640 /etc/systemd/system/heat-docker-agents.service
+/usr/bin/systemctl enable heat-docker-agents.service
+/usr/bin/systemctl start --no-block heat-docker-agents.service
+
+# Disable NetworkManager and let the ifup/down scripts work properly.
+/usr/bin/systemctl disable NetworkManager
+/usr/bin/systemctl stop NetworkManager
diff --git a/environments/docker-rdo.yaml b/environments/docker-rdo.yaml
new file mode 100644
index 00000000..d5791369
--- /dev/null
+++ b/environments/docker-rdo.yaml
@@ -0,0 +1,17 @@
+resource_registry:
+ # Docker container with heat agents for containerized compute node.
+ OS::TripleO::ComputePostDeployment: ../docker/compute-post.yaml
+ OS::TripleO::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
+ OS::TripleO::Compute::Net::SoftwareConfig: ../net-config-bridge.yaml
+
+parameters:
+ NovaImage: fedora-atomic
+
+parameter_defaults:
+ DockerComputeImage: rthallisey/centos-binary-nova-compute:liberty
+ DockerComputeDataImage: kollaglue/centos-rdo-nova-compute-data:liberty2
+ DockerLibvirtImage: kollaglue/centos-rdo-nova-libvirt:liberty2
+ DockerNeutronAgentImage: kollaglue/centos-rdo-neutron-agents:liberty2
+ DockerOpenvswitchImage: rthallisey/centos-rdo-neutron-openvswitch-agent:latest
+ DockerOvsVswitchdImage: kollaglue/centos-rdo-ovs-vswitchd:liberty2
+ DockerOpenvswitchDBImage: kollaglue/centos-rdo-ovs-db-server:liberty2
diff --git a/environments/neutron-ml2-cisco-n1kv.yaml b/environments/neutron-ml2-cisco-n1kv.yaml
new file mode 100644
index 00000000..651e9564
--- /dev/null
+++ b/environments/neutron-ml2-cisco-n1kv.yaml
@@ -0,0 +1,11 @@
+# A Heat environment file which can be used to enable a
+# a Cisco N1KV backend, configured via puppet
+resource_registry:
+ OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml
+ OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml
+
+parameter_defaults:
+ N1000vVSMIP: '192.0.2.50'
+ N1000vMgmtGatewayIP: '192.0.2.1'
+ N1000vVSMDomainID: '100'
+ N1000vVSMHostMgmtIntf: 'br-ex'
diff --git a/examples/launchconfig1.yaml b/examples/launchconfig1.yaml
deleted file mode 100644
index 70ea2463..00000000
--- a/examples/launchconfig1.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- A:
- Type: String
- Default: test1
- B:
- Type: String
- Default: test2
- resource1Image:
- Type: String
- Default: resource1
-Resources:
- notcomputeConfigBase:
- Type: AWS::AutoScaling::LaunchConfiguration
- Metadata:
- OpenStack::Role: notcomputeConfig
- a: {Ref: A}
- b: {Ref: B}
- resource1:
- Type: OS::Nova::Server
- Properties:
- flavor: test_flavor
- image: {Ref: resource1Image}
- key_name: test_key
diff --git a/examples/launchconfig1_hot.yaml b/examples/launchconfig1_hot.yaml
deleted file mode 100644
index 4c86e76d..00000000
--- a/examples/launchconfig1_hot.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-heat_template_version: 2014-10-16
-parameters:
- A:
- type: string
- default: test1
- B:
- type: string
- default: test2
- resource1Image:
- type: string
- default: resource1
-resources:
- notcomputeConfigBase:
- type: AWS::AutoScaling::LaunchConfiguration
- metadata:
- OpenStack::Role: notcomputeConfig
- a: {get_param: A}
- b: {get_param: B}
- resource1:
- type: OS::Nova::Server
- properties:
- flavor: test_flavor
- image: {get_param: resource1Image}
- key_name: test_key
diff --git a/examples/launchconfig2.yaml b/examples/launchconfig2.yaml
deleted file mode 100644
index 3ced0cc4..00000000
--- a/examples/launchconfig2.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- C:
- Type: String
- Default: test3
- resource2Image:
- Type: String
- Default: resource2
-Resources:
- notcomputeConfigMixin:
- Type: AWS::AutoScaling::LaunchConfiguration
- Metadata:
- OpenStack::Role: notcomputeConfig
- c: {Ref: C}
- resource2:
- Type: OS::Nova::Server
- Properties:
- flavor: test_flavor
- image: {Ref: resource2Image}
- key_name: test_key
diff --git a/examples/launchconfig2_hot.yaml b/examples/launchconfig2_hot.yaml
deleted file mode 100644
index 1586a4d0..00000000
--- a/examples/launchconfig2_hot.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-heat_template_version: 2014-10-16
-parameters:
- C:
- type: string
- default: test3
- resource2Image:
- type: string
- default: resource2
-resources:
- notcomputeConfigMixin:
- type: AWS::AutoScaling::LaunchConfiguration
- metadata:
- OpenStack::Role: notcomputeConfig
- c: {get_param: C}
- resource2:
- type: OS::Nova::Server
- properties:
- flavor: test_flavor
- image: {get_param: resource2Image}
- key_name: test_key
diff --git a/examples/launchconfig_result.yaml b/examples/launchconfig_result.yaml
deleted file mode 100644
index 76c12b84..00000000
--- a/examples/launchconfig_result.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-Description: examples/launchconfig1.yaml,examples/launchconfig2.yaml
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- A:
- Default: test1
- Type: String
- B:
- Default: test2
- Type: String
- C:
- Default: test3
- Type: String
- resource1Image:
- Default: resource1
- Type: String
- resource2Image:
- Default: resource2
- Type: String
-Resources:
- notcomputeConfig:
- Metadata:
- OpenStack::Role: notcomputeConfig
- a:
- Ref: A
- b:
- Ref: B
- c:
- Ref: C
- Type: AWS::AutoScaling::LaunchConfiguration
- resource1:
- Properties:
- flavor: test_flavor
- image:
- Ref: resource1Image
- key_name: test_key
- Type: OS::Nova::Server
- resource2:
- Properties:
- flavor: test_flavor
- image:
- Ref: resource2Image
- key_name: test_key
- Type: OS::Nova::Server
diff --git a/examples/launchconfig_result_hot.yaml b/examples/launchconfig_result_hot.yaml
deleted file mode 100644
index 1375bae9..00000000
--- a/examples/launchconfig_result_hot.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-description: examples/launchconfig1_hot.yaml,examples/launchconfig2_hot.yaml
-heat_template_version: '2014-10-16'
-parameters:
- A:
- default: test1
- type: string
- B:
- default: test2
- type: string
- C:
- default: test3
- type: string
- resource1Image:
- default: resource1
- type: string
- resource2Image:
- default: resource2
- type: string
-resources:
- notcomputeConfig:
- metadata:
- OpenStack::Role: notcomputeConfig
- a:
- get_param: A
- b:
- get_param: B
- c:
- get_param: C
- type: AWS::AutoScaling::LaunchConfiguration
- resource1:
- properties:
- flavor: test_flavor
- image:
- get_param: resource1Image
- key_name: test_key
- type: OS::Nova::Server
- resource2:
- properties:
- flavor: test_flavor
- image:
- get_param: resource2Image
- key_name: test_key
- type: OS::Nova::Server
diff --git a/examples/lib.yaml b/examples/lib.yaml
deleted file mode 100644
index d42e95f8..00000000
--- a/examples/lib.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-Parameters:
- ImportantValue:
- Default: a_default
- Type: String
- BImage:
- Type: String
-Resources:
- GenericB:
- Type: OS::Nova::Server
- Properties:
- image: {Ref: BImage}
- Metadata:
- my_meta: {Ref: ImportantValue}
diff --git a/examples/lib_hot.yaml b/examples/lib_hot.yaml
deleted file mode 100644
index b5af05e4..00000000
--- a/examples/lib_hot.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-parameters:
- ImportantValue:
- default: a_default
- type: string
- BImage:
- type: string
-resources:
- GenericB:
- type: OS::Nova::Server
- properties:
- image: {get_param: BImage}
- metadata:
- my_meta: {get_param: ImportantValue}
diff --git a/examples/scale1.yaml b/examples/scale1.yaml
deleted file mode 100644
index 6acb6049..00000000
--- a/examples/scale1.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Resources:
- ComputeUser:
- Type: AWS::IAM::User
- Properties:
- Policies: [ { Ref: ComputeAccessPolicy } ]
- GlobalAccessPolicy:
- Type: OS::Heat::AccessPolicy
- NovaCompute0Key:
- Type: FileInclude
- Path: examples/scale2.yaml
- SubKey: Resources.NovaCompute0Key
- NovaCompute0CompletionCondition:
- Type: FileInclude
- Path: examples/scale2.yaml
- SubKey: Resources.NovaCompute0CompletionCondition
- NovaCompute0CompletionHandle:
- Type: FileInclude
- Path: examples/scale2.yaml
- SubKey: Resources.NovaCompute0CompletionHandle
- NovaCompute0Config:
- Type: FileInclude
- Path: examples/scale2.yaml
- SubKey: Resources.NovaCompute0Config
- Parameters:
- ComputeImage: "123"
- RabbitUserName: "guest"
- RabbitPassword: "guest"
- NovaCompute0:
- Type: FileInclude
- Path: examples/scale2.yaml
- SubKey: Resources.NovaCompute0
diff --git a/examples/scale1_hot.yaml b/examples/scale1_hot.yaml
deleted file mode 100644
index 6e46a32d..00000000
--- a/examples/scale1_hot.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-heat_template_version: 2014-10-16
-resources:
- ComputeUser:
- type: AWS::IAM::User
- properties:
- Policies: [ { get_param: ComputeAccessPolicy } ]
- GlobalAccessPolicy:
- type: OS::Heat::AccessPolicy
- NovaCompute0Key:
- type: FileInclude
- Path: examples/scale2_hot.yaml
- SubKey: resources.NovaCompute0Key
- NovaCompute0CompletionCondition:
- type: FileInclude
- Path: examples/scale2_hot.yaml
- SubKey: resources.NovaCompute0CompletionCondition
- NovaCompute0CompletionHandle:
- type: FileInclude
- Path: examples/scale2_hot.yaml
- SubKey: resources.NovaCompute0CompletionHandle
- NovaCompute0Config:
- type: FileInclude
- Path: examples/scale2_hot.yaml
- SubKey: resources.NovaCompute0Config
- parameters:
- ComputeImage: "123"
- RabbitUserName: "guest"
- RabbitPassword: "guest"
- NovaCompute0:
- type: FileInclude
- Path: examples/scale2_hot.yaml
- SubKey: resources.NovaCompute0
diff --git a/examples/scale2.yaml b/examples/scale2.yaml
deleted file mode 100644
index 8b3e4f8f..00000000
--- a/examples/scale2.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- ComputeImage:
- Type: String
- RabbitUserName:
- Type: String
- RabbitPassword:
- Type: String
- NoEcho: true
-Resources:
- ComputeAccessPolicy:
- Type: OS::Heat::AccessPolicy
- Properties:
- AllowedResources: [ NovaCompute0 ]
- NovaCompute0Key:
- Type: AWS::IAM::AccessKey
- Properties:
- UserName:
- Ref: ComputeUser
- NovaCompute0CompletionCondition:
- Type: AWS::CloudFormation::WaitCondition
- DependsOn: notcompute
- Properties:
- Handle: {Ref: NovaCompute0CompletionHandle}
- Count: '1'
- Timeout: '1800'
- NovaCompute0CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute0:
- Type: OS::Nova::Server
- Properties:
- image:
- Ref: ComputeImage
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- secret_access_key:
- Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {Ref: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- NovaCompute0Config:
- Type: AWS::AutoScaling::LaunchConfiguration
- Metadata:
- completion-handle:
- Ref: NovaCompute0CompletionHandle
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- secret_access_key:
- Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {Ref: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- neutron:
- ovs:
- local_ip:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute0
- - networks
- rabbit:
- username: {Ref: RabbitUserName}
- password: {Ref: RabbitPassword}
-
diff --git a/examples/scale2_hot.yaml b/examples/scale2_hot.yaml
deleted file mode 100644
index eb507616..00000000
--- a/examples/scale2_hot.yaml
+++ /dev/null
@@ -1,62 +0,0 @@
-heat_template_version: 2014-10-16
-parameters:
- ComputeImage:
- type: string
- RabbitUserName:
- type: string
- RabbitPassword:
- type: string
- hidden: true
-resources:
- ComputeAccessPolicy:
- type: OS::Heat::AccessPolicy
- properties:
- AllowedResources: [ NovaCompute0 ]
- NovaCompute0Key:
- type: AWS::IAM::AccessKey
- properties:
- UserName:
- get_param: ComputeUser
- NovaCompute0CompletionCondition:
- type: AWS::CloudFormation::WaitCondition
- depends_on: notcompute
- properties:
- Handle: {get_resource: NovaCompute0CompletionHandle}
- Count: '1'
- Timeout: '1800'
- NovaCompute0CompletionHandle:
- type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute0:
- type: OS::Nova::Server
- properties:
- image:
- get_param: ComputeImage
- metadata:
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute0Key
- secret_access_key:
- get_attr: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {get_param: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- NovaCompute0Config:
- type: AWS::AutoScaling::LaunchConfiguration
- metadata:
- completion-handle:
- get_resource: NovaCompute0CompletionHandle
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute0Key
- secret_access_key:
- get_attr: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {get_param: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- neutron:
- ovs:
- local_ip: {get_attr: [NovaCompute0, networks, ctlplane, 0]}
- rabbit:
- username: {get_param: RabbitUserName}
- password: {get_param: RabbitPassword}
-
diff --git a/examples/scale_map.yaml b/examples/scale_map.yaml
deleted file mode 100644
index 08bcbf7c..00000000
--- a/examples/scale_map.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Resources:
- ComputeUser:
- Type: AWS::IAM::User
- Properties:
- Policies: [ { Ref: ComputeAccessPolicy } ]
- GlobalAccessPolicy:
- Type: OS::Heat::AccessPolicy
- NovaCompute0Key:
- Type: FileInclude
- Path: examples/scale_map2.yaml
- SubKey: Resources.NovaCompute0Key
- NovaCompute0CompletionCondition:
- Type: FileInclude
- Path: examples/scale_map2.yaml
- SubKey: Resources.NovaCompute0CompletionCondition
- NovaCompute0CompletionHandle:
- Type: FileInclude
- Path: examples/scale_map2.yaml
- SubKey: Resources.NovaCompute0CompletionHandle
- NovaCompute0Config:
- Type: FileInclude
- Path: examples/scale_map2.yaml
- SubKey: Resources.NovaCompute0Config
- Parameters:
- AllHosts:
- Fn::Join:
- - "\n"
- - Merge::Map:
- NovaCompute0:
- Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute0
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - Fn::Join:
- - '.'
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - 'local'
- NovaCompute0:
- Type: FileInclude
- Path: examples/scale_map2.yaml
- SubKey: Resources.NovaCompute0
diff --git a/examples/scale_map2.yaml b/examples/scale_map2.yaml
deleted file mode 100644
index 7e5c839c..00000000
--- a/examples/scale_map2.yaml
+++ /dev/null
@@ -1,54 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- AllHosts:
- Type: String
- ComputeImage:
- Type: String
-Resources:
- ComputeAccessPolicy:
- Type: OS::Heat::AccessPolicy
- Properties:
- AllowedResources: [ NovaCompute0 ]
- NovaCompute0Key:
- Type: AWS::IAM::AccessKey
- Properties:
- UserName:
- Ref: ComputeUser
- NovaCompute0CompletionCondition:
- Type: AWS::CloudFormation::WaitCondition
- DependsOn: notcompute
- Properties:
- Handle: {Ref: NovaCompute0CompletionHandle}
- Count: '1'
- Timeout: '1800'
- NovaCompute0CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute0:
- Type: OS::Nova::Server
- Properties:
- image:
- Ref: ComputeImage
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- secret_access_key:
- Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {Ref: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- NovaCompute0Config:
- Type: AWS::AutoScaling::LaunchConfiguration
- Metadata:
- completion-handle:
- Ref: NovaCompute0CompletionHandle
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- secret_access_key:
- Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {Ref: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- hosts:
- Ref: AllHosts
diff --git a/examples/scale_map2_hot.yaml b/examples/scale_map2_hot.yaml
deleted file mode 100644
index 1d7dc5fc..00000000
--- a/examples/scale_map2_hot.yaml
+++ /dev/null
@@ -1,54 +0,0 @@
-heat_template_version: 2014-10-16
-parameters:
- AllHosts:
- type: string
- ComputeImage:
- type: string
-resources:
- ComputeAccessPolicy:
- type: OS::Heat::AccessPolicy
- properties:
- AllowedResources: [ NovaCompute0 ]
- NovaCompute0Key:
- type: AWS::IAM::AccessKey
- properties:
- UserName:
- get_param: ComputeUser
- NovaCompute0CompletionCondition:
- type: AWS::CloudFormation::WaitCondition
- depends_on: notcompute
- properties:
- Handle: {get_resource: NovaCompute0CompletionHandle}
- Count: '1'
- Timeout: '1800'
- NovaCompute0CompletionHandle:
- type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute0:
- type: OS::Nova::Server
- properties:
- image:
- get_param: ComputeImage
- metadata:
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute0Key
- secret_access_key:
- get_attr: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {get_param: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- NovaCompute0Config:
- type: AWS::AutoScaling::LaunchConfiguration
- metadata:
- completion-handle:
- get_resource: NovaCompute0CompletionHandle
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute0Key
- secret_access_key:
- get_attr: [ NovaCompute0Key, SecretAccessKey ]
- stack_name: {get_param: 'AWS::StackName'}
- path: NovaCompute0Config.Metadata
- hosts:
- get_param: AllHosts
diff --git a/examples/scale_map_hot.yaml b/examples/scale_map_hot.yaml
deleted file mode 100644
index 4a6d6843..00000000
--- a/examples/scale_map_hot.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-heat_template_version: 2014-10-16
-resources:
- ComputeUser:
- type: AWS::IAM::User
- properties:
- Policies: [ { get_param: ComputeAccessPolicy } ]
- GlobalAccessPolicy:
- type: OS::Heat::AccessPolicy
- NovaCompute0Key:
- type: FileInclude
- Path: examples/scale_map2_hot.yaml
- SubKey: resources.NovaCompute0Key
- NovaCompute0CompletionCondition:
- type: FileInclude
- Path: examples/scale_map2_hot.yaml
- SubKey: resources.NovaCompute0CompletionCondition
- NovaCompute0CompletionHandle:
- type: FileInclude
- Path: examples/scale_map2_hot.yaml
- SubKey: resources.NovaCompute0CompletionHandle
- NovaCompute0Config:
- type: FileInclude
- Path: examples/scale_map2_hot.yaml
- SubKey: resources.NovaCompute0Config
- parameters:
- AllHosts:
- list_join:
- - "\n"
- - Merge::Map:
- NovaCompute0:
- list_join:
- - ' '
- - - {get_attr: [NovaCompute0, networks, ctlplane, 0]}
- - {get_attr: [NovaCompute0, show, name]}
- - list_join:
- - '.'
- - - {get_attr: [NovaCompute0, show, name]}
- - 'local'
- NovaCompute0:
- type: FileInclude
- Path: examples/scale_map2_hot.yaml
- SubKey: resources.NovaCompute0
diff --git a/examples/scale_map_result.yaml b/examples/scale_map_result.yaml
deleted file mode 100644
index c4617835..00000000
--- a/examples/scale_map_result.yaml
+++ /dev/null
@@ -1,367 +0,0 @@
-Description: examples/scale_map.yaml
-HeatTemplateFormatVersion: '2012-12-12'
-Resources:
- ComputeUser:
- Properties:
- Policies:
- - Ref: ComputeAccessPolicy
- Type: AWS::IAM::User
- GlobalAccessPolicy:
- Type: OS::Heat::AccessPolicy
- NovaCompute0:
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- path: NovaCompute0Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute0Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Properties:
- image:
- Ref: ComputeImage
- Type: OS::Nova::Server
- NovaCompute0CompletionCondition:
- DependsOn: notcompute
- Properties:
- Count: '1'
- Handle:
- Ref: NovaCompute0CompletionHandle
- Timeout: '1800'
- Type: AWS::CloudFormation::WaitCondition
- NovaCompute0CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute0Config:
- Metadata:
- completion-handle:
- Ref: NovaCompute0CompletionHandle
- hosts:
- Fn::Join:
- - '
-
- '
- - - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute0
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - local
- - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute1
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute1
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute1
- - show
- - local
- - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute2
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute2
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute2
- - show
- - local
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- path: NovaCompute0Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute0Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute0Key:
- Properties:
- UserName:
- Ref: ComputeUser
- Type: AWS::IAM::AccessKey
- NovaCompute1:
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Properties:
- image:
- Ref: ComputeImage
- Type: OS::Nova::Server
- NovaCompute1CompletionCondition:
- DependsOn: notcompute
- Properties:
- Count: '1'
- Handle:
- Ref: NovaCompute1CompletionHandle
- Timeout: '1800'
- Type: AWS::CloudFormation::WaitCondition
- NovaCompute1CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute1Config:
- Metadata:
- completion-handle:
- Ref: NovaCompute1CompletionHandle
- hosts:
- Fn::Join:
- - '
-
- '
- - - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute0
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - local
- - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute1
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute1
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute1
- - show
- - local
- - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute2
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute2
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute2
- - show
- - local
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute1Key:
- Properties:
- UserName:
- Ref: ComputeUser
- Type: AWS::IAM::AccessKey
- NovaCompute2:
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Properties:
- image:
- Ref: ComputeImage
- Type: OS::Nova::Server
- NovaCompute2CompletionCondition:
- DependsOn: notcompute
- Properties:
- Count: '1'
- Handle:
- Ref: NovaCompute2CompletionHandle
- Timeout: '1800'
- Type: AWS::CloudFormation::WaitCondition
- NovaCompute2CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute2Config:
- Metadata:
- completion-handle:
- Ref: NovaCompute2CompletionHandle
- hosts:
- Fn::Join:
- - '
-
- '
- - - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute0
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute0
- - show
- - local
- - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute1
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute1
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute1
- - show
- - local
- - Fn::Join:
- - ' '
- - - Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute2
- - networks
- - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute2
- - show
- - Fn::Join:
- - .
- - - Fn::Select:
- - name
- - Fn::GetAtt:
- - NovaCompute2
- - show
- - local
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute2Key:
- Properties:
- UserName:
- Ref: ComputeUser
- Type: AWS::IAM::AccessKey
diff --git a/examples/scale_map_result_hot.yaml b/examples/scale_map_result_hot.yaml
deleted file mode 100644
index 4e657238..00000000
--- a/examples/scale_map_result_hot.yaml
+++ /dev/null
@@ -1,331 +0,0 @@
-description: examples/scale_map_hot.yaml
-heat_template_version: '2014-10-16'
-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:
- - ' '
- - - get_attr:
- - NovaCompute0
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute0
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute0
- - show
- - name
- - local
- - list_join:
- - ' '
- - - get_attr:
- - NovaCompute1
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute1
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute1
- - show
- - name
- - local
- - list_join:
- - ' '
- - - get_attr:
- - NovaCompute2
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute2
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute2
- - show
- - name
- - 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
- NovaCompute1:
- metadata:
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- properties:
- image:
- get_param: ComputeImage
- type: OS::Nova::Server
- NovaCompute1CompletionCondition:
- depends_on: notcompute
- properties:
- Count: '1'
- Handle:
- get_resource: NovaCompute1CompletionHandle
- Timeout: '1800'
- type: AWS::CloudFormation::WaitCondition
- NovaCompute1CompletionHandle:
- type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute1Config:
- metadata:
- completion-handle:
- get_resource: NovaCompute1CompletionHandle
- hosts:
- list_join:
- - '
-
- '
- - - list_join:
- - ' '
- - - get_attr:
- - NovaCompute0
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute0
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute0
- - show
- - name
- - local
- - list_join:
- - ' '
- - - get_attr:
- - NovaCompute1
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute1
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute1
- - show
- - name
- - local
- - list_join:
- - ' '
- - - get_attr:
- - NovaCompute2
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute2
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute2
- - show
- - name
- - local
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute1Key:
- properties:
- UserName:
- get_param: ComputeUser
- type: AWS::IAM::AccessKey
- NovaCompute2:
- metadata:
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- properties:
- image:
- get_param: ComputeImage
- type: OS::Nova::Server
- NovaCompute2CompletionCondition:
- depends_on: notcompute
- properties:
- Count: '1'
- Handle:
- get_resource: NovaCompute2CompletionHandle
- Timeout: '1800'
- type: AWS::CloudFormation::WaitCondition
- NovaCompute2CompletionHandle:
- type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute2Config:
- metadata:
- completion-handle:
- get_resource: NovaCompute2CompletionHandle
- hosts:
- list_join:
- - '
-
- '
- - - list_join:
- - ' '
- - - get_attr:
- - NovaCompute0
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute0
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute0
- - show
- - name
- - local
- - list_join:
- - ' '
- - - get_attr:
- - NovaCompute1
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute1
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute1
- - show
- - name
- - local
- - list_join:
- - ' '
- - - get_attr:
- - NovaCompute2
- - networks
- - ctlplane
- - 0
- - get_attr:
- - NovaCompute2
- - show
- - name
- - list_join:
- - .
- - - get_attr:
- - NovaCompute2
- - show
- - name
- - local
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute2Key:
- properties:
- UserName:
- get_param: ComputeUser
- type: AWS::IAM::AccessKey
diff --git a/examples/scale_map_result_hot_blacklist.yaml b/examples/scale_map_result_hot_blacklist.yaml
deleted file mode 100644
index decb0d5e..00000000
--- a/examples/scale_map_result_hot_blacklist.yaml
+++ /dev/null
@@ -1,367 +0,0 @@
-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.yaml b/examples/scale_result.yaml
deleted file mode 100644
index 5b28684b..00000000
--- a/examples/scale_result.yaml
+++ /dev/null
@@ -1,193 +0,0 @@
-Description: examples/scale1.yaml
-HeatTemplateFormatVersion: '2012-12-12'
-Resources:
- ComputeUser:
- Properties:
- Policies:
- - Ref: ComputeAccessPolicy
- Type: AWS::IAM::User
- GlobalAccessPolicy:
- Type: OS::Heat::AccessPolicy
- NovaCompute0:
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- path: NovaCompute0Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute0Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Properties:
- image:
- Ref: ComputeImage
- Type: OS::Nova::Server
- NovaCompute0CompletionCondition:
- DependsOn: notcompute
- Properties:
- Count: '1'
- Handle:
- Ref: NovaCompute0CompletionHandle
- Timeout: '1800'
- Type: AWS::CloudFormation::WaitCondition
- NovaCompute0CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute0Config:
- Metadata:
- completion-handle:
- Ref: NovaCompute0CompletionHandle
- neutron:
- ovs:
- local_ip:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute0
- - networks
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute0Key
- path: NovaCompute0Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute0Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- rabbit:
- password: guest
- username: guest
- Type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute0Key:
- Properties:
- UserName:
- Ref: ComputeUser
- Type: AWS::IAM::AccessKey
- NovaCompute1:
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Properties:
- image:
- Ref: ComputeImage
- Type: OS::Nova::Server
- NovaCompute1CompletionCondition:
- DependsOn: notcompute
- Properties:
- Count: '1'
- Handle:
- Ref: NovaCompute1CompletionHandle
- Timeout: '1800'
- Type: AWS::CloudFormation::WaitCondition
- NovaCompute1CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute1Config:
- Metadata:
- completion-handle:
- Ref: NovaCompute1CompletionHandle
- neutron:
- ovs:
- local_ip:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute1
- - networks
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- rabbit:
- password: guest
- username: guest
- Type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute1Key:
- Properties:
- UserName:
- Ref: ComputeUser
- Type: AWS::IAM::AccessKey
- NovaCompute2:
- Metadata:
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- Properties:
- image:
- Ref: ComputeImage
- Type: OS::Nova::Server
- NovaCompute2CompletionCondition:
- DependsOn: notcompute
- Properties:
- Count: '1'
- Handle:
- Ref: NovaCompute2CompletionHandle
- Timeout: '1800'
- Type: AWS::CloudFormation::WaitCondition
- NovaCompute2CompletionHandle:
- Type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute2Config:
- Metadata:
- completion-handle:
- Ref: NovaCompute2CompletionHandle
- neutron:
- ovs:
- local_ip:
- Fn::Select:
- - 0
- - Fn::Select:
- - ctlplane
- - Fn::GetAtt:
- - NovaCompute2
- - networks
- os-collect-config:
- cfn:
- access_key_id:
- Ref: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- Fn::GetAtt:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- Ref: AWS::StackName
- rabbit:
- password: guest
- username: guest
- Type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute2Key:
- Properties:
- UserName:
- Ref: ComputeUser
- Type: AWS::IAM::AccessKey
diff --git a/examples/scale_result_hot.yaml b/examples/scale_result_hot.yaml
deleted file mode 100644
index a1b27095..00000000
--- a/examples/scale_result_hot.yaml
+++ /dev/null
@@ -1,187 +0,0 @@
-description: examples/scale1_hot.yaml
-heat_template_version: '2014-10-16'
-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
- neutron:
- ovs:
- local_ip:
- get_attr:
- - NovaCompute0
- - networks
- - ctlplane
- - 0
- 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
- rabbit:
- password: guest
- username: guest
- type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute0Key:
- properties:
- UserName:
- get_param: ComputeUser
- type: AWS::IAM::AccessKey
- NovaCompute1:
- metadata:
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- properties:
- image:
- get_param: ComputeImage
- type: OS::Nova::Server
- NovaCompute1CompletionCondition:
- depends_on: notcompute
- properties:
- Count: '1'
- Handle:
- get_resource: NovaCompute1CompletionHandle
- Timeout: '1800'
- type: AWS::CloudFormation::WaitCondition
- NovaCompute1CompletionHandle:
- type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute1Config:
- metadata:
- completion-handle:
- get_resource: NovaCompute1CompletionHandle
- neutron:
- ovs:
- local_ip:
- get_attr:
- - NovaCompute1
- - networks
- - ctlplane
- - 0
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute1Key
- path: NovaCompute1Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute1Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- rabbit:
- password: guest
- username: guest
- type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute1Key:
- properties:
- UserName:
- get_param: ComputeUser
- type: AWS::IAM::AccessKey
- NovaCompute2:
- metadata:
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- properties:
- image:
- get_param: ComputeImage
- type: OS::Nova::Server
- NovaCompute2CompletionCondition:
- depends_on: notcompute
- properties:
- Count: '1'
- Handle:
- get_resource: NovaCompute2CompletionHandle
- Timeout: '1800'
- type: AWS::CloudFormation::WaitCondition
- NovaCompute2CompletionHandle:
- type: AWS::CloudFormation::WaitConditionHandle
- NovaCompute2Config:
- metadata:
- completion-handle:
- get_resource: NovaCompute2CompletionHandle
- neutron:
- ovs:
- local_ip:
- get_attr:
- - NovaCompute2
- - networks
- - ctlplane
- - 0
- os-collect-config:
- cfn:
- access_key_id:
- get_resource: NovaCompute2Key
- path: NovaCompute2Config.Metadata
- secret_access_key:
- get_attr:
- - NovaCompute2Key
- - SecretAccessKey
- stack_name:
- get_param: AWS::StackName
- rabbit:
- password: guest
- username: guest
- type: AWS::AutoScaling::LaunchConfiguration
- NovaCompute2Key:
- properties:
- UserName:
- get_param: ComputeUser
- type: AWS::IAM::AccessKey
diff --git a/examples/source.yaml b/examples/source.yaml
deleted file mode 100644
index 88f0bde7..00000000
--- a/examples/source.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- SourceImage:
- Type: String
- Default: my_image
-Resources:
- A:
- Type: OS::Nova::Server
- Properties:
- image: {Ref: SourceImage}
- B:
- Type: FileInclude
- Path: examples/lib.yaml
- SubKey: Resources.GenericB
- Parameters:
- ImportantValue: {'Fn::Join': [ '', ['one', 'two', 'three']]}
diff --git a/examples/source2.yaml b/examples/source2.yaml
deleted file mode 100644
index f59f85ef..00000000
--- a/examples/source2.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-__include__:
- path: examples/lib.yaml
- params:
- ImportantValue: Foo
diff --git a/examples/source2_hot.yaml b/examples/source2_hot.yaml
deleted file mode 100644
index e3861a6c..00000000
--- a/examples/source2_hot.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-__include__:
- path: examples/lib_hot.yaml
- params:
- ImportantValue: Foo
diff --git a/examples/source2_lib_result.yaml b/examples/source2_lib_result.yaml
deleted file mode 100644
index 172dce0f..00000000
--- a/examples/source2_lib_result.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-Description: examples/source2.yaml
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- BImage:
- Type: String
- ImportantValue:
- Default: a_default
- Type: String
-Resources:
- GenericB:
- Metadata:
- my_meta: Foo
- Properties:
- image:
- Ref: BImage
- Type: OS::Nova::Server
diff --git a/examples/source2_lib_result_hot.yaml b/examples/source2_lib_result_hot.yaml
deleted file mode 100644
index 294fed89..00000000
--- a/examples/source2_lib_result_hot.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-description: examples/source2_hot.yaml
-heat_template_version: '2014-10-16'
-parameters:
- BImage:
- type: string
- ImportantValue:
- default: a_default
- type: string
-resources:
- GenericB:
- metadata:
- my_meta: Foo
- properties:
- image:
- get_param: BImage
- type: OS::Nova::Server
diff --git a/examples/source_hot.yaml b/examples/source_hot.yaml
deleted file mode 100644
index 15314886..00000000
--- a/examples/source_hot.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-heat_template_version: 2014-10-16
-parameters:
- SourceImage:
- type: string
- default: my_image
-resources:
- A:
- type: OS::Nova::Server
- properties:
- image: {get_param: SourceImage}
- B:
- type: FileInclude
- Path: examples/lib_hot.yaml
- SubKey: resources.GenericB
- parameters:
- ImportantValue: {"Fn::Join": [ '', ['one', 'two', 'three']]}
diff --git a/examples/source_include_subkey.yaml b/examples/source_include_subkey.yaml
deleted file mode 100644
index 37591d80..00000000
--- a/examples/source_include_subkey.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- Foo:
- Type: String
-Resources:
- __include__:
- path: examples/lib.yaml
- subkey: Resources
- params:
- BImage:
- Ref: Foo
diff --git a/examples/source_include_subkey_hot.yaml b/examples/source_include_subkey_hot.yaml
deleted file mode 100644
index 8970db44..00000000
--- a/examples/source_include_subkey_hot.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-heat_template_version: 2014-10-16
-parameters:
- Foo:
- type: string
-resources:
- __include__:
- path: examples/lib_hot.yaml
- subkey: resources
- params:
- BImage:
- get_param: Foo
diff --git a/examples/source_include_subkey_result.yaml b/examples/source_include_subkey_result.yaml
deleted file mode 100644
index 641e8148..00000000
--- a/examples/source_include_subkey_result.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-Description: examples/source_include_subkey.yaml
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- Foo:
- Type: String
-Resources:
- GenericB:
- Metadata:
- my_meta:
- Ref: ImportantValue
- Properties:
- image:
- Ref: Foo
- Type: OS::Nova::Server
diff --git a/examples/source_include_subkey_result_hot.yaml b/examples/source_include_subkey_result_hot.yaml
deleted file mode 100644
index ec3bfb6f..00000000
--- a/examples/source_include_subkey_result_hot.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-description: examples/source_include_subkey_hot.yaml
-heat_template_version: '2014-10-16'
-parameters:
- Foo:
- type: string
-resources:
- GenericB:
- metadata:
- my_meta:
- get_param: ImportantValue
- properties:
- image:
- get_param: Foo
- type: OS::Nova::Server
diff --git a/examples/source_lib_result.yaml b/examples/source_lib_result.yaml
deleted file mode 100644
index 5844c813..00000000
--- a/examples/source_lib_result.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: examples/source.yaml
-HeatTemplateFormatVersion: '2012-12-12'
-Parameters:
- SourceImage:
- Default: my_image
- Type: String
-Resources:
- A:
- Properties:
- image:
- Ref: SourceImage
- Type: OS::Nova::Server
- B:
- Metadata:
- my_meta:
- Fn::Join:
- - ''
- - - one
- - two
- - three
- Properties:
- image:
- Ref: BImage
- Type: OS::Nova::Server
diff --git a/examples/source_lib_result_hot.yaml b/examples/source_lib_result_hot.yaml
deleted file mode 100644
index 0235f200..00000000
--- a/examples/source_lib_result_hot.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-description: examples/source_hot.yaml
-heat_template_version: '2014-10-16'
-parameters:
- SourceImage:
- default: my_image
- type: string
-resources:
- A:
- properties:
- image:
- get_param: SourceImage
- type: OS::Nova::Server
- B:
- metadata:
- my_meta:
- list_join:
- - ''
- - - one
- - two
- - three
- properties:
- image:
- get_param: BImage
- type: OS::Nova::Server
diff --git a/extraconfig/tasks/yum_update.sh b/extraconfig/tasks/yum_update.sh
index 3d4c772b..eaeb7ef0 100755
--- a/extraconfig/tasks/yum_update.sh
+++ b/extraconfig/tasks/yum_update.sh
@@ -8,6 +8,7 @@
# command_arguments - yum command arguments, defaults to ""
echo "Started yum_update.sh on server $deploy_server_id at `date`"
+echo -n "false" > $heat_outputs_path.update_managed_packages
if [[ -z "$update_identifier" ]]; then
echo "Not running due to unset update_identifier"
@@ -20,6 +21,9 @@ mkdir -p $timestamp_dir
# sanitise to remove unusual characters
update_identifier=${update_identifier//[^a-zA-Z0-9-_]/}
+# seconds to wait for this node to rejoin the cluster after update
+cluster_start_timeout=360
+
timestamp_file="$timestamp_dir/$update_identifier"
if [[ -a "$timestamp_file" ]]; then
echo "Not running for already-run timestamp \"$update_identifier\""
@@ -27,6 +31,28 @@ if [[ -a "$timestamp_file" ]]; then
fi
touch "$timestamp_file"
+command_arguments=${command_arguments:-}
+
+list_updates=$(yum list updates)
+
+if [[ "$list_updates" == "" ]]; then
+ echo "No packages require updating"
+ exit 0
+fi
+
+pacemaker_status=$(systemctl is-active pacemaker)
+
+if [[ "$pacemaker_status" == "active" ]] ; then
+ echo "Pacemaker running, stopping cluster node and doing full package update"
+ pcs cluster stop
+else
+ echo "Excluding upgrading packages that are handled by config management tooling"
+ command_arguments="$command_arguments --skip-broken"
+ for exclude in $(cat /var/lib/tripleo/installed-packages/* | sort -u); do
+ command_arguments="$command_arguments --exclude $exclude"
+ done
+fi
+
command=${command:-update}
full_command="yum -y $command $command_arguments"
echo "Running: $full_command"
@@ -36,6 +62,27 @@ return_code=$?
echo "$result"
echo "yum return code: $return_code"
+if [[ "$pacemaker_status" == "active" ]] ; then
+ echo "Starting cluster node"
+ pcs cluster start
+
+ hostname=$(hostname -s)
+ tstart=$(date +%s)
+ while [[ "$(pcs status | grep "^Online" | grep -F -o $hostname)" == "" ]]; do
+ sleep 5
+ tnow=$(date +%s)
+ if (( tnow-tstart > cluster_start_timeout )) ; then
+ echo "ERROR $hostname failed to join cluster in $cluster_start_timeout seconds"
+ pcs status
+ exit 1
+ fi
+ done
+ pcs status
+
+else
+ echo -n "true" > $heat_outputs_path.update_managed_packages
+fi
+
echo "Finished yum_update.sh on server $deploy_server_id at `date`"
exit $return_code
diff --git a/extraconfig/tasks/yum_update.yaml b/extraconfig/tasks/yum_update.yaml
index e918149e..d313ca9f 100644
--- a/extraconfig/tasks/yum_update.yaml
+++ b/extraconfig/tasks/yum_update.yaml
@@ -20,7 +20,10 @@ resources:
- name: command_arguments
description: yum command arguments, defaults to ""
default: ''
+ outputs:
+ - name: update_managed_packages
+ description: boolean value indicating whether to upgrade managed packages
outputs:
OS::stack_id:
- value: {get_resource: config} \ No newline at end of file
+ value: {get_resource: config}
diff --git a/nagios3.yaml b/nagios3.yaml
deleted file mode 100644
index e2ba8ccf..00000000
--- a/nagios3.yaml
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright 2014 Hewlett-Packard Development Company, L.P.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-#
-heat_template_version: 2013-05-23
-description: Deploy Nagios
-parameters:
- adm_web_passwd:
- type: string
- description: Password for initial admin user
- hidden: true
- external_network:
- type: string
- description: Network to attach floating ips to.
- default: ext-net
- flavor:
- type: string
- description: What flavor to use for the nagios server.
- default: m1.small
- image:
- type: string
- description: Image for Nagios.
- default: nagios
- key_name:
- type: string
- description: What Nova SSH key to use for the nagios server.
- default: default
- monitor_networks:
- type: json
- description: Neutron networks to monitor.
- default: []
- nova_os_auth_url:
- type: string
- default: ''
- description: URL for Keystone to access Nova.
- nova_os_password:
- type: string
- hidden: true
- description: password to present to nova_host_ip.
- default: ''
- nova_os_username:
- type: string
- description: username to present to nova_host_ip.
- default: ''
- nova_os_tenant_name:
- type: string
- description: tenant name to present to nova_host_ip.
- default: ''
- server_network:
- type: string
- description: Network id for server.
- default: default-net
-resources:
- nagios_config:
- type: OS::Heat::StructuredConfig
- properties:
- config:
- nagios3:
- adm_web_passwd: { get_input: adm_web_passwd }
- os_auth_url: { get_input: nova_os_auth_url }
- os_password: { get_input: nova_os_password }
- os_username: { get_input: nova_os_username }
- os_tenant_name: { get_input: nova_os_tenant_name }
- monitor_networks: { get_input: monitor_networks }
- completion-signal: { get_input: deploy_signal_id }
- nagios_security_group:
- type: OS::Neutron::SecurityGroup
- properties:
- name: monitoring
- rules:
- - direction: ingress
- port_range_max: 22
- port_range_min: 22
- protocol: tcp
- - direction: ingress
- port_range_max: 80
- port_range_min: 80
- protocol: tcp
- - direction: ingress
- protocol: icmp
- - direction: egress
- protocol: tcp
- - direction: egress
- protocol: udp
- - direction: egress
- protocol: icmp
- nagios_net_port:
- type: OS::Neutron::Port
- properties:
- network_id: { get_param: server_network }
- security_groups: [ { get_resource: nagios_security_group } ]
- nagios_server:
- type: OS::Nova::Server
- properties:
- flavor: { get_param: flavor }
- image: { get_param: image }
- key_name: { get_param: key_name }
- networks:
- - network: { get_param: server_network }
- port: { get_resource: nagios_net_port }
- user_data_format: SOFTWARE_CONFIG
- user_data: {get_resource: NodeUserData}
-
- NodeUserData:
- type: OS::TripleO::NodeUserData
-
- nagios_floating_ip:
- type: OS::Neutron::FloatingIP
- properties:
- floating_network_id: { get_param: external_network }
- port_id: { get_resource: nagios_net_port }
- nagios_deploy:
- type: OS::Heat::StructuredDeployment
- properties:
- server: { get_resource: nagios_server }
- config: { get_resource: nagios_config }
- input_values:
- adm_web_passwd: { get_param: adm_web_passwd }
- nova_os_auth_url: { get_param: nova_os_auth_url }
- nova_os_password: { get_param: nova_os_password }
- nova_os_username: { get_param: nova_os_username }
- nova_os_tenant_name: { get_param: nova_os_tenant_name }
- monitor_networks: { get_param: monitor_networks }
-outputs:
- nagios_address:
- description: Address of Nagios admin interface.
- value: { get_attr: [ nagios_floating_ip, floating_ip_address ] }
diff --git a/net-config-static-bridge.yaml b/net-config-static-bridge.yaml
index 38b483bd..52c8f895 100644
--- a/net-config-static-bridge.yaml
+++ b/net-config-static-bridge.yaml
@@ -36,6 +36,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -52,6 +56,7 @@ resources:
type: ovs_bridge
name: {get_input: bridge_name}
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/bond-with-vlans/ceph-storage.yaml b/network/config/bond-with-vlans/ceph-storage.yaml
index cffc06f4..620d1f7a 100644
--- a/network/config/bond-with-vlans/ceph-storage.yaml
+++ b/network/config/bond-with-vlans/ceph-storage.yaml
@@ -49,6 +49,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -65,6 +69,7 @@ resources:
type: interface
name: nic1
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/bond-with-vlans/cinder-storage.yaml b/network/config/bond-with-vlans/cinder-storage.yaml
index 894d5982..f4c6de8f 100644
--- a/network/config/bond-with-vlans/cinder-storage.yaml
+++ b/network/config/bond-with-vlans/cinder-storage.yaml
@@ -53,6 +53,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -69,6 +73,7 @@ resources:
type: interface
name: nic1
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/bond-with-vlans/compute.yaml b/network/config/bond-with-vlans/compute.yaml
index 7c79cd1a..8cb3705b 100644
--- a/network/config/bond-with-vlans/compute.yaml
+++ b/network/config/bond-with-vlans/compute.yaml
@@ -53,6 +53,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -69,6 +73,7 @@ resources:
type: interface
name: nic1
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/bond-with-vlans/controller.yaml b/network/config/bond-with-vlans/controller.yaml
index cd1961ad..4290be20 100644
--- a/network/config/bond-with-vlans/controller.yaml
+++ b/network/config/bond-with-vlans/controller.yaml
@@ -63,6 +63,10 @@ parameters:
default: '24'
description: The subnet CIDR of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -93,6 +97,7 @@ resources:
-
type: ovs_bridge
name: {get_input: bridge_name}
+ dns_servers: {get_param: DnsServers}
members:
-
type: ovs_bond
diff --git a/network/config/bond-with-vlans/swift-storage.yaml b/network/config/bond-with-vlans/swift-storage.yaml
index f182baef..f6b2a699 100644
--- a/network/config/bond-with-vlans/swift-storage.yaml
+++ b/network/config/bond-with-vlans/swift-storage.yaml
@@ -53,6 +53,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -69,6 +73,7 @@ resources:
type: interface
name: nic1
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/single-nic-vlans/ceph-storage.yaml b/network/config/single-nic-vlans/ceph-storage.yaml
index ddb41633..5148c520 100644
--- a/network/config/single-nic-vlans/ceph-storage.yaml
+++ b/network/config/single-nic-vlans/ceph-storage.yaml
@@ -44,6 +44,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -60,6 +64,7 @@ resources:
type: ovs_bridge
name: br-storage
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/single-nic-vlans/cinder-storage.yaml b/network/config/single-nic-vlans/cinder-storage.yaml
index 4b2a5753..e79a9f4b 100644
--- a/network/config/single-nic-vlans/cinder-storage.yaml
+++ b/network/config/single-nic-vlans/cinder-storage.yaml
@@ -48,6 +48,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -64,6 +68,7 @@ resources:
type: ovs_bridge
name: br-storage
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/single-nic-vlans/compute.yaml b/network/config/single-nic-vlans/compute.yaml
index dc8d6851..4e93b31c 100644
--- a/network/config/single-nic-vlans/compute.yaml
+++ b/network/config/single-nic-vlans/compute.yaml
@@ -48,6 +48,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -64,6 +68,7 @@ resources:
type: ovs_bridge
name: {get_input: bridge_name}
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/single-nic-vlans/controller.yaml b/network/config/single-nic-vlans/controller.yaml
index c0f4132b..3c536d67 100644
--- a/network/config/single-nic-vlans/controller.yaml
+++ b/network/config/single-nic-vlans/controller.yaml
@@ -57,6 +57,10 @@ parameters:
default: '24'
description: The subnet CIDR of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -73,6 +77,7 @@ resources:
type: ovs_bridge
name: {get_input: bridge_name}
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/network/config/single-nic-vlans/swift-storage.yaml b/network/config/single-nic-vlans/swift-storage.yaml
index 5a308df0..83b3304f 100644
--- a/network/config/single-nic-vlans/swift-storage.yaml
+++ b/network/config/single-nic-vlans/swift-storage.yaml
@@ -48,6 +48,10 @@ parameters:
ControlPlaneDefaultRoute: # Override this via parameter_defaults
description: The default route of the control plane network.
type: string
+ DnsServers: # Override this via parameter_defaults
+ default: []
+ description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+ type: comma_delimited_list
EC2MetadataIp: # Override this via parameter_defaults
description: The IP address of the EC2 metadata server.
type: string
@@ -64,6 +68,7 @@ resources:
type: ovs_bridge
name: br-storage
use_dhcp: false
+ dns_servers: {get_param: DnsServers}
addresses:
-
ip_netmask:
diff --git a/all-nodes-config.yaml b/os-apply-config/all-nodes-config.yaml
index 3f0bd61c..3f0bd61c 100644
--- a/all-nodes-config.yaml
+++ b/os-apply-config/all-nodes-config.yaml
diff --git a/ceph-cluster-config.yaml b/os-apply-config/ceph-cluster-config.yaml
index c3cf8e8a..c3cf8e8a 100644
--- a/ceph-cluster-config.yaml
+++ b/os-apply-config/ceph-cluster-config.yaml
diff --git a/ceph-storage-post.yaml b/os-apply-config/ceph-storage-post.yaml
index 734f90bd..734f90bd 100644
--- a/ceph-storage-post.yaml
+++ b/os-apply-config/ceph-storage-post.yaml
diff --git a/ceph-storage.yaml b/os-apply-config/ceph-storage.yaml
index 0dbcd3e7..0dbcd3e7 100644
--- a/ceph-storage.yaml
+++ b/os-apply-config/ceph-storage.yaml
diff --git a/cinder-storage-post.yaml b/os-apply-config/cinder-storage-post.yaml
index ad4e0460..ad4e0460 100644
--- a/cinder-storage-post.yaml
+++ b/os-apply-config/cinder-storage-post.yaml
diff --git a/cinder-storage.yaml b/os-apply-config/cinder-storage.yaml
index 7a686970..7a686970 100644
--- a/cinder-storage.yaml
+++ b/os-apply-config/cinder-storage.yaml
diff --git a/compute-post.yaml b/os-apply-config/compute-post.yaml
index 695690d4..695690d4 100644
--- a/compute-post.yaml
+++ b/os-apply-config/compute-post.yaml
diff --git a/compute.yaml b/os-apply-config/compute.yaml
index 88d4cb2b..88d4cb2b 100644
--- a/compute.yaml
+++ b/os-apply-config/compute.yaml
diff --git a/controller-post.yaml b/os-apply-config/controller-post.yaml
index aac96357..aac96357 100644
--- a/controller-post.yaml
+++ b/os-apply-config/controller-post.yaml
diff --git a/controller.yaml b/os-apply-config/controller.yaml
index 18dcc8eb..18dcc8eb 100644
--- a/controller.yaml
+++ b/os-apply-config/controller.yaml
diff --git a/swift-devices-and-proxy-config.yaml b/os-apply-config/swift-devices-and-proxy-config.yaml
index 4f01dbea..4f01dbea 100644
--- a/swift-devices-and-proxy-config.yaml
+++ b/os-apply-config/swift-devices-and-proxy-config.yaml
diff --git a/swift-storage-post.yaml b/os-apply-config/swift-storage-post.yaml
index 1b1c406d..1b1c406d 100644
--- a/swift-storage-post.yaml
+++ b/os-apply-config/swift-storage-post.yaml
diff --git a/swift-storage.yaml b/os-apply-config/swift-storage.yaml
index d62d7d1a..d62d7d1a 100644
--- a/swift-storage.yaml
+++ b/os-apply-config/swift-storage.yaml
diff --git a/vip-config.yaml b/os-apply-config/vip-config.yaml
index 8f984ab7..8f984ab7 100644
--- a/vip-config.yaml
+++ b/os-apply-config/vip-config.yaml
diff --git a/overcloud-resource-registry.yaml b/overcloud-resource-registry.yaml
index dd7e1a1c..d6eb97f9 100644
--- a/overcloud-resource-registry.yaml
+++ b/overcloud-resource-registry.yaml
@@ -1,23 +1,23 @@
resource_registry:
- OS::TripleO::BlockStorage: cinder-storage.yaml
+ OS::TripleO::BlockStorage: os-apply-config/cinder-storage.yaml
OS::TripleO::BlockStorage::Net::SoftwareConfig: net-config-noop.yaml
- OS::TripleO::Compute: compute.yaml
+ OS::TripleO::Compute: os-apply-config/compute.yaml
OS::TripleO::Compute::Net::SoftwareConfig: net-config-noop.yaml
OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
- OS::TripleO::Controller: controller.yaml
+ OS::TripleO::Controller: os-apply-config/controller.yaml
OS::TripleO::Controller::Net::SoftwareConfig: net-config-noop.yaml
- OS::TripleO::ObjectStorage: swift-storage.yaml
+ OS::TripleO::ObjectStorage: os-apply-config/swift-storage.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: net-config-noop.yaml
- OS::TripleO::CephStorage: ceph-storage.yaml
+ OS::TripleO::CephStorage: os-apply-config/ceph-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: net-config-noop.yaml
- OS::TripleO::ControllerPostDeployment: controller-post.yaml
- OS::TripleO::ComputePostDeployment: compute-post.yaml
- OS::TripleO::ObjectStoragePostDeployment: swift-storage-post.yaml
- OS::TripleO::BlockStoragePostDeployment: cinder-storage-post.yaml
- OS::TripleO::CephStoragePostDeployment: ceph-storage-post.yaml
- OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: swift-devices-and-proxy-config.yaml
- OS::TripleO::CephClusterConfig::SoftwareConfig: ceph-cluster-config.yaml
- OS::TripleO::AllNodes::SoftwareConfig: all-nodes-config.yaml
+ OS::TripleO::ControllerPostDeployment: os-apply-config/controller-post.yaml
+ OS::TripleO::ComputePostDeployment: os-apply-config/compute-post.yaml
+ OS::TripleO::ObjectStoragePostDeployment: os-apply-config/swift-storage-post.yaml
+ OS::TripleO::BlockStoragePostDeployment: os-apply-config/cinder-storage-post.yaml
+ OS::TripleO::CephStoragePostDeployment: os-apply-config/ceph-storage-post.yaml
+ OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig: os-apply-config/swift-devices-and-proxy-config.yaml
+ OS::TripleO::CephClusterConfig::SoftwareConfig: os-apply-config/ceph-cluster-config.yaml
+ OS::TripleO::AllNodes::SoftwareConfig: os-apply-config/all-nodes-config.yaml
OS::TripleO::BootstrapNode::SoftwareConfig: bootstrap-config.yaml
OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
OS::TripleO::NodeExtraConfigPost: extraconfig/post_deploy/default.yaml
@@ -31,7 +31,7 @@ resource_registry:
# TripleO overcloud networks
OS::TripleO::Network: network/networks.yaml
- OS::TripleO::VipConfig: vip-config.yaml
+ OS::TripleO::VipConfig: os-apply-config/vip-config.yaml
OS::TripleO::Network::External: network/noop.yaml
OS::TripleO::Network::InternalApi: network/noop.yaml
@@ -73,4 +73,4 @@ resource_registry:
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/noop.yaml
# validation resources
- OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml
+ OS::TripleO::AllNodes::Validation: os-apply-config/all-nodes-validation.yaml
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 4b065dd8..7fdba562 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -845,6 +845,7 @@ resources:
ServiceNetMap: {get_param: ServiceNetMap}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+ GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
diff --git a/puppet/ceph-storage.yaml b/puppet/ceph-storage.yaml
index 478cbf27..75294599 100644
--- a/puppet/ceph-storage.yaml
+++ b/puppet/ceph-storage.yaml
@@ -139,6 +139,7 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
+ enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
@@ -169,6 +170,7 @@ resources:
mapped_data:
ntp::servers: {get_input: ntp_servers}
tripleo::packages::enable_install: {get_input: enable_package_install}
+ tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
ceph::profile::params::public_network: {get_input: ceph_public_network}
@@ -224,3 +226,4 @@ outputs:
- ','
- - {get_attr: [CephStorageDeployment, deploy_stdout]}
- {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
diff --git a/puppet/cinder-storage.yaml b/puppet/cinder-storage.yaml
index bf024aa8..972523ae 100644
--- a/puppet/cinder-storage.yaml
+++ b/puppet/cinder-storage.yaml
@@ -217,6 +217,7 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
+ enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
# Map heat metadata into hiera datafiles
BlockStorageConfig:
@@ -258,6 +259,7 @@ resources:
cinder::glance::glance_api_servers: {get_input: glance_api_servers}
ntp::servers: {get_input: ntp_servers}
tripleo::packages::enable_install: {get_input: enable_package_install}
+ tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
@@ -304,4 +306,8 @@ outputs:
value: {get_attr: [StorageMgmtPort, ip_address]}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
- value: {get_attr: [BlockStorageDeployment, deploy_stdout]}
+ value:
+ list_join:
+ - ''
+ - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
diff --git a/puppet/compute.yaml b/puppet/compute.yaml
index cac37d71..bdee93dd 100644
--- a/puppet/compute.yaml
+++ b/puppet/compute.yaml
@@ -360,6 +360,7 @@ resources:
- all_nodes # provided by allNodesConfig
- '"%{::osfamily}"'
- common
+ - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
datafiles:
compute_extraconfig:
mapped_data: {get_param: NovaComputeExtraConfig}
@@ -429,6 +430,7 @@ resources:
admin_password: {get_input: admin_password}
ntp::servers: {get_input: ntp_servers}
tripleo::packages::enable_install: {get_input: enable_package_install}
+ tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
NovaComputeDeployment:
type: OS::TripleO::SoftwareDeployment
@@ -544,6 +546,7 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
+ enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
# Hook for site-specific additional pre-deployment config, e.g extra hieradata
ComputeExtraConfigPre:
@@ -608,3 +611,4 @@ outputs:
- ','
- - {get_attr: [NovaComputeDeployment, deploy_stdout]}
- {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index bd9cfadf..3b7ec7e7 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -505,6 +505,9 @@ parameters:
GlanceApiVirtualIP:
type: string
default: ''
+ GlanceRegistryVirtualIP:
+ type: string
+ default: ''
MysqlVirtualIP:
type: string
default: ''
@@ -888,6 +891,7 @@ resources:
swift_min_part_hours: {get_param: SwiftMinPartHours}
swift_mount_check: {get_param: SwiftMountCheck}
enable_package_install: {get_param: EnablePackageInstall}
+ enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
swift_proxy_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
cinder_iscsi_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
@@ -902,6 +906,7 @@ resources:
- {get_param: GlanceApiVirtualIP}
- ':'
- {get_param: GlancePort}
+ glance_registry_host: {get_param: GlanceRegistryVirtualIP}
heat_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
keystone_public_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
keystone_admin_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
@@ -948,6 +953,7 @@ resources:
- cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
- neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
- neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
+ - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
datafiles:
controller_extraconfig:
mapped_data: {get_param: ControllerExtraConfig}
@@ -1019,7 +1025,7 @@ resources:
glance::api::bind_host: {get_input: glance_api_network}
glance::api::auth_uri: {get_input: keystone_auth_uri}
glance::api::identity_uri: {get_input: keystone_identity_uri}
- glance::api::registry_host: {get_input: glance_registry_network}
+ glance::api::registry_host: {get_input: glance_registry_host}
glance::api::keystone_password: {get_input: glance_password}
glance::api::debug: {get_input: debug}
glance_notifier_strategy: {get_input: glance_notifier_strategy}
@@ -1028,7 +1034,7 @@ resources:
glance::api::database_connection: {get_input: glance_dsn}
glance::registry::keystone_password: {get_input: glance_password}
glance::registry::database_connection: {get_input: glance_dsn}
- glance::registry::bind_host: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
+ glance::registry::bind_host: {get_input: glance_registry_network}
glance::registry::auth_uri: {get_input: keystone_auth_uri}
glance::registry::identity_uri: {get_input: keystone_identity_uri}
glance::registry::debug: {get_input: debug}
@@ -1196,6 +1202,7 @@ resources:
tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
tripleo::packages::enable_install: {get_input: enable_package_install}
+ tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
# Hook for site-specific additional pre-deployment config, e.g extra hieradata
ControllerExtraConfigPre:
@@ -1285,6 +1292,7 @@ outputs:
description: identifier which changes if the controller configuration may need re-applying
value:
list_join:
- - ','
- - - {get_attr: [ControllerDeployment, deploy_stdout]}
- - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
+ - ','
+ - - {get_attr: [ControllerDeployment, deploy_stdout]}
+ - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
diff --git a/puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml b/puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml
new file mode 100644
index 00000000..5985116b
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml
@@ -0,0 +1,174 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Cisco N1KV configuration
+
+parameters:
+ server:
+ description: ID of the controller node to apply this config to
+ type: string
+
+ # Config specific parameters, to be provided via parameter_defaults
+ N1000vVSMIP:
+ type: string
+ default: '192.0.2.50'
+ N1000vVSMDomainID:
+ type: number
+ default: 100
+ N1000vVSMIPV6:
+ type: string
+ default: '::1'
+ N1000vVEMHostMgmtIntf:
+ type: string
+ default: 'br-ex'
+ N1000vUplinkProfile:
+ type: string
+ default: '{eth1: system-uplink,}'
+ N1000vVtepConfig:
+ type: string
+ default: '{}'
+ N1000vVEMSource:
+ type: string
+ default: ''
+ N1000vVEMVersion:
+ type: string
+ default: ''
+ N1000vPortDB:
+ type: string
+ default: 'ovs'
+ N1000vVtepsInSameSub:
+ type: boolean
+ default: false
+ N1000vVEMFastpathFlood:
+ type: string
+ default: 'enable'
+#VSM Puppet Parameter
+ N1000vVSMSource:
+ type: string
+ default: ''
+ N1000vVSMVersion:
+ type: string
+ default: 'latest'
+ N1000vVSMHostMgmtIntf:
+ type: string
+ default: 'br-ex'
+ N1000vVSMRole:
+ type: string
+ default: 'primary'
+ N1000vVSMPassword:
+ type: string
+ default: 'Password'
+ N1000vMgmtNetmask:
+ type: string
+ default: '255.255.255.0'
+ N1000vMgmtGatewayIP:
+ type: string
+ default: '192.0.2.1'
+ N1000vPacemakerControl:
+ type: boolean
+ default: true
+ N1000vExistingBridge:
+ type: boolean
+ default: true
+#Plugin Parameters
+ N1000vVSMUser:
+ type: string
+ default: 'admin'
+ N1000vPollDuration:
+ type: number
+ default: 60
+ N1000vHttpPoolSize:
+ type: number
+ default: 5
+ N1000vHttpTimeout:
+ type: number
+ default: 15
+ N1000vSyncInterval:
+ type: number
+ default: 300
+ N1000vMaxVSMRetries:
+ type: number
+ default: 2
+
+resources:
+ CiscoN1kvConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ hiera:
+ datafiles:
+ cisco_n1kv_data:
+ mapped_data:
+ #enable_cisco_n1kv: {get_input: EnableCiscoN1kv}
+ # VEM Parameters
+ n1kv_vem_source: {get_input: n1kv_vem_source}
+ n1kv_vem_version: {get_input: n1kv_vem_version}
+ neutron::agents::n1kv_vem::n1kv_vsm_ip: {get_input: n1kv_vsm_ip}
+ neutron::agents::n1kv_vem::n1kv_vsm_domain_id: {get_input: n1kv_vsm_domain_id}
+ neutron::agents::n1kv_vem::n1kv_vsm_ip_v6: {get_input: n1kv_vsm_ip_v6}
+ neutron::agents::n1kv_vem::host_mgmt_intf: {get_input: n1kv_vem_host_mgmt_intf}
+ neutron::agents::n1kv_vem::uplink_profile: {get_input: n1kv_vem_uplink_profile}
+ neutron::agents::n1kv_vem::vtep_config: {get_input: n1kv_vem_vtep_config}
+ neutron::agents::n1kv_vem::portdb: {get_input: n1kv_vem_portdb}
+ neutron::agents::n1kv_vem::vteps_in_same_subnet: {get_input: n1kv_vem_vteps_in_same_subnet}
+ neutron::agents::n1kv_vem::fastpath_flood: {get_input: n1kv_vem_fastpath_flood}
+ #VSM Parameter
+ n1kv_vsm_source: {get_input: n1kv_vsm_source}
+ n1kv_vsm_version: {get_input: n1kv_vsm_version}
+ n1k_vsm::phy_if_bridge: {get_input: n1kv_vsm_host_mgmt_intf}
+ n1k_vsm::vsm_role: {get_input: n1kv_vsm_role}
+ n1k_vsm::pacemaker_control: {get_input: n1kv_vsm_pacemaker_ctrl}
+ n1k_vsm::existing_bridge: {get_input: n1kv_vsm_existing_br}
+ n1k_vsm::vsm_admin_passwd: {get_input: n1kv_vsm_password}
+ n1k_vsm::vsm_domain_id: {get_input: n1kv_vsm_domain_id}
+ n1k_vsm::vsm_mgmt_ip: {get_input: n1kv_vsm_ip}
+ n1k_vsm::vsm_mgmt_netmask: {get_input: n1kv_vsm_mgmt_netmask}
+ n1k_vsm::vsm_mgmt_gateway: {get_input: n1kv_vsm_gateway_ip}
+ n1k_vsm::phy_gateway: {get_input: n1kv_vsm_gateway_ip}
+ # Cisco N1KV driver Parameters
+ neutron::plugins::ml2::cisco::nexus1000v::n1kv_vsm_ip: {get_input: n1kv_vsm_ip}
+ neutron::plugins::ml2::cisco::nexus1000v::n1kv_vsm_username: {get_input: n1kv_vsm_username}
+ neutron::plugins::ml2::cisco::nexus1000v::n1kv_vsm_password: {get_input: n1kv_vsm_password}
+ neutron::plugins::ml2::cisco::nexus1000v::poll_duration: {get_input: n1kv_vsm_poll_duration}
+ neutron::plugins::ml2::cisco::nexus1000v::http_pool_size: {get_input: n1kv_vsm_http_pool_size}
+ neutron::plugins::ml2::cisco::nexus1000v::http_timeout: {get_input: n1kv_vsm_http_timeout}
+ neutron::plugins::ml2::cisco::nexus1000v::n1kv_vsm_sync_interval: {get_input: n1kv_vsm_sync_interval}
+ neutron::plugins::ml2::cisco::nexus1000v::max_vsm_retries: {get_input: n1kv_max_vsm_retries}
+
+ CiscoN1kvDeployment:
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: CiscoN1kvConfig}
+ server: {get_param: server}
+ input_values:
+ n1kv_vsm_ip: {get_param: N1000vVSMIP}
+ n1kv_vsm_domain_id: {get_param: N1000vVSMDomainID}
+ n1kv_vsm_ip_v6: {get_param: N1000vVSMIPV6}
+ n1kv_vem_host_mgmt_intf: {get_param: N1000vVEMHostMgmtIntf}
+ n1kv_vem_uplink_profile: {get_param: N1000vUplinkProfile}
+ n1kv_vem_vtep_config: {get_param: N1000vVtepConfig}
+ n1kv_vem_source: {get_param: N1000vVEMSource}
+ n1kv_vem_version: {get_param: N1000vVEMVersion}
+ n1kv_vem_portdb: {get_param: N1000vPortDB}
+ n1kv_vem_vteps_in_same_subnet: {get_param: N1000vVtepsInSameSub}
+ n1kv_vem_fastpath_flood: {get_param: N1000vVEMFastpathFlood}
+ n1kv_vsm_source: {get_param: N1000vVSMSource}
+ n1kv_vsm_version: {get_param: N1000vVSMVersion}
+ n1kv_vsm_host_mgmt_intf: {get_param: N1000vVSMHostMgmtIntf}
+ n1kv_vsm_role: {get_param: N1000vVSMRole}
+ n1kv_vsm_password: {get_param: N1000vVSMPassword}
+ n1kv_vsm_mgmt_netmask: {get_param: N1000vMgmtNetmask}
+ n1kv_vsm_gateway_ip: {get_param: N1000vMgmtGatewayIP}
+ n1kv_vsm_pacemaker_ctrl: {get_param: N1000vPacemakerControl}
+ n1kv_vsm_existing_br: {get_param: N1000vExistingBridge}
+ n1kv_vsm_username: {get_param: N1000vVSMUser}
+ n1kv_vsm_poll_duration: {get_param: N1000vPollDuration}
+ n1kv_vsm_http_pool_size: {get_param: N1000vHttpPoolSize}
+ n1kv_vsm_http_timeout: {get_param: N1000vHttpTimeout}
+ n1kv_vsm_sync_interval: {get_param: N1000vSyncInterval}
+ n1kv_max_vsm_retries: {get_param: N1000vMaxVSMRetries}
+
+outputs:
+ deploy_stdout:
+ description: Deployment reference, used to trigger puppet apply on changes
+ value: {get_attr: [CiscoN1kvDeployment, deploy_stdout]}
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index a66c1eaa..a4e2766b 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -95,7 +95,6 @@ horizon::django_session_engine: 'django.contrib.sessions.backends.cache'
# mysql
mysql::server::manage_config_file: true
-mysql::server::remove_default_accounts: true
tripleo::loadbalancer::keystone_admin: true
diff --git a/puppet/hieradata/object.yaml b/puppet/hieradata/object.yaml
index 3a379035..d4a0e81d 100644
--- a/puppet/hieradata/object.yaml
+++ b/puppet/hieradata/object.yaml
@@ -1,4 +1,7 @@
# Hiera data for swift storage nodes
+swift::storage::all::incoming_chmod: 'Du=rwx,g=rx,o=rx,Fu=rw,g=r,o=r'
+swift::storage::all::outgoing_chmod: 'Du=rwx,g=rx,o=rx,Fu=rw,g=r,o=r'
+
swift::storage::all::object_pipeline:
- healthcheck
- recon
@@ -15,4 +18,4 @@ swift::proxy::keystone::operator_roles:
- swiftoperator
- ResellerAdmin
-object_classes: [] \ No newline at end of file
+object_classes: []
diff --git a/puppet/manifests/overcloud_cephstorage.pp b/puppet/manifests/overcloud_cephstorage.pp
index 6c5dda42..a88ca2d9 100644
--- a/puppet/manifests/overcloud_cephstorage.pp
+++ b/puppet/manifests/overcloud_cephstorage.pp
@@ -39,3 +39,4 @@ include ::ceph::profile::client
include ::ceph::profile::osd
hiera_include('ceph_classes')
+package_manifest{'/var/lib/tripleo/installed-packages/overcloud_ceph': ensure => present}
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
index e6fa9471..a0ef701a 100644
--- a/puppet/manifests/overcloud_compute.pp
+++ b/puppet/manifests/overcloud_compute.pp
@@ -78,7 +78,16 @@ class { 'neutron::agents::ml2::ovs':
tunnel_types => split(hiera('neutron_tunnel_types'), ','),
}
+if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ class { 'neutron::agents::n1kv_vem':
+ n1kv_source => hiera('n1kv_vem_source', undef),
+ n1kv_version => hiera('n1kv_vem_version', undef),
+ }
+}
+
+
include ::ceilometer
+include ::ceilometer::config
include ::ceilometer::agent::compute
include ::ceilometer::agent::auth
@@ -93,3 +102,4 @@ class { 'snmp':
}
hiera_include('compute_classes')
+package_manifest{'/var/lib/tripleo/installed-packages/overcloud_compute': ensure => present}
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index fdb16ea2..c3302362 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -84,7 +84,8 @@ if hiera('step') >= 2 {
'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
},
- }
+ },
+ remove_default_accounts => true,
}
# FIXME: this should only occur on the bootstrap host (ditto for db syncs)
@@ -245,6 +246,20 @@ if hiera('step') >= 3 {
bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),
tunnel_types => split(hiera('neutron_tunnel_types'), ','),
}
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ include neutron::plugins::ml2::cisco::nexus1000v
+
+ class { 'neutron::agents::n1kv_vem':
+ n1kv_source => hiera('n1kv_vem_source', undef),
+ n1kv_version => hiera('n1kv_vem_version', undef),
+ }
+
+ class { 'n1k_vsm':
+ n1kv_source => hiera('n1kv_vsm_source', undef),
+ n1kv_version => hiera('n1kv_vsm_version', undef),
+ pacemaker_control => false,
+ }
+ }
if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::ucsm
@@ -417,6 +432,7 @@ if hiera('step') >= 3 {
}
}
include ::ceilometer
+ include ::ceilometer::config
include ::ceilometer::api
include ::ceilometer::agent::notification
include ::ceilometer::agent::central
@@ -439,10 +455,17 @@ if hiera('step') >= 3 {
include ::heat::engine
# Horizon
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ $_profile_support = 'cisco'
+ } else {
+ $_profile_support = 'None'
+ }
+ $neutron_options = {'profile_support' => $_profile_support }
$vhost_params = { add_listen => false }
class { 'horizon':
cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
vhost_extra_params => $vhost_params,
+ neutron_options => $neutron_options,
}
$snmpd_user = hiera('snmpd_readonly_user_name')
@@ -462,3 +485,6 @@ if hiera('step') >= 3 {
if hiera('step') >= 4 {
include ::keystone::cron::token_flush
} #END STEP 4
+
+$package_manifest_name = join(['/var/lib/tripleo/installed-packages/overcloud_controller', hiera('step')])
+package_manifest{$package_manifest_name: ensure => present}
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 7615290a..b8fa89f8 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -158,12 +158,13 @@ if hiera('step') >= 1 {
}
class { '::mysql::server':
- create_root_user => false,
- create_root_my_cnf => false,
- config_file => $mysql_config_file,
- override_options => $mysqld_options,
- service_manage => false,
- service_enabled => false,
+ create_root_user => false,
+ create_root_my_cnf => false,
+ config_file => $mysql_config_file,
+ override_options => $mysqld_options,
+ remove_default_accounts => $pacemaker_master,
+ service_manage => false,
+ service_enabled => false,
}
}
@@ -617,6 +618,19 @@ if hiera('step') >= 3 {
include ::neutron::plugins::ml2::cisco::nexus
include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
}
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ include neutron::plugins::ml2::cisco::nexus1000v
+
+ class { 'neutron::agents::n1kv_vem':
+ n1kv_source => hiera('n1kv_vem_source', undef),
+ n1kv_version => hiera('n1kv_vem_version', undef),
+ }
+
+ class { 'n1k_vsm':
+ n1kv_source => hiera('n1kv_vsm_source', undef),
+ n1kv_version => hiera('n1kv_vsm_version', undef),
+ }
+ }
if hiera('neutron_enable_bigswitch_ml2', false) {
include neutron::plugins::ml2::bigswitch::restproxy
@@ -801,6 +815,7 @@ if hiera('step') >= 3 {
}
}
include ::ceilometer
+ include ::ceilometer::config
class { '::ceilometer::api' :
manage_service => false,
enabled => false,
@@ -857,8 +872,17 @@ if hiera('step') >= 3 {
# httpd/apache and horizon
# NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
- include ::apache
+ class { '::apache' :
+ service_enable => false,
+ # service_manage => false, # <-- not supported with horizon&apache mod_wsgi?
+ }
include ::apache::mod::status
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ $_profile_support = 'cisco'
+ } else {
+ $_profile_support = 'None'
+ }
+ $neutron_options = {'profile_support' => $_profile_support }
$vhost_params = {
add_listen => false,
priority => 10,
@@ -867,6 +891,7 @@ if hiera('step') >= 3 {
cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
vhost_extra_params => $vhost_params,
server_aliases => $::hostname,
+ neutron_options => $neutron_options,
}
$snmpd_user = hiera('snmpd_readonly_user_name')
@@ -1048,24 +1073,8 @@ if hiera('step') >= 4 {
ocf_agent_name => "neutron:NetnsCleanup",
clone_params => "interleave=true",
}
- pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
- constraint_type => "order",
- first_resource => "${::keystone::params::service_name}-clone",
- second_resource => "${::neutron::params::server_service}-clone",
- first_action => "start",
- second_action => "start",
- require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
- Pacemaker::Resource::Service[$::neutron::params::server_service]],
- }
- pacemaker::constraint::base { 'neutron-server-to-neutron-ovs-cleanup-constraint':
- constraint_type => "order",
- first_resource => "${::neutron::params::server_service}-clone",
- second_resource => "${::neutron::params::ovs_cleanup_service}-clone",
- first_action => "start",
- second_action => "start",
- require => [Pacemaker::Resource::Service[$::neutron::params::server_service],
- Pacemaker::Resource::Ocf["${::neutron::params::ovs_cleanup_service}"]],
- }
+
+ # neutron - one chain ovs-cleanup-->netns-cleanup-->ovs-agent
pacemaker::constraint::base { 'neutron-ovs-cleanup-to-netns-cleanup-constraint':
constraint_type => "order",
first_resource => "${::neutron::params::ovs_cleanup_service}-clone",
@@ -1098,6 +1107,26 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Ocf["neutron-netns-cleanup"],
Pacemaker::Resource::Service["${::neutron::params::ovs_agent_service}"]],
}
+
+ #another chain keystone-->neutron-server-->ovs-agent-->dhcp-->l3
+ pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
+ constraint_type => "order",
+ first_resource => "${::keystone::params::service_name}-clone",
+ second_resource => "${::neutron::params::server_service}-clone",
+ first_action => "start",
+ second_action => "start",
+ require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
+ Pacemaker::Resource::Service[$::neutron::params::server_service]],
+ }
+ pacemaker::constraint::base { 'neutron-server-to-openvswitch-agent-constraint':
+ constraint_type => "order",
+ first_resource => "${::neutron::params::server_service}-clone",
+ second_resource => "${::neutron::params::ovs_agent_service}-clone",
+ first_action => "start",
+ second_action => "start",
+ require => [Pacemaker::Resource::Service[$::neutron::params::server_service],
+ Pacemaker::Resource::Service[$::neutron::params::ovs_agent_service]],
+ }
pacemaker::constraint::base { 'neutron-openvswitch-agent-to-dhcp-agent-constraint':
constraint_type => "order",
first_resource => "${::neutron::params::ovs_agent_service}-clone",
@@ -1482,7 +1511,34 @@ if hiera('step') >= 4 {
clone_params => "interleave=true",
}
+ #VSM
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ pacemaker::resource::ocf { 'vsm-p' :
+ ocf_agent_name => 'heartbeat:VirtualDomain',
+ resource_params => 'force_stop=true config=/var/spool/cisco/vsm/vsm_primary_deploy.xml',
+ require => Class['n1k_vsm'],
+ meta_params => 'resource-stickiness=INFINITY',
+ }
+ if str2bool(hiera('n1k_vsm::pacemaker_control', 'true')) {
+ pacemaker::resource::ocf { 'vsm-s' :
+ ocf_agent_name => 'heartbeat:VirtualDomain',
+ resource_params => 'force_stop=true config=/var/spool/cisco/vsm/vsm_secondary_deploy.xml',
+ require => Class['n1k_vsm'],
+ meta_params => 'resource-stickiness=INFINITY',
+ }
+ pacemaker::constraint::colocation { 'vsm-colocation-contraint':
+ source => "vsm-p",
+ target => "vsm-s",
+ score => "-INFINITY",
+ require => [Pacemaker::Resource::Ocf['vsm-p'],
+ Pacemaker::Resource::Ocf['vsm-s']],
+ }
+ }
+ }
}
} #END STEP 4
+
+$package_manifest_name = join(['/var/lib/tripleo/installed-packages/overcloud_controller_pacemaker', hiera('step')])
+package_manifest{$package_manifest_name: ensure => present}
diff --git a/puppet/manifests/overcloud_object.pp b/puppet/manifests/overcloud_object.pp
index 59db696e..5f4b070d 100644
--- a/puppet/manifests/overcloud_object.pp
+++ b/puppet/manifests/overcloud_object.pp
@@ -48,4 +48,5 @@ class { 'snmp':
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
-hiera_include('object_classes') \ No newline at end of file
+hiera_include('object_classes')
+package_manifest{'/var/lib/tripleo/installed-packages/overcloud_object': ensure => present}
diff --git a/puppet/manifests/overcloud_volume.pp b/puppet/manifests/overcloud_volume.pp
index d1f6d6a5..eaaed66e 100644
--- a/puppet/manifests/overcloud_volume.pp
+++ b/puppet/manifests/overcloud_volume.pp
@@ -52,4 +52,5 @@ class { 'snmp':
snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
}
-hiera_include('volume_classes') \ No newline at end of file
+hiera_include('volume_classes')
+package_manifest{'/var/lib/tripleo/installed-packages/overcloud_volume': ensure => present}
diff --git a/puppet/manifests/ringbuilder.pp b/puppet/manifests/ringbuilder.pp
index 14fbafdd..1897dcd0 100644
--- a/puppet/manifests/ringbuilder.pp
+++ b/puppet/manifests/ringbuilder.pp
@@ -90,3 +90,5 @@ class tripleo::ringbuilder (
}
include ::tripleo::ringbuilder
+
+package_manifest{'/var/lib/tripleo/installed-packages/ringbuilder': ensure => present}
diff --git a/puppet/swift-storage.yaml b/puppet/swift-storage.yaml
index 5b7c28bf..22ec6096 100644
--- a/puppet/swift-storage.yaml
+++ b/puppet/swift-storage.yaml
@@ -189,6 +189,7 @@ resources:
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
tripleo::packages::enable_install: {get_input: enable_package_install}
+ tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
SwiftStorageHieraDeploy:
@@ -212,6 +213,7 @@ resources:
params:
server: {get_param: NtpServer}
enable_package_install: {get_param: EnablePackageInstall}
+ enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
# Hook for site-specific additional pre-deployment config,
@@ -264,4 +266,8 @@ outputs:
value: {get_attr: [StorageMgmtPort, ip_address]}
config_identifier:
description: identifier which changes if the node configuration may need re-applying
- value: {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
+ value:
+ list_join:
+ - ','
+ - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
diff --git a/setup.cfg b/setup.cfg
index f765a7dd..7b192c46 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -2,7 +2,7 @@
name = tripleo-heat-templates
summary = Heat templates for deploying OpenStack with OpenStack.
description-file =
- README.md
+ README.rst
author = OpenStack
author_email = openstack-dev@lists.openstack.org
license = Apache License (2.0)