Puppet: Heat API and Engine
[apex-tripleo-heat-templates.git] / controller-puppet.yaml
index 970df79..90fe6a7 100644 (file)
@@ -368,7 +368,7 @@ parameters:
     type: string
   SwiftReplicas:
     type: number
-    default: 1
+    default: 3
     description: How many replicas to use in the swift rings.
   VirtualIP:
     type: string
@@ -524,11 +524,20 @@ resources:
         rabbit_cookie: {get_param: RabbitCookie}
         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
         rabbit_client_port: {get_param: RabbitClientPort}
-        ntp_server: {get_param: NtpServer}
+        ntp_servers:
+          str_replace:
+            template: '["server"]'
+            params:
+              server: {get_param: NtpServer}
         control_virtual_interface: {get_param: ControlVirtualInterface}
         public_virtual_interface: {get_param: PublicVirtualInterface}
         public_virtual_ip: {get_param: PublicVirtualIP}
-
+        swift_hash_suffix: {get_param: SwiftHashSuffix}
+        swift_password: {get_param: SwiftPassword}
+        swift_part_power: {get_param: SwiftPartPower}
+        swift_replicas: {get_param: SwiftReplicas}
+        swift_min_part_hours: {get_param: SwiftMinPartHours}
+        swift_mount_check: {get_param: SwiftMountCheck}
 
   # Map heat metadata into hiera datafiles
   ControllerConfig:
@@ -540,18 +549,37 @@ resources:
           hierarchy:
             - heat_config_%{::deploy_config_name}
             - controller
+            - object
             - common
           datafiles:
             common:
               raw_data: {get_file: puppet/hieradata/common.yaml}
+            object:
+              raw_data: {get_file: puppet/hieradata/object.yaml}
             controller:
               raw_data: {get_file: puppet/hieradata/controller.yaml}
               oac_data: # data we map in from other OAC configurations
                 bootstrap_nodeid: bootstrap_host.bootstrap_nodeid
+                # Swift
+                tripleo::ringbuilder::devices: swift.devices
               mapped_data: # data supplied directly to this deployment configuration, etc
                 debug: {get_input: debug}
                 bootstack_nodeid: {get_input: bootstack_nodeid}
                 controller_host: {get_input: controller_host} #local-ipv4
+                # Swift
+                swift::proxy::proxy_local_net_ip: {get_input: controller_host}
+                swift::proxy::authtoken::auth_host: {get_input: controller_virtual_ip}
+                swift::storage::all::storage_local_net_ip: {get_input: controller_host}
+                swift::swift_hash_suffix: {get_input: swift_hash_suffix}
+                swift::proxy::authtoken::admin_password: {get_input: swift_password}
+                tripleo::ringbuilder::part_power: {get_input: swift_part_power}
+                tripleo::ringbuilder::replicas: {get_input: swift_replicas}
+                tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
+                swift_mount_check: {get_input: swift_mount_check}
+
+                # NOTE(dprince): build_ring support is currently not wired in.
+                # See: https://review.openstack.org/#/c/109225/
+                tripleo::ringbuilder::build_ring: True
                 # Cinder
                 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
                 cinder::volume::iscsi::iscsi_helper: {get_input: cinder_iscsi_helper}
@@ -580,13 +608,24 @@ resources:
                 glance::registry::database_connection: {get_input: glance_dsn}
                 glance::registry::bind_host: {get_input: controller_host}
                 glance::registry::auth_host: {get_input: controller_virtual_ip}
+                glance::backend::swift::swift_store_user: service:glance
+                glance::backend::swift::swift_store_key: {get_input: glance_password}
                 # Heat
-                heat_password: {get_input: heat_password}
                 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
