diff options
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 @@ -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 |