heat_template_version: 2014-10-16 description: > OpenStack controller node post deployment for Puppet. parameters: servers: type: json resources: # NOTE(dprince): this example uses a composition class # on the puppet side (loadbalancer.pp). This seemed like the # cleanest way to encapulate the puppet resources definitions # for HAProxy and Keepalived. ControllerLoadbalancerPuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet options: enable_hiera: True enable_facter: False inputs: - name: tripleo::loadbalancer::keystone_admin default: true - name: tripleo::loadbalancer::keystone_public default: true - name: tripleo::loadbalancer::neutron default: true - name: tripleo::loadbalancer::cinder default: true - name: tripleo::loadbalancer::glance_api default: true - name: tripleo::loadbalancer::glance_registry default: true - name: tripleo::loadbalancer::nova_ec2 default: true - name: tripleo::loadbalancer::nova_osapi default: true - name: tripleo::loadbalancer::nova_metadata default: true - name: tripleo::loadbalancer::nova_novncproxy default: true - name: tripleo::loadbalancer::mysql default: true - name: tripleo::loadbalancer::rabbitmq default: true - name: tripleo::loadbalancer::swift_proxy_server default: true - name: tripleo::loadbalancer::ceilometer default: true - name: tripleo::loadbalancer::heat_api default: true - name: tripleo::loadbalancer::heat_cloudwatch default: true - name: tripleo::loadbalancer::heat_cfn default: true outputs: - name: result config: get_file: manifests/loadbalancer.pp ControllerLoadbalancerPuppetDeployment: type: OS::Heat::SoftwareDeployments properties: name: puppet_1 servers: {get_param: servers} config: {get_resource: ControllerLoadbalancerPuppetConfig} ControllerPuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet options: enable_hiera: True enable_facter: False inputs: - name: step outputs: - name: result config: get_file: manifests/overcloud_controller.pp # Step through a series of Puppet runs using the same manifest. # NOTE(dprince): Heat breakpoints would make for a really cool way to step # through breakpoints in a controlled manner across the entire cluster ControllerPuppetDeploymentServicesBase: type: OS::Heat::StructuredDeployments properties: name: puppet_2 servers: {get_param: servers} config: {get_resource: ControllerPuppetConfig} input_values: step: 1 actions: ['CREATE'] # no need for two passes on an UPDATE ControllerRingbuilderPuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet options: enable_hiera: True enable_facter: False inputs: outputs: - name: result config: get_file: manifests/ringbuilder.pp ControllerRingbuilderPuppetDeployment: type: OS::Heat::StructuredDeployments properties: name: puppet_3 servers: {get_param: servers} config: {get_resource: ControllerRingbuilderPuppetConfig} ControllerPuppetDeploymentOvercloudServices: type: OS::Heat::StructuredDeployments properties: name: puppet_4 servers: {get_param: servers} config: {get_resource: ControllerPuppetConfig} input_values: step: 2