-                heat_dsn: {get_input: heat_dsn}
-                heat.watch_server_url: {get_input: heat.watch_server_url}
-                heat.metadata_server_url: {get_input: heat.metadata_server_url}
-                heat.waitcondition_server_url: {get_input: heat.waitcondition_server_url}
+                heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
+                heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
+                heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
+                heat::engine::auth_encryption_key: unset___________
+                heat::rabbit_userid: {get_input: rabbit_username}
+                heat::rabbit_password: {get_input: rabbit_password}
+                heat::rabbit_host: {get_input: controller_virtual_ip}
+                heat::keystone_host: {get_input: controller_virtual_ip}
+                heat::keystone_password: {get_input: heat_password}
+                heat::api::bind_host: {get_input: controller_host}
+                heat::api_cloudwatch::bind_host: {get_input: controller_host}
+                heat::api_cfn::bind_host: {get_input: controller_host}
+                heat::database_connection: {get_input: heat_dsn}
+
                 # Keystone
                 keystone::admin_token: {get_input: admin_token}
                 keystone_ca_certificate: {get_input: keystone_ca_certificate}
@@ -631,9 +670,15 @@ resources:
                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
                 neutron_dsn: {get_input: neutron_dsn}
                 # Ceilometer
-                ceilometer_metering_secret: {get_input: ceilometer_metering_secret}
-                ceilometer_password: {get_input: ceilometer_password}
-                ceilometer_dsn: {get_input: ceilometer_dsn}
+                ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
+                ceilometer::rabbit_userid: {get_input: rabbit_username}
+                ceilometer::rabbit_password: {get_input: rabbit_password}
+                ceilometer::rabbit_host: {get_input: controller_virtual_ip}
+                ceilometer::api::host: {get_input: controller_host}
+                ceilometer::api::keystone_password: {get_input: ceilometer_password}
+                ceilometer::api::keystone_host: {get_input: controller_virtual_ip}
+                ceilometer::db::database_connection: {get_input: ceilometer_dsn}
+                ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
                 # Nova
@@ -653,7 +698,7 @@ resources:
                 rabbit_client_port: {get_input: rabbit_client_port}
                 # Misc
                 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
-                ntp_server: {get_input: ntp_server}
+                ntp::servers: {get_input: ntp_servers}
                 control_virtual_interface: {get_input: control_virtual_interface}
                 controller_virtual_ip: {get_input: controller_virtual_ip}
                 public_virtual_interface: {get_input: public_virtual_interface}
@@ -671,6 +716,11 @@ resources:
                 tripleo::loadbalancer::nova_novncproxy: true
                 tripleo::loadbalancer::mysql: true
                 tripleo::loadbalancer::rabbitmq: true
+                tripleo::loadbalancer::swift_proxy_server: true
+                tripleo::loadbalancer::ceilometer: true
+                tripleo::loadbalancer::heat_api: true
+                tripleo::loadbalancer::heat_cloudwatch: true
+                tripleo::loadbalancer::heat_cfn: true
 
   # NOTE(dprince): this example uses a composition class
   # on the puppet side (loadbalancer.pp). This seemed like the
@@ -710,10 +760,10 @@ resources:
       config:
         get_file: puppet/overcloud_controller.pp
 
-  # Step through a series of two more Puppet runs using the same manifest.
+  # 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
-  ControllerPuppetDeploymentTwo:
+  ControllerPuppetDeploymentServicesBase:
     type: OS::Heat::StructuredDeployment
     properties:
       name: puppet_2
@@ -723,11 +773,31 @@ resources:
         step: 1
       actions: ['CREATE'] # no need for two passes on an UPDATE
 
-  ControllerPuppetDeploymentThree:
+  ControllerRingbuilderPuppetConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: puppet
+      options:
+        enable_hiera: True
+        enable_facter: False
+      inputs:
+      outputs:
+      - name: result
+      config:
+        get_file: puppet/ringbuilder.pp
+
+  ControllerRingbuilderPuppetDeployment:
     type: OS::Heat::StructuredDeployment
     properties:
       name: puppet_3
       server: {get_resource: Controller}
+      config: {get_resource: ControllerRingbuilderPuppetConfig}
+
+  ControllerPuppetDeploymentOvercloudServices:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      name: puppet_4
+      server: {get_resource: Controller}
       config: {get_resource: ControllerPuppetConfig}
       input_values:
         step: 2