summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md10
-rw-r--r--README.rst55
-rw-r--r--base.yaml77
-rw-r--r--debian-mirror.yaml31
-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/config-debug.yaml5
-rw-r--r--environments/docker-rdo.yaml17
-rw-r--r--environments/neutron-ml2-cisco-n1kv.yaml11
-rw-r--r--environments/storage-environment.yaml2
-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
-rw-r--r--extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml2
-rw-r--r--extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml (renamed from extraconfig/post_deploy/rhel-registration/environment-rhel-registration.yaml)0
-rw-r--r--extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml2
-rw-r--r--extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml (renamed from extraconfig/post_deploy/rhel-registration/rhel-registration.yaml)18
-rw-r--r--extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration (renamed from extraconfig/post_deploy/rhel-registration/scripts/rhel-registration)0
-rw-r--r--extraconfig/pre_deploy/rhel-registration/scripts/rhel-unregistration (renamed from extraconfig/post_deploy/rhel-registration/scripts/rhel-unregistration)0
-rwxr-xr-xextraconfig/tasks/yum_update.sh8
-rw-r--r--nagios3.yaml137
-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)2
-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)1
-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)5
-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)8
-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-puppet.yaml2
-rw-r--r--overcloud-resource-registry.yaml30
-rw-r--r--overcloud-without-mergepy.yaml48
-rw-r--r--puppet/ceph-storage-post.yaml6
-rw-r--r--puppet/ceph-storage.yaml8
-rw-r--r--puppet/cinder-storage-post.yaml6
-rw-r--r--puppet/cinder-storage.yaml9
-rw-r--r--puppet/compute-post.yaml6
-rw-r--r--puppet/compute.yaml16
-rw-r--r--puppet/controller-config-pacemaker.yaml7
-rw-r--r--puppet/controller-config.yaml7
-rw-r--r--puppet/controller-post.yaml5
-rw-r--r--puppet/controller.yaml127
-rw-r--r--puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml2
-rw-r--r--puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml174
-rw-r--r--puppet/hieradata/common.yaml2
-rw-r--r--puppet/hieradata/compute.yaml4
-rw-r--r--puppet/hieradata/controller.yaml12
-rw-r--r--puppet/manifests/overcloud_compute.pp14
-rw-r--r--puppet/manifests/overcloud_controller.pp29
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp140
-rw-r--r--puppet/swift-storage-post.yaml8
-rw-r--r--puppet/swift-storage.yaml8
-rw-r--r--setup.cfg2
-rw-r--r--validation-scripts/all-nodes.sh22
93 files changed, 1128 insertions, 2556 deletions
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/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/config-debug.yaml b/environments/config-debug.yaml
new file mode 100644
index 00000000..b176c255
--- /dev/null
+++ b/environments/config-debug.yaml
@@ -0,0 +1,5 @@
+# A Heat environment file which can be used to enable config
+# management (e.g. Puppet) debugging.
+
+parameter_defaults:
+ ConfigDebug: true
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/environments/storage-environment.yaml b/environments/storage-environment.yaml
index 535ec6fe..5ccfa58e 100644
--- a/environments/storage-environment.yaml
+++ b/environments/storage-environment.yaml
@@ -1,7 +1,7 @@
## A Heat environment file which can be used to set up storage
## backends. Defaults to Ceph used as a backend for Cinder, Glance and
## Nova ephemeral storage.
-parameters:
+parameter_defaults:
#### BACKEND SELECTION ####
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/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml b/extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml
deleted file mode 100644
index 7b48392d..00000000
--- a/extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-resource_registry:
- OS::TripleO::NodeExtraConfigPost: rhel-registration.yaml
diff --git a/extraconfig/post_deploy/rhel-registration/environment-rhel-registration.yaml b/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml
index 70437a8a..70437a8a 100644
--- a/extraconfig/post_deploy/rhel-registration/environment-rhel-registration.yaml
+++ b/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml
diff --git a/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml b/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml
new file mode 100644
index 00000000..75453302
--- /dev/null
+++ b/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml
@@ -0,0 +1,2 @@
+resource_registry:
+ OS::TripleO::NodeExtraConfig: rhel-registration.yaml
diff --git a/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml b/extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml
index bf6c88cd..d5160915 100644
--- a/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml
+++ b/extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml
@@ -6,8 +6,8 @@ description: >
# Note extra parameters can be defined, then passed data via the
# environment parameter_defaults, without modifying the parent template
parameters:
- servers:
- type: json
+ server:
+ type: string
# To be defined via a local or global environment in parameter_defaults
rhel_reg_activation_key:
type: string
@@ -71,9 +71,9 @@ resources:
config: {get_file: scripts/rhel-registration}
RHELRegistrationDeployment:
- type: OS::Heat::SoftwareDeployments
+ type: OS::Heat::SoftwareDeployment
properties:
- servers: {get_param: servers}
+ server: {get_param: server}
config: {get_resource: RHELRegistration}
actions: ['CREATE'] # Only do this on CREATE
input_values:
@@ -104,10 +104,16 @@ resources:
- name: REG_METHOD
RHELUnregistrationDeployment:
- type: OS::Heat::SoftwareDeployments
+ type: OS::Heat::SoftwareDeployment
properties:
- servers: {get_param: servers}
+ server: {get_param: server}
config: {get_resource: RHELUnregistration}
actions: ['DELETE'] # Only do this on DELETE
input_values:
REG_METHOD: {get_param: rhel_reg_method}
+
+outputs:
+ deploy_stdout:
+ description: Deployment reference, used to trigger puppet apply on changes
+ value: {get_attr: [RHELRegistrationDeployment, deploy_stdout]}
+
diff --git a/extraconfig/post_deploy/rhel-registration/scripts/rhel-registration b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration
index cbbd6a1d..cbbd6a1d 100644
--- a/extraconfig/post_deploy/rhel-registration/scripts/rhel-registration
+++ b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration
diff --git a/extraconfig/post_deploy/rhel-registration/scripts/rhel-unregistration b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-unregistration
index 1e72e0a6..1e72e0a6 100644
--- a/extraconfig/post_deploy/rhel-registration/scripts/rhel-unregistration
+++ b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-unregistration
diff --git a/extraconfig/tasks/yum_update.sh b/extraconfig/tasks/yum_update.sh
index eaeb7ef0..9125ca07 100755
--- a/extraconfig/tasks/yum_update.sh
+++ b/extraconfig/tasks/yum_update.sh
@@ -44,7 +44,13 @@ 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
+ node_count=$(pcs status xml | grep -o "<nodes_configured.*/>" | grep -o 'number="[0-9]*"' | grep -o "[0-9]*")
+ if [[ "$node_count" == "1" ]] ; then
+ echo "Active node count is 1, stopping node with --force"
+ pcs cluster stop --force
+ else
+ pcs cluster stop
+ fi
else
echo "Excluding upgrading packages that are handled by config management tooling"
command_arguments="$command_arguments --skip-broken"
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/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..fc321d88 100644
--- a/ceph-storage.yaml
+++ b/os-apply-config/ceph-storage.yaml
@@ -20,10 +20,12 @@ parameters:
default: ''
description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
type: string
+ hidden: true
CephAdminKey:
default: ''
description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
type: string
+ hidden: true
CephMonitors:
default: ''
description: The list of ip/names to use as Ceph monitors
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..7f1164c4 100644
--- a/cinder-storage.yaml
+++ b/os-apply-config/cinder-storage.yaml
@@ -87,6 +87,7 @@ parameters:
RabbitPassword:
default: 'guest'
type: string
+ hidden: true
RabbitUserName:
default: 'guest'
type: string
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..ee55c587 100644
--- a/compute.yaml
+++ b/os-apply-config/compute.yaml
@@ -29,6 +29,10 @@ parameters:
default: false
description: Whether to enable or not the NFS backend for Cinder
type: boolean
+ CinderEnableRbdBackend:
+ default: false
+ description: Whether to enable or not the Rbd backend for Cinder
+ type: boolean
Debug:
default: ''
description: Set to True to enable debugging on all services.
@@ -181,6 +185,7 @@ parameters:
default: 'unset'
description: Shared secret to prevent spoofing
type: string
+ hidden: true
NeutronCorePlugin:
default: "ml2"
description: |
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..f289d9b5 100644
--- a/controller.yaml
+++ b/os-apply-config/controller.yaml
@@ -215,9 +215,11 @@ parameters:
HeatAuthEncryptionKey:
description: Auth encryption key for heat-engine
type: string
+ hidden: true
HorizonSecret:
description: Secret key for Django
type: string
+ hidden: true
Image:
type: string
default: overcloud-control
@@ -317,6 +319,7 @@ parameters:
default: 'unset'
description: Shared secret to prevent spoofing
type: string
+ hidden: true
NeutronCorePlugin:
default: 'ml2'
description: |
@@ -434,6 +437,7 @@ parameters:
PcsdPassword:
type: string
description: The password for the 'pcsd' user.
+ hidden: true
PublicVirtualInterface:
default: 'br-ex'
description: >
@@ -466,6 +470,10 @@ parameters:
default: 5672
description: Set rabbit subscriber port, change this if using SSL
type: number
+ RabbitFDLimit:
+ default: 16384
+ description: Configures RabbitMQ FD limit
+ type: string
RedisVirtualIP:
type: string
default: '' # Has to be here because of the ignored empty value bug
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-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index b527c10f..7e65d4b1 100644
--- a/overcloud-resource-registry-puppet.yaml
+++ b/overcloud-resource-registry-puppet.yaml
@@ -30,11 +30,13 @@ resource_registry:
# Hooks for operator extra config
# NodeUserData == Cloud-init additional user-data, e.g cloud-config
# ControllerExtraConfigPre == Controller configuration pre service deployment
+ # NodeExtraConfig == All nodes configuration pre service deployment
# NodeExtraConfigPost == All nodes configuration post service deployment
OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
OS::TripleO::ComputeExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
OS::TripleO::CephStorageExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
+ OS::TripleO::NodeExtraConfig: puppet/extraconfig/pre_deploy/default.yaml
OS::TripleO::NodeExtraConfigPost: extraconfig/post_deploy/default.yaml
# "AllNodes" Extra cluster config, runs on all nodes prior to the post_deploy
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..9c915c4a 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -1,8 +1,10 @@
heat_template_version: 2015-04-30
description: >
- Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
- server,Dedicated RabbitMQ Server,Group of Nova Computes
+ Deploy an OpenStack environment, consisting of several node types (roles),
+ Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
+ roles enable independent scaling of the storage components, but the minimal
+ deployment is one Controller and one Compute node.
# TODO(shadower): we should probably use the parameter groups to put
@@ -38,10 +40,12 @@ parameters:
default: ''
description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
type: string
+ hidden: true
CephAdminKey:
default: ''
description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
type: string
+ hidden: true
CinderEnableNfsBackend:
default: false
description: Whether to enable or not the NFS backend for Cinder
@@ -50,6 +54,7 @@ parameters:
default: ''
description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
type: string
+ hidden: true
CephExternalMonHost:
default: ''
type: string
@@ -58,6 +63,10 @@ parameters:
default: true
description: Whether to enable or not the Iscsi backend for Cinder
type: boolean
+ CinderEnableRbdBackend:
+ default: false
+ description: Whether to enable or not the Rbd backend for Cinder
+ type: boolean
CloudName:
default: ''
description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
@@ -78,6 +87,14 @@ parameters:
default: http
description: Protocol to use when connecting to glance, set to https for SSL.
type: string
+ HAProxySyslogAddress:
+ default: /dev/log
+ description: Syslog address where HAproxy will send its log
+ type: string
+ HorizonAllowedHosts:
+ default: '*'
+ description: A list of IP/Hostname allowed to connect to horizon
+ type: comma_delimited_list
ImageUpdatePolicy:
default: 'REBUILD_PRESERVE_EPHEMERAL'
description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
@@ -103,9 +120,9 @@ parameters:
type: string
default: "datacentre:br-ex"
NeutronControlPlaneID:
- default: ''
+ default: 'ctlplane'
type: string
- description: Neutron ID for ctlplane network.
+ description: Neutron ID or name for ctlplane network.
NeutronEnableTunnelling:
type: string
default: "True"
@@ -154,6 +171,7 @@ parameters:
default: 'unset'
description: Shared secret to prevent spoofing
type: string
+ hidden: true
NeutronTunnelTypes:
default: 'vxlan'
description: |
@@ -249,6 +267,11 @@ parameters:
default: 5672
description: Set rabbit subscriber port, change this if using SSL
type: number
+ # We need to set this as string because 'unlimited' is a valid setting
+ RabbitFDLimit:
+ default: 16384
+ description: Configures RabbitMQ FD limit
+ type: string
SnmpdReadonlyUserName:
default: ro_snmp_user
description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@@ -265,10 +288,6 @@ parameters:
description: The keystone auth secret.
type: string
hidden: true
- CinderEnableRbdBackend:
- default: false
- description: Whether to enable or not the Rbd backend for Cinder
- type: boolean
CinderLVMLoopDeviceSize:
default: 5000
description: The size of the loopback file used by the cinder LVM driver.
@@ -297,6 +316,8 @@ parameters:
ControllerCount:
type: number
default: 1
+ constraints:
+ - range: {min: 1}
controllerExtraConfig:
default: {}
description: |
@@ -777,9 +798,11 @@ resources:
GlanceBackend: {get_param: GlanceBackend}
GlanceNotifierStrategy: {get_param: GlanceNotifierStrategy}
GlanceLogFile: {get_param: GlanceLogFile}
+ HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
HeatPassword: {get_param: HeatPassword}
HeatStackDomainAdminPassword: {get_param: HeatStackDomainAdminPassword}
HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
+ HorizonAllowedHosts: {get_param: HorizonAllowedHosts}
HorizonSecret: {get_resource: HorizonSecret}
Image: {get_param: controllerImage}
ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
@@ -828,6 +851,7 @@ resources:
RabbitCookie: {get_attr: [RabbitCookie, value]}
RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
RabbitClientPort: {get_param: RabbitClientPort}
+ RabbitFDLimit: {get_param: RabbitFDLimit}
SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
@@ -843,8 +867,13 @@ resources:
VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
PublicVirtualIP: {get_attr: [PublicVirtualIP, ip_address]}
ServiceNetMap: {get_param: ServiceNetMap}
+ CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+ CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
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]}]}
+ NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+ SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
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]}]}
@@ -870,6 +899,7 @@ resources:
CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
CeilometerPassword: {get_param: CeilometerPassword}
CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
+ CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
Debug: {get_param: Debug}
ExtraConfig: {get_param: ExtraConfig}
Flavor: {get_param: OvercloudComputeFlavor}
@@ -1077,7 +1107,7 @@ resources:
depends_on: Networks
properties:
name: control_virtual_ip
- network_id: {get_param: NeutronControlPlaneID}
+ network: {get_param: NeutronControlPlaneID}
fixed_ips: {get_param: ControlFixedIPs}
replacement_policy: AUTO
diff --git a/puppet/ceph-storage-post.yaml b/puppet/ceph-storage-post.yaml
index 1b5b944d..0f7dd36f 100644
--- a/puppet/ceph-storage-post.yaml
+++ b/puppet/ceph-storage-post.yaml
@@ -4,6 +4,10 @@ description: >
OpenStack ceph storage node post deployment for Puppet
parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
servers:
type: json
NodeConfigIdentifiers:
@@ -16,6 +20,8 @@ resources:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
+ options:
+ enable_debug: {get_param: ConfigDebug}
outputs:
- name: result
config:
diff --git a/puppet/ceph-storage.yaml b/puppet/ceph-storage.yaml
index 1213d3df..75294599 100644
--- a/puppet/ceph-storage.yaml
+++ b/puppet/ceph-storage.yaml
@@ -181,6 +181,14 @@ resources:
properties:
server: {get_resource: CephStorage}
+ # Hook for site-specific additional pre-deployment config,
+ # applying to all nodes, e.g node registration/unregistration
+ NodeExtraConfig:
+ depends_on: CephStorageExtraConfigPre
+ type: OS::TripleO::NodeExtraConfig
+ properties:
+ server: {get_resource: CephStorage}
+
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
diff --git a/puppet/cinder-storage-post.yaml b/puppet/cinder-storage-post.yaml
index 24d2b8a3..c97cfcf9 100644
--- a/puppet/cinder-storage-post.yaml
+++ b/puppet/cinder-storage-post.yaml
@@ -2,6 +2,10 @@ heat_template_version: 2015-04-30
description: 'OpenStack cinder storage post deployment for Puppet'
parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
servers:
type: json
NodeConfigIdentifiers:
@@ -14,6 +18,8 @@ resources:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
+ options:
+ enable_debug: {get_param: ConfigDebug}
outputs:
- name: result
config:
diff --git a/puppet/cinder-storage.yaml b/puppet/cinder-storage.yaml
index 5779c097..6a869219 100644
--- a/puppet/cinder-storage.yaml
+++ b/puppet/cinder-storage.yaml
@@ -59,6 +59,7 @@ parameters:
RabbitPassword:
default: 'guest'
type: string
+ hidden: true
RabbitUserName:
default: 'guest'
type: string
@@ -263,6 +264,14 @@ resources:
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
+ # Hook for site-specific additional pre-deployment config,
+ # applying to all nodes, e.g node registration/unregistration
+ NodeExtraConfig:
+ depends_on: BlockStorageDeployment
+ type: OS::TripleO::NodeExtraConfig
+ properties:
+ server: {get_resource: BlockStorage}
+
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
diff --git a/puppet/compute-post.yaml b/puppet/compute-post.yaml
index b4a6126b..b63b06b4 100644
--- a/puppet/compute-post.yaml
+++ b/puppet/compute-post.yaml
@@ -4,6 +4,10 @@ description: >
OpenStack compute node post deployment for Puppet.
parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
servers:
type: json
NodeConfigIdentifiers:
@@ -17,6 +21,8 @@ resources:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
+ options:
+ enable_debug: {get_param: ConfigDebug}
outputs:
- name: result
config:
diff --git a/puppet/compute.yaml b/puppet/compute.yaml
index e1e84f04..2b635357 100644
--- a/puppet/compute.yaml
+++ b/puppet/compute.yaml
@@ -29,6 +29,10 @@ parameters:
default: false
description: Whether to enable or not the NFS backend for Cinder
type: boolean
+ CinderEnableRbdBackend:
+ default: false
+ description: Whether to enable or not the Rbd backend for Cinder
+ type: boolean
Debug:
default: ''
description: Set to True to enable debugging on all services.
@@ -149,6 +153,7 @@ parameters:
default: 'unset'
description: Shared secret to prevent spoofing
type: string
+ hidden: true
NeutronCorePlugin:
default: 'ml2'
description: |
@@ -360,6 +365,7 @@ resources:
- all_nodes # provided by allNodesConfig
- '"%{::osfamily}"'
- common
+ - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
datafiles:
compute_extraconfig:
mapped_data: {get_param: NovaComputeExtraConfig}
@@ -383,6 +389,7 @@ resources:
nova_api_host: {get_input: nova_api_host}
nova::compute::vncproxy_host: {get_input: nova_public_ip}
nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
+ rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
nova_password: {get_input: nova_password}
nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
ceilometer::debug: {get_input: debug}
@@ -446,6 +453,7 @@ resources:
nova_api_host: {get_param: NovaApiHost}
nova_password: {get_param: NovaPassword}
nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
+ cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
@@ -554,6 +562,14 @@ resources:
properties:
server: {get_resource: NovaCompute}
+ # Hook for site-specific additional pre-deployment config,
+ # applying to all nodes, e.g node registration/unregistration
+ NodeExtraConfig:
+ depends_on: ComputeExtraConfigPre
+ type: OS::TripleO::NodeExtraConfig
+ properties:
+ server: {get_resource: NovaCompute}
+
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
diff --git a/puppet/controller-config-pacemaker.yaml b/puppet/controller-config-pacemaker.yaml
index 38161cd7..dc81498a 100644
--- a/puppet/controller-config-pacemaker.yaml
+++ b/puppet/controller-config-pacemaker.yaml
@@ -3,6 +3,12 @@ heat_template_version: 2015-04-30
description: >
A software config which runs manifests/overcloud_controller_pacemaker.pp
+parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
+
resources:
ControllerPuppetConfigImpl:
@@ -10,6 +16,7 @@ resources:
properties:
group: puppet
options:
+ enable_debug: {get_param: ConfigDebug}
enable_hiera: True
enable_facter: False
outputs:
diff --git a/puppet/controller-config.yaml b/puppet/controller-config.yaml
index 4135ffac..f85e1a9e 100644
--- a/puppet/controller-config.yaml
+++ b/puppet/controller-config.yaml
@@ -3,6 +3,12 @@ heat_template_version: 2015-04-30
description: >
A software config which runs manifests/overcloud_controller.pp
+parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
+
resources:
ControllerPuppetConfigImpl:
@@ -10,6 +16,7 @@ resources:
properties:
group: puppet
options:
+ enable_debug: {get_param: ConfigDebug}
enable_hiera: True
enable_facter: False
outputs:
diff --git a/puppet/controller-post.yaml b/puppet/controller-post.yaml
index 49cbe1e2..941e1ac5 100644
--- a/puppet/controller-post.yaml
+++ b/puppet/controller-post.yaml
@@ -4,6 +4,10 @@ description: >
OpenStack controller node post deployment for Puppet.
parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
servers:
type: json
NodeConfigIdentifiers:
@@ -46,6 +50,7 @@ resources:
properties:
group: puppet
options:
+ enable_debug: {get_param: ConfigDebug}
enable_hiera: True
enable_facter: False
inputs:
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index 8d10482c..4504428d 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -4,6 +4,11 @@ description: >
OpenStack controller node configured by Puppet.
parameters:
+ AdminEmail:
+ default: 'admin@example.com'
+ description: The email for the keystone admin account.
+ type: string
+ hidden: true
AdminPassword:
default: unset
description: The password for the keystone admin account, used for monitoring, querying neutron etc.
@@ -14,6 +19,9 @@ parameters:
description: The keystone auth secret and db password.
type: string
hidden: true
+ CeilometerApiVirtualIP:
+ type: string
+ default: ''
CeilometerBackend:
default: 'mongodb'
description: The ceilometer backend type.
@@ -28,6 +36,9 @@ parameters:
description: The password for the ceilometer service and db account.
type: string
hidden: true
+ CinderApiVirtualIP:
+ type: string
+ default: ''
CinderEnableNfsBackend:
default: false
description: Whether to enable or not the NFS backend for Cinder
@@ -174,6 +185,34 @@ parameters:
type: string
constraints:
- allowed_values: ['swift', 'file', 'rbd']
+ GlanceFilePcmkDevice:
+ default: ''
+ description: >
+ An exported storage device that should be mounted by Pacemaker
+ as Glance storage. Effective when GlanceFilePcmkManage is true.
+ type: string
+ GlanceFilePcmkFstype:
+ default: 'nfs'
+ description: >
+ Filesystem type for Pacemaker mount used as Glance storage.
+ Effective when GlanceFilePcmkManage is true.
+ type: string
+ GlanceFilePcmkManage:
+ default: false
+ description: >
+ Whether to make Glance file backend a mount managed by Pacemaker.
+ Effective when GlanceBackend is 'file'.
+ type: boolean
+ GlanceFilePcmkOptions:
+ default: ''
+ description: >
+ Mount options for Pacemaker mount used as Glance storage.
+ Effective when GlanceFilePcmkManage is true.
+ type: string
+ HAProxySyslogAddress:
+ default: /dev/log
+ description: Syslog address where HAproxy will send its log
+ type: string
HeatPassword:
default: unset
description: The password for the Heat service and db account, used by the Heat services.
@@ -187,9 +226,15 @@ parameters:
HeatAuthEncryptionKey:
description: Auth encryption key for heat-engine
type: string
+ hidden: true
+ HorizonAllowedHosts:
+ default: '*'
+ description: A list of IP/Hostname allowed to connect to horizon
+ type: comma_delimited_list
HorizonSecret:
description: Secret key for Django
type: string
+ hidden: true
Image:
type: string
default: overcloud-control
@@ -237,6 +282,10 @@ parameters:
type: string
constraints:
- allowed_values: [ 'basic', 'cadf' ]
+ KeystoneRegion:
+ type: string
+ default: 'regionOne'
+ description: Keystone region for endpoint
MysqlClusterUniquePart:
description: A unique identifier of the MySQL cluster the controller is in.
type: string
@@ -297,6 +346,7 @@ parameters:
default: 'unset'
description: Shared secret to prevent spoofing
type: string
+ hidden: true
NeutronCorePlugin:
default: 'ml2'
description: |
@@ -395,6 +445,9 @@ parameters:
of VXLAN VNI IDs that are available for tenant network allocation
default: ["1:1000", ]
type: comma_delimited_list
+ NovaApiVirtualIP:
+ type: string
+ default: ''
NovaPassword:
default: unset
description: The password for the nova service and db account, used by nova-api.
@@ -410,13 +463,14 @@ parameters:
PcsdPassword:
type: string
description: The password for the 'pcsd' user.
+ hidden: true
PublicVirtualInterface:
default: 'br-ex'
description: >
Specifies the interface where the public-facing virtual ip will be assigned.
This should be int_public when a VLAN is being used.
type: string
- PublicVirtualIP: # DEPRECATED: use per service settings instead
+ PublicVirtualIP:
type: string
default: '' # Has to be here because of the ignored empty value bug
RabbitCookie:
@@ -442,6 +496,10 @@ parameters:
default: 5672
description: Set rabbit subscriber port, change this if using SSL
type: number
+ RabbitFDLimit:
+ default: 16384
+ description: Configures RabbitMQ FD limit
+ type: string
RedisVirtualIP:
type: string
default: '' # Has to be here because of the ignored empty value bug
@@ -492,6 +550,9 @@ parameters:
services.
hidden: true
type: string
+ SwiftProxyVirtualIP:
+ type: string
+ default: ''
SwiftReplicas:
type: number
default: 3
@@ -505,6 +566,9 @@ parameters:
GlanceApiVirtualIP:
type: string
default: ''
+ GlanceRegistryVirtualIP:
+ type: string
+ default: ''
MysqlVirtualIP:
type: string
default: ''
@@ -644,6 +708,7 @@ resources:
input_values:
bootstack_nodeid: {get_attr: [Controller, name]}
neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
+ haproxy_log_address: {get_param: HAProxySyslogAddress}
heat.watch_server_url:
list_join:
- ''
@@ -663,7 +728,9 @@ resources:
- {get_param: HeatApiVirtualIP}
- ':8000/v1/waitcondition'
heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
+ horizon_allowed_hosts: {get_param: HorizonAllowedHosts}
horizon_secret: {get_param: HorizonSecret}
+ admin_email: {get_param: AdminEmail}
admin_password: {get_param: AdminPassword}
admin_token: {get_param: AdminToken}
neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
@@ -695,6 +762,10 @@ resources:
glance_port: {get_param: GlancePort}
glance_password: {get_param: GlancePassword}
glance_backend: {get_param: GlanceBackend}
+ glance_file_pcmk_device: {get_param: GlanceFilePcmkDevice}
+ glance_file_pcmk_fstype: {get_param: GlanceFilePcmkFstype}
+ glance_file_pcmk_manage: {get_param: GlanceFilePcmkManage}
+ glance_file_pcmk_options: {get_param: GlanceFilePcmkOptions}
glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
glance_log_file: {get_param: GlanceLogFile}
glance_dsn:
@@ -736,13 +807,25 @@ resources:
- ''
- - 'http://'
- {get_param: KeystoneAdminApiVirtualIP}
- - ':35357/'
+ - ':35357'
keystone_auth_uri:
list_join:
- ''
- - 'http://'
- {get_param: KeystonePublicApiVirtualIP}
- ':5000/v2.0/'
+ keystone_public_url:
+ list_join:
+ - ''
+ - - 'http://'
+ - {get_param: PublicVirtualIP}
+ - ':5000'
+ keystone_internal_url:
+ list_join:
+ - ''
+ - - 'http://'
+ - {get_param: KeystonePublicApiVirtualIP}
+ - ':5000'
keystone_ec2_uri:
list_join:
- ''
@@ -852,7 +935,9 @@ resources:
ceilometer_dsn:
list_join:
- ''
- - - 'mysql://ceilometer:unset@'
+ - - 'mysql://ceilometer:'
+ - {get_param: CeilometerPassword}
+ - '@'
- {get_param: MysqlVirtualIP}
- '/ceilometer'
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
@@ -874,6 +959,14 @@ resources:
rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
rabbit_client_port: {get_param: RabbitClientPort}
mongodb_no_journal: {get_param: MongoDbNoJournal}
+ # We need to force this into quotes or hiera will return integer causing
+ # the puppet module validation regexp to fail.
+ # Remove when: https://github.com/puppetlabs/puppetlabs-rabbitmq/pull/401
+ rabbit_fd_limit:
+ str_replace:
+ template: "'LIMIT'"
+ params:
+ LIMIT: {get_param: RabbitFDLimit}
ntp_servers:
str_replace:
template: '["server"]'
@@ -903,9 +996,11 @@ 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]}]}
+ keystone_region: {get_param: KeystoneRegion}
mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
@@ -949,6 +1044,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}
@@ -1020,7 +1116,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}
@@ -1029,7 +1125,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}
@@ -1038,6 +1134,10 @@ resources:
glance::backend::swift::swift_store_key: {get_input: glance_password}
glance_backend: {get_input: glance_backend}
glance::db::mysql::password: {get_input: glance_password}
+ glance_file_pcmk_device: {get_input: glance_file_pcmk_device}
+ glance_file_pcmk_fstype: {get_input: glance_file_pcmk_fstype}
+ glance_file_pcmk_manage: {get_input: glance_file_pcmk_manage}
+ glance_file_pcmk_options: {get_input: glance_file_pcmk_options}
# Heat
heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
@@ -1078,6 +1178,12 @@ resources:
keystone::rabbit_port: {get_input: rabbit_client_port}
keystone::notification_driver: {get_input: keystone_notification_driver}
keystone::notification_format: {get_input: keystone_notification_format}
+ keystone::roles::admin::email: {get_input: admin_email}
+ keystone::roles::admin::password: {get_input: admin_password}
+ keystone::endpoint::public_url: {get_input: keystone_public_url}
+ keystone::endpoint::internal_url: {get_input: keystone_internal_url}
+ keystone::endpoint::admin_url: {get_input: keystone_identity_uri}
+ keystone::endpoint::region: {get_input: keystone_region}
# MongoDB
mongodb::server::bind_ip: {get_input: mongo_db_network}
mongodb::server::nojournal: {get_input: mongodb_no_journal}
@@ -1177,6 +1283,7 @@ resources:
# Horizon
apache::ip: {get_input: horizon_network}
+ horizon::allowed_hosts: {get_input: horizon_allowed_hosts}
horizon::django_debug: {get_input: debug}
horizon::secret_key: {get_input: horizon_secret}
horizon::bind_address: {get_input: horizon_network}
@@ -1185,6 +1292,7 @@ resources:
# Rabbit
rabbitmq::node_ip_address: {get_input: rabbitmq_network}
rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
+ rabbitmq::file_limit: {get_input: rabbit_fd_limit}
# Redis
redis::bind: {get_input: redis_network}
redis_vip: {get_input: redis_vip}
@@ -1196,6 +1304,7 @@ resources:
public_virtual_interface: {get_input: public_virtual_interface}
tripleo::loadbalancer::control_virtual_interface: {get_input: control_virtual_interface}
tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
+ tripleo::loadbalancer::haproxy_log_address: {get_input: haproxy_log_address}
tripleo::packages::enable_install: {get_input: enable_package_install}
tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
@@ -1206,6 +1315,14 @@ resources:
properties:
server: {get_resource: Controller}
+ # Hook for site-specific additional pre-deployment config,
+ # applying to all nodes, e.g node registration/unregistration
+ NodeExtraConfig:
+ depends_on: ControllerExtraConfigPre
+ type: OS::TripleO::NodeExtraConfig
+ properties:
+ server: {get_resource: Controller}
+
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
diff --git a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
index 18295a2f..7ec2190f 100644
--- a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
+++ b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
@@ -18,6 +18,7 @@ parameters:
type: string
CinderNetappPassword:
type: string
+ hidden: true
CinderNetappServerHostname:
type: string
CinderNetappServerPort:
@@ -65,6 +66,7 @@ parameters:
CinderNetappSaPassword:
type: string
default: ''
+ hidden: true
CinderNetappStoragePools:
type: string
default: ''
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/common.yaml b/puppet/hieradata/common.yaml
index 4a872d57..030f661d 100644
--- a/puppet/hieradata/common.yaml
+++ b/puppet/hieradata/common.yaml
@@ -29,3 +29,5 @@ cinder::rabbit_heartbeat_timeout_threshold: 60
ceilometer::rabbit_heartbeat_timeout_threshold: 60
heat::rabbit_heartbeat_timeout_threshold: 60
keystone::rabbit_heartbeat_timeout_threshold: 60
+
+nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
diff --git a/puppet/hieradata/compute.yaml b/puppet/hieradata/compute.yaml
index d7c1f879..4a94c237 100644
--- a/puppet/hieradata/compute.yaml
+++ b/puppet/hieradata/compute.yaml
@@ -15,10 +15,6 @@ nova::compute::rbd::rbd_keyring: 'client.openstack'
nova::compute::rbd::libvirt_images_rbd_pool: 'vms'
nova::compute::rbd::libvirt_rbd_secret_uuid: "%{hiera('ceph::profile::params::fsid')}"
-nova::config::nova_config:
- cinder/catalog_info:
- value: 'volumev2:cinderv2:internalURL'
-
ceilometer::agent::auth::auth_tenant_name: 'service'
compute_classes: []
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index a66c1eaa..81ee7cfb 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -42,6 +42,8 @@ heat::keystone_tenant: 'service'
# keystone
keystone::cron::token_flush::maxdelay: 3600
+keystone::roles::admin::service_tenant: 'service'
+keystone::roles::admin::admin_tenant: 'admin'
#swift
swift::proxy::pipeline:
@@ -64,6 +66,7 @@ glance::api::pipeline: 'keystone'
glance::registry::pipeline: 'keystone'
glance::backend::swift::swift_store_create_container_on_put: true
glance::backend::rbd::rbd_store_user: 'openstack'
+glance_file_pcmk_directory: '/var/lib/glance/images'
# neutron
neutron::server::sync_db: true
@@ -75,6 +78,9 @@ nova::api::default_floating_pool: 'public'
nova::api::osapi_v3: true
nova::scheduler::filter::ram_allocation_ratio: '1.0'
+# ceilometer
+ceilometer::agent::auth::auth_endpoint_type: 'internalURL'
+
# cinder
cinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler
@@ -90,12 +96,14 @@ pacemaker::resource_defaults::defaults:
resource-stickiness: { value: INFINITY }
# horizon
-horizon::allowed_hosts: '*'
+horizon::cache_backend: django.core.cache.backends.memcached.MemcachedCache
horizon::django_session_engine: 'django.contrib.sessions.backends.cache'
+horizon::vhost_extra_params:
+ add_listen: false
+ priority: 10
# mysql
mysql::server::manage_config_file: true
-mysql::server::remove_default_accounts: true
tripleo::loadbalancer::keystone_admin: true
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
index fb5a3520..2150bab8 100644
--- a/puppet/manifests/overcloud_compute.pp
+++ b/puppet/manifests/overcloud_compute.pp
@@ -43,8 +43,9 @@ nova_config {
'DEFAULT/linuxnet_interface_driver': value => 'nova.network.linux_net.LinuxOVSInterfaceDriver';
}
-$nova_enable_rbd_backend = hiera('nova::compute::rbd::ephemeral_storage', false)
-if $nova_enable_rbd_backend {
+$rbd_ephemeral_storage = hiera('nova::compute::rbd::ephemeral_storage', false)
+$rbd_persistent_storage = hiera('rbd_persistent_storage', false)
+if $rbd_ephemeral_storage or $rbd_persistent_storage {
include ::ceph::profile::client
$client_keys = hiera('ceph::profile::params::client_keys')
@@ -78,7 +79,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
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index 36b91a7b..813309e4 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)
@@ -158,6 +159,8 @@ if hiera('step') >= 2 {
if hiera('step') >= 3 {
include ::keystone
+ include ::keystone::roles::admin
+ include ::keystone::endpoint
#TODO: need a cleanup-keystone-tokens.sh solution here
keystone_config {
@@ -245,6 +248,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 +434,7 @@ if hiera('step') >= 3 {
}
}
include ::ceilometer
+ include ::ceilometer::config
include ::ceilometer::api
include ::ceilometer::agent::notification
include ::ceilometer::agent::central
@@ -439,10 +457,15 @@ if hiera('step') >= 3 {
include ::heat::engine
# Horizon
- $vhost_params = { add_listen => false }
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ $_profile_support = 'cisco'
+ } else {
+ $_profile_support = 'None'
+ }
+ $neutron_options = {'profile_support' => $_profile_support }
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')
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 0a0ce781..71811563 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,
}
}
@@ -330,7 +331,7 @@ if hiera('step') >= 2 {
}
pacemaker::resource::service { $::memcached::params::service_name :
- clone_params => true,
+ clone_params => "interleave=true",
require => Class['::memcached'],
}
@@ -524,6 +525,16 @@ if hiera('step') >= 3 {
$http_store = ['glance.store.http.Store']
$glance_store = concat($http_store, $backend_store)
+ if $glance_backend == 'file' and hiera('glance_file_pcmk_manage', false) {
+ pacemaker::resource::filesystem { "glance-fs":
+ device => hiera('glance_file_pcmk_device'),
+ directory => hiera('glance_file_pcmk_directory'),
+ fstype => hiera('glance_file_pcmk_fstype'),
+ fsoptions => hiera('glance_file_pcmk_options', ''),
+ clone_params => '',
+ }
+ }
+
# TODO: notifications, scrubber, etc.
include ::glance
class { 'glance::api':
@@ -617,6 +628,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 +825,7 @@ if hiera('step') >= 3 {
}
}
include ::ceilometer
+ include ::ceilometer::config
class { '::ceilometer::api' :
manage_service => false,
enabled => false,
@@ -857,16 +882,20 @@ 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
- $vhost_params = {
- add_listen => false,
- priority => 10,
+ if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+ $_profile_support = 'cisco'
+ } else {
+ $_profile_support = 'None'
}
+ $neutron_options = {'profile_support' => $_profile_support }
class { 'horizon':
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')
@@ -890,7 +919,11 @@ if hiera('step') >= 4 {
# Keystone
pacemaker::resource::service { $::keystone::params::service_name :
- clone_params => "interleave=true",
+ clone_params => "interleave=true",
+ verify_on_create => true,
+ require => [File['/etc/keystone/ssl/certs/ca.pem'],
+ File['/etc/keystone/ssl/private/signing_key.pem'],
+ File['/etc/keystone/ssl/certs/signing_cert.pem']],
}
pacemaker::constraint::base { 'haproxy-then-keystone-constraint':
@@ -1048,24 +1081,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 +1115,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,10 +1519,49 @@ 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
+if hiera('step') >= 5 {
+
+ if $pacemaker_master {
+
+ class {'::keystone::roles::admin' :
+ require => Pacemaker::Resource::Service[$::keystone::params::service_name],
+ } ->
+ class {'::keystone::endpoint' :
+ require => Pacemaker::Resource::Service[$::keystone::params::service_name],
+ }
+
+ }
+
+} #END STEP 5
+
$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/swift-storage-post.yaml b/puppet/swift-storage-post.yaml
index ee50c86a..d22f5386 100644
--- a/puppet/swift-storage-post.yaml
+++ b/puppet/swift-storage-post.yaml
@@ -2,6 +2,10 @@ heat_template_version: 2015-04-30
description: 'OpenStack swift storage node post deployment for Puppet'
parameters:
+ ConfigDebug:
+ default: false
+ description: Whether to run config management (e.g. Puppet) in debug mode.
+ type: boolean
servers:
type: json
NodeConfigIdentifiers:
@@ -15,6 +19,8 @@ resources:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
+ options:
+ enable_debug: {get_param: ConfigDebug}
outputs:
- name: result
config:
@@ -32,6 +38,8 @@ resources:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
+ options:
+ enable_debug: {get_param: ConfigDebug}
outputs:
- name: result
config:
diff --git a/puppet/swift-storage.yaml b/puppet/swift-storage.yaml
index f6623be6..22ec6096 100644
--- a/puppet/swift-storage.yaml
+++ b/puppet/swift-storage.yaml
@@ -216,6 +216,14 @@ resources:
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,
+ # applying to all nodes, e.g node registration/unregistration
+ NodeExtraConfig:
+ depends_on: SwiftStorageHieraDeploy
+ type: OS::TripleO::NodeExtraConfig
+ properties:
+ server: {get_resource: SwiftStorage}
+
UpdateConfig:
type: OS::TripleO::Tasks::PackageUpdate
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)
diff --git a/validation-scripts/all-nodes.sh b/validation-scripts/all-nodes.sh
index 38a5a55e..8057f201 100644
--- a/validation-scripts/all-nodes.sh
+++ b/validation-scripts/all-nodes.sh
@@ -2,7 +2,7 @@
# For each unique remote IP (specified via Heat) we check to
# see if one of the locally configured networks matches and if so we
-# attempt a ping test on that networks remote IP.
+# attempt a ping test the remote network IP.
function ping_controller_ips() {
local REMOTE_IPS=$1
@@ -15,7 +15,7 @@ function ping_controller_ips() {
if [ $REMOTE_NETWORK/$LOCAL_CIDR == $LOCAL_NETWORK ]; then
echo -n "Trying to ping $REMOTE_IP for local network $LOCAL_NETWORK..."
- if ! ping -c 1 $REMOTE_IP &> /dev/null; then
+ if ! ping -W 300 -c 1 $REMOTE_IP &> /dev/null; then
echo "FAILURE"
echo "$REMOTE_IP is not pingable. Local Network: $LOCAL_NETWORK" >&2
exit 1
@@ -26,4 +26,22 @@ function ping_controller_ips() {
done
}
+# Ping all default gateways. There should only be one
+# if using upstream t-h-t network templates but we test
+# all of them should some manual network config have
+# multiple gateways.
+function ping_default_gateways() {
+ DEFAULT_GW=$(ip r | grep ^default | cut -d " " -f 3)
+ for GW in $DEFAULT_GW; do
+ echo -n "Trying to ping default gateway ${GW}..."
+ if ! ping -c 1 $GW &> /dev/null; then
+ echo "FAILURE"
+ echo "$GW is not pingable."
+ exit 1
+ fi
+ done
+ echo "SUCCESS"
+}
+
ping_controller_ips "$ping_test_ips"
+ping_default_gateways