Skip to content

Instantly share code, notes, and snippets.

@jtaleric
Created August 11, 2015 17:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtaleric/adfc7bb0aab80207d430 to your computer and use it in GitHub Desktop.
Save jtaleric/adfc7bb0aab80207d430 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
DEBUG: cliff.commandmanager found command 'hypervisor_stats_show'
DEBUG: cliff.commandmanager found command 'security_group_create'
DEBUG: cliff.commandmanager found command 'security_group_rule_list'
DEBUG: cliff.commandmanager found command 'ip_floating_add'
DEBUG: cliff.commandmanager found command 'keypair_list'
DEBUG: cliff.commandmanager found command 'flavor_unset'
DEBUG: cliff.commandmanager found command 'host_show'
DEBUG: cliff.commandmanager found command 'host_list'
DEBUG: cliff.commandmanager found command 'hypervisor_show'
DEBUG: cliff.commandmanager found command 'server_pause'
DEBUG: cliff.commandmanager found command 'server_reboot'
DEBUG: cliff.commandmanager found command 'server_migrate'
DEBUG: cliff.commandmanager found command 'server_set'
DEBUG: cliff.commandmanager found command 'server_add_security_group'
DEBUG: cliff.commandmanager found command 'server_unrescue'
DEBUG: cliff.commandmanager found command 'usage_list'
DEBUG: cliff.commandmanager found command 'keypair_show'
DEBUG: cliff.commandmanager found command 'security_group_set'
DEBUG: cliff.commandmanager found command 'compute_agent_create'
DEBUG: cliff.commandmanager found command 'server_rescue'
DEBUG: cliff.commandmanager found command 'console_log_show'
DEBUG: cliff.commandmanager found command 'compute_agent_delete'
DEBUG: cliff.commandmanager found command 'server_ssh'
DEBUG: cliff.commandmanager found command 'server_lock'
DEBUG: cliff.commandmanager found command 'server_unset'
DEBUG: cliff.commandmanager found command 'server_show'
DEBUG: cliff.commandmanager found command 'server_suspend'
DEBUG: cliff.commandmanager found command 'server_add_volume'
DEBUG: cliff.commandmanager found command 'server_image_create'
DEBUG: cliff.commandmanager found command 'flavor_list'
DEBUG: cliff.commandmanager found command 'server_remove_volume'
DEBUG: cliff.commandmanager found command 'compute_agent_set'
DEBUG: cliff.commandmanager found command 'aggregate_add_host'
DEBUG: cliff.commandmanager found command 'aggregate_remove_host'
DEBUG: cliff.commandmanager found command 'compute_service_set'
DEBUG: cliff.commandmanager found command 'aggregate_create'
DEBUG: cliff.commandmanager found command 'keypair_create'
DEBUG: cliff.commandmanager found command 'ip_floating_list'
DEBUG: cliff.commandmanager found command 'aggregate_delete'
DEBUG: cliff.commandmanager found command 'flavor_set'
DEBUG: cliff.commandmanager found command 'security_group_rule_create'
DEBUG: cliff.commandmanager found command 'security_group_delete'
DEBUG: cliff.commandmanager found command 'server_rebuild'
DEBUG: cliff.commandmanager found command 'flavor_delete'
DEBUG: cliff.commandmanager found command 'server_delete'
DEBUG: cliff.commandmanager found command 'project_usage_list'
DEBUG: cliff.commandmanager found command 'availability_zone_list'
DEBUG: cliff.commandmanager found command 'hypervisor_list'
DEBUG: cliff.commandmanager found command 'flavor_create'
DEBUG: cliff.commandmanager found command 'console_url_show'
DEBUG: cliff.commandmanager found command 'ip_fixed_add'
DEBUG: cliff.commandmanager found command 'server_remove_security_group'
DEBUG: cliff.commandmanager found command 'usage_show'
DEBUG: cliff.commandmanager found command 'compute_agent_list'
DEBUG: cliff.commandmanager found command 'flavor_show'
DEBUG: cliff.commandmanager found command 'ip_fixed_remove'
DEBUG: cliff.commandmanager found command 'ip_floating_create'
DEBUG: cliff.commandmanager found command 'server_list'
DEBUG: cliff.commandmanager found command 'server_create'
DEBUG: cliff.commandmanager found command 'ip_floating_pool_list'
DEBUG: cliff.commandmanager found command 'aggregate_show'
DEBUG: cliff.commandmanager found command 'security_group_show'
DEBUG: cliff.commandmanager found command 'keypair_delete'
DEBUG: cliff.commandmanager found command 'server_resize'
DEBUG: cliff.commandmanager found command 'security_group_rule_delete'
DEBUG: cliff.commandmanager found command 'ip_floating_delete'
DEBUG: cliff.commandmanager found command 'ip_floating_remove'
DEBUG: cliff.commandmanager found command 'security_group_list'
DEBUG: cliff.commandmanager found command 'server_resume'
DEBUG: cliff.commandmanager found command 'aggregate_set'
DEBUG: cliff.commandmanager found command 'aggregate_list'
DEBUG: cliff.commandmanager found command 'server_unpause'
DEBUG: cliff.commandmanager found command 'compute_service_list'
DEBUG: cliff.commandmanager found command 'server_unlock'
DEBUG: openstackclient.shell compute API version 2, cmd group openstack.compute.v2
DEBUG: cliff.commandmanager found command 'network_set'
DEBUG: cliff.commandmanager found command 'network_delete'
DEBUG: cliff.commandmanager found command 'network_list'
DEBUG: cliff.commandmanager found command 'network_show'
DEBUG: cliff.commandmanager found command 'network_create'
DEBUG: openstackclient.shell network API version 2, cmd group openstack.network.v2
DEBUG: cliff.commandmanager found command 'image_set'
DEBUG: cliff.commandmanager found command 'image_delete'
DEBUG: cliff.commandmanager found command 'image_create'
DEBUG: cliff.commandmanager found command 'image_list'
DEBUG: cliff.commandmanager found command 'image_show'
DEBUG: cliff.commandmanager found command 'image_save'
DEBUG: openstackclient.shell image API version 1, cmd group openstack.image.v1
DEBUG: cliff.commandmanager found command 'snapshot_show'
DEBUG: cliff.commandmanager found command 'backup_create'
DEBUG: cliff.commandmanager found command 'volume_list'
DEBUG: cliff.commandmanager found command 'volume_show'
DEBUG: cliff.commandmanager found command 'snapshot_unset'
DEBUG: cliff.commandmanager found command 'volume_set'
DEBUG: cliff.commandmanager found command 'backup_delete'
DEBUG: cliff.commandmanager found command 'volume_create'
DEBUG: cliff.commandmanager found command 'volume_type_list'
DEBUG: cliff.commandmanager found command 'volume_type_create'
DEBUG: cliff.commandmanager found command 'backup_restore'
DEBUG: cliff.commandmanager found command 'backup_list'
DEBUG: cliff.commandmanager found command 'volume_unset'
DEBUG: cliff.commandmanager found command 'backup_show'
DEBUG: cliff.commandmanager found command 'volume_type_delete'
DEBUG: cliff.commandmanager found command 'volume_type_set'
DEBUG: cliff.commandmanager found command 'snapshot_set'
DEBUG: cliff.commandmanager found command 'snapshot_list'
DEBUG: cliff.commandmanager found command 'snapshot_delete'
DEBUG: cliff.commandmanager found command 'volume_delete'
DEBUG: cliff.commandmanager found command 'snapshot_create'
DEBUG: cliff.commandmanager found command 'volume_type_unset'
DEBUG: openstackclient.shell volume API version 1, cmd group openstack.volume.v1
DEBUG: cliff.commandmanager found command 'project_create'
DEBUG: cliff.commandmanager found command 'project_list'
DEBUG: cliff.commandmanager found command 'ec2_credentials_list'
DEBUG: cliff.commandmanager found command 'service_list'
DEBUG: cliff.commandmanager found command 'role_add'
DEBUG: cliff.commandmanager found command 'project_show'
DEBUG: cliff.commandmanager found command 'role_show'
DEBUG: cliff.commandmanager found command 'endpoint_delete'
DEBUG: cliff.commandmanager found command 'project_set'
DEBUG: cliff.commandmanager found command 'service_create'
DEBUG: cliff.commandmanager found command 'service_show'
DEBUG: cliff.commandmanager found command 'endpoint_show'
DEBUG: cliff.commandmanager found command 'ec2_credentials_create'
DEBUG: cliff.commandmanager found command 'catalog_list'
DEBUG: cliff.commandmanager found command 'ec2_credentials_delete'
DEBUG: cliff.commandmanager found command 'service_delete'
DEBUG: cliff.commandmanager found command 'token_issue'
DEBUG: cliff.commandmanager found command 'project_delete'
DEBUG: cliff.commandmanager found command 'endpoint_list'
DEBUG: cliff.commandmanager found command 'role_list'
DEBUG: cliff.commandmanager found command 'user_create'
DEBUG: cliff.commandmanager found command 'user_delete'
DEBUG: cliff.commandmanager found command 'user_show'
DEBUG: cliff.commandmanager found command 'role_create'
DEBUG: cliff.commandmanager found command 'role_remove'
DEBUG: cliff.commandmanager found command 'role_delete'
DEBUG: cliff.commandmanager found command 'catalog_show'
DEBUG: cliff.commandmanager found command 'token_revoke'
DEBUG: cliff.commandmanager found command 'endpoint_create'
DEBUG: cliff.commandmanager found command 'user_role_list'
DEBUG: cliff.commandmanager found command 'user_set'
DEBUG: cliff.commandmanager found command 'user_list'
DEBUG: cliff.commandmanager found command 'ec2_credentials_show'
DEBUG: openstackclient.shell identity API version 2, cmd group openstack.identity.v2
DEBUG: cliff.commandmanager found command 'object_create'
DEBUG: cliff.commandmanager found command 'object_list'
DEBUG: cliff.commandmanager found command 'object_delete'
DEBUG: cliff.commandmanager found command 'container_list'
DEBUG: cliff.commandmanager found command 'object_show'
DEBUG: cliff.commandmanager found command 'container_delete'
DEBUG: cliff.commandmanager found command 'container_create'
DEBUG: cliff.commandmanager found command 'container_show'
DEBUG: cliff.commandmanager found command 'container_save'
DEBUG: cliff.commandmanager found command 'object_save'
DEBUG: openstackclient.shell object_store API version 1, cmd group openstack.object_store.v1
DEBUG: cliff.commandmanager found command 'baremetal_set'
DEBUG: cliff.commandmanager found command 'baremetal_add_port'
DEBUG: cliff.commandmanager found command 'baremetal_create'
DEBUG: cliff.commandmanager found command 'baremetal_power'
DEBUG: cliff.commandmanager found command 'baremetal_list'
DEBUG: cliff.commandmanager found command 'baremetal_unset'
DEBUG: cliff.commandmanager found command 'baremetal_show'
DEBUG: cliff.commandmanager found command 'baremetal_delete'
DEBUG: cliff.commandmanager found command 'baremetal_reboot'
DEBUG: openstackclient.shell baremetal API version 1.6, cmd group openstack.baremetal.v1
DEBUG: cliff.commandmanager found command 'management_plan_download'
DEBUG: cliff.commandmanager found command 'management_plan_add_role'
DEBUG: cliff.commandmanager found command 'management_role_list'
DEBUG: cliff.commandmanager found command 'management_plan_delete'
DEBUG: cliff.commandmanager found command 'management_plan_set'
DEBUG: cliff.commandmanager found command 'management_plan_show'
DEBUG: cliff.commandmanager found command 'management_plan_remove_role'
DEBUG: cliff.commandmanager found command 'management_plan_create'
DEBUG: cliff.commandmanager found command 'management_plan_list'
DEBUG: openstackclient.shell management API version 2, cmd group openstack.management.v2
DEBUG: cliff.commandmanager found command 'baremetal_introspection_status'
DEBUG: cliff.commandmanager found command 'baremetal_introspection_start'
DEBUG: openstackclient.shell baremetal-introspection API version 1, cmd group openstack.baremetal_introspection.v1
DEBUG: cliff.commandmanager found command 'overcloud_deploy'
DEBUG: cliff.commandmanager found command 'undercloud_install'
DEBUG: cliff.commandmanager found command 'baremetal_configure_boot'
DEBUG: cliff.commandmanager found command 'baremetal_import'
DEBUG: cliff.commandmanager found command 'overcloud_image_build'
DEBUG: cliff.commandmanager found command 'baremetal_introspection_bulk_status'
DEBUG: cliff.commandmanager found command 'overcloud_image_upload'
DEBUG: cliff.commandmanager found command 'overcloud_validate'
DEBUG: cliff.commandmanager found command 'overcloud_update_stack'
DEBUG: cliff.commandmanager found command 'baremetal_configure_ready_state'
DEBUG: cliff.commandmanager found command 'baremetal_introspection_bulk_start'
DEBUG: cliff.commandmanager found command 'overcloud_node_delete'
DEBUG: openstackclient.shell rdomanager_oscplugin API version 1, cmd group openstack.rdomanager_oscplugin.v1
DEBUG: cliff.commandmanager found command 'extension_list'
DEBUG: cliff.commandmanager found command 'quota_set'
DEBUG: cliff.commandmanager found command 'quota_show'
DEBUG: cliff.commandmanager found command 'limits_show'
INFO: openstackclient.shell command: <none> -> rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud
DEBUG: openstackclient.api.auth Auth plugin osc_password selected
DEBUG: openstackclient.api.auth auth_type: osc_password
DEBUG: openstackclient.api.auth fetching option os_auth_url
DEBUG: openstackclient.api.auth fetching option os_domain_id
DEBUG: openstackclient.api.auth fetching option os_domain_name
DEBUG: openstackclient.api.auth fetching option os_tenant_id
DEBUG: openstackclient.api.auth fetching option os_tenant_name
DEBUG: openstackclient.api.auth fetching option os_project_id
DEBUG: openstackclient.api.auth fetching option os_project_name
DEBUG: openstackclient.api.auth fetching option os_project_domain_id
DEBUG: openstackclient.api.auth fetching option os_project_domain_name
DEBUG: openstackclient.api.auth fetching option os_trust_id
DEBUG: openstackclient.api.auth fetching option os_user_id
DEBUG: openstackclient.api.auth fetching option os_username
DEBUG: openstackclient.api.auth fetching option os_user_domain_id
DEBUG: openstackclient.api.auth fetching option os_user_domain_name
DEBUG: openstackclient.api.auth fetching option os_password
INFO: openstackclient.common.clientmanager Using auth plugin: osc_password
DEBUG: openstackclient.common.clientmanager Get auth_ref
DEBUG: keystoneclient.session REQ: curl -g -i -X GET http://192.0.2.1:5000/v2.0 -H "Accept: application/json" -H "User-Agent: python-keystoneclient"
INFO: requests.packages.urllib3.connectionpool Starting new HTTP connection (1): 192.0.2.1
DEBUG: requests.packages.urllib3.connectionpool "GET /v2.0 HTTP/1.1" 200 335
DEBUG: keystoneclient.session RESP: [200] content-length: 335 vary: X-Auth-Token connection: keep-alive date: Tue, 11 Aug 2015 00:31:07 GMT content-type: application/json x-openstack-request-id: req-0dc4139e-e73b-4272-8592-e27695e73743
RESP BODY: {"version": {"status": "stable", "updated": "2014-04-17T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json"}], "id": "v2.0", "links": [{"href": "http://192.0.2.1:5000/v2.0/", "rel": "self"}, {"href": "http://docs.openstack.org/", "type": "text/html", "rel": "describedby"}]}}
DEBUG: keystoneclient.auth.identity.v2 Making authentication request to http://192.0.2.1:5000/v2.0/tokens
DEBUG: requests.packages.urllib3.connectionpool "POST /v2.0/tokens HTTP/1.1" 200 3493
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud take_action(Namespace(block_storage_flavor='baremetal', block_storage_scale=0, ceph_storage_flavor='baremetal', ceph_storage_scale=0, cinder_lvm=False, compute_flavor='baremetal', compute_scale=1, control_flavor='baremetal', control_scale=3, extra_templates=['/usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml', '/home/stack/network-environment.yaml'], hypervisor_neutron_public_interface='nic1', libvirt_type='kvm', neutron_bridge_mappings=None, neutron_disable_tunneling=None, neutron_flat_networks=None, neutron_mechanism_drivers=None, neutron_network_type='vxlan', neutron_network_vlan_ranges=None, neutron_physical_bridge=None, neutron_public_interface='nic1', neutron_tunnel_id_ranges='1:1000', neutron_tunnel_types='vxlan', neutron_vni_ranges='1:1000', no_proxy='', nodes_json='instackenv.json', ntp_server='10.5.26.10', output_dir=None, plan='overcloud', reg_activation_key='', reg_force=False, reg_method='satellite', reg_org='', reg_sat_url='', rhel_reg=False, swift_storage_flavor='baremetal', swift_storage_scale=0, templates=None, timeout=240, tripleo_root='/etc/tripleo'))
DEBUG: rdomanager_oscplugin.plugin Instantiating orchestration client: <class 'heatclient.v1.client.Client'>
DEBUG: keystoneclient.auth.identity.v2 Making authentication request to http://192.0.2.1:5000/v2.0/tokens
DEBUG: requests.packages.urllib3.connectionpool "POST /v2.0/tokens HTTP/1.1" 200 3493
DEBUG: heatclient.common.http curl -g -i -X GET -H 'X-Auth-Token: {SHA1}729830e7c5157be9850feef95ea5903cff9cdc11' -H 'Content-Type: application/json' -H 'X-Auth-Url: http://192.0.2.1:5000/v2.0' -H 'Accept: application/json' -H 'User-Agent: python-heatclient' http://192.0.2.1:8004/v1/303d0ab7e4ab4c0c93e1337f68ddba42/stacks/overcloud
INFO: requests.packages.urllib3.connectionpool Starting new HTTP connection (1): 192.0.2.1
DEBUG: requests.packages.urllib3.connectionpool "GET /v1/303d0ab7e4ab4c0c93e1337f68ddba42/stacks/overcloud HTTP/1.1" 404 585
DEBUG: heatclient.common.http
HTTP/1.1 404 Not Found
date: Tue, 11 Aug 2015 00:31:08 GMT
connection: keep-alive
content-type: application/json; charset=UTF-8
content-length: 585
x-openstack-request-id: req-2577772b-070c-4af4-97fa-31f9b740e1bd
{"explanation": "The resource could not be found.", "code": 404, "error": {"message": "The Stack (overcloud) could not be found.", "traceback": "Traceback (most recent call last):\n\n File \"/usr/lib/python2.7/site-packages/heat/common/context.py\", line 300, in wrapped\n return func(self, ctx, *args, **kwargs)\n\n File \"/usr/lib/python2.7/site-packages/heat/engine/service.py\", line 422, in identify_stack\n raise exception.StackNotFound(stack_name=stack_name)\n\nStackNotFound: The Stack (overcloud) could not be found.\n", "type": "StackNotFound"}, "title": "Not Found"}
INFO: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud No stack found, will be doing a stack create
DEBUG: openstackclient.compute.client Instantiating compute client: <class 'novaclient.v2.client.Client'>
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Checking hypervisor stats
DEBUG: keystoneclient.session REQ: curl -g -i -X GET http://192.0.2.1:8774/v2/303d0ab7e4ab4c0c93e1337f68ddba42/os-hypervisors/statistics -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}729830e7c5157be9850feef95ea5903cff9cdc11"
INFO: requests.packages.urllib3.connectionpool Starting new HTTP connection (1): 192.0.2.1
DEBUG: requests.packages.urllib3.connectionpool "GET /v2/303d0ab7e4ab4c0c93e1337f68ddba42/os-hypervisors/statistics HTTP/1.1" 200 265
DEBUG: keystoneclient.session RESP: [200] date: Tue, 11 Aug 2015 00:31:08 GMT connection: keep-alive content-type: application/json content-length: 265 x-compute-request-id: req-a7b7ba9c-e0da-4999-a738-be66f1252d60
RESP BODY: {"hypervisor_statistics": {"count": 4, "vcpus_used": 0, "local_gb_used": 0, "memory_mb": 196608, "current_workload": 0, "vcpus": 96, "running_vms": 0, "free_disk_gb": 1856, "disk_available_least": 1856, "local_gb": 1856, "free_ram_mb": 196608, "memory_mb_used": 0}}
DEBUG: openstackclient.network.client Instantiating network client: <class 'neutronclient.v2_0.client.Client'>
DEBUG: openstackclient.network.client Instantiating network api: <class 'neutronclient.v2_0.client.Client'>
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Generating overcloud passwords
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Getting ctlplane from Neutron
DEBUG: keystoneclient.session REQ: curl -g -i -X GET http://192.0.2.1:9696//v2.0/networks -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: {SHA1}729830e7c5157be9850feef95ea5903cff9cdc11"
DEBUG: keystoneclient.session RESP: [200] date: Tue, 11 Aug 2015 00:31:12 GMT connection: keep-alive content-type: application/json; charset=UTF-8 content-length: 389 x-openstack-request-id: req-d77e7e0b-891c-4132-920f-1a778a818437
RESP BODY: {"networks": [{"status": "ACTIVE", "subnets": ["dd772255-7fa1-4bcb-9110-7c021a1dbdbd"], "name": "ctlplane", "provider:physical_network": "ctlplane", "router:external": false, "tenant_id": "303d0ab7e4ab4c0c93e1337f68ddba42", "admin_state_up": true, "mtu": 0, "shared": false, "provider:network_type": "flat", "id": "3ceab9a2-4cc2-4a0e-82d6-16454778849a", "provider:segmentation_id": null}]}
DEBUG: os_cloud_config.keystone_pki Generated CA key.
DEBUG: os_cloud_config.keystone_pki Generated CA certificate.
DEBUG: os_cloud_config.keystone_pki Generated signing key.
DEBUG: os_cloud_config.keystone_pki Generated signing certificate.
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Processing environment files
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Getting template contents
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Deploying stack: overcloud
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Deploying template: {u'outputs': {u'HeatInternalVip': {u'description': u'VIP for Heat API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'HeatApiNetwork']}]}}, u'CeilometerInternalVip': {u'description': u'VIP for Ceilometer API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CeilometerApiNetwork']}]}}, u'GlanceInternalVip': {u'description': u'VIP for Glance API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceApiNetwork']}]}}, u'KeystoneInternalVip': {u'description': u'VIP for Keystone API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystonePublicApiNetwork']}]}}, u'PublicVip': {u'description': u'Controller VIP for public API endpoints', u'value': {u'get_attr': [u'PublicVirtualIP', u'ip_address']}}, u'KeystoneURL': {u'description': u'URL for the Overcloud Keystone service', u'value': {u'list_join': [u'', [u'http://', {u'get_attr': [u'PublicVirtualIP', u'ip_address']}, u':5000/v2.0/']]}}, u'NeutronInternalVip': {u'description': u'VIP for Neutron API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NeutronApiNetwork']}]}}, u'SwiftInternalVip': {u'description': u'VIP for Swift Proxy internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'SwiftProxyNetwork']}]}}, u'CinderInternalVip': {u'description': u'VIP for Cinder API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CinderApiNetwork']}]}}, u'NovaInternalVip': {u'description': u'VIP for Nova API internal endpoint', u'value': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NovaApiNetwork']}]}}}, u'heat_template_version': u'2014-10-16', u'parameters': {u'Controller-1::SSLKey': {u'default': u'', u'hidden': True, u'type': u'string', u'description': u'If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.'}, u'Compute-1::RabbitClientUseSSL': {u'default': False, u'type': u'string', u'description': u'Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\n'}, u'Controller-1::KeystoneSSLCertificate': {u'default': u'', u'type': u'string', u'description': u'Keystone certificate for verifying token validity.'}, u'Controller-1::NeutronDhcpAgentsPerNetwork': {u'default': 3, u'type': u'number', u'description': u'The number of neutron dhcp agents to schedule per network'}, u'Controller-1::CinderBackendConfig': {u'default': {}, u'type': u'json', u'description': u'Contains parameters to configure Cinder backends. Typically set via parameter_defaults in the resource registry.'}, u'Controller-1::CinderLVMLoopDeviceSize': {u'default': 5000, u'type': u'number', u'description': u'The size of the loopback file used by the cinder LVM driver.'}, u'Controller-1::NeutronTunnelIdRanges': {u'default': u'1:1000', u'type': u'comma_delimited_list', u'description': u'Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\nof GRE tunnel IDs that are available for tenant network allocation\n'}, u'Compute-1::AdminPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the keystone admin account, used for monitoring, querying neutron etc.'}, u'Cinder-Storage-1::CinderEnableIscsiBackend': {u'default': True, u'type': u'boolean', u'description': u'Whether to enable or not the Iscsi backend for Cinder'}, u'Controller-1::removal_policies': {u'default': [], u'type': u'json'}, u'Controller-1::NovaPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the nova service and db account, used by nova-api.'}, u'Compute-1::NeutronMetadataProxySharedSecret': {u'default': u'unset', u'type': u'string', u'description': u'Shared secret to prevent spoofing'}, u'Controller-1::count': {u'type': u'number', u'constraints': [{u'range': {u'min': u'0'}}]}, u'Compute-1::GlancePort': {u'default': u'9292', u'type': u'string', u'description': u'Glance port.'}, u'NeutronPublicInterfaceTag': {u'default': u'', u'type': u'string', u'description': u'VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\n'}, u'ControllerHostnameFormat': {u'default': u'%stackname%-controller-%index%', u'type': u'string', u'description': u'Format for Controller node hostnames'}, u'Controller-1::SnmpdReadonlyUserName': {u'default': u'ro_snmp_user', u'type': u'string', u'description': u'The user name for SNMPd with readonly rights running on all Overcloud nodes'}, u'Compute-1::NeutronMechanismDrivers': {u'default': u'openvswitch', u'type': u'string', u'description': u"The mechanism drivers for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\n"}, u'Ceph-Storage-1::NtpServer': {u'default': u'', u'type': u'string'}, u'Ceph-Storage-1::EnablePackageInstall': {u'default': u'false', u'type': u'boolean', u'description': u'Set to true to enable package installation via Puppet'}, u'Ceph-Storage-1::count': {u'type': u'number', u'constraints': [{u'range': {u'min': u'0'}}]}, u'Cinder-Storage-1::KeyName': {u'default': u'default', u'type': u'string', u'description': u'Name of an existing EC2 KeyPair to enable SSH access to the instances'}, u'Controller-1::ImageUpdatePolicy': {u'default': u'REBUILD_PRESERVE_EPHEMERAL', u'type': u'string', u'description': u'What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.'}, u'Compute-1::NeutronTunnelIdRanges': {u'default': u'1:1000', u'type': u'comma_delimited_list', u'description': u'Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\nof GRE tunnel IDs that are available for tenant network allocation\n'}, u'Swift-Storage-1::UpdateIdentifier': {u'default': u'', u'type': u'string', u'description': u'Setting to a previously unused value during stack-update will trigger package update on all nodes\n'}, u'Compute-1::NovaComputeLibvirtType': {u'default': u'', u'type': u'string'}, u'Controller-1::AdminPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the keystone admin account, used for monitoring, querying neutron etc.'}, u'Controller-1::SwiftMinPartHours': {u'default': 1, u'type': u'number', u'description': u'The minimum time (in hours) before a partition in a ring can be moved following a rebalance.'}, u'Controller-1::ControllerExtraConfig': {u'default': {}, u'type': u'json', u'description': u'Controller specific configuration to inject into the cluster. Same\nstructure as ExtraConfig.\n'}, u'Controller-1::RabbitClientPort': {u'default': 5672, u'type': u'number', u'description': u'Set rabbit subscriber port, change this if using SSL'}, u'Swift-Storage-1::NtpServer': {u'default': u'', u'type': u'string'}, u'Swift-Storage-1::KeyName': {u'default': u'default', u'type': u'string', u'description': u'Name of an existing EC2 KeyPair to enable SSH access to the instances'}, u'Compute-1::ServiceNetMap': {u'default': {u'NeutronApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'GlanceRegistryNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'KeystonePublicApiNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NovaMetadataNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage'}, u'type': u'json', u'description': u'Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.'}, u'Controller-1::NeutronAllowL3AgentFailover': {u'default': u'True', u'type': u'string', u'description': u'Allow automatic l3-agent failover'}, u'Compute-1::NovaComputeDriver': {u'default': u'libvirt.LibvirtDriver', u'type': u'string'}, u'Cinder-Storage-1::Flavor': {u'type': u'string', u'description': u'Flavor for block storage nodes to request when deploying.', u'constraints': [{u'custom_constraint': u'nova.flavor'}]}, u'Controller-1::NeutronVniRanges': {u'default': u'1:1000', u'type': u'comma_delimited_list', u'description': u'Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\nof VXLAN VNI IDs that are available for tenant network allocation\n'}, u'Controller-1::KeystoneSigningKey': {u'default': u'', u'hidden': True, u'type': u'string', u'description': u'Keystone key for signing tokens.'}, u'Cinder-Storage-1::RabbitUserName': {u'default': u'guest', u'type': u'string'}, u'Compute-1::count': {u'type': u'number', u'constraints': [{u'range': {u'min': u'0'}}]}, u'Controller-1::SSLCACertificate': {u'default': u'', u'type': u'string', u'description': u'If set, the contents of an SSL certificate authority file.'}, u'Compute-1::EnablePackageInstall': {u'default': u'false', u'type': u'boolean', u'description': u'Set to true to enable package installation via Puppet'}, u'Controller-1::CinderNfsMountOptions': {u'default': u'', u'type': u'string', u'description': u'Mount options for NFS mounts used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\n'}, u'Controller-1::HeatPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the Heat service and db account, used by the Heat services.'}, u'Swift-Storage-1::count': {u'type': u'number', u'constraints': [{u'range': {u'min': u'0'}}]}, u'Controller-1::EnableSwiftStorage': {u'default': True, u'type': u'boolean', u'description': u'Whether to enable Swift Storage on the Controller'}, u'Swift-Storage-1::Replicas': {u'default': 3, u'type': u'number', u'description': u'How many replicas to use in the swift rings.'}, u'Compute-1::NeutronNetworkType': {u'default': u'gre', u'type': u'string', u'description': u'The tenant network type for Neutron, either gre or vxlan.'}, u'Controller-1::NeutronPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the neutron service and db account, used by neutron agents.'}, u'Swift-Storage-1::removal_policies': {u'default': [], u'type': u'json'}, u'Cinder-Storage-1::SnmpdReadonlyUserPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The user password for SNMPd with readonly rights running on all Overcloud nodes'}, u'Controller-1::SwiftPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the swift service account, used by the swift proxy services.'}, u'Controller-1::NeutronEnableTunnelling': {u'default': u'True', u'type': u'string'}, u'Controller-1::GlanceLogFile': {u'default': u'', u'type': u'string', u'description': u'The filepath of the file to use for logging messages from Glance.'}, u'Compute-1::NeutronVniRanges': {u'default': u'1:1000', u'type': u'comma_delimited_list', u'description': u'Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\nof VXLAN VNI IDs that are available for tenant network allocation\n'}, u'Compute-1::SnmpdReadonlyUserName': {u'default': u'ro_snmp_user', u'type': u'string', u'description': u'The user name for SNMPd with readonly rights running on all Overcloud nodes'}, u'NeutronTunnelIdRanges': {u'default': u'1:1000', u'type': u'comma_delimited_list', u'description': u'Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\nof GRE tunnel IDs that are available for tenant network allocation\n'}, u'Compute-1::ExtraConfig': {u'default': {}, u'type': u'json', u'description': u'Additional configuration to inject into the cluster. The JSON should have\nthe following structure:\n {"FILEKEY":\n {"config":\n [{"section": "SECTIONNAME",\n "values":\n [{"option": "OPTIONNAME",\n "value": "VALUENAME"\n }\n ]\n }\n ]\n }\n }\nFor instance:\n {"nova":\n {"config":\n [{"section": "default",\n "values":\n [{"option": "force_config_drive",\n "value": "always"\n }\n ]\n },\n {"section": "cells",\n "values":\n [{"option": "driver",\n "value": "nova.cells.rpc_driver.CellsRPCDriver"\n }\n ]\n }\n ]\n }\n }\n'}, u'Controller-1::GlanceFilePcmkManage': {u'default': False, u'type': u'boolean', u'description': u"Whether to make Glance file backend a mount managed by Pacemaker. Effective when GlanceBackend is 'file'.\n"}, u'Controller-1::SwiftHashSuffix': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'A random string to be used as a salt when hashing to determine mappings in the ring.'}, u'Controller-1::NtpServer': {u'default': u'', u'type': u'string'}, u'Swift-Storage-1::MinPartHours': {u'default': 1, u'type': u'number', u'description': u'The minimum time (in hours) before a partition in a ring can be moved following a rebalance.'}, u'Controller-1::CeilometerPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the ceilometer service and db account.'}, u'CephAdminKey': {u'default': u'', u'type': u'string', u'description': u'The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.'}, u'Cinder-Storage-1::CinderLVMLoopDeviceSize': {u'default': 5000, u'type': u'number', u'description': u'The size of the loopback file used by the cinder LVM driver.'}, u'Controller-1::EnablePackageInstall': {u'default': u'false', u'type': u'boolean', u'description': u'Set to true to enable package installation via Puppet'}, u'Cinder-Storage-1::count': {u'type': u'number', u'constraints': [{u'range': {u'min': u'0'}}]}, u'Controller-1::NeutronBridgeMappings': {u'default': u'datacentre:br-ex', u'type': u'string', u'description': u"The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\n"}, u'Controller-1::PublicVirtualInterface': {u'default': u'br-ex', u'type': u'string', u'description': u'Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used.\n'}, u'Compute-1::Flavor': {u'type': u'string', u'description': u'Flavor for the nova compute node', u'constraints': [{u'custom_constraint': u'nova.flavor'}]}, u'Controller-1::RabbitClientUseSSL': {u'default': False, u'type': u'string', u'description': u'Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\n'}, u'Controller-1::SwiftReplicas': {u'default': 3, u'type': u'number', u'description': u'How many replicas to use in the swift rings.'}, u'ComputeHostnameFormat': {u'default': u'%stackname%-compute-%index%', u'type': u'string', u'description': u'Format for Compute node hostnames'}, u'Compute-1::GlanceProtocol': {u'default': u'http', u'type': u'string', u'description': u'Protocol to use when connecting to glance, set to https for SSL.'}, u'Compute-1::NeutronPublicInterface': {u'default': u'nic1', u'type': u'string', u'description': u'A port to add to the NeutronPhysicalBridge.'}, u'Controller-1::NeutronTunnelTypes': {u'default': u'gre', u'type': u'string', u'description': u"The tunnel types for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'gre,vxlan'\n"}, u'Compute-1::NeutronTunnelTypes': {u'default': u'gre', u'type': u'string', u'description': u"The tunnel types for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'gre,vxlan'\n"}, u'Controller-1::SnmpdReadonlyUserPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The user password for SNMPd with readonly rights running on all Overcloud nodes'}, u'Controller-1::GlanceNotifierStrategy': {u'default': u'noop', u'type': u'string', u'description': u'Strategy to use for Glance notification queue'}, u'Compute-1::NeutronPublicInterfaceRawDevice': {u'default': u'', u'type': u'string'}, u'Cinder-Storage-1::Debug': {u'default': u'', u'type': u'string', u'description': u'Set to True to enable debugging on all services.'}, u'Controller-1::CinderPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the cinder service and db account, used by cinder-api.'}, u'Controller-1::RabbitUserName': {u'default': u'guest', u'type': u'string', u'description': u'The username for RabbitMQ'}, u'Compute-1::CinderEnableNfsBackend': {u'default': False, u'type': u'boolean', u'description': u'Whether to enable or not the NFS backend for Cinder'}, u'Cinder-Storage-1::SnmpdReadonlyUserName': {u'default': u'ro_snmp_user', u'type': u'string', u'description': u'The user name for SNMPd with readonly rights running on all Overcloud nodes'}, u'Ceph-Storage-1::ServiceNetMap': {u'default': {u'NeutronApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'GlanceRegistryNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'KeystonePublicApiNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NovaMetadataNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage'}, u'type': u'json', u'description': u'Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.'}, u'BlockStorageHostnameFormat': {u'default': u'%stackname%-blockstorage-%index%', u'type': u'string', u'description': u'Format for BlockStorage node hostnames'}, u'RabbitCookieSalt': {u'default': u'unset', u'type': u'string', u'description': u'Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.'}, u'Compute-1::RabbitUserName': {u'default': u'guest', u'type': u'string', u'description': u'The username for RabbitMQ'}, u'Compute-1::UpdateIdentifier': {u'default': u'', u'type': u'string', u'description': u'Setting to a previously unused value during stack-update will trigger package update on all nodes\n'}, u'CephClusterFSID': {u'default': u'', u'type': u'string', u'description': u'The Ceph cluster FSID. Must be a UUID.'}, u'Controller-1::KeystoneSigningCertificate': {u'default': u'', u'type': u'string', u'description': u'Keystone certificate for verifying token validity.'}, u'Compute-1::KeyName': {u'default': u'default', u'type': u'string', u'description': u'Name of an existing EC2 KeyPair to enable SSH access to the instances', u'constraints': [{u'custom_constraint': u'nova.keypair'}]}, u'Cinder-Storage-1::RabbitClientPort': {u'default': 5672, u'type': u'number', u'description': u'Set rabbit subscriber port, change this if using SSL'}, u'Compute-1::SnmpdReadonlyUserPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The user password for SNMPd with readonly rights running on all Overcloud nodes'}, u'Controller-1::GlanceProtocol': {u'default': u'http', u'type': u'string', u'description': u'Protocol to use when connecting to glance, set to https for SSL.'}, u'Compute-1::NeutronNetworkVLANRanges': {u'default': u'datacentre', u'type': u'comma_delimited_list', u'description': u"The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\n"}, u'Controller-1::NeutronAgentMode': {u'default': u'dvr_snat', u'type': u'string', u'description': u'Agent mode for the neutron-l3-agent on the controller hosts'}, u'Compute-1::NeutronFlatNetworks': {u'default': u'datacentre', u'type': u'string', u'description': u'If set, flat networks to configure in neutron plugins.\n'}, u'Cinder-Storage-1::EnablePackageInstall': {u'default': u'false', u'type': u'boolean', u'description': u'Set to true to enable package installation via Puppet'}, u'Compute-1::ImageUpdatePolicy': {u'default': u'REBUILD_PRESERVE_EPHEMERAL', u'type': u'string', u'description': u'What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.'}, u'Controller-1::NeutronMetadataProxySharedSecret': {u'default': u'unset', u'type': u'string', u'description': u'Shared secret to prevent spoofing'}, u'Ceph-Storage-1::Flavor': {u'type': u'string', u'description': u'Flavor for the Ceph Storage node.', u'constraints': [{u'custom_constraint': u'nova.flavor'}]}, u'Controller-1::GlanceBackend': {u'default': u'swift', u'type': u'string', u'description': u'The short name of the Glance backend to use. Should be one of swift, rbd, or file', u'constraints': [{u'allowed_values': [u'swift', u'file', u'rbd']}]}, u'Cinder-Storage-1::NtpServer': {u'default': u'', u'type': u'string'}, u'PublicVirtualFixedIPs': {u'default': [], u'type': u'json', u'description': u"Control the IP allocation for the PublicVirtualInterface port. E.g. [{'ip_address':'1.2.3.4'}]\n"}, u'ServiceNetMap': {u'default': {u'NeutronApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'GlanceRegistryNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'KeystonePublicApiNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NovaMetadataNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage'}, u'type': u'json', u'description': u'Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.'}, u'Compute-1::NeutronAllowL3AgentFailover': {u'default': u'True', u'type': u'string', u'description': u'Allow automatic l3-agent failover'}, u'NeutronVniRanges': {u'default': u'1:1000', u'type': u'comma_delimited_list', u'description': u'Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\nof VXLAN VNI IDs that are available for tenant network allocation\n'}, u'Controller-1::Debug': {u'default': u'', u'type': u'string', u'description': u'Set to True to enable debugging on all services.'}, u'Swift-Storage-1::ServiceNetMap': {u'default': {u'NeutronApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'GlanceRegistryNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'KeystonePublicApiNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NovaMetadataNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage'}, u'type': u'json', u'description': u'Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.'}, u'Ceph-Storage-1::ImageUpdatePolicy': {u'default': u'REBUILD_PRESERVE_EPHEMERAL', u'type': u'string', u'description': u'What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.'}, u'PublicVirtualNetwork': {u'default': u'ctlplane', u'type': u'string', u'description': u'Neutron network to allocate public virtual IP port on.\n'}, u'Cinder-Storage-1::UpdateIdentifier': {u'default': u'', u'type': u'string', u'description': u'Setting to a previously unused value during stack-update will trigger package update on all nodes\n'}, u'Controller-1::GlanceFilePcmkFstype': {u'default': u'nfs', u'type': u'string', u'description': u'Filesystem type for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\n'}, u'Controller-1::CeilometerBackend': {u'default': u'mongodb', u'type': u'string', u'description': u'The ceilometer backend type.'}, u'Cinder-Storage-1::ExtraConfig': {u'default': {}, u'type': u'json', u'description': u'Additional configuration to inject into the cluster. The JSON should have\nthe following structure:\n {"FILEKEY":\n {"config":\n [{"section": "SECTIONNAME",\n "values":\n [{"option": "OPTIONNAME",\n "value": "VALUENAME"\n }\n ]\n }\n ]\n }\n }\nFor instance:\n {"nova":\n {"config":\n [{"section": "default",\n "values":\n [{"option": "force_config_drive",\n "value": "always"\n }\n ]\n },\n {"section": "cells",\n "values":\n [{"option": "driver",\n "value": "nova.cells.rpc_driver.CellsRPCDriver"\n }\n ]\n }\n ]\n }\n }\n'}, u'Controller-1::KeystoneSSLCertificateKey': {u'default': u'', u'hidden': True, u'type': u'string', u'description': u'Keystone key for signing tokens.'}, u'Ceph-Storage-1::KeyName': {u'default': u'default', u'type': u'string', u'description': u'Name of an existing EC2 KeyPair to enable SSH access to the instances', u'constraints': [{u'custom_constraint': u'nova.keypair'}]}, u'Compute-1::NeutronAgentMode': {u'default': u'dvr_snat', u'type': u'string', u'description': u'Agent mode for the neutron-l3-agent on the controller hosts'}, u'Compute-1::CeilometerPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the ceilometer service account.'}, u'Controller-1::GlanceFilePcmkOptions': {u'default': u'', u'type': u'string', u'description': u'Mount options for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\n'}, u'Swift-Storage-1::PartPower': {u'default': 10, u'type': u'number', u'description': u'Partition Power to use when building Swift rings'}, u'Controller-1::ServiceNetMap': {u'default': {u'NeutronApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'GlanceRegistryNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'KeystonePublicApiNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NovaMetadataNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage'}, u'type': u'json', u'description': u'Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.'}, u'Controller-1::NeutronFlatNetworks': {u'default': u'datacentre', u'type': u'string', u'description': u'If set, flat networks to configure in neutron plugins.'}, u'Controller-1::CinderEnableIscsiBackend': {u'default': True, u'type': u'boolean', u'description': u'Whether to enable or not the Iscsi backend for Cinder'}, u'Compute-1::CeilometerMeteringSecret': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'Secret shared by the ceilometer services.'}, u'ControlFixedIPs': {u'default': [], u'type': u'json', u'description': u'Should be used for arbitrary ips.'}, u'Controller-1::NeutronPublicInterfaceIP': {u'default': u'', u'type': u'string', u'description': u'A custom IP address to put onto the NeutronPublicInterface.'}, u'Controller-1::AdminToken': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The keystone auth secret and db password.'}, u'Controller-1::KeyName': {u'default': u'default', u'type': u'string', u'description': u'Name of an existing EC2 KeyPair to enable SSH access to the instances', u'constraints': [{u'custom_constraint': u'nova.keypair'}]}, u'Controller-1::RabbitPassword': {u'default': u'guest', u'hidden': True, u'type': u'string', u'description': u'The password for RabbitMQ'}, u'Controller-1::NeutronPublicInterfaceDefaultRoute': {u'default': u'', u'type': u'string', u'description': u'A custom default route for the NeutronPublicInterface.'}, u'Swift-Storage-1::MountCheck': {u'default': u'false', u'type': u'boolean', u'description': u'Value of mount_check in Swift account/container/object -server.conf'}, u'Compute-1::NtpServer': {u'default': u'', u'type': u'string'}, u'Controller-1::SSLCertificate': {u'default': u'', u'hidden': True, u'type': u'string', u'description': u'If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.'}, u'Compute-1::removal_policies': {u'default': [], u'type': u'json'}, u'Controller-1::NeutronNetworkType': {u'default': u'gre', u'type': u'string', u'description': u'The tenant network type for Neutron, either gre or vxlan.'}, u'Compute-1::Image': {u'default': u'overcloud-compute', u'type': u'string', u'constraints': [{u'custom_constraint': u'glance.image'}]}, u'Cinder-Storage-1::ServiceNetMap': {u'default': {u'NeutronApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'GlanceRegistryNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'KeystonePublicApiNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NovaMetadataNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage'}, u'type': u'json', u'description': u'Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.'}, u'Ceph-Storage-1::Image': {u'default': u'overcloud-ceph-storage', u'type': u'string', u'constraints': [{u'custom_constraint': u'glance.image'}]}, u'Controller-1::NeutronDVR': {u'default': u'False', u'type': u'string', u'description': u'Whether to configure Neutron Distributed Virtual Routers'}, u'Swift-Storage-1::SnmpdReadonlyUserPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The user password for SNMPd with readonly rights running on all Overcloud nodes'}, u'Controller-1::GlancePort': {u'default': u'9292', u'type': u'string', u'description': u'Glance port.'}, u'Controller-1::Flavor': {u'type': u'string', u'description': u'Flavor for control nodes to request when deploying.', u'constraints': [{u'custom_constraint': u'nova.flavor'}]}, u'Controller-1::NeutronMechanismDrivers': {u'default': u'openvswitch', u'type': u'string', u'description': u"The mechanism drivers for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\n"}, u'Controller-1::CloudName': {u'default': u'', u'type': u'string', u'description': u'The DNS name of this cloud. E.g. ci-overcloud.tripleo.org'}, u'CephStorageHostnameFormat': {u'default': u'%stackname%-cephstorage-%index%', u'type': u'string', u'description': u'Format for CephStorage node hostnames'}, u'Compute-1::NovaPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the nova service account, used by nova-api.'}, u'Controller-1::HeatStackDomainAdminPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'Password for heat_stack_domain_admin user.'}, u'Controller-1::NeutronExternalNetworkBridge': {u'default': u'br-ex', u'type': u'string', u'description': u'Name of bridge used for external network traffic.'}, u'Controller-1::MysqlInnodbBufferPoolSize': {u'default': 0, u'type': u'number', u'description': u'Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as "no value" and will defer to the lower level default.\n'}, u'Controller-1::CinderISCSIHelper': {u'default': u'tgtadm', u'type': u'string', u'description': u'The iSCSI helper to use with cinder.'}, u'Swift-Storage-1::Image': {u'default': u'overcloud-swift-storage', u'type': u'string'}, u'Compute-1::RabbitClientPort': {u'default': 5672, u'type': u'number', u'description': u'Set rabbit subscriber port, change this if using SSL'}, u'Cinder-Storage-1::CinderISCSIHelper': {u'default': u'tgtadm', u'type': u'string', u'description': u'The iSCSI helper to use with cinder.'}, u'Controller-1::EnablePacemaker': {u'default': False, u'type': u'boolean', u'description': u'If enabled services will be monitored by Pacemaker; it will manage VIPs as well, in place of Keepalived.'}, u'Controller-1::ControlVirtualInterface': {u'default': u'br-ex', u'type': u'string', u'description': u'Interface where virtual ip will be assigned.'}, u'Swift-Storage-1::EnablePackageInstall': {u'default': u'false', u'type': u'boolean', u'description': u'Set to true to enable package installation via Puppet'}, u'Compute-1::NovaEnableRbdBackend': {u'default': False, u'type': u'boolean', u'description': u'Whether to enable or not the Rbd backend for Nova'}, u'Controller-1::NeutronL3HA': {u'default': u'False', u'type': u'string', u'description': u'Whether to enable l3-agent HA'}, u'Controller-1::Image': {u'default': u'overcloud-control', u'type': u'string', u'constraints': [{u'custom_constraint': u'glance.image'}]}, u'Swift-Storage-1::HashSuffix': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'A random string to be used as a salt when hashing to determine mappings in the ring.'}, u'CephMonKey': {u'default': u'', u'type': u'string', u'description': u'The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.'}, u'Compute-1::NeutronDVR': {u'default': u'False', u'type': u'string'}, u'Compute-1::NeutronL3HA': {u'default': u'False', u'type': u'string', u'description': u'Whether to enable l3-agent HA'}, u'Cinder-Storage-1::Image': {u'default': u'overcloud-cinder-volume', u'type': u'string'}, u'Controller-1::NeutronNetworkVLANRanges': {u'default': u'datacentre', u'type': u'comma_delimited_list', u'description': u"The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\n"}, u'Controller-1::KeystoneCACertificate': {u'default': u'', u'type': u'string', u'description': u'Keystone self-signed certificate authority certificate.'}, u'Ceph-Storage-1::removal_policies': {u'default': [], u'type': u'json'}, u'NeutronControlPlaneID': {u'default': u'', u'type': u'string', u'description': u'Neutron ID for ctlplane network.'}, u'Controller-1::NeutronPublicInterfaceRawDevice': {u'default': u'', u'type': u'string', u'description': u'If set, the public interface is a vlan with this device as the raw device.'}, u'Controller-1::GlanceFilePcmkDevice': {u'default': u'', u'type': u'string', u'description': u'An exported storage device that should be mounted by Pacemaker as Glance storage. Effective when GlanceFilePcmkManage is true.\n'}, u'Controller-1::CeilometerMeteringSecret': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'Secret shared by the ceilometer services.'}, u'Cinder-Storage-1::RabbitPassword': {u'default': u'guest', u'type': u'string'}, u'Cinder-Storage-1::RabbitClientUseSSL': {u'default': False, u'type': u'string', u'description': u'Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\n'}, u'Cinder-Storage-1::CinderPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the cinder service and db account, used by cinder-api.'}, u'Controller-1::NeutronPublicInterfaceTag': {u'default': u'', u'type': u'string', u'description': u'VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\n'}, u'Swift-Storage-1::SnmpdReadonlyUserName': {u'default': u'ro_snmp_user', u'type': u'string', u'description': u'The user name for SNMPd with readonly rights running on all Overcloud nodes'}, u'Controller-1::NeutronPublicInterface': {u'default': u'nic1', u'type': u'string', u'description': u'What interface to bridge onto br-ex for network nodes.'}, u'Controller-1::CinderNfsServers': {u'default': u'', u'type': u'comma_delimited_list', u'description': u'NFS servers used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\n'}, u'Cinder-Storage-1::GlancePort': {u'default': u'9292', u'type': u'string', u'description': u'Glance port.'}, u'Controller-1::GlancePassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the glance service and db account, used by the glance services.'}, u'Compute-1::Debug': {u'default': u'', u'type': u'string', u'description': u'Set to True to enable debugging on all services.'}, u'Controller-1::NeutronDnsmasqOptions': {u'default': u'dhcp-option-force=26,1400', u'type': u'string', u'description': u'Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.'}, u'Controller-1::CinderEnableNfsBackend': {u'default': False, u'type': u'boolean', u'description': u'Whether to enable or not the NFS backend for Cinder'}, u'Ceph-Storage-1::UpdateIdentifier': {u'default': u'', u'type': u'string', u'description': u'Setting to a previously unused value during stack-update will trigger package update on all nodes\n'}, u'Compute-1::CeilometerComputeAgent': {u'default': u'', u'type': u'string', u'description': u'Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly', u'constraints': [{u'allowed_values': [u'', u'Present']}]}, u'Compute-1::NeutronBridgeMappings': {u'default': u'datacentre:br-ex', u'type': u'string', u'description': u"The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\n"}, u'Cinder-Storage-1::GlanceProtocol': {u'default': u'http', u'type': u'string', u'description': u'Protocol to use when connecting to glance, set to https for SSL.'}, u'Compute-1::NovaComputeExtraConfig': {u'default': {}, u'type': u'json', u'description': u'NovaCompute specific configuration to inject into the cluster. Same\nstructure as ExtraConfig.\n'}, u'ObjectStorageHostnameFormat': {u'default': u'%stackname%-objectstorage-%index%', u'type': u'string', u'description': u'Format for SwiftStorage node hostnames'}, u'Compute-1::NeutronPassword': {u'default': u'unset', u'hidden': True, u'type': u'string', u'description': u'The password for the neutron service account, used by neutron agents.'}, u'Controller-1::SwiftMountCheck': {u'default': u'false', u'type': u'boolean', u'description': u'Value of mount_check in Swift account/container/object -server.conf'}, u'Controller-1::MysqlMaxConnections': {u'default': 1024, u'type': u'number', u'description': u'Configures MySQL max_connections config setting'}, u'Controller-1::UpdateIdentifier': {u'default': u'', u'type': u'string', u'description': u'Setting to a previously unused value during stack-update will trigger package update on all nodes\n'}, u'Swift-Storage-1::Flavor': {u'type': u'string', u'description': u'Flavor for Swift storage nodes to request when deploying.', u'constraints': [{u'custom_constraint': u'nova.flavor'}]}, u'Cinder-Storage-1::removal_policies': {u'default': [], u'type': u'json'}, u'Controller-1::SwiftPartPower': {u'default': 10, u'type': u'number', u'description': u'Partition Power to use when building Swift rings'}, u'Controller-1::ExtraConfig': {u'default': {}, u'type': u'json', u'description': u'Additional configuration to inject into the cluster. The JSON should have\nthe following structure:\n {"FILEKEY":\n {"config":\n [{"section": "SECTIONNAME",\n "values":\n [{"option": "OPTIONNAME",\n "value": "VALUENAME"\n }\n ]\n }\n ]\n }\n }\nFor instance:\n {"nova":\n {"config":\n [{"section": "default",\n "values":\n [{"option": "compute_manager",\n "value": "ironic.nova.compute.manager.ClusterComputeManager"\n }\n ]\n },\n {"section": "cells",\n "values":\n [{"option": "driver",\n "value": "nova.cells.rpc_driver.CellsRPCDriver"\n }\n ]\n }\n ]\n }\n }\n'}, u'Controller-1::CinderEnableRbdBackend': {u'default': False, u'type': u'boolean', u'description': u'Whether to enable or not the Rbd backend for Cinder'}, u'Controller-1::EnableCephStorage': {u'default': False, u'type': u'boolean', u'description': u'Whether to deploy Ceph Storage (OSD) on the Controller'}, u'Compute-1::NeutronPhysicalBridge': {u'default': u'br-ex', u'type': u'string', u'description': u'An OVS bridge to create for accessing external networks.'}, u'Compute-1::NeutronEnableTunnelling': {u'default': u'True', u'type': u'string'}, u'Controller-1::EnableGalera': {u'default': True, u'type': u'boolean', u'description': u'Whether to use Galera instead of regular MariaDB.'}, u'Compute-1::RabbitPassword': {u'default': u'guest', u'hidden': True, u'type': u'string', u'description': u'The password for RabbitMQ'}}, u'resources': {u'SwiftDevicesAndProxyConfig': {u'type': u'OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig', u'properties': {u'controller_swift_devices': {u'get_attr': [u'Controller', u'swift_device']}, u'object_store_swift_devices': {u'get_attr': [u'Swift-Storage', u'swift_device']}, u'controller_swift_proxy_memcaches': {u'get_attr': [u'Controller', u'swift_proxy_memcache']}}}, u'InternalApiVirtualIP': {u'depends_on': u'Networks', u'type': u'OS::TripleO::Controller::Ports::InternalApiPort', u'properties': {u'PortName': u'internal_api_virtual_ip', u'ControlPlaneIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}}}, u'CephStorageAllNodesDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'allNodesConfig', u'config_id']}, u'servers': {u'get_attr': [u'Ceph-Storage', u'attributes', u'nova_server_resource']}}}, u'ObjectStorageSwiftDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'SwiftDevicesAndProxyConfig', u'config_id']}, u'servers': {u'get_attr': [u'Swift-Storage', u'attributes', u'nova_server_resource']}}}, u'ControllerSwiftDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'SwiftDevicesAndProxyConfig', u'config_id']}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'BlockStorageNodesPostDeployment': {u'depends_on': [u'ControllerNodesPostDeployment', u'BlockStorageAllNodesDeployment'], u'type': u'OS::TripleO::BlockStoragePostDeployment', u'properties': {u'NodeConfigIdentifiers': {u'get_attr': [u'Cinder-Storage', u'attributes', u'config_identifier']}, u'servers': {u'get_attr': [u'Cinder-Storage', u'attributes', u'nova_server_resource']}}}, u'VipConfig': {u'type': u'OS::TripleO::VipConfig'}, u'CephStorageCephDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'CephClusterConfig', u'config_id']}, u'servers': {u'get_attr': [u'Ceph-Storage', u'attributes', u'nova_server_resource']}}}, u'allNodesConfig': {u'type': u'OS::TripleO::AllNodes::SoftwareConfig', u'properties': {u'redis_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'RedisNetwork']}]}, u'glance_registry_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceRegistryNetwork']}]}, u'rabbit_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'RabbitMqNetwork']}]}, u'ceilometer_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CeilometerApiNetwork']}]}, u'keystone_admin_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystoneAdminApiNetwork']}]}, u'glance_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceApiNetwork']}]}, u'keystone_public_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystonePublicApiNetwork']}]}, u'compute_hosts': {u'get_attr': [u'Compute', u'hosts_entry']}, u'nova_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NovaApiNetwork']}]}, u'mongo_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'MongoDbNetwork']}]}, u'neutron_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NeutronApiNetwork']}]}, u'memcache_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'MemcachedNetwork']}]}, u'object_storage_hosts': {u'get_attr': [u'Swift-Storage', u'hosts_entry']}, u'controller_hosts': {u'get_attr': [u'Controller', u'hosts_entry']}, u'nova_metadata_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NovaMetadataNetwork']}]}, u'controller_ips': {u'get_attr': [u'Controller', u'ip_address']}, u'mysql_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'MysqlNetwork']}]}, u'controller_names': {u'get_attr': [u'Controller', u'hostname']}, u'horizon_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'HorizonNetwork']}]}, u'swift_proxy_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'SwiftProxyNetwork']}]}, u'heat_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'HeatApiNetwork']}]}, u'ceph_storage_hosts': {u'get_attr': [u'Ceph-Storage', u'hosts_entry']}, u'block_storage_hosts': {u'get_attr': [u'Cinder-Storage', u'hosts_entry']}, u'cinder_api_node_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CinderApiNetwork']}]}}}, u'ControllerIpListMap': {u'type': u'OS::TripleO::Network::Ports::NetIpListMap', u'properties': {u'ExternalIpList': {u'get_attr': [u'Controller', u'external_ip_address']}, u'TenantIpList': {u'get_attr': [u'Controller', u'tenant_ip_address']}, u'StorageIpList': {u'get_attr': [u'Controller', u'storage_ip_address']}, u'StorageMgmtIpList': {u'get_attr': [u'Controller', u'storage_mgmt_ip_address']}, u'InternalApiIpList': {u'get_attr': [u'Controller', u'internal_api_ip_address']}}}, u'StorageVirtualIP': {u'depends_on': u'Networks', u'type': u'OS::TripleO::Controller::Ports::StoragePort', u'properties': {u'PortName': u'storage_virtual_ip', u'ControlPlaneIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}}}, u'CephClusterConfig': {u'type': u'OS::TripleO::CephClusterConfig::SoftwareConfig', u'properties': {u'ceph_mon_ips': {u'get_attr': [u'ControllerIpListMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CephPublicNetwork']}]}, u'ceph_mon_names': {u'get_attr': [u'Controller', u'hostname']}, u'ceph_admin_key': {u'get_param': u'CephAdminKey'}, u'ceph_mon_key': {u'get_param': u'CephMonKey'}, u'ceph_fsid': {u'get_param': u'CephClusterFSID'}}}, u'RedisVirtualIP': {u'depends_on': u'Networks', u'type': u'OS::TripleO::Controller::Ports::RedisVipPort', u'properties': {u'PortName': u'redis_virtual_ip', u'ControlPlaneNetwork': {u'get_param': u'NeutronControlPlaneID'}, u'ControlPlaneIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}, u'NetworkName': {u'get_param': [u'ServiceNetMap', u'RedisNetwork']}}}, u'CephStorageNodesPostDeployment': {u'depends_on': [u'ControllerNodesPostDeployment', u'CephStorageCephDeployment', u'CephStorageAllNodesDeployment'], u'type': u'OS::TripleO::CephStoragePostDeployment', u'properties': {u'NodeConfigIdentifiers': {u'get_attr': [u'Ceph-Storage', u'attributes', u'config_identifier']}, u'servers': {u'get_attr': [u'Ceph-Storage', u'attributes', u'nova_server_resource']}}}, u'PcsdPassword': {u'type': u'OS::Heat::RandomString', u'properties': {u'length': 16}}, u'RabbitCookie': {u'type': u'OS::Heat::RandomString', u'properties': {u'length': 20, u'salt': {u'get_param': u'RabbitCookieSalt'}}}, u'ControlVirtualIP': {u'depends_on': u'Networks', u'type': u'OS::Neutron::Port', u'properties': {u'network_id': {u'get_param': u'NeutronControlPlaneID'}, u'replacement_policy': u'AUTO', u'fixed_ips': {u'get_param': u'ControlFixedIPs'}, u'name': u'control_virtual_ip'}}, u'Swift-Storage': {u'type': u'OS::Heat::ResourceGroup', u'properties': {u'count': {u'get_param': [u'Swift-Storage-1::count']}, u'resource_def': {u'type': u'Tuskar::Swift-Storage-1', u'properties': {u'Hostname': {u'str_replace': {u'params': {u'%stackname%': {u'get_param': u'OS::stack_name'}}, u'template': {u'get_param': u'ObjectStorageHostnameFormat'}}}, u'Replicas': {u'get_param': [u'Swift-Storage-1::Replicas']}, u'HashSuffix': {u'get_param': [u'Swift-Storage-1::HashSuffix']}, u'Image': {u'get_param': [u'Swift-Storage-1::Image']}, u'PartPower': {u'get_param': [u'Swift-Storage-1::PartPower']}, u'MinPartHours': {u'get_param': [u'Swift-Storage-1::MinPartHours']}, u'ServiceNetMap': {u'get_param': [u'Swift-Storage-1::ServiceNetMap']}, u'SnmpdReadonlyUserName': {u'get_param': [u'Swift-Storage-1::SnmpdReadonlyUserName']}, u'KeyName': {u'get_param': [u'Swift-Storage-1::KeyName']}, u'EnablePackageInstall': {u'get_param': [u'Swift-Storage-1::EnablePackageInstall']}, u'SnmpdReadonlyUserPassword': {u'get_param': [u'Swift-Storage-1::SnmpdReadonlyUserPassword']}, u'Flavor': {u'get_param': [u'Swift-Storage-1::Flavor']}, u'NtpServer': {u'get_param': [u'Swift-Storage-1::NtpServer']}, u'UpdateIdentifier': {u'get_param': [u'Swift-Storage-1::UpdateIdentifier']}, u'MountCheck': {u'get_param': [u'Swift-Storage-1::MountCheck']}}}, u'removal_policies': {u'get_param': [u'Swift-Storage-1::removal_policies']}}}, u'Controller': {u'type': u'OS::Heat::ResourceGroup', u'properties': {u'count': {u'get_param': [u'Controller-1::count']}, u'resource_def': {u'type': u'Tuskar::Controller-1', u'properties': {u'MysqlMaxConnections': {u'get_param': [u'Controller-1::MysqlMaxConnections']}, u'EnableCephStorage': {u'get_param': [u'Controller-1::EnableCephStorage']}, u'NeutronPublicInterfaceRawDevice': {u'get_param': [u'Controller-1::NeutronPublicInterfaceRawDevice']}, u'KeystoneSigningKey': {u'get_param': [u'Controller-1::KeystoneSigningKey']}, u'SSLCACertificate': {u'get_param': [u'Controller-1::SSLCACertificate']}, u'NtpServer': {u'get_param': [u'Controller-1::NtpServer']}, u'Hostname': {u'str_replace': {u'params': {u'%stackname%': {u'get_param': u'OS::stack_name'}}, u'template': {u'get_param': u'ControllerHostnameFormat'}}}, u'GlanceFilePcmkManage': {u'get_param': [u'Controller-1::GlanceFilePcmkManage']}, u'KeystoneSSLCertificateKey': {u'get_param': [u'Controller-1::KeystoneSSLCertificateKey']}, u'NeutronDhcpAgentsPerNetwork': {u'get_param': [u'Controller-1::NeutronDhcpAgentsPerNetwork']}, u'NeutronPassword': {u'get_param': [u'Controller-1::NeutronPassword']}, u'NeutronFlatNetworks': {u'get_param': [u'Controller-1::NeutronFlatNetworks']}, u'EnablePackageInstall': {u'get_param': [u'Controller-1::EnablePackageInstall']}, u'NeutronPublicInterface': {u'get_param': [u'Controller-1::NeutronPublicInterface']}, u'SnmpdReadonlyUserPassword': {u'get_param': [u'Controller-1::SnmpdReadonlyUserPassword']}, u'GlancePassword': {u'get_param': [u'Controller-1::GlancePassword']}, u'NeutronTunnelIdRanges': {u'get_param': [u'Controller-1::NeutronTunnelIdRanges']}, u'CinderEnableRbdBackend': {u'get_param': [u'Controller-1::CinderEnableRbdBackend']}, u'SwiftReplicas': {u'get_param': [u'Controller-1::SwiftReplicas']}, u'NeutronPublicInterfaceTag': {u'get_param': [u'Controller-1::NeutronPublicInterfaceTag']}, u'NeutronNetworkVLANRanges': {u'get_param': [u'Controller-1::NeutronNetworkVLANRanges']}, u'KeystoneSigningCertificate': {u'get_param': [u'Controller-1::KeystoneSigningCertificate']}, u'SSLKey': {u'get_param': [u'Controller-1::SSLKey']}, u'GlanceFilePcmkFstype': {u'get_param': [u'Controller-1::GlanceFilePcmkFstype']}, u'ServiceNetMap': {u'get_param': [u'Controller-1::ServiceNetMap']}, u'RabbitCookie': {u'get_attr': [u'RabbitCookie', u'value']}, u'SnmpdReadonlyUserName': {u'get_param': [u'Controller-1::SnmpdReadonlyUserName']}, u'KeyName': {u'get_param': [u'Controller-1::KeyName']}, u'MysqlRootPassword': {u'get_attr': [u'MysqlRootPassword', u'value']}, u'GlanceProtocol': {u'get_param': [u'Controller-1::GlanceProtocol']}, u'CinderISCSIHelper': {u'get_param': [u'Controller-1::CinderISCSIHelper']}, u'MysqlClusterUniquePart': {u'get_attr': [u'MysqlClusterUniquePart', u'value']}, u'CinderPassword': {u'get_param': [u'Controller-1::CinderPassword']}, u'CloudName': {u'get_param': [u'Controller-1::CloudName']}, u'CinderLVMLoopDeviceSize': {u'get_param': [u'Controller-1::CinderLVMLoopDeviceSize']}, u'RabbitPassword': {u'get_param': [u'Controller-1::RabbitPassword']}, u'CinderNfsServers': {u'get_param': [u'Controller-1::CinderNfsServers']}, u'NeutronApiVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NeutronApiNetwork']}]}, u'ImageUpdatePolicy': {u'get_param': [u'Controller-1::ImageUpdatePolicy']}, u'MysqlInnodbBufferPoolSize': {u'get_param': [u'Controller-1::MysqlInnodbBufferPoolSize']}, u'PublicVirtualInterface': {u'get_param': [u'Controller-1::PublicVirtualInterface']}, u'Debug': {u'get_param': [u'Controller-1::Debug']}, u'NeutronAgentMode': {u'get_param': [u'Controller-1::NeutronAgentMode']}, u'GlanceFilePcmkDevice': {u'get_param': [u'Controller-1::GlanceFilePcmkDevice']}, u'AdminToken': {u'get_param': [u'Controller-1::AdminToken']}, u'SwiftMinPartHours': {u'get_param': [u'Controller-1::SwiftMinPartHours']}, u'KeystoneSSLCertificate': {u'get_param': [u'Controller-1::KeystoneSSLCertificate']}, u'NeutronL3HA': {u'get_param': [u'Controller-1::NeutronL3HA']}, u'EnableGalera': {u'get_param': [u'Controller-1::EnableGalera']}, u'HorizonSecret': {u'get_resource': u'HorizonSecret'}, u'NeutronBridgeMappings': {u'get_param': [u'Controller-1::NeutronBridgeMappings']}, u'VirtualIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}, u'CinderEnableIscsiBackend': {u'get_param': [u'Controller-1::CinderEnableIscsiBackend']}, u'CeilometerMeteringSecret': {u'get_param': [u'Controller-1::CeilometerMeteringSecret']}, u'NeutronMetadataProxySharedSecret': {u'get_param': [u'Controller-1::NeutronMetadataProxySharedSecret']}, u'PublicVirtualIP': {u'get_attr': [u'PublicVirtualIP', u'ip_address']}, u'Flavor': {u'get_param': [u'Controller-1::Flavor']}, u'CinderEnableNfsBackend': {u'get_param': [u'Controller-1::CinderEnableNfsBackend']}, u'NovaPassword': {u'get_param': [u'Controller-1::NovaPassword']}, u'KeystonePublicApiVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystonePublicApiNetwork']}]}, u'GlancePort': {u'get_param': [u'Controller-1::GlancePort']}, u'SwiftPartPower': {u'get_param': [u'Controller-1::SwiftPartPower']}, u'HeatApiVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'HeatApiNetwork']}]}, u'NeutronPublicInterfaceDefaultRoute': {u'get_param': [u'Controller-1::NeutronPublicInterfaceDefaultRoute']}, u'HeatPassword': {u'get_param': [u'Controller-1::HeatPassword']}, u'MysqlVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'MysqlNetwork']}]}, u'RedisVirtualIP': {u'get_attr': [u'RedisVirtualIP', u'ip_address']}, u'ControllerExtraConfig': {u'get_param': [u'Controller-1::ControllerExtraConfig']}, u'ControlVirtualInterface': {u'get_param': [u'Controller-1::ControlVirtualInterface']}, u'SwiftMountCheck': {u'get_param': [u'Controller-1::SwiftMountCheck']}, u'HeatStackDomainAdminPassword': {u'get_param': [u'Controller-1::HeatStackDomainAdminPassword']}, u'RabbitClientPort': {u'get_param': [u'Controller-1::RabbitClientPort']}, u'PcsdPassword': {u'get_resource': u'PcsdPassword'}, u'GlanceApiVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceApiNetwork']}]}, u'SwiftPassword': {u'get_param': [u'Controller-1::SwiftPassword']}, u'EnableSwiftStorage': {u'get_param': [u'Controller-1::EnableSwiftStorage']}, u'EnablePacemaker': {u'get_param': [u'Controller-1::EnablePacemaker']}, u'NeutronNetworkType': {u'get_param': [u'Controller-1::NeutronNetworkType']}, u'CeilometerPassword': {u'get_param': [u'Controller-1::CeilometerPassword']}, u'SSLCertificate': {u'get_param': [u'Controller-1::SSLCertificate']}, u'NeutronVniRanges': {u'get_param': [u'Controller-1::NeutronVniRanges']}, u'GlanceNotifierStrategy': {u'get_param': [u'Controller-1::GlanceNotifierStrategy']}, u'CinderBackendConfig': {u'get_param': [u'Controller-1::CinderBackendConfig']}, u'NeutronMechanismDrivers': {u'get_param': [u'Controller-1::NeutronMechanismDrivers']}, u'GlanceBackend': {u'get_param': [u'Controller-1::GlanceBackend']}, u'RabbitClientUseSSL': {u'get_param': [u'Controller-1::RabbitClientUseSSL']}, u'NeutronAllowL3AgentFailover': {u'get_param': [u'Controller-1::NeutronAllowL3AgentFailover']}, u'HeatAuthEncryptionKey': {u'get_resource': u'HeatAuthEncryptionKey'}, u'GlanceFilePcmkOptions': {u'get_param': [u'Controller-1::GlanceFilePcmkOptions']}, u'RabbitUserName': {u'get_param': [u'Controller-1::RabbitUserName']}, u'GlanceLogFile': {u'get_param': [u'Controller-1::GlanceLogFile']}, u'CinderNfsMountOptions': {u'get_param': [u'Controller-1::CinderNfsMountOptions']}, u'NeutronExternalNetworkBridge': {u'get_param': [u'Controller-1::NeutronExternalNetworkBridge']}, u'CeilometerBackend': {u'get_param': [u'Controller-1::CeilometerBackend']}, u'NeutronPublicInterfaceIP': {u'get_param': [u'Controller-1::NeutronPublicInterfaceIP']}, u'SwiftHashSuffix': {u'get_param': [u'Controller-1::SwiftHashSuffix']}, u'AdminPassword': {u'get_param': [u'Controller-1::AdminPassword']}, u'NeutronDVR': {u'get_param': [u'Controller-1::NeutronDVR']}, u'Image': {u'get_param': [u'Controller-1::Image']}, u'ExtraConfig': {u'get_param': [u'Controller-1::ExtraConfig']}, u'NeutronTunnelTypes': {u'get_param': [u'Controller-1::NeutronTunnelTypes']}, u'NeutronEnableTunnelling': {u'get_param': [u'Controller-1::NeutronEnableTunnelling']}, u'KeystoneCACertificate': {u'get_param': [u'Controller-1::KeystoneCACertificate']}, u'UpdateIdentifier': {u'get_param': [u'Controller-1::UpdateIdentifier']}, u'NeutronDnsmasqOptions': {u'get_param': [u'Controller-1::NeutronDnsmasqOptions']}}}, u'removal_policies': {u'get_param': [u'Controller-1::removal_policies']}}}, u'MysqlRootPassword': {u'type': u'OS::Heat::RandomString', u'properties': {u'length': 10}}, u'Cinder-Storage': {u'type': u'OS::Heat::ResourceGroup', u'properties': {u'count': {u'get_param': [u'Cinder-Storage-1::count']}, u'resource_def': {u'type': u'Tuskar::Cinder-Storage-1', u'properties': {u'CinderEnableIscsiBackend': {u'get_param': [u'Cinder-Storage-1::CinderEnableIscsiBackend']}, u'RabbitClientUseSSL': {u'get_param': [u'Cinder-Storage-1::RabbitClientUseSSL']}, u'NtpServer': {u'get_param': [u'Cinder-Storage-1::NtpServer']}, u'Hostname': {u'str_replace': {u'params': {u'%stackname%': {u'get_param': u'OS::stack_name'}}, u'template': {u'get_param': u'BlockStorageHostnameFormat'}}}, u'RabbitPassword': {u'get_param': [u'Cinder-Storage-1::RabbitPassword']}, u'GlancePort': {u'get_param': [u'Cinder-Storage-1::GlancePort']}, u'EnablePackageInstall': {u'get_param': [u'Cinder-Storage-1::EnablePackageInstall']}, u'RabbitUserName': {u'get_param': [u'Cinder-Storage-1::RabbitUserName']}, u'Debug': {u'get_param': [u'Cinder-Storage-1::Debug']}, u'SnmpdReadonlyUserPassword': {u'get_param': [u'Cinder-Storage-1::SnmpdReadonlyUserPassword']}, u'MysqlVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'MysqlNetwork']}]}, u'VirtualIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}, u'GlanceProtocol': {u'get_param': [u'Cinder-Storage-1::GlanceProtocol']}, u'RabbitClientPort': {u'get_param': [u'Cinder-Storage-1::RabbitClientPort']}, u'Image': {u'get_param': [u'Cinder-Storage-1::Image']}, u'ExtraConfig': {u'get_param': [u'Cinder-Storage-1::ExtraConfig']}, u'ServiceNetMap': {u'get_param': [u'Cinder-Storage-1::ServiceNetMap']}, u'SnmpdReadonlyUserName': {u'get_param': [u'Cinder-Storage-1::SnmpdReadonlyUserName']}, u'GlanceApiVirtualIP': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceApiNetwork']}]}, u'KeyName': {u'get_param': [u'Cinder-Storage-1::KeyName']}, u'UpdateIdentifier': {u'get_param': [u'Cinder-Storage-1::UpdateIdentifier']}, u'CinderISCSIHelper': {u'get_param': [u'Cinder-Storage-1::CinderISCSIHelper']}, u'Flavor': {u'get_param': [u'Cinder-Storage-1::Flavor']}, u'CinderLVMLoopDeviceSize': {u'get_param': [u'Cinder-Storage-1::CinderLVMLoopDeviceSize']}, u'CinderPassword': {u'get_param': [u'Cinder-Storage-1::CinderPassword']}}}, u'removal_policies': {u'get_param': [u'Cinder-Storage-1::removal_policies']}}}, u'MysqlClusterUniquePart': {u'type': u'OS::Heat::RandomString', u'properties': {u'length': 10}}, u'BlockStorageAllNodesDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'allNodesConfig', u'config_id']}, u'servers': {u'get_attr': [u'Cinder-Storage', u'attributes', u'nova_server_resource']}}}, u'ControllerNodesPostDeployment': {u'depends_on': [u'ControllerBootstrapNodeDeployment', u'ControllerAllNodesDeployment', u'ControllerSwiftDeployment', u'ControllerCephDeployment'], u'type': u'OS::TripleO::ControllerPostDeployment', u'properties': {u'NodeConfigIdentifiers': {u'get_attr': [u'Controller', u'attributes', u'config_identifier']}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'ComputeAllNodesDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'allNodesConfig', u'config_id']}, u'servers': {u'get_attr': [u'Compute', u'attributes', u'nova_server_resource']}}}, u'ControllerCephDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'CephClusterConfig', u'config_id']}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'Compute': {u'type': u'OS::Heat::ResourceGroup', u'properties': {u'count': {u'get_param': [u'Compute-1::count']}, u'resource_def': {u'type': u'Tuskar::Compute-1', u'properties': {u'NeutronPublicInterfaceRawDevice': {u'get_param': [u'Compute-1::NeutronPublicInterfaceRawDevice']}, u'NeutronNetworkVLANRanges': {u'get_param': [u'Compute-1::NeutronNetworkVLANRanges']}, u'NovaComputeDriver': {u'get_param': [u'Compute-1::NovaComputeDriver']}, u'Hostname': {u'str_replace': {u'params': {u'%stackname%': {u'get_param': u'OS::stack_name'}}, u'template': {u'get_param': u'ComputeHostnameFormat'}}}, u'GlancePort': {u'get_param': [u'Compute-1::GlancePort']}, u'NeutronPassword': {u'get_param': [u'Compute-1::NeutronPassword']}, u'NeutronBridgeMappings': {u'get_param': [u'Compute-1::NeutronBridgeMappings']}, u'EnablePackageInstall': {u'get_param': [u'Compute-1::EnablePackageInstall']}, u'NovaEnableRbdBackend': {u'get_param': [u'Compute-1::NovaEnableRbdBackend']}, u'GlanceHost': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceApiNetwork']}]}, u'NeutronTunnelTypes': {u'get_param': [u'Compute-1::NeutronTunnelTypes']}, u'NeutronTunnelIdRanges': {u'get_param': [u'Compute-1::NeutronTunnelIdRanges']}, u'NeutronVniRanges': {u'get_param': [u'Compute-1::NeutronVniRanges']}, u'Flavor': {u'get_param': [u'Compute-1::Flavor']}, u'NeutronAgentMode': {u'get_param': [u'Compute-1::NeutronAgentMode']}, u'NovaApiHost': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NovaApiNetwork']}]}, u'RabbitClientPort': {u'get_param': [u'Compute-1::RabbitClientPort']}, u'NovaComputeExtraConfig': {u'get_param': [u'Compute-1::NovaComputeExtraConfig']}, u'ServiceNetMap': {u'get_param': [u'Compute-1::ServiceNetMap']}, u'SnmpdReadonlyUserName': {u'get_param': [u'Compute-1::SnmpdReadonlyUserName']}, u'KeyName': {u'get_param': [u'Compute-1::KeyName']}, u'NovaPublicIP': {u'get_attr': [u'PublicVirtualIP', u'ip_address']}, u'NeutronNetworkType': {u'get_param': [u'Compute-1::NeutronNetworkType']}, u'CeilometerPassword': {u'get_param': [u'Compute-1::CeilometerPassword']}, u'NtpServer': {u'get_param': [u'Compute-1::NtpServer']}, u'CinderEnableNfsBackend': {u'get_param': [u'Compute-1::CinderEnableNfsBackend']}, u'KeystoneHost': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystonePublicApiNetwork']}]}, u'NeutronMechanismDrivers': {u'get_param': [u'Compute-1::NeutronMechanismDrivers']}, u'RabbitClientUseSSL': {u'get_param': [u'Compute-1::RabbitClientUseSSL']}, u'NeutronAllowL3AgentFailover': {u'get_param': [u'Compute-1::NeutronAllowL3AgentFailover']}, u'RabbitPassword': {u'get_param': [u'Compute-1::RabbitPassword']}, u'ImageUpdatePolicy': {u'get_param': [u'Compute-1::ImageUpdatePolicy']}, u'RabbitUserName': {u'get_param': [u'Compute-1::RabbitUserName']}, u'Debug': {u'get_param': [u'Compute-1::Debug']}, u'NeutronPublicInterface': {u'get_param': [u'Compute-1::NeutronPublicInterface']}, u'NovaPassword': {u'get_param': [u'Compute-1::NovaPassword']}, u'GlanceProtocol': {u'get_param': [u'Compute-1::GlanceProtocol']}, u'NeutronDVR': {u'get_param': [u'Compute-1::NeutronDVR']}, u'NeutronL3HA': {u'get_param': [u'Compute-1::NeutronL3HA']}, u'NovaComputeLibvirtType': {u'get_param': [u'Compute-1::NovaComputeLibvirtType']}, u'AdminPassword': {u'get_param': [u'Compute-1::AdminPassword']}, u'NeutronPhysicalBridge': {u'get_param': [u'Compute-1::NeutronPhysicalBridge']}, u'CeilometerComputeAgent': {u'get_param': [u'Compute-1::CeilometerComputeAgent']}, u'Image': {u'get_param': [u'Compute-1::Image']}, u'ExtraConfig': {u'get_param': [u'Compute-1::ExtraConfig']}, u'RabbitHost': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'RabbitMqNetwork']}]}, u'NeutronFlatNetworks': {u'get_param': [u'Compute-1::NeutronFlatNetworks']}, u'CeilometerMeteringSecret': {u'get_param': [u'Compute-1::CeilometerMeteringSecret']}, u'NeutronMetadataProxySharedSecret': {u'get_param': [u'Compute-1::NeutronMetadataProxySharedSecret']}, u'NeutronEnableTunnelling': {u'get_param': [u'Compute-1::NeutronEnableTunnelling']}, u'SnmpdReadonlyUserPassword': {u'get_param': [u'Compute-1::SnmpdReadonlyUserPassword']}, u'NeutronHost': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NeutronApiNetwork']}]}, u'UpdateIdentifier': {u'get_param': [u'Compute-1::UpdateIdentifier']}}}, u'removal_policies': {u'get_param': [u'Compute-1::removal_policies']}}}, u'VipMap': {u'type': u'OS::TripleO::Network::Ports::NetIpMap', u'properties': {u'ExternalIp': {u'get_attr': [u'PublicVirtualIP', u'ip_address']}, u'StorageIp': {u'get_attr': [u'StorageVirtualIP', u'ip_address']}, u'InternalApiIp': {u'get_attr': [u'InternalApiVirtualIP', u'ip_address']}, u'StorageMgmtIp': {u'get_attr': [u'StorageMgmtVirtualIP', u'ip_address']}}}, u'Networks': {u'type': u'OS::TripleO::Network'}, u'HeatAuthEncryptionKey': {u'type': u'OS::Heat::RandomString'}, u'ComputeNodesPostDeployment': {u'depends_on': [u'ComputeAllNodesDeployment', u'ComputeCephDeployment'], u'type': u'OS::TripleO::ComputePostDeployment', u'properties': {u'NodeConfigIdentifiers': {u'get_attr': [u'Compute', u'attributes', u'config_identifier']}, u'servers': {u'get_attr': [u'Compute', u'attributes', u'nova_server_resource']}}}, u'ControllerClusterDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'signal_transport': u'NO_SIGNAL', u'config': {u'get_resource': u'ControllerClusterConfig'}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'ControllerBootstrapNodeConfig': {u'type': u'OS::TripleO::BootstrapNode::SoftwareConfig', u'properties': {u'bootstrap_nodeid': {u'get_attr': [u'Controller', u'resource.0.hostname']}, u'bootstrap_nodeid_ip': {u'get_attr': [u'Controller', u'resource.0.ip_address']}}}, u'VipDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'input_values': {u'internal_api_virtual_ip': {u'get_attr': [u'InternalApiVirtualIP', u'ip_address']}, u'nova_metadata_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NovaMetadataNetwork']}]}, u'redis_vip': {u'get_attr': [u'RedisVirtualIP', u'ip_address']}, u'mysql_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'MysqlNetwork']}]}, u'heat_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'HeatApiNetwork']}]}, u'public_virtual_ip': {u'get_attr': [u'PublicVirtualIP', u'ip_address']}, u'keystone_public_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystonePublicApiNetwork']}]}, u'nova_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NovaApiNetwork']}]}, u'neutron_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'NeutronApiNetwork']}]}, u'horizon_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'HorizonNetwork']}]}, u'keystone_admin_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'KeystoneAdminApiNetwork']}]}, u'storage_mgmt_virtual_ip': {u'get_attr': [u'StorageMgmtVirtualIP', u'ip_address']}, u'storage_virtual_ip': {u'get_attr': [u'StorageVirtualIP', u'ip_address']}, u'control_virtual_ip': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}, u'cinder_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CinderApiNetwork']}]}, u'rabbit_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'RabbitMqNetwork']}]}, u'swift_proxy_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'SwiftProxyNetwork']}]}, u'ceilometer_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'CeilometerApiNetwork']}]}, u'glance_api_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceApiNetwork']}]}, u'glance_registry_vip': {u'get_attr': [u'VipMap', u'net_ip_map', {u'get_param': [u'ServiceNetMap', u'GlanceRegistryNetwork']}]}}, u'config': {u'get_resource': u'VipConfig'}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'ControllerClusterConfig': {u'type': u'OS::Heat::StructuredConfig', u'properties': {u'config': {u'haproxy': {u'nodes': {u'get_attr': [u'Controller', u'corosync_node']}}, u'corosync': {u'nodes': {u'get_attr': [u'Controller', u'corosync_node']}}, u'horizon': {u'caches': {u'memcached': {u'nodes': {u'get_attr': [u'Controller', u'hostname']}}}}, u'mysql': {u'nodes': {u'get_attr': [u'Controller', u'corosync_node']}}}}}, u'StorageMgmtVirtualIP': {u'depends_on': u'Networks', u'type': u'OS::TripleO::Controller::Ports::StorageMgmtPort', u'properties': {u'PortName': u'storage_management_virtual_ip', u'ControlPlaneIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}}}, u'HorizonSecret': {u'type': u'OS::Heat::RandomString', u'properties': {u'length': 10}}, u'ObjectStorageNodesPostDeployment': {u'depends_on': [u'ObjectStorageSwiftDeployment', u'ObjectStorageAllNodesDeployment'], u'type': u'OS::TripleO::ObjectStoragePostDeployment', u'properties': {u'NodeConfigIdentifiers': {u'get_attr': [u'Swift-Storage', u'attributes', u'config_identifier']}, u'servers': {u'get_attr': [u'Swift-Storage', u'attributes', u'nova_server_resource']}}}, u'ControllerAllNodesDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'allNodesConfig', u'config_id']}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'ObjectStorageAllNodesDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'allNodesConfig', u'config_id']}, u'servers': {u'get_attr': [u'Swift-Storage', u'attributes', u'nova_server_resource']}}}, u'PublicVirtualIP': {u'depends_on': u'Networks', u'type': u'OS::TripleO::Controller::Ports::ExternalPort', u'properties': {u'PortName': u'public_virtual_ip', u'ControlPlaneIP': {u'get_attr': [u'ControlVirtualIP', u'fixed_ips', 0, u'ip_address']}}}, u'Ceph-Storage': {u'type': u'OS::Heat::ResourceGroup', u'properties': {u'count': {u'get_param': [u'Ceph-Storage-1::count']}, u'resource_def': {u'type': u'Tuskar::Ceph-Storage-1', u'properties': {u'ImageUpdatePolicy': {u'get_param': [u'Ceph-Storage-1::ImageUpdatePolicy']}, u'NtpServer': {u'get_param': [u'Ceph-Storage-1::NtpServer']}, u'Hostname': {u'str_replace': {u'params': {u'%stackname%': {u'get_param': u'OS::stack_name'}}, u'template': {u'get_param': u'CephStorageHostnameFormat'}}}, u'ServiceNetMap': {u'get_param': [u'Ceph-Storage-1::ServiceNetMap']}, u'KeyName': {u'get_param': [u'Ceph-Storage-1::KeyName']}, u'EnablePackageInstall': {u'get_param': [u'Ceph-Storage-1::EnablePackageInstall']}, u'Flavor': {u'get_param': [u'Ceph-Storage-1::Flavor']}, u'Image': {u'get_param': [u'Ceph-Storage-1::Image']}, u'UpdateIdentifier': {u'get_param': [u'Ceph-Storage-1::UpdateIdentifier']}}}, u'removal_policies': {u'get_param': [u'Ceph-Storage-1::removal_policies']}}}, u'ControllerBootstrapNodeDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'ControllerBootstrapNodeConfig', u'config_id']}, u'servers': {u'get_attr': [u'Controller', u'attributes', u'nova_server_resource']}}}, u'ComputeCephDeployment': {u'type': u'OS::Heat::StructuredDeployments', u'properties': {u'config': {u'get_attr': [u'CephClusterConfig', u'config_id']}, u'servers': {u'get_attr': [u'Compute', u'attributes', u'nova_server_resource']}}}}}
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Deploying parameters: {'Controller-1::HeatPassword': 'cfcbdaad23f6e0a1254362ff98af7a25a0e020b7', 'Swift-Storage-1::count': 0, 'Ceph-Storage-1::Flavor': 'baremetal', 'Compute-1::NeutronNetworkType': 'vxlan', 'Compute-1::NovaPassword': '6d4902377e52457c4ac489cdecde28f721a0c706', 'Controller-1::HeatStackDomainAdminPassword': '3dedde9d20bc16d50a912e92a96c0c71a8fcaee8', 'Controller-1::NeutronPassword': '1f8708a64263833ac657891fa114956d0f22d4b1', 'Controller-1::KeystoneSigningCertificate': '-----BEGIN CERTIFICATE-----\nMIIDJDCCAgygAwIBAgIBAjANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJYWDEO\nMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVuc2V0MQ4wDAYDVQQKEwVVbnNldDEU\nMBIGA1UEAxMLS2V5c3RvbmUgQ0EwHhcNMTUwODExMDAzMTEzWhcNMjUwODA4MDAz\nMTEzWjBYMQswCQYDVQQGEwJYWDEOMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVu\nc2V0MQ4wDAYDVQQKEwVVbnNldDEZMBcGA1UEAxMQS2V5c3RvbmUgU2lnbmluZzCC\nASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALlg6lFdFrfg7TIY1mLh29+J\nkd4zYcWHbR97K3NrPn/z/e72ltI57431EFcDigs8ZGvWl+GkD+vl+xwhOR9Q5MYq\nUD5FgSr2jmc/FjTYz4lRJXowDN9+u7II1SKLwMEj+1wOpwt9K5ZbIoQBFD46QYsv\nHFgScWsRu1KxoyQ5es23E2ZCz+/WwSgoHLf1Hg5yCWxhJjboWMhyJ5MjA08cmFKS\niNUupPy22r/jXzlO0tzxX/2qCgXbgBmCcEgbHM+uU2M5vtkh+uuVMekwGoRS+Sav\nzAVmKrzpo9uqVsSRVyp8SVEw8OgU2xcWcvLy0e0NPKYoeuBfLgou9kcrMGJNPpsC\nAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAcsT0Y52iartax1VbwUnLnX5voHSAxd9W\na/+s7f4FDaMG1PNgOIsUSV5qx3/Kdv8Cu8c6qyiqvZNaxb5digqBx3zrqckGtVb0\n4TkxkCoFQaDWuimcS6gPOExeMViSCAVpLqUTZzwe+GPT/Fbq1g8tXCfKiGeKXPn/\nBHhNCCKH/4VuQDbkV73+ZhxbPWNjsCeXIbkqEj7UVAgBrsItXbUwuPXlB24tbYIj\nwIBPPqxhZKfGnYVsyP3ZpkLdI6RaJVh0gs7TeYCRJ31qwtwvwOfB9sqkn/6D4a4i\newipCS3QgvQktFLYd9IVrB/JM31RDcgA5UgYSGDxV47gLDnMjikINA==\n-----END CERTIFICATE-----\n', 'Controller-1::NeutronTunnelIdRanges': '1:1000', 'Compute-1::AdminPassword': '5c33116fd616ae4de825ae41db39e61f3e4ee9c7', 'Cinder-Storage-1::SnmpdReadonlyUserPassword': 'd28719fd7350b583588db15b28612614bd936f3d', 'Controller-1::SwiftPassword': 'b0ceb5ee5f60d2a6e210a2d1324121f0e9f21075', 'Controller-1::NovaPassword': '6d4902377e52457c4ac489cdecde28f721a0c706', 'Controller-1::count': 3, 'Compute-1::NeutronAllowL3AgentFailover': False, 'Compute-1::NeutronVniRanges': '1:1000', 'Controller-1::NeutronL3HA': True, 'Controller-1::KeystoneCACertificate': '-----BEGIN CERTIFICATE-----\nMIIDNzCCAh+gAwIBAgIBATANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJYWDEO\nMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVuc2V0MQ4wDAYDVQQKEwVVbnNldDEU\nMBIGA1UEAxMLS2V5c3RvbmUgQ0EwHhcNMTUwODExMDAzMTEzWhcNMjUwODA4MDAz\nMTEzWjBTMQswCQYDVQQGEwJYWDEOMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVu\nc2V0MQ4wDAYDVQQKEwVVbnNldDEUMBIGA1UEAxMLS2V5c3RvbmUgQ0EwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBgwQQFbvL5kZ5sP4JZqzDWfLroazR\nEVuINoaqrcw6DnUERSgBxOQARLYkuF+aB35pSkZfuW25EXoaVEpORa1b5crW3ORh\nYcnXNg9Wjnrzaxtkfxsby5phRSX/qMUgomGxKtY92sxfLtDt/6ZQ2aIN+YXIfSCa\nkaS+96EvSkZTO2GjXhjQBKEslxgYY8UVGuEXkRTOzO+THhgyxVyZGTiAkLNYXxYw\nI3FzILYc3dTwkwU0cmPyZze0+c/NFA5git11fdsqaehonNhLVyDXMPvYrHVNM3MR\ns0AzA3nAf3Cj/lpYdXWtQ8pTVnQEkwQN4axq+4pcQ8lYEAPmY2S3Dp0xAgMBAAGj\nFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQEFBQADggEBABCdwuEV\nSmHkiHAujD9aIQKhlhjymn2r9uPxCW78hArVvvOd7bUMWyM5xi4N7OTtKEKuS0s/\nGnD4HbwxIAUF+BfgEC9acuCjdpuofYolxxGNDG6gSt0LHSi+ewvaoV553gZ616bJ\n44rM992kCpqfYAWuIIOCuw5idolqNvOCxEL5TXn+KwkZdGLSHlcW/mfpvxnIa0tD\nwsIPtFGjrV51UkZ8cRoDUvaJompZh3K17G4CPxaNlNfWyCj0TbWAU2W/XstI6WGR\nCuv33dNMNOhoHRlH/SO2IWmi6idTfNGUhogckJBbZk3oEUXcokNB6Pya8/Mfu/HX\naAPZAEV4euR4HsQ=\n-----END CERTIFICATE-----\n', 'Controller-1::SwiftHashSuffix': '1068777dbd948ad45cc41aa791debef7b08acb3b', 'Controller-1::NtpServer': '10.5.26.10', 'Controller-1::GlanceBackend': 'swift', 'CephAdminKey': "''", 'Controller-1::Flavor': 'baremetal', 'Controller-1::CinderEnableRbdBackend': False, 'Controller-1::CeilometerPassword': 'b563ff14811dfc5b37ab087f31b1f257790877ef', 'Controller-1::NeutronDhcpAgentsPerNetwork': 3, 'Ceph-Storage-1::count': 0, 'Compute-1::NeutronPassword': '1f8708a64263833ac657891fa114956d0f22d4b1', 'NeutronControlPlaneID': u'3ceab9a2-4cc2-4a0e-82d6-16454778849a', 'Cinder-Storage-1::count': 0, 'Compute-1::CeilometerPassword': 'b563ff14811dfc5b37ab087f31b1f257790877ef', 'Compute-1::Flavor': 'baremetal', 'Compute-1::NeutronTunnelIdRanges': '1:1000', 'Controller-1::AdminPassword': '5c33116fd616ae4de825ae41db39e61f3e4ee9c7', 'Controller-1::CeilometerMeteringSecret': '6f19ae044430e0de4ced598dd5653958c35741c9', 'Controller-1::NeutronVniRanges': '1:1000', 'Controller-1::NeutronTunnelTypes': 'vxlan', 'Compute-1::NovaEnableRbdBackend': False, 'Compute-1::NeutronTunnelTypes': 'vxlan', 'Compute-1::NovaComputeLibvirtType': 'kvm', 'Controller-1::SnmpdReadonlyUserPassword': 'd28719fd7350b583588db15b28612614bd936f3d', 'Compute-1::NeutronPublicInterface': 'nic1', 'Controller-1::GlancePassword': '62c246411c7af70401f155579390bfbcfe4bd14f', 'Controller-1::CinderPassword': '64260247a2c78ab55dee07431e30c8a430e11519', 'Controller-1::NeutronPublicInterface': 'nic1', 'Controller-1::CinderEnableIscsiBackend': True, 'Compute-1::CeilometerMeteringSecret': '6f19ae044430e0de4ced598dd5653958c35741c9', 'Controller-1::NeutronAllowL3AgentFailover': False, 'Controller-1::AdminToken': '4ad57aa82d4714b5b5b435c79c405bf9e9efe3d3', 'Controller-1::KeystoneSigningKey': '-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5YOpRXRa34O0y\nGNZi4dvfiZHeM2HFh20feytzaz5/8/3u9pbSOe+N9RBXA4oLPGRr1pfhpA/r5fsc\nITkfUOTGKlA+RYEq9o5nPxY02M+JUSV6MAzffruyCNUii8DBI/tcDqcLfSuWWyKE\nARQ+OkGLLxxYEnFrEbtSsaMkOXrNtxNmQs/v1sEoKBy39R4OcglsYSY26FjIcieT\nIwNPHJhSkojVLqT8ttq/4185TtLc8V/9qgoF24AZgnBIGxzPrlNjOb7ZIfrrlTHp\nMBqEUvkmr8wFZiq86aPbqlbEkVcqfElRMPDoFNsXFnLy8tHtDTymKHrgXy4KLvZH\nKzBiTT6bAgMBAAECggEAIbygiDQvyUEXCdH5Wj+Oe00XDeA9/+vYkS0iSDwRQMoP\nwaiA5DuE/EnIMn3DZq4T/IguVfM8rorJO2JUef2H1QSoW9zcWAxM+D9D9FQs2Om6\nr1UFUrtGv2zaFRJn/v5kZWmJPw8FmrR1QJ7Np1GE0ia9us2IdJrig3cuoI4RalSC\ncoLIOK6U5PviNipF0nUgUA97SwG2UKUlpMGvSFr1GiqkAuoNfLq0a9pK1uDiJ0VP\nsSlFUdjB2GJkj2eDf6YiFdHNWRzDOq0qX47zmAv9CZNyQsaoMqgg7Ha1lkwkgRV6\nIGGitNiqLEFXz+S1uzhsCaokhUNKLspmo65/yPbzmQKBgQDw68v/oiGu83qj530z\n9EHsACnvn3nk+JQ7ZrIEOkzXSXx5TuQuMSujjFTH4DcGvjBS//Sg0BwroTny5UKj\nDUBfmgeYEMcdpdNH7eOwSC9BETeOSWj2ypiWUHG5R9VI35AXRZd3IBTebcer0YH5\n5jlqp+0bKL2P+Lew6Tw5jtFa/QKBgQDE+y2gpMpk1GUy4kXnYdXoNa4om6jkRnHu\nc2pc/CpzYF0qr5uGS/VO+LAJ4DFWtZIso+ILqvBLtaSzLdQDYe+JHH/u3vm7m4/L\nccW0SRHb+xoEorTTwpLpxbJbfE+lWcwqtStirP2KJzQ0P4AiW5BKD3EuEAYUlxZw\nJIk3Gb2vdwKBgQCdnPXB0NUOetWCA0Diy2qRNe45iPCa/pEjZ2UQ5P8+XSIkzprz\nKVHuVjFk7eex7pz4v+DPkDbNyFV79capm1LA+Kj9MATD/aeCyDwMKL1ZaSUaXiZg\nRlybAhfUag079p5yyyFzWrasac+WNaM91QM9Jo01FmsllEbAY2X2FdwbFQKBgEaA\n5K7n7K00PFh/Fqgfo3FurTxJoqS59hNz6fEILKWJKy+ZFSB3VYEDj/ao8N/pMz2Z\nFtI4R7PBewbK82SWjCbWNZAo7NfScSBPQ4Uo1iSXdpOMLQ7SSMU1hoYqM1OqlWH/\n4Fx8MG9fYtcEl3c0sKthZZAoGhUKkvRmj1pSc0s3AoGAXDdW08upVXOhhrqAmB42\nGKsDzoeSZOiuxX9Kp0bMx+HdTaFPBESIvJSpwnflG808DyPGAZMl0l6VQLaXC1vB\n6FYwXQxFnPe6VeOAcP3s+R9JonNkL3hT8OrNnyGoZrenzkOKvZxcKupBFMHNO7Xd\nnQKdMrDO2GX7qh7QbzPaGZQ=\n-----END PRIVATE KEY-----\n', 'Cinder-Storage-1::Flavor': 'baremetal', 'CephClusterFSID': "''", 'Swift-Storage-1::Flavor': 'baremetal', 'CephMonKey': "''", 'Compute-1::NtpServer': '10.5.26.10', 'Compute-1::SnmpdReadonlyUserPassword': 'd28719fd7350b583588db15b28612614bd936f3d', 'Controller-1::NeutronNetworkType': 'vxlan', 'Compute-1::count': 1, 'Compute-1::NeutronL3HA': True, 'Swift-Storage-1::SnmpdReadonlyUserPassword': 'd28719fd7350b583588db15b28612614bd936f3d'}
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Deploying environment: {u'parameter_defaults': {u'TenantNetworkVlanID': 237, u'StorageNetworkVlanID': 236, u'StorageAllocationPools': [{u'start': u'172.21.36.10', u'end': u'172.21.36.200'}], u'StorageMgmtAllocationPools': [{u'start': u'172.21.35.10', u'end': u'172.21.35.200'}], u'NeutronExternalNetworkBridge': u"''", u'InternalApiNetCidr': u'172.21.33.0/24', u'ExternalAllocationPools': [{u'start': u'10.16.159.150', u'end': u'10.16.159.160'}], u'StorageNetCidr': u'172.21.36.0/24', u'StorageMgmtNetCidr': u'172.21.35.0/24', u'TenantAllocationPools': [{u'start': u'172.16.0.10', u'end': u'172.16.0.200'}], u'InternalApiAllocationPools': [{u'start': u'172.21.33.10', u'end': u'172.21.33.200'}], u'TenantNetCidr': u'172.16.0.0/24', u'InternalApiNetworkVlanID': 233, u'ExternalInterfaceDefaultRoute': u'10.16.159.254', u'ExternalNetCidr': u'10.16.152.0/21', u'BondInterfaceOvsOptions': u'bond_mode=balance-tcp lacp=active other-config:lacp-fallback-ab=true other-config:lacp-time=fast', u'StorageMgmtNetworkVlanID': 235}, u'parameters': {u'Controller-1::SSLKey': u'', u'Compute-1::RabbitClientUseSSL': False, u'Controller-1::KeystoneSSLCertificate': u'', u'Controller-1::NeutronDhcpAgentsPerNetwork': 3, u'Controller-1::CinderLVMLoopDeviceSize': 5000, u'Controller-1::NeutronTunnelIdRanges': u'1:1000', u'Compute-1::AdminPassword': u'unset', u'Controller-1::removal_policies': [], u'Controller-1::NovaPassword': u'unset', u'NeutronTunnelIdRanges': u'1:1000', u'Controller-1::count': u'1', u'Compute-1::GlancePort': u'9292', u'NeutronPublicInterfaceTag': u'', u'ControllerHostnameFormat': u'%stackname%-controller-%index%', u'Controller-1::SnmpdReadonlyUserName': u'ro_snmp_user', u'CephStorageHostnameFormat': u'%stackname%-cephstorage-%index%', u'Compute-1::NeutronMechanismDrivers': u'openvswitch', u'Ceph-Storage-1::NtpServer': u'', u'Ceph-Storage-1::EnablePackageInstall': u'false', u'Ceph-Storage-1::count': u'0', u'Cinder-Storage-1::KeyName': u'default', u'Controller-1::ImageUpdatePolicy': u'REBUILD_PRESERVE_EPHEMERAL', u'Cinder-Storage-1::CinderEnableIscsiBackend': True, u'Swift-Storage-1::UpdateIdentifier': u'', u'Compute-1::NovaComputeLibvirtType': u'qemu', u'Controller-1::SwiftMinPartHours': 1, u'Controller-1::ControllerExtraConfig': {}, u'Controller-1::RabbitClientPort': 5672, u'Swift-Storage-1::NtpServer': u'', u'Swift-Storage-1::KeyName': u'default', u'Compute-1::ServiceNetMap': {u'GlanceRegistryNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'NovaMetadataNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NeutronApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystonePublicApiNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage'}, u'Controller-1::NeutronAllowL3AgentFailover': u'True', u'Compute-1::NovaComputeDriver': u'libvirt.LibvirtDriver', u'Cinder-Storage-1::Flavor': u'baremetal', u'Controller-1::NeutronVniRanges': u'1:1000', u'Controller-1::KeystoneSigningKey': u'', u'Cinder-Storage-1::GlancePort': u'9292', u'Controller-1::RabbitPassword': u'guest', u'Compute-1::count': u'1', u'Controller-1::SSLCACertificate': u'', u'Compute-1::EnablePackageInstall': u'false', u'Swift-Storage-1::MinPartHours': 1, u'Controller-1::CinderNfsMountOptions': u'', u'Controller-1::HeatPassword': u'unset', u'Swift-Storage-1::count': u'0', u'Controller-1::NeutronPublicInterfaceDefaultRoute': u'', u'Swift-Storage-1::Replicas': 3, u'Compute-1::NeutronNetworkType': u'gre', u'Controller-1::NeutronPassword': u'unset', u'Swift-Storage-1::removal_policies': [], u'Cinder-Storage-1::SnmpdReadonlyUserPassword': u'unset', u'Controller-1::SwiftPassword': u'unset', u'Controller-1::NeutronEnableTunnelling': u'True', u'Controller-1::GlanceLogFile': u'', u'Compute-1::NeutronVniRanges': u'1:1000', u'Swift-Storage-1::SnmpdReadonlyUserName': u'ro_snmp_user', u'Cinder-Storage-1::removal_policies': [], u'Compute-1::NeutronMetadataProxySharedSecret': u'unset', u'Compute-1::ExtraConfig': {}, u'Controller-1::GlanceFilePcmkManage': False, u'Controller-1::SwiftHashSuffix': u'unset', u'Controller-1::NtpServer': u'', u'Controller-1::RabbitUserName': u'guest', u'Controller-1::CeilometerPassword': u'unset', u'CephAdminKey': u'', u'Controller-1::EnablePackageInstall': u'false', u'Cinder-Storage-1::count': u'0', u'Controller-1::NeutronBridgeMappings': u'datacentre:br-ex', u'Controller-1::PublicVirtualInterface': u'br-ex', u'Compute-1::Flavor': u'baremetal', u'Controller-1::RabbitClientUseSSL': False, u'Controller-1::SwiftReplicas': 3, u'ComputeHostnameFormat': u'%stackname%-compute-%index%', u'Compute-1::GlanceProtocol': u'http', u'Controller-1::NeutronTunnelTypes': u'gre', u'Compute-1::NeutronTunnelTypes': u'gre', u'Controller-1::SnmpdReadonlyUserPassword': u'unset', u'Controller-1::GlanceNotifierStrategy': u'noop', u'Compute-1::NeutronPublicInterfaceRawDevice': u'', u'Cinder-Storage-1::Debug': u'', u'Controller-1::CinderPassword': u'unset', u'Ceph-Storage-1::ServiceNetMap': {u'GlanceRegistryNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'NovaMetadataNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NeutronApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystonePublicApiNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage'}, u'Compute-1::CinderEnableNfsBackend': False, u'Controller-1::NeutronPublicInterfaceTag': u'', u'Cinder-Storage-1::SnmpdReadonlyUserName': u'ro_snmp_user', u'Controller-1::SwiftPartPower': 10, u'Swift-Storage-1::Flavor': u'baremetal', u'BlockStorageHostnameFormat': u'%stackname%-blockstorage-%index%', u'RabbitCookieSalt': u'unset', u'Compute-1::RabbitUserName': u'guest', u'Ceph-Storage-1::Image': u'overcloud-full', u'CephClusterFSID': u'', u'Controller-1::KeystoneSigningCertificate': u'', u'Compute-1::KeyName': u'default', u'Cinder-Storage-1::RabbitClientPort': 5672, u'Compute-1::SnmpdReadonlyUserPassword': u'unset', u'Controller-1::GlanceProtocol': u'http', u'Compute-1::NeutronNetworkVLANRanges': u'datacentre:1:1000', u'Controller-1::NeutronAgentMode': u'dvr_snat', u'Compute-1::NeutronFlatNetworks': u'datacentre', u'Cinder-Storage-1::EnablePackageInstall': u'false', u'Compute-1::ImageUpdatePolicy': u'REBUILD_PRESERVE_EPHEMERAL', u'Controller-1::NeutronNetworkType': u'gre', u'Controller-1::NeutronMetadataProxySharedSecret': u'unset', u'Ceph-Storage-1::Flavor': u'baremetal', u'Controller-1::NeutronDnsmasqOptions': u'dhcp-option-force=26,1400', u'PublicVirtualFixedIPs': [], u'ServiceNetMap': {u'GlanceRegistryNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'NovaMetadataNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NeutronApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystonePublicApiNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage'}, u'Compute-1::NeutronPassword': u'unset', u'Compute-1::NeutronAllowL3AgentFailover': u'True', u'NeutronVniRanges': u'1:1000', u'Controller-1::GlanceFilePcmkFstype': u'nfs', u'Swift-Storage-1::ServiceNetMap': {u'GlanceRegistryNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'NovaMetadataNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NeutronApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystonePublicApiNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage'}, u'Ceph-Storage-1::ImageUpdatePolicy': u'REBUILD_PRESERVE_EPHEMERAL', u'PublicVirtualNetwork': u'ctlplane', u'Cinder-Storage-1::UpdateIdentifier': u'', u'Controller-1::Debug': u'', u'Controller-1::CeilometerBackend': u'mongodb', u'Cinder-Storage-1::ExtraConfig': {}, u'Ceph-Storage-1::KeyName': u'default', u'Compute-1::NeutronAgentMode': u'dvr_snat', u'Compute-1::CeilometerPassword': u'unset', u'NeutronControlPlaneID': u'', u'Controller-1::GlanceFilePcmkOptions': u'', u'Swift-Storage-1::PartPower': 10, u'Controller-1::ServiceNetMap': {u'GlanceRegistryNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'NovaMetadataNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NeutronApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystonePublicApiNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage'}, u'Controller-1::NeutronFlatNetworks': u'datacentre', u'Controller-1::CinderEnableIscsiBackend': True, u'Compute-1::CeilometerMeteringSecret': u'unset', u'Compute-1::NeutronTunnelIdRanges': u'1:1000', u'ControlFixedIPs': [], u'Controller-1::NeutronPublicInterfaceIP': u'', u'Controller-1::GlancePassword': u'unset', u'Controller-1::KeyName': u'default', u'Cinder-Storage-1::RabbitUserName': u'guest', u'Controller-1::EnableSwiftStorage': True, u'Swift-Storage-1::MountCheck': u'false', u'Compute-1::NtpServer': u'', u'Controller-1::SSLCertificate': u'', u'Compute-1::removal_policies': [], u'Cinder-Storage-1::CinderLVMLoopDeviceSize': 5000, u'Compute-1::Image': u'overcloud-full', u'Compute-1::UpdateIdentifier': u'', u'Controller-1::NeutronDVR': u'False', u'Controller-1::GlanceFilePcmkDevice': u'', u'Swift-Storage-1::SnmpdReadonlyUserPassword': u'unset', u'Controller-1::GlancePort': u'9292', u'Controller-1::Flavor': u'baremetal', u'Controller-1::NeutronMechanismDrivers': u'openvswitch', u'Controller-1::CloudName': u'overcloud', u'Controller-1::KeystoneSSLCertificateKey': u'', u'Controller-1::EnablePacemaker': False, u'Controller-1::HeatStackDomainAdminPassword': u'unset', u'Controller-1::NeutronExternalNetworkBridge': u"''", u'Controller-1::MysqlInnodbBufferPoolSize': 0, u'Controller-1::CinderISCSIHelper': u'lioadm', u'Swift-Storage-1::Image': u'overcloud-full', u'Cinder-Storage-1::CinderISCSIHelper': u'lioadm', u'Compute-1::NovaPassword': u'unset', u'Controller-1::ControlVirtualInterface': u'br-ex', u'Swift-Storage-1::EnablePackageInstall': u'false', u'Compute-1::NovaEnableRbdBackend': False, u'Controller-1::NeutronL3HA': u'False', u'Controller-1::Image': u'overcloud-full', u'Swift-Storage-1::HashSuffix': u'unset', u'CephMonKey': u'', u'Compute-1::NeutronDVR': u'False', u'Compute-1::NeutronL3HA': u'False', u'Cinder-Storage-1::Image': u'overcloud-full', u'Controller-1::KeystoneCACertificate': u'', u'Ceph-Storage-1::removal_policies': [], u'Cinder-Storage-1::ServiceNetMap': {u'GlanceRegistryNetwork': u'internal_api', u'NeutronTenantNetwork': u'tenant', u'NovaApiNetwork': u'internal_api', u'CeilometerApiNetwork': u'internal_api', u'CephStorageHostnameResolveNetwork': u'storage', u'SwiftMgmtNetwork': u'storage_mgmt', u'MemcachedNetwork': u'internal_api', u'RabbitMqNetwork': u'internal_api', u'KeystoneAdminApiNetwork': u'internal_api', u'SwiftProxyNetwork': u'storage', u'CinderApiNetwork': u'internal_api', u'CephClusterNetwork': u'storage_mgmt', u'NovaMetadataNetwork': u'internal_api', u'RedisNetwork': u'internal_api', u'NeutronApiNetwork': u'internal_api', u'GlanceApiNetwork': u'storage', u'ObjectStorageHostnameResolveNetwork': u'internal_api', u'KeystonePublicApiNetwork': u'internal_api', u'HeatApiNetwork': u'internal_api', u'NovaVncProxyNetwork': u'internal_api', u'ControllerHostnameResolveNetwork': u'internal_api', u'MysqlNetwork': u'internal_api', u'BlockStorageHostnameResolveNetwork': u'internal_api', u'ComputeHostnameResolveNetwork': u'internal_api', u'CephPublicNetwork': u'storage', u'MongoDbNetwork': u'internal_api', u'HorizonNetwork': u'internal_api', u'CinderIscsiNetwork': u'storage'}, u'Controller-1::NeutronPublicInterfaceRawDevice': u'', u'Controller-1::AdminPassword': u'unset', u'Controller-1::CeilometerMeteringSecret': u'unset', u'Cinder-Storage-1::RabbitPassword': u'guest', u'Controller-1::EnableCephStorage': False, u'Cinder-Storage-1::CinderPassword': u'unset', u'Controller-1::CinderBackendConfig': {}, u'Compute-1::SnmpdReadonlyUserName': u'ro_snmp_user', u'Controller-1::CinderNfsServers': u'', u'Compute-1::NeutronPublicInterface': u'nic1', u'Controller-1::NeutronPublicInterface': u'nic1', u'Compute-1::Debug': u'', u'Cinder-Storage-1::NtpServer': u'', u'Controller-1::CinderEnableNfsBackend': False, u'Ceph-Storage-1::UpdateIdentifier': u'', u'Compute-1::CeilometerComputeAgent': u'', u'Compute-1::NeutronBridgeMappings': u'datacentre:br-ex', u'Cinder-Storage-1::GlanceProtocol': u'http', u'Controller-1::EnableGalera': True, u'ObjectStorageHostnameFormat': u'%stackname%-objectstorage-%index%', u'Controller-1::AdminToken': u'unset', u'Controller-1::SwiftMountCheck': u'false', u'Controller-1::MysqlMaxConnections': 1024, u'Controller-1::UpdateIdentifier': u'', u'Controller-1::NeutronNetworkVLANRanges': u'datacentre:1:1000', u'Controller-1::GlanceBackend': u'swift', u'Compute-1::RabbitClientPort': 5672, u'Controller-1::ExtraConfig': {}, u'Controller-1::CinderEnableRbdBackend': False, u'Cinder-Storage-1::RabbitClientUseSSL': False, u'Compute-1::NeutronPhysicalBridge': u'br-ex', u'Compute-1::NeutronEnableTunnelling': u'True', u'Compute-1::NovaComputeExtraConfig': {}, u'Compute-1::RabbitPassword': u'guest'}, u'resource_registry': {u'OS::TripleO::SwiftStorage::Ports::InternalApiPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml', u'OS::TripleO::ControllerConfig': u'file:///tmp/tmpVtTjeI/puppet/controller-config-pacemaker.yaml', u'OS::TripleO::Controller::Net::SoftwareConfig': u'file:///home/stack/nic-configs/controller.yaml', u'OS::TripleO::Network::External': u'file:///usr/share/openstack-tripleo-heat-templates/network/external.yaml', u'OS::TripleO::BlockStorage::Ports::StorageMgmtPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml', u'OS::TripleO::CephClusterConfig::SoftwareConfig': u'file:///tmp/tmpVtTjeI/puppet/ceph-cluster-config.yaml', u'OS::TripleO::SwiftStorage::Ports::StorageMgmtPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml', u'OS::TripleO::VipConfig': u'file:///tmp/tmpVtTjeI/puppet/vip-config.yaml', u'OS::TripleO::Network::Ports::NetIpListMap': u'file:///tmp/tmpVtTjeI/network/ports/net_ip_list_map.yaml', u'OS::TripleO::Compute::Ports::TenantPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml', u'OS::TripleO::ObjectStorage': u'file:///tmp/tmpVtTjeI/puppet/swift-storage-puppet.yaml', u'Tuskar::Compute-1': u'file:///tmp/tmpVtTjeI/provider-Compute-1.yaml', u'OS::TripleO::Compute::Ports::InternalApiPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml', u'OS::TripleO::NodeExtraConfigPost': u'file:///tmp/tmpVtTjeI/extraconfig/post_deploy/default.yaml', u'OS::TripleO::CephStorage::Ports::StoragePort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml', u'OS::TripleO::NodeUserData': u'file:///tmp/tmpVtTjeI/firstboot/userdata_default.yaml', u'OS::TripleO::BootstrapNode::SoftwareConfig': u'file:///tmp/tmpVtTjeI/puppet/bootstrap-config.yaml', u'OS::TripleO::CephStorage': u'file:///tmp/tmpVtTjeI/puppet/ceph-storage-puppet.yaml', u'OS::TripleO::CephStoragePostDeployment': u'file:///tmp/tmpVtTjeI/puppet/ceph-storage-post-puppet.yaml', u'OS::TripleO::Controller::Ports::InternalApiPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml', u'OS::TripleO::Network::Tenant': u'file:///usr/share/openstack-tripleo-heat-templates/network/tenant.yaml', u'Tuskar::Ceph-Storage-1': u'file:///tmp/tmpVtTjeI/provider-Ceph-Storage-1.yaml', u'OS::TripleO::BlockStorage::Ports::InternalApiPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml', u'OS::TripleO::Compute': u'file:///tmp/tmpVtTjeI/puppet/compute-puppet.yaml', u'OS::TripleO::ObjectStorage::Net::SoftwareConfig': u'file:///home/stack/nic-configs/swift-storage.yaml', u'OS::TripleO::Controller::Ports::ExternalPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml', u'OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig': u'file:///tmp/tmpVtTjeI/puppet/swift-devices-and-proxy-config.yaml', u'OS::TripleO::ObjectStoragePostDeployment': u'file:///tmp/tmpVtTjeI/puppet/swift-storage-post.yaml', u'OS::TripleO::AllNodes::SoftwareConfig': u'file:///tmp/tmpVtTjeI/puppet/all-nodes-config.yaml', u'OS::TripleO::CephStorage::Net::SoftwareConfig': u'file:///home/stack/nic-configs/ceph-storage.yaml', u'OS::TripleO::Compute::Net::SoftwareConfig': u'file:///home/stack/nic-configs/compute.yaml', u'OS::TripleO::Network::InternalApi': u'file:///usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml', u'OS::TripleO::BlockStoragePostDeployment': u'file:///tmp/tmpVtTjeI/puppet/cinder-storage-post.yaml', u'OS::TripleO::BlockStorage::Ports::StoragePort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml', u'Tuskar::Controller-1': u'file:///tmp/tmpVtTjeI/provider-Controller-1.yaml', u'Tuskar::Cinder-Storage-1': u'file:///tmp/tmpVtTjeI/provider-Cinder-Storage-1.yaml', u'OS::TripleO::CephStorage::Ports::StorageMgmtPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml', u'OS::TripleO::ControllerExtraConfigPre': u'file:///tmp/tmpVtTjeI/puppet/extraconfig/pre_deploy/default.yaml', u'OS::TripleO::ComputePostDeployment': u'file:///tmp/tmpVtTjeI/puppet/compute-post-puppet.yaml', u'OS::TripleO::BlockStorage': u'file:///tmp/tmpVtTjeI/puppet/cinder-storage-puppet.yaml', u'OS::TripleO::Controller::Ports::RedisVipPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml', u'OS::TripleO::Network::StorageMgmt': u'file:///usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml', u'OS::TripleO::Controller': u'file:///tmp/tmpVtTjeI/puppet/controller-puppet.yaml', u'OS::TripleO::Network': u'file:///tmp/tmpVtTjeI/network/networks.yaml', u'OS::TripleO::Tasks::PackageUpdate': u'file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.yaml', u'OS::TripleO::Controller::Ports::TenantPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml', u'OS::TripleO::Controller::Ports::StoragePort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml', u'Tuskar::Swift-Storage-1': u'file:///tmp/tmpVtTjeI/provider-Swift-Storage-1.yaml', u'OS::TripleO::BlockStorage::Net::SoftwareConfig': u'file:///home/stack/nic-configs/cinder-storage.yaml', u'OS::TripleO::Network::Ports::NetIpMap': u'file:///tmp/tmpVtTjeI/network/ports/net_ip_map.yaml', u'OS::TripleO::Network::Storage': u'file:///usr/share/openstack-tripleo-heat-templates/network/storage.yaml', u'OS::TripleO::SoftwareDeployment': u'OS::Heat::StructuredDeployment', u'OS::TripleO::Controller::Ports::StorageMgmtPort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml', u'OS::TripleO::SwiftStorage::Ports::StoragePort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml', u'OS::TripleO::Compute::Ports::StoragePort': u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml', u'OS::TripleO::ControllerPostDeployment': u'file:///tmp/tmpVtTjeI/puppet/controller-post-puppet.yaml'}}
DEBUG: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Deploying files: {u'file:///home/stack/nic-configs/ceph-storage.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the ceph storage role.\\n", "parameters": {"TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "BondInterfaceOvsOptions": {"default": "", "type": "string", "description": "The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option."}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "StorageMgmtNetworkVlanID": {"default": 40, "type": "number", "description": "Vlan ID for the storage mgmt network traffic."}, "StorageNetworkVlanID": {"default": 30, "type": "number", "description": "Vlan ID for the storage network traffic."}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"os_net_config": {"network_config": [{"type": "ovs_bridge", "name": "br-bond", "members": [{"ovs_options": {"get_param": "BondInterfaceOvsOptions"}, "type": "ovs_bond", "name": "bond1", "members": [{"type": "interface", "name": "nic5", "primary": true}, {"type": "interface", "name": "nic6"}]}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageIpSubnet"}}], "vlan_id": {"get_param": "StorageNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageMgmtIpSubnet"}}], "vlan_id": {"get_param": "StorageMgmtNetworkVlanID"}}]}]}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/extraconfig/pre_deploy/default.yaml': '{"outputs": {"deploy_stdout": {"value": "None"}}, "heat_template_version": "2014-10-16", "description": "Noop Extra Pre-Deployment Config", "parameters": {"server": {"type": "string"}}}', u'file:///tmp/tmpVtTjeI/hieradata/ceph.yaml': 'ceph::profile::params::osd_journal_size: 1024\nceph::profile::params::osd_pool_default_pg_num: 128\nceph::profile::params::osd_pool_default_pgp_num: 128\nceph::profile::params::osd_pool_default_size: 3\nceph::profile::params::osd_pool_default_min_size: 1\nceph::profile::params::osds: {/srv/data: {}}\nceph::profile::params::manage_repo: false\nceph::profile::params::authentication_type: cephx\n\nceph_pools:\n - volumes\n - vms\n - images\n\nceph_osd_selinux_permissive: true\n', u'file:///tmp/tmpVtTjeI/provider-Ceph-Storage-1.yaml': '{"outputs": {"config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["CephStorageDeployment", "deploy_stdout"]}}, "hosts_entry": {"value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephStorageHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["CephStorage", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "nova_server_resource": {"description": "Heat resource handle for the ceph storage server", "value": {"get_resource": "CephStorage"}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "OpenStack ceph storage node configured by Puppet", "parameters": {"ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "NtpServer": {"default": "", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Flavor": {"type": "string", "description": "Flavor for the Ceph Storage node.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Image": {"default": "overcloud-ceph-storage", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "CephStorageConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "ceph_cluster", "ceph", "RedHat", "common"], "datafiles": {"ceph": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/ceph.yaml"}, "mapped_data": {"ceph::profile::params::cluster_network": {"get_input": "ceph_cluster_network"}, "ntp::servers": {"get_input": "ntp_servers"}, "ceph::profile::params::public_network": {"get_input": "ceph_public_network"}, "enable_package_install": {"get_input": "enable_package_install"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/common.yaml"}}}}}, "group": "os-apply-config"}}, "CephStorage": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "image_update_policy": {"get_param": "ImageUpdatePolicy"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "NetworkConfig": {"type": "OS::TripleO::CephStorage::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "CephStorage"}}}, "StoragePort": {"type": "OS::TripleO::CephStorage::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["CephStorage", "networks", "ctlplane", 0]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "StorageMgmtPort": {"type": "OS::TripleO::CephStorage::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["CephStorage", "networks", "ctlplane", 0]}}}, "NetIpSubnetMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_subnet"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "CephStorage"}}}, "CephStorageDeployment": {"depends_on": "NetworkDeployment", "type": "OS::Heat::StructuredDeployment", "properties": {"input_values": {"ceph_public_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "ceph_cluster_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephClusterNetwork"]}]}, "enable_package_install": {"get_param": "EnablePackageInstall"}}, "config": {"get_resource": "CephStorageConfig"}, "server": {"get_resource": "CephStorage"}}}}}', u'file:///tmp/tmpVtTjeI/firstboot/userdata_default.yaml': '{"outputs": {"OS::stack_id": {"value": {"get_resource": "userdata"}}}, "heat_template_version": "2014-10-16", "description": "This is a default no-op template which provides empty user-data which can be passed to the OS::Nova::Server resources. This template can be replaced with a different implementation via the resource registry, such that deployers may customize their first-boot configuration.\\n", "resources": {"userdata": {"type": "OS::Heat::MultipartMime"}}}', u'file:///home/stack/nic-configs/swift-storage.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the swift storage role.\\n", "parameters": {"TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "BondInterfaceOvsOptions": {"default": "", "type": "string", "description": "The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option."}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "InternalApiNetworkVlanID": {"default": 20, "type": "number", "description": "Vlan ID for the internal_api network traffic."}, "StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "StorageMgmtNetworkVlanID": {"default": 40, "type": "number", "description": "Vlan ID for the storage mgmt network traffic."}, "StorageNetworkVlanID": {"default": 30, "type": "number", "description": "Vlan ID for the storage network traffic."}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"os_net_config": {"network_config": [{"type": "ovs_bridge", "name": "br-bond", "members": [{"ovs_options": {"get_param": "BondInterfaceOvsOptions"}, "type": "ovs_bond", "name": "bond1", "members": [{"type": "interface", "name": "nic5", "primary": true}, {"type": "interface", "name": "nic6"}]}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "InternalApiIpSubnet"}}], "vlan_id": {"get_param": "InternalApiNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageIpSubnet"}}], "vlan_id": {"get_param": "StorageNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageMgmtIpSubnet"}}], "vlan_id": {"get_param": "StorageMgmtNetworkVlanID"}}]}]}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/ceph-storage-puppet.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hosts_entry": {"value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephStorageHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["CephStorage", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "nova_server_resource": {"description": "Heat resource handle for the ceph storage server", "value": {"get_resource": "CephStorage"}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["CephStorageDeployment", "deploy_stdout"]}}}, "heat_template_version": "2015-04-30", "description": "OpenStack ceph storage node configured by Puppet", "parameters": {"ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "NtpServer": {"default": "", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Flavor": {"type": "string", "description": "Flavor for the Ceph Storage node.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Image": {"default": "overcloud-ceph-storage", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "CephStorage": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "image_update_policy": {"get_param": "ImageUpdatePolicy"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "CephStorageConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "ceph_cluster", "ceph", "RedHat", "common"], "datafiles": {"ceph": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml"}, "mapped_data": {"ceph::profile::params::cluster_network": {"get_input": "ceph_cluster_network"}, "ntp::servers": {"get_input": "ntp_servers"}, "ceph::profile::params::public_network": {"get_input": "ceph_public_network"}, "enable_package_install": {"get_input": "enable_package_install"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml"}}}}}}}, "StoragePort": {"type": "OS::TripleO::CephStorage::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["CephStorage", "networks", "ctlplane", 0]}}}, "StorageMgmtPort": {"type": "OS::TripleO::CephStorage::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["CephStorage", "networks", "ctlplane", 0]}}}, "NetworkConfig": {"type": "OS::TripleO::CephStorage::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "CephStorage"}}}, "NetIpSubnetMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_subnet"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "CephStorage"}}}, "CephStorageDeployment": {"depends_on": "NetworkDeployment", "type": "OS::Heat::StructuredDeployment", "properties": {"input_values": {"ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "ceph_public_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "ceph_cluster_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephClusterNetwork"]}]}, "enable_package_install": {"get_param": "EnablePackageInstall"}}, "config": {"get_resource": "CephStorageConfig"}, "server": {"get_resource": "CephStorage"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/cinder-storage-post.yaml': '{"heat_template_version": "2015-04-30", "description": "OpenStack cinder storage post deployment for Puppet", "parameters": {"servers": {"type": "json"}, "NodeConfigIdentifiers": {"type": "json", "description": "Value which changes if the node configuration may need to be re-applied"}}, "resources": {"VolumePuppetConfig": {"type": "OS::Heat::SoftwareConfig", "properties": {"outputs": [{"name": "result"}], "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_volume.pp"}, "group": "puppet"}}, "VolumeDeployment_Step1": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_resource": "VolumePuppetConfig"}, "servers": {"get_param": "servers"}}}}}', u'file:///tmp/tmpVtTjeI/net-config-bridge.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to drive os-net-config for a simple bridge.\\n", "parameters": {"StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"os_net_config": {"network_config": [{"use_dhcp": true, "type": "ovs_bridge", "name": {"get_input": "bridge_name"}, "members": [{"type": "interface", "name": {"get_input": "interface_name"}, "primary": true}]}]}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/ceph-storage-post-puppet.yaml': '{"heat_template_version": "2015-04-30", "description": "OpenStack ceph storage node post deployment for Puppet\\n", "parameters": {"servers": {"type": "json"}, "NodeConfigIdentifiers": {"type": "json", "description": "Value which changes if the node configuration may need to be re-applied"}}, "resources": {"CephStoragePuppetConfig": {"type": "OS::Heat::SoftwareConfig", "properties": {"outputs": [{"name": "result"}], "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_cephstorage.pp"}, "group": "puppet"}}, "CephStorageDeployment_Step1": {"type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "CephStoragePuppetConfig"}, "servers": {"get_param": "servers"}}}, "ExtraConfig": {"depends_on": "CephStorageDeployment_Step1", "type": "OS::TripleO::NodeExtraConfigPost", "properties": {"servers": {"get_param": "servers"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml': "# Common Hiera data gets applied to all nodes\nssh::server::storeconfigs_enabled: false\n\n# ceilometer settings used by compute and controller ceilo auth settings\nceilometer::agent::auth::auth_region: 'regionOne'\n# FIXME: Might be better to use 'service' tenant here but this requires\n# changes in the tripleo-incubator keystone role setup\nceilometer::agent::auth::auth_tenant_name: 'admin'\n\nnova::network::neutron::neutron_admin_tenant_name: 'service'\nnova::network::neutron::neutron_admin_username: 'neutron'\nnova::network::neutron::vif_plugging_is_fatal: false\nnova::network::neutron::vif_plugging_timeout: 30\nnova::network::neutron::dhcp_domain: ''\n\nneutron::allow_overlapping_ips: true\nneutron::plugins::ml2::type_drivers:\n - flat\n - gre\n - vxlan\n - vlan\n\nsysctl_settings:\n net.ipv4.tcp_keepalive_intvl:\n value: 1\n net.ipv4.tcp_keepalive_probes:\n value: 5\n net.ipv4.tcp_keepalive_time:\n value: 5\n", u'file:///home/stack/nic-configs/cinder-storage.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the cinder storage role.\\n", "parameters": {"TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "BondInterfaceOvsOptions": {"default": "", "type": "string", "description": "The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option."}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "InternalApiNetworkVlanID": {"default": 20, "type": "number", "description": "Vlan ID for the internal_api network traffic."}, "StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "StorageMgmtNetworkVlanID": {"default": 40, "type": "number", "description": "Vlan ID for the storage mgmt network traffic."}, "StorageNetworkVlanID": {"default": 30, "type": "number", "description": "Vlan ID for the storage network traffic."}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"os_net_config": {"network_config": [{"type": "ovs_bridge", "name": "br-bond", "members": [{"ovs_options": {"get_param": "BondInterfaceOvsOptions"}, "type": "ovs_bond", "name": "bond1", "members": [{"type": "interface", "name": "nic5", "primary": true}, {"type": "interface", "name": "nic6"}]}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "InternalApiIpSubnet"}}], "vlan_id": {"get_param": "InternalApiNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageIpSubnet"}}], "vlan_id": {"get_param": "StorageNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageMgmtIpSubnet"}}], "vlan_id": {"get_param": "StorageMgmtNetworkVlanID"}}]}]}}}}}}', u'file:///tmp/tmpVtTjeI/network/noop.yaml': '{"heat_template_version": "2015-04-30", "description": "A stack which creates no network(s)."}', u'file:///tmp/tmpVtTjeI/provider-Cinder-Storage-1.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hosts_entry": {"value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "BlockStorageHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["BlockStorage", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["BlockStorageDeployment", "deploy_stdout"]}}, "nova_server_resource": {"description": "Heat resource handle for the block storage server", "value": {"get_resource": "BlockStorage"}}}, "heat_template_version": "2015-04-30", "description": "OpenStack cinder storage configured by Puppet", "parameters": {"CinderEnableIscsiBackend": {"default": true, "type": "boolean", "description": "Whether to enable or not the Iscsi backend for Cinder"}, "RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n"}, "NtpServer": {"default": "", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "RabbitPassword": {"default": "guest", "type": "string"}, "GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "RabbitUserName": {"default": "guest", "type": "string"}, "Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "MysqlVirtualIP": {"default": "", "type": "string"}, "VirtualIP": {"default": "", "type": "string"}, "GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "Image": {"default": "overcloud-cinder-volume", "type": "string"}, "ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\"FILEKEY\\":\\n {\\"config\\":\\n [{\\"section\\": \\"SECTIONNAME\\",\\n \\"values\\":\\n [{\\"option\\": \\"OPTIONNAME\\",\\n \\"value\\": \\"VALUENAME\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\"nova\\":\\n {\\"config\\":\\n [{\\"section\\": \\"default\\",\\n \\"values\\":\\n [{\\"option\\": \\"force_config_drive\\",\\n \\"value\\": \\"always\\"\\n }\\n ]\\n },\\n {\\"section\\": \\"cells\\",\\n \\"values\\":\\n [{\\"option\\": \\"driver\\",\\n \\"value\\": \\"nova.cells.rpc_driver.CellsRPCDriver\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "GlanceApiVirtualIP": {"default": "", "type": "string"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}, "CinderISCSIHelper": {"default": "tgtadm", "type": "string", "description": "The iSCSI helper to use with cinder."}, "Flavor": {"type": "string", "description": "Flavor for block storage nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "CinderLVMLoopDeviceSize": {"default": 5000, "type": "number", "description": "The size of the loopback file used by the cinder LVM driver."}, "CinderPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the cinder service and db account, used by cinder-api."}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "BlockStorage": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "BlockStorageConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "volume", "all_nodes", "RedHat", "common"], "datafiles": {"volume": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/volume.yaml"}, "mapped_data": {"cinder::rabbit_password": {"get_input": "rabbit_password"}, "cinder::rabbit_userid": {"get_input": "rabbit_username"}, "cinder::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "cinder::glance::glance_api_servers": {"get_input": "glance_api_servers"}, "cinder_iscsi_helper": {"get_input": "cinder_iscsi_helper"}, "cinder::rabbit_port": {"get_input": "rabbit_client_port"}, "cinder::setup_test_volume::size": {"get_input": "cinder_lvm_loop_device_size"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "cinder::database_connection": {"get_input": "cinder_dsn"}, "cinder_iscsi_ip_address": {"get_input": "cinder_iscsi_ip_address"}, "cinder_enable_iscsi_backend": {"get_input": "cinder_enable_iscsi_backend"}, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "ntp::servers": {"get_input": "ntp_servers"}, "cinder::debug": {"get_input": "debug"}, "enable_package_install": {"get_input": "enable_package_install"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/common.yaml"}}}}}, "group": "os-apply-config"}}, "NetworkConfig": {"type": "OS::TripleO::BlockStorage::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "BlockStorage"}}}, "StoragePort": {"type": "OS::TripleO::BlockStorage::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["BlockStorage", "networks", "ctlplane", 0]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "InternalApiPort": {"type": "OS::TripleO::BlockStorage::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["BlockStorage", "networks", "ctlplane", 0]}}}, "StorageMgmtPort": {"type": "OS::TripleO::BlockStorage::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["BlockStorage", "networks", "ctlplane", 0]}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "BlockStorageDeployment": {"depends_on": "NetworkDeployment", "type": "OS::Heat::StructuredDeployment", "properties": {"input_values": {"cinder_lvm_loop_device_size": {"str_replace": {"params": {"size": {"get_param": "CinderLVMLoopDeviceSize"}}, "template": "sizeM"}}, "cinder_dsn": {"list_join": ["", ["mysql://cinder:", {"get_param": "CinderPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/cinder"]]}, "enable_package_install": {"get_param": "EnablePackageInstall"}, "cinder_iscsi_helper": {"get_param": "CinderISCSIHelper"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "rabbit_client_use_ssl": {"get_param": "RabbitClientUseSSL"}, "glance_api_servers": {"list_join": ["", [{"get_param": "GlanceProtocol"}, "://", {"get_param": "GlanceApiVirtualIP"}, ":", {"get_param": "GlancePort"}]]}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "rabbit_username": {"get_param": "RabbitUserName"}, "cinder_iscsi_ip_address": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderIscsiNetwork"]}]}, "cinder_enable_iscsi_backend": {"get_param": "CinderEnableIscsiBackend"}, "debug": {"get_param": "Debug"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "rabbit_password": {"get_param": "RabbitPassword"}, "rabbit_client_port": {"get_param": "RabbitClientPort"}}, "config": {"get_resource": "BlockStorageConfig"}, "server": {"get_resource": "BlockStorage"}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "BlockStorage"}}}}}', u'file:///tmp/tmpVtTjeI/network/ports/noop.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the pass thru network IP", "value": {"list_join": ["", [{"get_param": "ControlPlaneIP"}, "/", {"get_param": "ControlPlaneSubnetCidr"}]]}}, "ip_address": {"description": "pass thru network IP", "value": {"get_param": "ControlPlaneIP"}}}, "heat_template_version": "2015-04-30", "description": "Returns the control plane port (provisioning network) as the ip_address.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "ControlPlaneNetwork": {"default": "ctlplane", "type": "string", "description": "Name of the control plane network"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "NetworkName": {"default": "", "type": "string", "description": null}, "ControlPlaneSubnetCidr": {"default": "24", "type": "string", "description": "The subnet CIDR of the control plane network."}}}', u'file:///tmp/tmpVtTjeI/puppet/bootstrap-config.yaml': '{"outputs": {"config_id": {"description": "The ID of the BootstrapNodeConfigImpl resource.", "value": {"get_resource": "BootstrapNodeConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Bootstrap Config Puppet", "parameters": {"bootstrap_nodeid": {"type": "string"}, "bootstrap_nodeid_ip": {"type": "string"}}, "resources": {"BootstrapNodeConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"datafiles": {"bootstrap_node": {"mapped_data": {"bootstrap_nodeid": {"get_param": "bootstrap_nodeid"}, "bootstrap_nodeid_ip": {"get_param": "bootstrap_nodeid_ip"}}}}}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/cinder-storage-puppet.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hosts_entry": {"value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "BlockStorageHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["BlockStorage", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["BlockStorageDeployment", "deploy_stdout"]}}, "nova_server_resource": {"description": "Heat resource handle for the block storage server", "value": {"get_resource": "BlockStorage"}}}, "heat_template_version": "2015-04-30", "description": "OpenStack cinder storage configured by Puppet", "parameters": {"CinderEnableIscsiBackend": {"default": true, "type": "boolean", "description": "Whether to enable or not the Iscsi backend for Cinder"}, "RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n"}, "NtpServer": {"default": "", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "RabbitPassword": {"default": "guest", "type": "string"}, "GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "RabbitUserName": {"default": "guest", "type": "string"}, "Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "MysqlVirtualIP": {"default": "", "type": "string"}, "VirtualIP": {"default": "", "type": "string"}, "GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "Image": {"default": "overcloud-cinder-volume", "type": "string"}, "ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\"FILEKEY\\":\\n {\\"config\\":\\n [{\\"section\\": \\"SECTIONNAME\\",\\n \\"values\\":\\n [{\\"option\\": \\"OPTIONNAME\\",\\n \\"value\\": \\"VALUENAME\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\"nova\\":\\n {\\"config\\":\\n [{\\"section\\": \\"default\\",\\n \\"values\\":\\n [{\\"option\\": \\"force_config_drive\\",\\n \\"value\\": \\"always\\"\\n }\\n ]\\n },\\n {\\"section\\": \\"cells\\",\\n \\"values\\":\\n [{\\"option\\": \\"driver\\",\\n \\"value\\": \\"nova.cells.rpc_driver.CellsRPCDriver\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "GlanceApiVirtualIP": {"default": "", "type": "string"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}, "CinderISCSIHelper": {"default": "tgtadm", "type": "string", "description": "The iSCSI helper to use with cinder."}, "Flavor": {"type": "string", "description": "Flavor for block storage nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "CinderLVMLoopDeviceSize": {"default": 5000, "type": "number", "description": "The size of the loopback file used by the cinder LVM driver."}, "CinderPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the cinder service and db account, used by cinder-api."}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "BlockStorage": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "BlockStorageConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "volume", "all_nodes", "RedHat", "common"], "datafiles": {"volume": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/volume.yaml"}, "mapped_data": {"cinder::rabbit_password": {"get_input": "rabbit_password"}, "cinder::rabbit_userid": {"get_input": "rabbit_username"}, "cinder::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "cinder::glance::glance_api_servers": {"get_input": "glance_api_servers"}, "cinder_iscsi_helper": {"get_input": "cinder_iscsi_helper"}, "cinder::rabbit_port": {"get_input": "rabbit_client_port"}, "cinder::setup_test_volume::size": {"get_input": "cinder_lvm_loop_device_size"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "cinder::database_connection": {"get_input": "cinder_dsn"}, "cinder_iscsi_ip_address": {"get_input": "cinder_iscsi_ip_address"}, "cinder_enable_iscsi_backend": {"get_input": "cinder_enable_iscsi_backend"}, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "ntp::servers": {"get_input": "ntp_servers"}, "cinder::debug": {"get_input": "debug"}, "enable_package_install": {"get_input": "enable_package_install"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml"}}}}}}}, "StoragePort": {"type": "OS::TripleO::BlockStorage::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["BlockStorage", "networks", "ctlplane", 0]}}}, "StorageMgmtPort": {"type": "OS::TripleO::BlockStorage::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["BlockStorage", "networks", "ctlplane", 0]}}}, "NetworkConfig": {"type": "OS::TripleO::BlockStorage::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "InternalApiPort": {"type": "OS::TripleO::BlockStorage::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["BlockStorage", "networks", "ctlplane", 0]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "BlockStorage"}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "BlockStorageDeployment": {"depends_on": "NetworkDeployment", "type": "OS::Heat::StructuredDeployment", "properties": {"input_values": {"cinder_lvm_loop_device_size": {"str_replace": {"params": {"size": {"get_param": "CinderLVMLoopDeviceSize"}}, "template": "sizeM"}}, "cinder_dsn": {"list_join": ["", ["mysql://cinder:", {"get_param": "CinderPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/cinder"]]}, "cinder_iscsi_helper": {"get_param": "CinderISCSIHelper"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "rabbit_client_use_ssl": {"get_param": "RabbitClientUseSSL"}, "rabbit_client_port": {"get_param": "RabbitClientPort"}, "glance_api_servers": {"list_join": ["", [{"get_param": "GlanceProtocol"}, "://", {"get_param": "GlanceApiVirtualIP"}, ":", {"get_param": "GlancePort"}]]}, "rabbit_password": {"get_param": "RabbitPassword"}, "rabbit_username": {"get_param": "RabbitUserName"}, "cinder_iscsi_ip_address": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderIscsiNetwork"]}]}, "cinder_enable_iscsi_backend": {"get_param": "CinderEnableIscsiBackend"}, "debug": {"get_param": "Debug"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "enable_package_install": {"get_param": "EnablePackageInstall"}}, "config": {"get_resource": "BlockStorageConfig"}, "server": {"get_resource": "BlockStorage"}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "BlockStorage"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/hieradata/volume.yaml': "# Hiera data here applies to all volume storage nodes\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\ncinder::config::cinder_config:\n DEFAULT/nova_catalog_info:\n value: 'compute:Compute Service:internalURL'\n DEFAULT/swift_catalog_info:\n value: 'object-store:swift:internalURL'\n", u'file:///tmp/tmpVtTjeI/puppet/hieradata/object.yaml': '# Hiera data for swift storage nodes\nswift::storage::all::object_pipeline:\n - healthcheck\n - recon\n - object-server\nswift::storage::all::container_pipeline:\n - healthcheck\n - container-server\nswift::storage::all::account_pipeline:\n - healthcheck\n - account-server\n\nswift::proxy::keystone::operator_roles:\n - admin\n - swiftoperator\n - ResellerAdmin\n', u'file:///usr/share/openstack-tripleo-heat-templates/network/external.yaml': '{"outputs": {"OS::stack_id": {"description": "Neutron external network", "value": {"get_resource": "ExternalNetwork"}}}, "heat_template_version": "2015-04-30", "description": "External network. Public traffic, Neutron l3router for floating IPs/SNAT, etc.\\n", "parameters": {"ExternalNetName": {"default": "external", "type": "string", "description": "The name of the external network."}, "ExternalNetAdminStateUp": {"default": false, "type": "boolean", "description": "This admin state of of the network."}, "ExternalAllocationPools": {"default": [{"start": "10.0.0.4", "end": "10.0.0.250"}], "type": "json", "description": "Ip allocation pool range for the external network."}, "ExternalNetValueSpecs": {"default": {"provider:physical_network": "external", "provider:network_type": "flat"}, "type": "string", "description": "Value specs for the external network."}, "ExternalNetShared": {"default": false, "type": "boolean", "description": "Whether this network is shared across all tenants."}, "ExternalNetCidr": {"default": "10.0.0.0/24", "type": "string", "description": "Cidr for the external network."}, "ExternalSubnetName": {"default": "external_subnet", "type": "string", "description": "The name of the external subnet in Neutron."}, "ExternalNetEnableDHCP": {"default": false, "type": "boolean", "description": "Whether to enable DHCP on the associated subnet."}}, "resources": {"ExternalNetwork": {"type": "OS::Neutron::Net", "properties": {"shared": {"get_param": "ExternalNetShared"}, "admin_state_up": {"get_param": "ExternalNetAdminStateUp"}, "value_specs": {"get_param": "ExternalNetValueSpecs"}, "name": {"get_param": "ExternalNetName"}}}, "ExternalSubnet": {"type": "OS::Neutron::Subnet", "properties": {"network": {"get_resource": "ExternalNetwork"}, "allocation_pools": {"get_param": "ExternalAllocationPools"}, "cidr": {"get_param": "ExternalNetCidr"}, "enable_dhcp": {"get_param": "ExternalNetEnableDHCP"}, "name": {"get_param": "ExternalSubnetName"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/hieradata/RedHat.yaml': "# RedHat specific overrides go here\nrabbitmq::package_provider: 'yum'\n\n# The Galera package should work in cluster and\n# non-cluster modes based on the config file.\n# We set the package name here explicitly so\n# that it matches what we pre-install\n# in tripleo-puppet-elements.\nmysql::server::package_name: 'mariadb-galera-server'\n", u'file:///tmp/tmpVtTjeI/puppet/hieradata/compute.yaml': '# Hiera data here applies to all compute nodes\n\nnova::notify_on_state_change: \'vm_and_task_state\'\n\nnova::compute::enabled: true\nnova::compute::instance_usage_audit: true\nnova::compute::instance_usage_audit_period: \'hour\'\nnova::compute::vnc_enabled: true\n\nnova::compute::libvirt::vncserver_listen: \'0.0.0.0\'\nnova::compute::libvirt::migration_support: true\n\nnova::compute::rbd::libvirt_rbd_user: \'openstack\'\nnova::compute::rbd::rbd_keyring: \'client.openstack\'\nnova::compute::rbd::libvirt_images_rbd_pool: \'vms\'\nnova::compute::rbd::libvirt_rbd_secret_uuid: "%{hiera(\'ceph::profile::params::fsid\')}"\n\nnova::config::nova_config:\n cinder/catalog_info:\n value: \'volumev2:cinderv2:internalURL\'\n\nceilometer::agent::auth::auth_tenant_name: \'service\'\n', u'file:///tmp/tmpVtTjeI/hieradata/volume.yaml': "# Hiera data here applies to all volume storage nodes\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\ncinder::config::cinder_config:\n DEFAULT/nova_catalog_info:\n value: 'compute:Compute Service:internalURL'\n DEFAULT/swift_catalog_info:\n value: 'object-store:swift:internalURL'\n", u'file:///tmp/tmpVtTjeI/puppet/compute-puppet.yaml': '{"outputs": {"hostname": {"description": "Hostname of the server", "value": {"get_attr": ["NovaCompute", "name"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["NovaComputeDeployment", "deploy_stdout"]}}, "nova_server_resource": {"description": "Heat resource handle for the Nova compute server", "value": {"get_resource": "NovaCompute"}}, "tenant_ip_address": {"description": "IP address of the server in the tenant network", "value": {"get_attr": ["TenantPort", "ip_address"]}}, "hosts_entry": {"description": "Server\'s IP address and hostname in the /etc/hosts format\\n", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "ComputeHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["NovaCompute", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "ip_address": {"description": "IP address of the server in the ctlplane network", "value": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "heat_template_version": "2015-04-30", "description": "OpenStack hypervisor node configured via Puppet.\\n", "parameters": {"NeutronPublicInterfaceRawDevice": {"default": "", "type": "string"}, "NeutronNetworkVLANRanges": {"default": "datacentre", "type": "comma_delimited_list", "description": "The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the \'datacentre\' physical network (See NeutronBridgeMappings).\\n"}, "NovaComputeDriver": {"default": "libvirt.LibvirtDriver", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "NeutronPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the neutron service account, used by neutron agents."}, "NeutronFlatNetworks": {"default": "datacentre", "type": "string", "description": "If set, flat networks to configure in neutron plugins.\\n"}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "NeutronPublicInterface": {"default": "nic1", "type": "string", "description": "A port to add to the NeutronPhysicalBridge."}, "NovaEnableRbdBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the Rbd backend for Nova"}, "GlanceHost": {"default": "", "type": "string"}, "NeutronTunnelTypes": {"default": "gre", "type": "string", "description": "The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'gre,vxlan\'\\n"}, "NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n"}, "NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n"}, "Flavor": {"type": "string", "description": "Flavor for the nova compute node", "constraints": [{"custom_constraint": "nova.flavor"}]}, "NovaApiHost": {"default": "", "type": "string"}, "RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "NovaComputeExtraConfig": {"default": {}, "type": "json", "description": "NovaCompute specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "NovaPublicIP": {"default": "", "type": "string"}, "NeutronNetworkType": {"default": "gre", "type": "string", "description": "The tenant network type for Neutron, either gre or vxlan."}, "CeilometerPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the ceilometer service account."}, "NtpServer": {"default": "", "type": "string"}, "CinderEnableNfsBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the NFS backend for Cinder"}, "KeystoneHost": {"default": "", "type": "string"}, "NeutronMechanismDrivers": {"default": "openvswitch", "type": "string", "description": "The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'openvswitch,l2_population\'\\n"}, "RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n"}, "NeutronAllowL3AgentFailover": {"default": "True", "type": "string", "description": "Allow automatic l3-agent failover"}, "RabbitPassword": {"default": "guest", "hidden": true, "type": "string", "description": "The password for RabbitMQ"}, "ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "RabbitUserName": {"default": "guest", "type": "string", "description": "The username for RabbitMQ"}, "Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "NeutronAgentMode": {"default": "dvr_snat", "type": "string", "description": "Agent mode for the neutron-l3-agent on the controller hosts"}, "NovaPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the nova service account, used by nova-api."}, "GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "NeutronDVR": {"default": "False", "type": "string"}, "NeutronL3HA": {"default": "False", "type": "string", "description": "Whether to enable l3-agent HA"}, "NovaComputeLibvirtType": {"default": "", "type": "string"}, "AdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the keystone admin account, used for monitoring, querying neutron etc."}, "NeutronPhysicalBridge": {"default": "br-ex", "type": "string", "description": "An OVS bridge to create for accessing external networks."}, "CeilometerComputeAgent": {"default": "", "type": "string", "description": "Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly", "constraints": [{"allowed_values": ["", "Present"]}]}, "Image": {"default": "overcloud-compute", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\"FILEKEY\\":\\n {\\"config\\":\\n [{\\"section\\": \\"SECTIONNAME\\",\\n \\"values\\":\\n [{\\"option\\": \\"OPTIONNAME\\",\\n \\"value\\": \\"VALUENAME\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\"nova\\":\\n {\\"config\\":\\n [{\\"section\\": \\"default\\",\\n \\"values\\":\\n [{\\"option\\": \\"force_config_drive\\",\\n \\"value\\": \\"always\\"\\n }\\n ]\\n },\\n {\\"section\\": \\"cells\\",\\n \\"values\\":\\n [{\\"option\\": \\"driver\\",\\n \\"value\\": \\"nova.cells.rpc_driver.CellsRPCDriver\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n"}, "RabbitHost": {"default": "", "type": "string"}, "NeutronBridgeMappings": {"default": "datacentre:br-ex", "type": "string", "description": "The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name \'datacentre\' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep \'datacentre\' as a mapping network name.\\n"}, "CeilometerMeteringSecret": {"default": "unset", "hidden": true, "type": "string", "description": "Secret shared by the ceilometer services."}, "NeutronMetadataProxySharedSecret": {"default": "unset", "type": "string", "description": "Shared secret to prevent spoofing"}, "NeutronEnableTunnelling": {"default": "True", "type": "string"}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "NeutronHost": {"default": "", "type": "string"}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "NovaCompute": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "image_update_policy": {"get_param": "ImageUpdatePolicy"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "TenantPort": {"type": "OS::TripleO::Compute::Ports::TenantPort", "properties": {"ControlPlaneIP": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "StoragePort": {"type": "OS::TripleO::Compute::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"interface_name": {"get_param": "NeutronPublicInterface"}, "bridge_name": {"get_param": "NeutronPhysicalBridge"}}, "config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "NovaCompute"}}}, "NetworkConfig": {"type": "OS::TripleO::Compute::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "TenantIpSubnet": {"get_attr": ["TenantPort", "ip_subnet"]}}}, "NovaComputeDeployment": {"depends_on": "NetworkDeployment", "type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"neutron_host": {"get_param": "NeutronHost"}, "neutron_router_distributed": {"get_param": "NeutronDVR"}, "nova_compute_libvirt_type": {"get_param": "NovaComputeLibvirtType"}, "nova_compute_driver": {"get_param": "NovaComputeDriver"}, "neutron_flat_networks": {"get_param": "NeutronFlatNetworks"}, "glance_api_servers": {"list_join": ["", [{"get_param": "GlanceProtocol"}, "://", {"get_param": "GlanceHost"}, ":", {"get_param": "GlancePort"}]]}, "rabbit_password": {"get_param": "RabbitPassword"}, "neutron_vni_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronVniRanges"}]}}, "template": "[\'RANGES\']"}}, "neutron_tunnel_types": {"get_param": "NeutronTunnelTypes"}, "neutron_public_interface_raw_device": {"get_param": "NeutronPublicInterfaceRawDevice"}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "ceilometer_agent_auth_url": {"list_join": ["", ["http://", {"get_param": "KeystoneHost"}, ":5000/v2.0"]]}, "rabbit_client_use_ssl": {"get_param": "RabbitClientUseSSL"}, "neutron_password": {"get_param": "NeutronPassword"}, "nova_public_ip": {"get_param": "NovaPublicIP"}, "neutron_local_ip": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronTenantNetwork"]}]}, "admin_password": {"get_param": "AdminPassword"}, "neutron_physical_bridge": {"get_param": "NeutronPhysicalBridge"}, "nova_vnc_proxyclient_address": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaVncProxyNetwork"]}]}, "nova_password": {"get_param": "NovaPassword"}, "neutron_url": {"list_join": ["", ["http://", {"get_param": "NeutronHost"}, ":9696"]]}, "neutron_mechanism_drivers": {"get_param": "NeutronMechanismDrivers"}, "nova_enable_rbd_backend": {"get_param": "NovaEnableRbdBackend"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "neutron_metadata_proxy_shared_secret": {"get_param": "NeutronMetadataProxySharedSecret"}, "neutron_admin_auth_url": {"list_join": ["", ["http://", {"get_param": "NeutronHost"}, ":35357/v2.0"]]}, "nova_api_host": {"get_param": "NovaApiHost"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "ceilometer_password": {"get_param": "CeilometerPassword"}, "neutron_tenant_network_type": {"get_param": "NeutronNetworkType"}, "neutron_network_vlan_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronNetworkVLANRanges"}]}}, "template": "[\'RANGES\']"}}, "neutron_bridge_mappings": {"get_param": "NeutronBridgeMappings"}, "neutron_agent_mode": {"get_param": "NeutronAgentMode"}, "neutron_public_interface": {"get_param": "NeutronPublicInterface"}, "ceilometer_metering_secret": {"get_param": "CeilometerMeteringSecret"}, "neutron_tunnel_id_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronTunnelIdRanges"}]}}, "template": "[\'RANGES\']"}}, "cinder_enable_nfs_backend": {"get_param": "CinderEnableNfsBackend"}, "ceilometer_compute_agent": {"get_param": "CeilometerComputeAgent"}, "rabbit_username": {"get_param": "RabbitUserName"}, "rabbit_client_port": {"get_param": "RabbitClientPort"}, "neutron_enable_tunneling": {"get_param": "NeutronEnableTunnelling"}, "debug": {"get_param": "Debug"}, "enable_package_install": {"get_param": "EnablePackageInstall"}}, "config": {"get_resource": "NovaComputeConfig"}, "server": {"get_resource": "NovaCompute"}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "InternalApiPort": {"type": "OS::TripleO::Compute::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "NovaComputeConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "compute", "ceph_cluster", "ceph", "all_nodes", "RedHat", "common"], "datafiles": {"ceph": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml"}}, "compute": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/compute.yaml"}, "mapped_data": {"nova::rabbit_port": {"get_input": "rabbit_client_port"}, "neutron_host": {"get_input": "neutron_host"}, "neutron_router_distributed": {"get_input": "neutron_router_distributed"}, "neutron::debug": {"get_input": "debug"}, "neutron::plugins::ml2::vni_ranges": {"get_input": "neutron_vni_ranges"}, "nova_compute_driver": {"get_input": "nova_compute_driver"}, "nova::rabbit_userid": {"get_input": "rabbit_username"}, "nova::compute::vncproxy_host": {"get_input": "nova_public_ip"}, "neutron::plugins::ml2::network_vlan_ranges": {"get_input": "neutron_network_vlan_ranges"}, "neutron_bridge_mappings": {"get_input": "neutron_bridge_mappings"}, "ceilometer::rabbit_userid": {"get_input": "rabbit_username"}, "neutron_tunnel_types": {"get_input": "neutron_tunnel_types"}, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "neutron_public_interface_raw_device": {"get_input": "neutron_public_interface_raw_device"}, "nova::compute::libvirt::libvirt_virt_type": {"get_input": "nova_compute_libvirt_type"}, "neutron::agents::ml2::ovs::local_ip": {"get_input": "neutron_local_ip"}, "neutron_flat_networks": {"get_input": "neutron_flat_networks"}, "ceilometer::rabbit_port": {"get_input": "rabbit_client_port"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "neutron::rabbit_user": {"get_input": "rabbit_user"}, "neutron_mechanism_drivers": {"get_input": "neutron_mechanism_drivers"}, "ntp::servers": {"get_input": "ntp_servers"}, "nova_password": {"get_input": "nova_password"}, "ceilometer::agent::auth::auth_password": {"get_input": "ceilometer_password"}, "nova::network::neutron::neutron_url": {"get_input": "neutron_url"}, "neutron_physical_bridge": {"get_input": "neutron_physical_bridge"}, "nova_enable_rbd_backend": {"get_input": "nova_enable_rbd_backend"}, "neutron_metadata_proxy_shared_secret": {"get_input": "neutron_metadata_proxy_shared_secret"}, "nova::glance_api_servers": {"get_input": "glance_api_servers"}, "nova::debug": {"get_input": "debug"}, "neutron::rabbit_port": {"get_input": "rabbit_client_port"}, "nova_api_host": {"get_input": "nova_api_host"}, "nova::network::neutron::neutron_admin_password": {"get_input": "neutron_password"}, "neutron::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::plugins::ml2::tunnel_id_ranges": {"get_input": "neutron_tunnel_id_ranges"}, "neutron_tenant_network_type": {"get_input": "neutron_tenant_network_type"}, "neutron::agents::ml2::ovs::enable_tunneling": {"get_input": "neutron_enable_tunneling"}, "ceilometer::metering_secret": {"get_input": "ceilometer_metering_secret"}, "ceilometer::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron_agent_mode": {"get_input": "neutron_agent_mode"}, "ceilometer::debug": {"get_input": "debug"}, "ceilometer::rabbit_password": {"get_input": "rabbit_password"}, "admin_password": {"get_input": "admin_password"}, "neutron_public_interface": {"get_input": "neutron_public_interface"}, "nova::compute::vncserver_proxyclient_address": {"get_input": "nova_vnc_proxyclient_address"}, "cinder_enable_nfs_backend": {"get_input": "cinder_enable_nfs_backend"}, "nova::network::neutron::neutron_admin_auth_url": {"get_input": "neutron_admin_auth_url"}, "ceilometer_compute_agent": {"get_input": "ceilometer_compute_agent"}, "nova::rabbit_password": {"get_input": "rabbit_password"}, "nova::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::rabbit_password": {"get_input": "rabbit_password"}, "enable_package_install": {"get_input": "enable_package_install"}, "ceilometer::agent::auth::auth_url": {"get_input": "ceilometer_agent_auth_url"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml"}}}}}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "TenantIp": {"get_attr": ["TenantPort", "ip_address"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "NovaCompute"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_controller_pacemaker.pp': '# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the "License"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nPcmk_resource <| |> {\n tries => 10,\n try_sleep => 3,\n}\n\nif !str2bool(hiera(\'enable_package_install\', \'false\')) {\n case $::osfamily {\n \'RedHat\': {\n Package { provider => \'norpm\' } # provided by tripleo-puppet\n }\n default: {\n warning(\'enable_package_install option not supported.\')\n }\n }\n}\n\nif $::hostname == downcase(hiera(\'bootstrap_nodeid\')) {\n $pacemaker_master = true\n $sync_db = true\n} else {\n $pacemaker_master = false\n $sync_db = false\n}\n\n# When to start and enable services which haven\'t been Pacemakerized\n# FIXME: remove when we start all OpenStack services using Pacemaker\n# (occurences of this variable will be gradually replaced with false)\n$non_pcmk_start = hiera(\'step\') >= 4\n\nif hiera(\'step\') >= 1 {\n\n create_resources(sysctl::value, hiera(\'sysctl_settings\'), {})\n\n if count(hiera(\'ntp::servers\')) > 0 {\n include ::ntp\n }\n\n $controller_node_ips = split(hiera(\'controller_node_ips\'), \',\')\n $controller_node_names = split(downcase(hiera(\'controller_node_names\')), \',\')\n class { \'::tripleo::loadbalancer\' :\n controller_hosts => $controller_node_ips,\n controller_hosts_names => $controller_node_names,\n redis => true,\n manage_vip => false,\n mysql_clustercheck => true,\n haproxy_service_manage => false,\n }\n\n $pacemaker_cluster_members = downcase(regsubst(hiera(\'controller_node_names\'), \',\', \' \', \'G\'))\n user { \'hacluster\':\n ensure => present,\n } ->\n class { \'::pacemaker\':\n hacluster_pwd => hiera(\'hacluster_pwd\'),\n } ->\n class { \'::pacemaker::corosync\':\n cluster_members => $pacemaker_cluster_members,\n setup_cluster => $pacemaker_master,\n }\n class { \'::pacemaker::stonith\':\n disable => true,\n }\n\n # FIXME(gfidente): sets 60secs as default start timeout op\n # param; until we can use pcmk global defaults we\'ll still\n # need to add it to every resource which redefines op params\n Pacemaker::Resource::Service {\n op_params => \'start timeout=60s\',\n }\n\n # Only configure RabbitMQ in this step, don\'t start it yet to\n # avoid races where non-master nodes attempt to start without\n # config (eg. binding on 0.0.0.0)\n # The module ignores erlang_cookie if cluster_config is false\n class { \'::rabbitmq\':\n service_manage => false,\n tcp_keepalive => false,\n config_kernel_variables => hiera(\'rabbitmq_kernel_variables\'),\n config_variables => hiera(\'rabbitmq_config_variables\'),\n environment_variables => hiera(\'rabbitmq_environment\'),\n } ->\n file { \'/var/lib/rabbitmq/.erlang.cookie\':\n ensure => \'present\',\n owner => \'rabbitmq\',\n group => \'rabbitmq\',\n mode => \'0400\',\n content => hiera(\'rabbitmq::erlang_cookie\'),\n replace => true,\n }\n\n if downcase(hiera(\'ceilometer_backend\')) == \'mongodb\' {\n include ::mongodb::globals\n class { \'::mongodb::server\' :\n service_manage => false,\n }\n }\n\n # Memcached\n class {\'::memcached\' :\n service_manage => false,\n }\n\n # Redis\n class { \'::redis\' :\n service_manage => false,\n notify_service => false,\n }\n\n # Galera\n if str2bool(hiera(\'enable_galera\', \'true\')) {\n $mysql_config_file = \'/etc/my.cnf.d/galera.cnf\'\n } else {\n $mysql_config_file = \'/etc/my.cnf.d/server.cnf\'\n }\n $galera_nodes = downcase(hiera(\'galera_node_names\', $::hostname))\n\n $mysqld_options = {\n \'mysqld\' => {\n \'skip-name-resolve\' => \'1\',\n \'binlog_format\' => \'ROW\',\n \'default-storage-engine\' => \'innodb\',\n \'innodb_autoinc_lock_mode\' => \'2\',\n \'innodb_locks_unsafe_for_binlog\'=> \'1\',\n \'query_cache_size\' => \'0\',\n \'query_cache_type\' => \'0\',\n \'bind-address\' => hiera(\'mysql_bind_host\'),\n \'max_connections\' => hiera(\'mysql_max_connections\'),\n \'open_files_limit\' => \'-1\',\n \'wsrep_provider\' => \'/usr/lib64/galera/libgalera_smm.so\',\n \'wsrep_cluster_name\' => \'galera_cluster\',\n \'wsrep_slave_threads\' => \'1\',\n \'wsrep_certify_nonPK\' => \'1\',\n \'wsrep_max_ws_rows\' => \'131072\',\n \'wsrep_max_ws_size\' => \'1073741824\',\n \'wsrep_debug\' => \'0\',\n \'wsrep_convert_LOCK_to_trx\' => \'0\',\n \'wsrep_retry_autocommit\' => \'1\',\n \'wsrep_auto_increment_control\' => \'1\',\n \'wsrep_drupal_282555_workaround\'=> \'0\',\n \'wsrep_causal_reads\' => \'0\',\n \'wsrep_notify_cmd\' => \'\',\n \'wsrep_sst_method\' => \'rsync\',\n }\n }\n\n class { \'::mysql::server\':\n create_root_user => false,\n create_root_my_cnf => false,\n config_file => $mysql_config_file,\n override_options => $mysqld_options,\n service_manage => false,\n service_enabled => false,\n }\n\n}\n\nif hiera(\'step\') >= 2 {\n\n # NOTE(gfidente): the following vars are needed on all nodes so they\n # need to stay out of pacemaker_master conditional\n $mongo_node_ips_with_port = suffix(hiera(\'mongo_node_ips\'), \':27017\')\n $mongodb_replset = hiera(\'mongodb::server::replset\')\n\n if $pacemaker_master {\n\n # FIXME: we should not have to access tripleo::loadbalancer class\n # parameters here to configure pacemaker VIPs. The configuration\n # of pacemaker VIPs could move into puppet-tripleo or we should\n # make use of less specific hiera parameters here for the settings.\n pacemaker::resource::service { \'haproxy\':\n clone_params => true,\n }\n\n $control_vip = hiera(\'tripleo::loadbalancer::controller_virtual_ip\')\n pacemaker::resource::ip { \'control_vip\':\n ip_address => $control_vip,\n }\n pacemaker::constraint::base { \'control_vip-then-haproxy\':\n constraint_type => \'order\',\n first_resource => "ip-${control_vip}",\n second_resource => \'haproxy-clone\',\n first_action => \'start\',\n second_action => \'start\',\n constraint_params => \'kind=Optional\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'control_vip\']],\n }\n pacemaker::constraint::colocation { \'control_vip-with-haproxy\':\n source => "ip-${control_vip}",\n target => \'haproxy-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'control_vip\']],\n }\n\n $public_vip = hiera(\'tripleo::loadbalancer::public_virtual_ip\')\n if $public_vip and $public_vip != $control_vip {\n pacemaker::resource::ip { \'public_vip\':\n ip_address => $public_vip,\n }\n pacemaker::constraint::base { \'public_vip-then-haproxy\':\n constraint_type => \'order\',\n first_resource => "ip-${public_vip}",\n second_resource => \'haproxy-clone\',\n first_action => \'start\',\n second_action => \'start\',\n constraint_params => \'kind=Optional\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'public_vip\']],\n }\n pacemaker::constraint::colocation { \'public_vip-with-haproxy\':\n source => "ip-${public_vip}",\n target => \'haproxy-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'public_vip\']],\n }\n }\n\n $redis_vip = hiera(\'redis_vip\')\n if $redis_vip and $redis_vip != $control_vip {\n pacemaker::resource::ip { \'redis_vip\':\n ip_address => $redis_vip,\n }\n pacemaker::constraint::base { \'redis_vip-then-haproxy\':\n constraint_type => \'order\',\n first_resource => "ip-${redis_vip}",\n second_resource => \'haproxy-clone\',\n first_action => \'start\',\n second_action => \'start\',\n constraint_params => \'kind=Optional\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'redis_vip\']],\n }\n pacemaker::constraint::colocation { \'redis_vip-with-haproxy\':\n source => "ip-${redis_vip}",\n target => \'haproxy-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'redis_vip\']],\n }\n }\n\n $internal_api_vip = hiera(\'tripleo::loadbalancer::internal_api_virtual_ip\')\n if $internal_api_vip and $internal_api_vip != $control_vip {\n pacemaker::resource::ip { \'internal_api_vip\':\n ip_address => $internal_api_vip,\n }\n pacemaker::constraint::base { \'internal_api_vip-then-haproxy\':\n constraint_type => \'order\',\n first_resource => "ip-${internal_api_vip}",\n second_resource => \'haproxy-clone\',\n first_action => \'start\',\n second_action => \'start\',\n constraint_params => \'kind=Optional\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'internal_api_vip\']],\n }\n pacemaker::constraint::colocation { \'internal_api_vip-with-haproxy\':\n source => "ip-${internal_api_vip}",\n target => \'haproxy-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'internal_api_vip\']],\n }\n }\n\n $storage_vip = hiera(\'tripleo::loadbalancer::storage_virtual_ip\')\n if $storage_vip and $storage_vip != $control_vip {\n pacemaker::resource::ip { \'storage_vip\':\n ip_address => $storage_vip,\n }\n pacemaker::constraint::base { \'storage_vip-then-haproxy\':\n constraint_type => \'order\',\n first_resource => "ip-${storage_vip}",\n second_resource => \'haproxy-clone\',\n first_action => \'start\',\n second_action => \'start\',\n constraint_params => \'kind=Optional\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'storage_vip\']],\n }\n pacemaker::constraint::colocation { \'storage_vip-with-haproxy\':\n source => "ip-${storage_vip}",\n target => \'haproxy-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'storage_vip\']],\n }\n }\n\n $storage_mgmt_vip = hiera(\'tripleo::loadbalancer::storage_mgmt_virtual_ip\')\n if $storage_mgmt_vip and $storage_mgmt_vip != $control_vip {\n pacemaker::resource::ip { \'storage_mgmt_vip\':\n ip_address => $storage_mgmt_vip,\n }\n pacemaker::constraint::base { \'storage_mgmt_vip-then-haproxy\':\n constraint_type => \'order\',\n first_resource => "ip-${storage_mgmt_vip}",\n second_resource => \'haproxy-clone\',\n first_action => \'start\',\n second_action => \'start\',\n constraint_params => \'kind=Optional\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'storage_mgmt_vip\']],\n }\n pacemaker::constraint::colocation { \'storage_mgmt_vip-with-haproxy\':\n source => "ip-${storage_mgmt_vip}",\n target => \'haproxy-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[\'haproxy\'],\n Pacemaker::Resource::Ip[\'storage_mgmt_vip\']],\n }\n }\n\n pacemaker::resource::service { $::memcached::params::service_name :\n clone_params => true,\n require => Class[\'::memcached\'],\n }\n\n pacemaker::resource::ocf { \'rabbitmq\':\n ocf_agent_name => \'heartbeat:rabbitmq-cluster\',\n resource_params => \'set_policy=\\\'ha-all ^(?!amq\\.).* {"ha-mode":"all"}\\\'\',\n clone_params => \'ordered=true interleave=true\',\n require => Class[\'::rabbitmq\'],\n }\n\n if downcase(hiera(\'ceilometer_backend\')) == \'mongodb\' {\n pacemaker::resource::service { $::mongodb::params::service_name :\n op_params => \'start timeout=120s\',\n clone_params => true,\n require => Class[\'::mongodb::server\'],\n }\n # NOTE (spredzy) : The replset can only be run\n # once all the nodes have joined the cluster.\n mongodb_conn_validator { $mongo_node_ips_with_port :\n require => Pacemaker::Resource::Service[$::mongodb::params::service_name],\n before => Mongodb_replset[$mongodb_replset],\n }\n mongodb_replset { $mongodb_replset :\n members => $mongo_node_ips_with_port,\n }\n }\n\n pacemaker::resource::ocf { \'galera\' :\n ocf_agent_name => \'heartbeat:galera\',\n op_params => \'promote timeout=300s on-fail=block\',\n master_params => \'\',\n meta_params => "master-max=3 ordered=true",\n resource_params => "additional_parameters=\'--open-files-limit=16384\' enable_creation=true wsrep_cluster_address=\'gcomm://${galera_nodes}\'",\n require => Class[\'::mysql::server\'],\n before => Exec[\'galera-ready\'],\n }\n\n pacemaker::resource::ocf { \'redis\':\n ocf_agent_name => \'heartbeat:redis\',\n master_params => \'\',\n meta_params => \'notify=true ordered=true interleave=true\',\n resource_params => \'wait_last_known_master=true\',\n require => Class[\'::redis\'],\n }\n\n }\n\n exec { \'galera-ready\' :\n command => \'/usr/bin/clustercheck >/dev/null\',\n timeout => 30,\n tries => 180,\n try_sleep => 10,\n environment => ["AVAILABLE_WHEN_READONLY=0"],\n require => File[\'/etc/sysconfig/clustercheck\'],\n }\n\n file { \'/etc/sysconfig/clustercheck\' :\n ensure => file,\n content => "MYSQL_USERNAME=root\\n\nMYSQL_PASSWORD=\'\'\\n\nMYSQL_HOST=localhost\\n",\n }\n\n xinetd::service { \'galera-monitor\' :\n port => \'9200\',\n server => \'/usr/bin/clustercheck\',\n per_source => \'UNLIMITED\',\n log_on_success => \'\',\n log_on_failure => \'HOST\',\n flags => \'REUSE\',\n service_type => \'UNLISTED\',\n user => \'root\',\n group => \'root\',\n require => File[\'/etc/sysconfig/clustercheck\'],\n }\n\n # Create all the database schemas\n # Example DSN format: mysql://user:password@host/dbname\n if $sync_db {\n $allowed_hosts = [\'%\',hiera(\'mysql_bind_host\')]\n $keystone_dsn = split(hiera(\'keystone::database_connection\'), \'[@:/?]\')\n class { \'keystone::db::mysql\':\n user => $keystone_dsn[3],\n password => $keystone_dsn[4],\n host => $keystone_dsn[5],\n dbname => $keystone_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n $glance_dsn = split(hiera(\'glance::api::database_connection\'), \'[@:/?]\')\n class { \'glance::db::mysql\':\n user => $glance_dsn[3],\n password => $glance_dsn[4],\n host => $glance_dsn[5],\n dbname => $glance_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n $nova_dsn = split(hiera(\'nova::database_connection\'), \'[@:/?]\')\n class { \'nova::db::mysql\':\n user => $nova_dsn[3],\n password => $nova_dsn[4],\n host => $nova_dsn[5],\n dbname => $nova_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n $neutron_dsn = split(hiera(\'neutron::server::database_connection\'), \'[@:/?]\')\n class { \'neutron::db::mysql\':\n user => $neutron_dsn[3],\n password => $neutron_dsn[4],\n host => $neutron_dsn[5],\n dbname => $neutron_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n $cinder_dsn = split(hiera(\'cinder::database_connection\'), \'[@:/?]\')\n class { \'cinder::db::mysql\':\n user => $cinder_dsn[3],\n password => $cinder_dsn[4],\n host => $cinder_dsn[5],\n dbname => $cinder_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n $heat_dsn = split(hiera(\'heat::database_connection\'), \'[@:/?]\')\n class { \'heat::db::mysql\':\n user => $heat_dsn[3],\n password => $heat_dsn[4],\n host => $heat_dsn[5],\n dbname => $heat_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n if downcase(hiera(\'ceilometer_backend\')) == \'mysql\' {\n $ceilometer_dsn = split(hiera(\'ceilometer_mysql_conn_string\'), \'[@:/?]\')\n class { \'ceilometer::db::mysql\':\n user => $ceilometer_dsn[3],\n password => $ceilometer_dsn[4],\n host => $ceilometer_dsn[5],\n dbname => $ceilometer_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec[\'galera-ready\'],\n }\n }\n }\n\n # pre-install swift here so we can build rings\n include ::swift\n\n # Ceph\n $cinder_enable_rbd_backend = hiera(\'cinder_enable_rbd_backend\', false)\n $enable_ceph = $cinder_enable_rbd_backend\n\n if $enable_ceph {\n class { \'ceph::profile::params\':\n mon_initial_members => downcase(hiera(\'ceph_mon_initial_members\'))\n }\n include ::ceph::profile::mon\n }\n\n if str2bool(hiera(\'enable_ceph_storage\', \'false\')) {\n if str2bool(hiera(\'ceph_osd_selinux_permissive\', true)) {\n exec { \'set selinux to permissive on boot\':\n command => "sed -ie \'s/^SELINUX=.*/SELINUX=permissive/\' /etc/selinux/config",\n onlyif => "test -f /etc/selinux/config && ! grep \'^SELINUX=permissive\' /etc/selinux/config",\n path => ["/usr/bin", "/usr/sbin"],\n }\n\n exec { \'set selinux to permissive\':\n command => "setenforce 0",\n onlyif => "which setenforce && getenforce | grep -i \'enforcing\'",\n path => ["/usr/bin", "/usr/sbin"],\n } -> Class[\'ceph::profile::osd\']\n }\n\n include ::ceph::profile::client\n include ::ceph::profile::osd\n }\n\n\n} #END STEP 2\n\nif hiera(\'step\') >= 3 {\n\n class { \'::keystone\':\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n\n #TODO: need a cleanup-keystone-tokens.sh solution here\n keystone_config {\n \'ec2/driver\': value => \'keystone.contrib.ec2.backends.sql.Ec2\';\n }\n file { [ \'/etc/keystone/ssl\', \'/etc/keystone/ssl/certs\', \'/etc/keystone/ssl/private\' ]:\n ensure => \'directory\',\n owner => \'keystone\',\n group => \'keystone\',\n require => Package[\'keystone\'],\n }\n file { \'/etc/keystone/ssl/certs/signing_cert.pem\':\n content => hiera(\'keystone_signing_certificate\'),\n owner => \'keystone\',\n group => \'keystone\',\n notify => Service[\'keystone\'],\n require => File[\'/etc/keystone/ssl/certs\'],\n }\n file { \'/etc/keystone/ssl/private/signing_key.pem\':\n content => hiera(\'keystone_signing_key\'),\n owner => \'keystone\',\n group => \'keystone\',\n notify => Service[\'keystone\'],\n require => File[\'/etc/keystone/ssl/private\'],\n }\n file { \'/etc/keystone/ssl/certs/ca.pem\':\n content => hiera(\'keystone_ca_certificate\'),\n owner => \'keystone\',\n group => \'keystone\',\n notify => Service[\'keystone\'],\n require => File[\'/etc/keystone/ssl/certs\'],\n }\n\n $glance_backend = downcase(hiera(\'glance_backend\', \'swift\'))\n case $glance_backend {\n swift: { $backend_store = \'glance.store.swift.Store\' }\n file: { $backend_store = \'glance.store.filesystem.Store\' }\n rbd: { $backend_store = \'glance.store.rbd.Store\' }\n default: { fail(\'Unrecognized glance_backend parameter.\') }\n }\n $http_store = [\'glance.store.http.Store\']\n $glance_store = concat($http_store, $backend_store)\n\n if $glance_backend == \'file\' and hiera(\'glance_file_pcmk_manage\', false) {\n pacemaker::resource::filesystem { "glance-fs":\n device => hiera(\'glance_file_pcmk_device\'),\n directory => hiera(\'glance_file_pcmk_directory\'),\n fstype => hiera(\'glance_file_pcmk_fstype\'),\n fsoptions => hiera(\'glance_file_pcmk_options\', \'\'),\n clone_params => \'\',\n }\n }\n\n # TODO: notifications, scrubber, etc.\n include ::glance\n class { \'glance::api\':\n known_stores => $glance_store,\n manage_service => false,\n enabled => false,\n }\n class { \'::glance::registry\' :\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n include join([\'::glance::backend::\', $glance_backend])\n\n class { \'::nova\' :\n memcached_servers => suffix(hiera(\'memcache_node_ips\'), \':11211\'),\n }\n\n class { \'::nova::api\' :\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n class { \'::nova::cert\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::nova::conductor\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::nova::consoleauth\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::nova::vncproxy\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::nova::scheduler\' :\n manage_service => false,\n enabled => false,\n }\n include ::nova::network::neutron\n\n # Neutron class definitions\n include ::neutron\n class { \'::neutron::server\' :\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n class { \'::neutron::agents::dhcp\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::neutron::agents::l3\' :\n manage_service => false,\n enabled => false,\n }\n class { \'neutron::agents::metadata\':\n manage_service => false,\n enabled => false,\n }\n file { \'/etc/neutron/dnsmasq-neutron.conf\':\n content => hiera(\'neutron_dnsmasq_options\'),\n owner => \'neutron\',\n group => \'neutron\',\n notify => Service[\'neutron-dhcp-service\'],\n require => Package[\'neutron\'],\n }\n class { \'neutron::plugins::ml2\':\n flat_networks => split(hiera(\'neutron_flat_networks\'), \',\'),\n tenant_network_types => [hiera(\'neutron_tenant_network_type\')],\n }\n class { \'neutron::agents::ml2::ovs\':\n # manage_service => false # not implemented\n enabled => false,\n bridge_mappings => split(hiera(\'neutron_bridge_mappings\'), \',\'),\n tunnel_types => split(hiera(\'neutron_tunnel_types\'), \',\'),\n }\n\n include ::cinder\n class { \'::cinder::api\':\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n class { \'::cinder::scheduler\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::cinder::volume\' :\n manage_service => false,\n enabled => false,\n }\n include ::cinder::glance\n class {\'cinder::setup_test_volume\':\n size => join([hiera(\'cinder_lvm_loop_device_size\'), \'M\']),\n }\n\n $cinder_enable_iscsi = hiera(\'cinder_enable_iscsi_backend\', true)\n if $cinder_enable_iscsi {\n $cinder_iscsi_backend = \'tripleo_iscsi\'\n\n cinder::backend::iscsi { $cinder_iscsi_backend :\n iscsi_ip_address => hiera(\'cinder_iscsi_ip_address\'),\n iscsi_helper => hiera(\'cinder_iscsi_helper\'),\n }\n }\n\n if $enable_ceph {\n\n Ceph_pool {\n pg_num => hiera(\'ceph::profile::params::osd_pool_default_pg_num\'),\n pgp_num => hiera(\'ceph::profile::params::osd_pool_default_pgp_num\'),\n size => hiera(\'ceph::profile::params::osd_pool_default_size\'),\n }\n\n $ceph_pools = hiera(\'ceph_pools\')\n ceph::pool { $ceph_pools : }\n }\n\n if $cinder_enable_rbd_backend {\n $cinder_rbd_backend = \'tripleo_ceph\'\n\n cinder_config {\n "${cinder_rbd_backend}/host": value => \'hostgroup\';\n }\n\n cinder::backend::rbd { $cinder_rbd_backend :\n rbd_pool => \'volumes\',\n rbd_user => \'openstack\',\n rbd_secret_uuid => hiera(\'ceph::profile::params::fsid\'),\n require => Ceph::Pool[\'volumes\'],\n }\n }\n\n if hiera(\'cinder_enable_netapp_backend\', false) {\n $cinder_netapp_backend = hiera(\'cinder::backend::netapp::title\')\n\n cinder_config {\n "${cinder_netapp_backend}/host": value => \'hostgroup\';\n }\n\n if hiera(\'cinder::backend::netapp::nfs_shares\', undef) {\n $cinder_netapp_nfs_shares = split(hiera(\'cinder::backend::netapp::nfs_shares\', undef), \',\')\n }\n\n cinder::backend::netapp { $cinder_netapp_backend :\n netapp_login => hiera(\'cinder::backend::netapp::netapp_login\', undef),\n netapp_password => hiera(\'cinder::backend::netapp::netapp_password\', undef),\n netapp_server_hostname => hiera(\'cinder::backend::netapp::netapp_server_hostname\', undef),\n netapp_server_port => hiera(\'cinder::backend::netapp::netapp_server_port\', undef),\n netapp_size_multiplier => hiera(\'cinder::backend::netapp::netapp_size_multiplier\', undef),\n netapp_storage_family => hiera(\'cinder::backend::netapp::netapp_storage_family\', undef),\n netapp_storage_protocol => hiera(\'cinder::backend::netapp::netapp_storage_protocol\', undef),\n netapp_transport_type => hiera(\'cinder::backend::netapp::netapp_transport_type\', undef),\n netapp_vfiler => hiera(\'cinder::backend::netapp::netapp_vfiler\', undef),\n netapp_volume_list => hiera(\'cinder::backend::netapp::netapp_volume_list\', undef),\n netapp_vserver => hiera(\'cinder::backend::netapp::netapp_vserver\', undef),\n netapp_partner_backend_name => hiera(\'cinder::backend::netapp::netapp_partner_backend_name\', undef),\n nfs_shares => $cinder_netapp_nfs_shares,\n nfs_shares_config => hiera(\'cinder::backend::netapp::nfs_shares_config\', undef),\n netapp_copyoffload_tool_path => hiera(\'cinder::backend::netapp::netapp_copyoffload_tool_path\', undef),\n netapp_controller_ips => hiera(\'cinder::backend::netapp::netapp_controller_ips\', undef),\n netapp_sa_password => hiera(\'cinder::backend::netapp::netapp_sa_password\', undef),\n netapp_storage_pools => hiera(\'cinder::backend::netapp::netapp_storage_pools\', undef),\n netapp_eseries_host_type => hiera(\'cinder::backend::netapp::netapp_eseries_host_type\', undef),\n netapp_webservice_path => hiera(\'cinder::backend::netapp::netapp_webservice_path\', undef),\n }\n }\n\n if hiera(\'cinder_enable_nfs_backend\', false) {\n $cinder_nfs_backend = \'tripleo_nfs\'\n\n if ($::selinux != "false") {\n selboolean { \'virt_use_nfs\':\n value => on,\n persistent => true,\n } -> Package[\'nfs-utils\']\n }\n\n package {\'nfs-utils\': } ->\n cinder::backend::nfs { $cinder_nfs_backend:\n nfs_servers => hiera(\'cinder_nfs_servers\'),\n nfs_mount_options => hiera(\'cinder_nfs_mount_options\'),\n nfs_shares_config => \'/etc/cinder/shares-nfs.conf\',\n }\n }\n\n $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend, $cinder_nfs_backend])\n class { \'::cinder::backends\' :\n enabled_backends => $cinder_enabled_backends,\n }\n\n # swift proxy\n class { \'::swift::proxy\' :\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n include ::swift::proxy::proxy_logging\n include ::swift::proxy::healthcheck\n include ::swift::proxy::cache\n include ::swift::proxy::keystone\n include ::swift::proxy::authtoken\n include ::swift::proxy::staticweb\n include ::swift::proxy::ceilometer\n include ::swift::proxy::ratelimit\n include ::swift::proxy::catch_errors\n include ::swift::proxy::tempurl\n include ::swift::proxy::formpost\n\n # swift storage\n if str2bool(hiera(\'enable_swift_storage\', \'true\')) {\n class {\'::swift::storage::all\':\n mount_check => str2bool(hiera(\'swift_mount_check\'))\n }\n class {\'::swift::storage::account\':\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n class {\'::swift::storage::container\':\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n class {\'::swift::storage::object\':\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n if(!defined(File[\'/srv/node\'])) {\n file { \'/srv/node\':\n ensure => directory,\n owner => \'swift\',\n group => \'swift\',\n require => Package[\'openstack-swift\'],\n }\n }\n $swift_components = [\'account\', \'container\', \'object\']\n swift::storage::filter::recon { $swift_components : }\n swift::storage::filter::healthcheck { $swift_components : }\n }\n\n # Ceilometer\n $ceilometer_backend = downcase(hiera(\'ceilometer_backend\'))\n case $ceilometer_backend {\n /mysql/ : {\n $ceilometer_database_connection = hiera(\'ceilometer_mysql_conn_string\')\n }\n default : {\n $mongo_node_string = join($mongo_node_ips_with_port, \',\')\n $ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"\n }\n }\n include ::ceilometer\n class { \'::ceilometer::api\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::ceilometer::agent::notification\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::ceilometer::agent::central\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::ceilometer::alarm::notifier\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::ceilometer::alarm::evaluator\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::ceilometer::collector\' :\n manage_service => false,\n enabled => false,\n }\n include ::ceilometer::expirer\n class { \'::ceilometer::db\' :\n database_connection => $ceilometer_database_connection,\n sync_db => $sync_db,\n }\n include ceilometer::agent::auth\n\n Cron <| title == \'ceilometer-expirer\' |> { command => "sleep $((\\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }\n\n # Heat\n class { \'::heat\' :\n sync_db => $sync_db,\n }\n class { \'::heat::api\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::heat::api_cfn\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::heat::api_cloudwatch\' :\n manage_service => false,\n enabled => false,\n }\n class { \'::heat::engine\' :\n manage_service => false,\n enabled => false,\n }\n\n # httpd/apache and horizon\n include ::apache\n class { \'::apache::mod::status\':\n allow_from => [\'127.0.0.1\'],\n }\n # Horizon\n $vhost_params = {\n add_listen => false,\n priority => 10,\n }\n class { \'horizon\':\n cache_server_ip => hiera(\'memcache_node_ips\', \'127.0.0.1\'),\n vhost_extra_params => $vhost_params,\n server_aliases => $::hostname,\n }\n\n $snmpd_user = hiera(\'snmpd_readonly_user_name\')\n snmp::snmpv3_user { $snmpd_user:\n authtype => \'MD5\',\n authpass => hiera(\'snmpd_readonly_user_password\'),\n }\n class { \'snmp\':\n agentaddress => [\'udp:161\',\'udp6:[::1]:161\'],\n snmpd_config => [ join([\'rouser \', hiera(\'snmpd_readonly_user_name\')]), \'proc cron\', \'includeAllDisks 10%\', \'master agentx\', \'trapsink localhost public\', \'iquerySecName internalUser\', \'rouser internalUser\', \'defaultMonitors yes\', \'linkUpDownNotifications yes\' ],\n }\n\n} #END STEP 3\n\nif hiera(\'step\') >= 4 {\n if $pacemaker_master {\n\n # Keystone\n pacemaker::resource::service { $::keystone::params::service_name :\n clone_params => "interleave=true",\n }\n\n # Cinder\n pacemaker::resource::service { $::cinder::params::api_service :\n clone_params => "interleave=true",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name],\n }\n pacemaker::resource::service { $::cinder::params::scheduler_service :\n clone_params => "interleave=true",\n }\n pacemaker::resource::service { $::cinder::params::volume_service : }\n\n pacemaker::constraint::base { \'keystone-then-cinder-api-constraint\':\n constraint_type => \'order\',\n first_resource => "${::keystone::params::service_name}-clone",\n second_resource => "${::cinder::params::api_service}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::cinder::params::api_service],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { \'cinder-api-then-cinder-scheduler-constraint\':\n constraint_type => "order",\n first_resource => "${::cinder::params::api_service}-clone",\n second_resource => "${::cinder::params::scheduler_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::cinder::params::api_service],\n Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],\n }\n pacemaker::constraint::colocation { \'cinder-scheduler-with-cinder-api-colocation\':\n source => "${::cinder::params::scheduler_service}-clone",\n target => "${::cinder::params::api_service}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service[$::cinder::params::api_service],\n Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],\n }\n pacemaker::constraint::base { \'cinder-scheduler-then-cinder-volume-constraint\':\n constraint_type => "order",\n first_resource => "${::cinder::params::scheduler_service}-clone",\n second_resource => "${::cinder::params::volume_service}",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],\n Pacemaker::Resource::Service[$::cinder::params::volume_service]],\n }\n pacemaker::constraint::colocation { \'cinder-volume-with-cinder-scheduler-colocation\':\n source => "${::cinder::params::volume_service}",\n target => "${::cinder::params::scheduler_service}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],\n Pacemaker::Resource::Service[$::cinder::params::volume_service]],\n }\n\n # Glance\n pacemaker::resource::service { $::glance::params::registry_service_name :\n clone_params => "interleave=true",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name],\n }\n pacemaker::resource::service { $::glance::params::api_service_name :\n clone_params => "interleave=true",\n }\n\n pacemaker::constraint::base { \'keystone-then-glance-registry-constraint\':\n constraint_type => \'order\',\n first_resource => "${::keystone::params::service_name}-clone",\n second_resource => "${::glance::params::registry_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { \'glance-registry-then-glance-api-constraint\':\n constraint_type => "order",\n first_resource => "${::glance::params::registry_service_name}-clone",\n second_resource => "${::glance::params::api_service_name}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],\n Pacemaker::Resource::Service[$::glance::params::api_service_name]],\n }\n pacemaker::constraint::colocation { \'glance-api-with-glance-registry-colocation\':\n source => "${::glance::params::api_service_name}-clone",\n target => "${::glance::params::registry_service_name}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],\n Pacemaker::Resource::Service[$::glance::params::api_service_name]],\n }\n\n # Neutron\n # NOTE(gfidente): Neutron will try to populate the database with some data\n # as soon as neutron-server is started; to avoid races we want to make this\n # happen only on one node, before normal Pacemaker initialization\n # https://bugzilla.redhat.com/show_bug.cgi?id=1233061\n exec { \'neutron-server-start-wait-stop\' :\n command => "systemctl start neutron-server && \\\n sleep 5s && \\\n systemctl stop neutron-server",\n path => ["/usr/bin", "/usr/sbin"],\n } ->\n pacemaker::resource::service { $::neutron::params::server_service:\n op_params => "start timeout=90",\n clone_params => "interleave=true",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name]\n }\n pacemaker::resource::service { $::neutron::params::l3_agent_service:\n clone_params => "interleave=true",\n }\n pacemaker::resource::service { $::neutron::params::dhcp_agent_service:\n clone_params => "interleave=true",\n }\n pacemaker::resource::service { $::neutron::params::ovs_agent_service:\n clone_params => "interleave=true",\n }\n pacemaker::resource::service { $::neutron::params::metadata_agent_service:\n clone_params => "interleave=true",\n }\n pacemaker::resource::ocf { $::neutron::params::ovs_cleanup_service:\n ocf_agent_name => "neutron:OVSCleanup",\n clone_params => "interleave=true",\n }\n pacemaker::resource::ocf { \'neutron-netns-cleanup\':\n ocf_agent_name => "neutron:NetnsCleanup",\n clone_params => "interleave=true",\n }\n pacemaker::constraint::base { \'keystone-to-neutron-server-constraint\':\n constraint_type => "order",\n first_resource => "${::keystone::params::service_name}-clone",\n second_resource => "${::neutron::params::server_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::keystone::params::service_name],\n Pacemaker::Resource::Service[$::neutron::params::server_service]],\n }\n pacemaker::constraint::base { \'neutron-server-to-neutron-ovs-cleanup-constraint\':\n constraint_type => "order",\n first_resource => "${::neutron::params::server_service}-clone",\n second_resource => "${::neutron::params::ovs_cleanup_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::neutron::params::server_service],\n Pacemaker::Resource::Ocf["${::neutron::params::ovs_cleanup_service}"]],\n }\n pacemaker::constraint::base { \'neutron-ovs-cleanup-to-netns-cleanup-constraint\':\n constraint_type => "order",\n first_resource => "${::neutron::params::ovs_cleanup_service}-clone",\n second_resource => "neutron-netns-cleanup-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Ocf["${::neutron::params::ovs_cleanup_service}"],\n Pacemaker::Resource::Ocf[\'neutron-netns-cleanup\']],\n }\n pacemaker::constraint::colocation { \'neutron-ovs-cleanup-to-netns-cleanup-colocation\':\n source => "neutron-netns-cleanup-clone",\n target => "${::neutron::params::ovs_cleanup_service}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Ocf["${::neutron::params::ovs_cleanup_service}"],\n Pacemaker::Resource::Ocf[\'neutron-netns-cleanup\']],\n }\n pacemaker::constraint::base { \'neutron-netns-cleanup-to-openvswitch-agent-constraint\':\n constraint_type => "order",\n first_resource => "neutron-netns-cleanup-clone",\n second_resource => "${::neutron::params::ovs_agent_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Ocf["neutron-netns-cleanup"],\n Pacemaker::Resource::Service["${::neutron::params::ovs_agent_service}"]],\n }\n pacemaker::constraint::colocation { \'neutron-netns-cleanup-to-openvswitch-agent-colocation\':\n source => "${::neutron::params::ovs_agent_service}-clone",\n target => "neutron-netns-cleanup-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Ocf["neutron-netns-cleanup"],\n Pacemaker::Resource::Service["${::neutron::params::ovs_agent_service}"]],\n }\n pacemaker::constraint::base { \'neutron-openvswitch-agent-to-dhcp-agent-constraint\':\n constraint_type => "order",\n first_resource => "${::neutron::params::ovs_agent_service}-clone",\n second_resource => "${::neutron::params::dhcp_agent_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service["${::neutron::params::ovs_agent_service}"],\n Pacemaker::Resource::Service["${::neutron::params::dhcp_agent_service}"]],\n\n }\n pacemaker::constraint::colocation { \'neutron-openvswitch-agent-to-dhcp-agent-colocation\':\n source => "${::neutron::params::dhcp_agent_service}-clone",\n target => "${::neutron::params::ovs_agent_service}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service["${::neutron::params::ovs_agent_service}"],\n Pacemaker::Resource::Service["${::neutron::params::dhcp_agent_service}"]],\n }\n pacemaker::constraint::base { \'neutron-dhcp-agent-to-l3-agent-constraint\':\n constraint_type => "order",\n first_resource => "${::neutron::params::dhcp_agent_service}-clone",\n second_resource => "${::neutron::params::l3_agent_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service["${::neutron::params::dhcp_agent_service}"],\n Pacemaker::Resource::Service["${::neutron::params::l3_agent_service}"]]\n }\n pacemaker::constraint::colocation { \'neutron-dhcp-agent-to-l3-agent-colocation\':\n source => "${::neutron::params::l3_agent_service}-clone",\n target => "${::neutron::params::dhcp_agent_service}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service["${::neutron::params::dhcp_agent_service}"],\n Pacemaker::Resource::Service["${::neutron::params::l3_agent_service}"]]\n }\n pacemaker::constraint::base { \'neutron-l3-agent-to-metadata-agent-constraint\':\n constraint_type => "order",\n first_resource => "${::neutron::params::l3_agent_service}-clone",\n second_resource => "${::neutron::params::metadata_agent_service}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service["${::neutron::params::l3_agent_service}"],\n Pacemaker::Resource::Service["${::neutron::params::metadata_agent_service}"]]\n }\n pacemaker::constraint::colocation { \'neutron-l3-agent-to-metadata-agent-colocation\':\n source => "${::neutron::params::metadata_agent_service}-clone",\n target => "${::neutron::params::l3_agent_service}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service["${::neutron::params::l3_agent_service}"],\n Pacemaker::Resource::Service["${::neutron::params::metadata_agent_service}"]]\n }\n\n # Nova\n pacemaker::resource::service { $::nova::params::api_service_name :\n clone_params => "interleave=true",\n op_params => "start timeout=60s monitor start-delay=10s",\n }\n pacemaker::resource::service { $::nova::params::conductor_service_name :\n clone_params => "interleave=true",\n op_params => "start timeout=60s monitor start-delay=10s",\n }\n pacemaker::resource::service { $::nova::params::consoleauth_service_name :\n clone_params => "interleave=true",\n op_params => "start timeout=60s monitor start-delay=10s",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name],\n }\n pacemaker::resource::service { $::nova::params::vncproxy_service_name :\n clone_params => "interleave=true",\n op_params => "start timeout=60s monitor start-delay=10s",\n }\n pacemaker::resource::service { $::nova::params::scheduler_service_name :\n clone_params => "interleave=true",\n op_params => "start timeout=60s monitor start-delay=10s",\n }\n\n pacemaker::constraint::base { \'keystone-then-nova-consoleauth-constraint\':\n constraint_type => \'order\',\n first_resource => "${::keystone::params::service_name}-clone",\n second_resource => "${::nova::params::consoleauth_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { \'nova-consoleauth-then-nova-vncproxy-constraint\':\n constraint_type => "order",\n first_resource => "${::nova::params::consoleauth_service_name}-clone",\n second_resource => "${::nova::params::vncproxy_service_name}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],\n Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],\n }\n pacemaker::constraint::colocation { \'nova-vncproxy-with-nova-consoleauth-colocation\':\n source => "${::nova::params::vncproxy_service_name}-clone",\n target => "${::nova::params::consoleauth_service_name}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],\n Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],\n }\n # FIXME(gfidente): novncproxy will not start unless websockify is updated to 0.6\n # which is not the case for f20 nor f21; ucomment when it becomes available\n #pacemaker::constraint::base { \'nova-vncproxy-then-nova-api-constraint\':\n # constraint_type => "order",\n # first_resource => "${::nova::params::vncproxy_service_name}-clone",\n # second_resource => "${::nova::params::api_service_name}-clone",\n # first_action => "start",\n # second_action => "start",\n # require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],\n # Pacemaker::Resource::Service[$::nova::params::api_service_name]],\n #}\n #pacemaker::constraint::colocation { \'nova-api-with-nova-vncproxy-colocation\':\n # source => "${::nova::params::api_service_name}-clone",\n # target => "${::nova::params::vncproxy_service_name}-clone",\n # score => "INFINITY",\n # require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],\n # Pacemaker::Resource::Service[$::nova::params::api_service_name]],\n #}\n pacemaker::constraint::base { \'nova-api-then-nova-scheduler-constraint\':\n constraint_type => "order",\n first_resource => "${::nova::params::api_service_name}-clone",\n second_resource => "${::nova::params::scheduler_service_name}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],\n Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],\n }\n pacemaker::constraint::colocation { \'nova-scheduler-with-nova-api-colocation\':\n source => "${::nova::params::scheduler_service_name}-clone",\n target => "${::nova::params::api_service_name}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],\n Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],\n }\n pacemaker::constraint::base { \'nova-scheduler-then-nova-conductor-constraint\':\n constraint_type => "order",\n first_resource => "${::nova::params::scheduler_service_name}-clone",\n second_resource => "${::nova::params::conductor_service_name}-clone",\n first_action => "start",\n second_action => "start",\n require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],\n Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],\n }\n pacemaker::constraint::colocation { \'nova-conductor-with-nova-scheduler-colocation\':\n source => "${::nova::params::conductor_service_name}-clone",\n target => "${::nova::params::scheduler_service_name}-clone",\n score => "INFINITY",\n require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],\n Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],\n }\n\n # Ceilometer\n pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :\n clone_params => \'interleave=true\',\n require => [Pacemaker::Resource::Service[$::keystone::params::service_name],\n Pacemaker::Resource::Service[$::mongodb::params::service_name]],\n }\n pacemaker::resource::service { $::ceilometer::params::collector_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::ceilometer::params::api_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::ceilometer::params::alarm_evaluator_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::ocf { \'delay\' :\n ocf_agent_name => \'heartbeat:Delay\',\n clone_params => \'interleave=true\',\n resource_params => \'startdelay=10\',\n }\n pacemaker::constraint::base { \'keystone-then-ceilometer-central-constraint\':\n constraint_type => \'order\',\n first_resource => "${::keystone::params::service_name}-clone",\n second_resource => "${::ceilometer::params::agent_central_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { \'ceilometer-central-then-ceilometer-collector-constraint\':\n constraint_type => \'order\',\n first_resource => "${::ceilometer::params::agent_central_service_name}-clone",\n second_resource => "${::ceilometer::params::collector_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],\n }\n pacemaker::constraint::base { \'ceilometer-collector-then-ceilometer-api-constraint\':\n constraint_type => \'order\',\n first_resource => "${::ceilometer::params::collector_service_name}-clone",\n second_resource => "${::ceilometer::params::api_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::api_service_name]],\n }\n pacemaker::constraint::colocation { \'ceilometer-api-with-ceilometer-collector-colocation\':\n source => "${::ceilometer::params::api_service_name}-clone",\n target => "${::ceilometer::params::collector_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],\n }\n pacemaker::constraint::base { \'ceilometer-api-then-ceilometer-delay-constraint\':\n constraint_type => \'order\',\n first_resource => "${::ceilometer::params::api_service_name}-clone",\n second_resource => \'delay-clone\',\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Ocf[\'delay\']],\n }\n pacemaker::constraint::colocation { \'ceilometer-delay-with-ceilometer-api-colocation\':\n source => \'delay-clone\',\n target => "${::ceilometer::params::api_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Ocf[\'delay\']],\n }\n pacemaker::constraint::base { \'ceilometer-delay-then-ceilometer-alarm-evaluator-constraint\':\n constraint_type => \'order\',\n first_resource => \'delay-clone\',\n second_resource => "${::ceilometer::params::alarm_evaluator_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],\n Pacemaker::Resource::Ocf[\'delay\']],\n }\n pacemaker::constraint::colocation { \'ceilometer-alarm-evaluator-with-ceilometer-delay-colocation\':\n source => "${::ceilometer::params::alarm_evaluator_service_name}-clone",\n target => \'delay-clone\',\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Ocf[\'delay\']],\n }\n pacemaker::constraint::base { \'ceilometer-alarm-evaluator-then-ceilometer-alarm-notifier-constraint\':\n constraint_type => \'order\',\n first_resource => "${::ceilometer::params::alarm_evaluator_service_name}-clone",\n second_resource => "${::ceilometer::params::alarm_notifier_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n pacemaker::constraint::colocation { \'ceilometer-alarm-notifier-with-ceilometer-alarm-evaluator-colocation\':\n source => "${::ceilometer::params::alarm_notifier_service_name}-clone",\n target => "${::ceilometer::params::alarm_evaluator_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n pacemaker::constraint::base { \'ceilometer-alarm-notifier-then-ceilometer-notification-constraint\':\n constraint_type => \'order\',\n first_resource => "${::ceilometer::params::alarm_notifier_service_name}-clone",\n second_resource => "${::ceilometer::params::agent_notification_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n pacemaker::constraint::colocation { \'ceilometer-notification-with-ceilometer-alarm-notifier-colocation\':\n source => "${::ceilometer::params::agent_notification_service_name}-clone",\n target => "${::ceilometer::params::alarm_notifier_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n if downcase(hiera(\'ceilometer_backend\')) == \'mongodb\' {\n pacemaker::constraint::base { \'mongodb-then-ceilometer-central-constraint\':\n constraint_type => \'order\',\n first_resource => "${::mongodb::params::service_name}-clone",\n second_resource => "${::ceilometer::params::agent_central_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],\n Pacemaker::Resource::Service[$::mongodb::params::service_name]],\n }\n }\n\n # Heat\n pacemaker::resource::service { $::heat::params::api_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::heat::params::api_cloudwatch_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::heat::params::api_cfn_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::resource::service { $::heat::params::engine_service_name :\n clone_params => \'interleave=true\',\n }\n pacemaker::constraint::base { \'keystone-then-heat-api-constraint\':\n constraint_type => \'order\',\n first_resource => "${::keystone::params::service_name}-clone",\n second_resource => "${::heat::params::api_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { \'heat-api-then-heat-api-cfn-constraint\':\n constraint_type => \'order\',\n first_resource => "${::heat::params::api_service_name}-clone",\n second_resource => "${::heat::params::api_cfn_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name]],\n }\n pacemaker::constraint::colocation { \'heat-api-cfn-with-heat-api-colocation\':\n source => "${::heat::params::api_cfn_service_name}-clone",\n target => "${::heat::params::api_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_service_name]],\n }\n pacemaker::constraint::base { \'heat-api-cfn-then-heat-api-cloudwatch-constraint\':\n constraint_type => \'order\',\n first_resource => "${::heat::params::api_cfn_service_name}-clone",\n second_resource => "${::heat::params::api_cloudwatch_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name]],\n }\n pacemaker::constraint::colocation { \'heat-api-cloudwatch-with-heat-api-cfn-colocation\':\n source => "${::heat::params::api_cloudwatch_service_name}-clone",\n target => "${::heat::params::api_cfn_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name]],\n }\n pacemaker::constraint::base { \'heat-api-cloudwatch-then-heat-engine-constraint\':\n constraint_type => \'order\',\n first_resource => "${::heat::params::api_cloudwatch_service_name}-clone",\n second_resource => "${::heat::params::engine_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],\n Pacemaker::Resource::Service[$::heat::params::engine_service_name]],\n }\n pacemaker::constraint::colocation { \'heat-engine-with-heat-api-cloudwatch-colocation\':\n source => "${::heat::params::engine_service_name}-clone",\n target => "${::heat::params::api_cloudwatch_service_name}-clone",\n score => \'INFINITY\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],\n Pacemaker::Resource::Service[$::heat::params::engine_service_name]],\n }\n pacemaker::constraint::base { \'ceilometer-notification-then-heat-api-constraint\':\n constraint_type => \'order\',\n first_resource => "${::ceilometer::params::agent_notification_service_name}-clone",\n second_resource => "${::heat::params::api_service_name}-clone",\n first_action => \'start\',\n second_action => \'start\',\n require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name]],\n }\n\n # Horizon\n pacemaker::resource::service { $::horizon::params::http_service:\n clone_params => "interleave=true",\n }\n\n\n }\n\n} #END STEP 4\n\n# SERVICES INIT\n# Needs to happen on all nodes (some parts do .conf file amendments)\n# but it needs to happen on $pacemaker_master first (other parts make\n# API calls and we don\'t want races, and the .conf file amendments\n# often depend on the API calls having been made).\nif (hiera(\'step\') >= 5 and $pacemaker_master) or hiera(\'step\') >= 6 {\n\n include ::keystone::roles::admin\n\n # TO-DO: Remove this class as soon as Keystone v3 will be fully functional\n include ::heat::keystone::domain\n Class[\'::keystone::roles::admin\'] -> Exec[\'heat_domain_create\']\n\n} # END SERVICES INIT (STEP 5 and 6)\n', u'file:///tmp/tmpVtTjeI/hieradata/controller.yaml': '# Hiera data here applies to all controller nodes\nkeystone::roles::admin::email: \'root@localhost\'\nkeystone::roles::admin::admin_tenant: \'admin\'\n\nnova::api::enabled: true\nnova::conductor::enabled: true\nnova::consoleauth::enabled: true\nnova::vncproxy::enabled: true\nnova::scheduler::enabled: true\n\n# rabbitmq\nrabbitmq::delete_guest_user: false\nrabbitmq::wipe_db_on_cookie_change: true\nrabbitmq::port: \'5672\'\nrabbitmq::package_source: undef\nrabbitmq::repos_ensure: false\nrabbitmq_environment:\n RABBITMQ_NODENAME: "rabbit@%{::hostname}"\n RABBITMQ_SERVER_ERL_ARGS: \'"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"\'\nrabbitmq_kernel_variables:\n inet_dist_listen_min: \'35672\'\n inet_dist_listen_max: \'35672\'\nrabbitmq_config_variables:\n tcp_listen_options: \'[binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]\'\n cluster_partition_handling: \'pause_minority\'\n\nmongodb::server::replset: tripleo\nmongodb::server::config: \'/etc/mongod.conf\'\n\nredis::port: 6379\nredis::sentinel::master_name: "%{hiera(\'bootstrap_nodeid\')}"\nredis::sentinel::redis_host: "%{hiera(\'bootstrap_nodeid_ip\')}"\nredis::sentinel::notification_script: \'/usr/local/bin/redis-notifications.sh\'\n\n# service tenant\nnova::api::admin_tenant_name: \'service\'\nglance::api::keystone_tenant: \'service\'\nglance::registry::keystone_tenant: \'service\'\nneutron::server::auth_tenant: \'service\'\nneutron::agents::metadata::auth_tenant: \'service\'\ncinder::api::keystone_tenant: \'service\'\nswift::proxy::authtoken::admin_tenant_name: \'service\'\nceilometer::api::keystone_tenant: \'service\'\nheat::keystone_tenant: \'service\'\n\n#swift\nswift::proxy::pipeline:\n - \'catch_errors\'\n - \'healthcheck\'\n - \'cache\'\n - \'ratelimit\'\n - \'tempurl\'\n - \'formpost\'\n - \'staticweb\'\n - \'ceilometer\'\n - \'authtoken\'\n - \'keystone\'\n - \'proxy-logging\'\n - \'proxy-server\'\n\nswift::proxy::account_autocreate: true\n\n# glance\nglance::api::pipeline: \'keystone\'\nglance::registry::pipeline: \'keystone\'\nglance::backend::swift::swift_store_create_container_on_put: true\nglance::backend::rbd::rbd_store_user: \'openstack\'\nglance_file_pcmk_directory: \'/var/lib/glance/images\'\n\n# neutron\nneutron::core_plugin: \'ml2\'\nneutron::service_plugins:\n - \'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin\'\nneutron::server::sync_db: true\nneutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf\n\n# nova\nnova::notify_on_state_change: \'vm_and_task_state\'\nnova::api::osapi_v3: true\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\n# heat\nheat::engine::configure_delegated_roles: false\nheat::engine::trusts_delegated_roles: []\nheat::instance_user: \'\'\nheat::keystone::domain::keystone_admin: \'admin\'\nheat::keystone::domain::keystone_tenant: \'admin\'\nheat::keystone::domain::domain_name: \'heat_stack\'\nheat::keystone::domain::domain_admin: \'heat_stack_domain_admin\'\n\n# pacemaker\npacemaker::corosync::cluster_name: \'tripleo_cluster\'\npacemaker::corosync::manage_fw: false\n\n# horizon\nhorizon::allowed_hosts: \'*\'\nhorizon::django_session_engine: \'django.contrib.sessions.backends.cache\'\n\n# mysql\nmysql::server::manage_config_file: true\n\n\ntripleo::loadbalancer::keystone_admin: true\ntripleo::loadbalancer::keystone_public: true\ntripleo::loadbalancer::neutron: true\ntripleo::loadbalancer::cinder: true\ntripleo::loadbalancer::glance_api: true\ntripleo::loadbalancer::glance_registry: true\ntripleo::loadbalancer::nova_ec2: true\ntripleo::loadbalancer::nova_osapi: true\ntripleo::loadbalancer::nova_metadata: true\ntripleo::loadbalancer::nova_novncproxy: true\ntripleo::loadbalancer::mysql: true\ntripleo::loadbalancer::redis: true\ntripleo::loadbalancer::swift_proxy_server: true\ntripleo::loadbalancer::ceilometer: true\ntripleo::loadbalancer::heat_api: true\ntripleo::loadbalancer::heat_cloudwatch: true\ntripleo::loadbalancer::heat_cfn: true\ntripleo::loadbalancer::horizon: true\n', u'file:///tmp/tmpVtTjeI/provider-Controller-1.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hostname": {"description": "Hostname of the server", "value": {"get_attr": ["Controller", "name"]}}, "config_identifier": {"description": "identifier which changes if the controller configuration may need re-applying", "value": {"list_join": [",", [{"get_attr": ["ControllerDeployment", "deploy_stdout"]}, {"get_attr": ["ControllerExtraConfigPre", "deploy_stdout"]}]]}}, "nova_server_resource": {"description": "Heat resource handle for the Nova compute server", "value": {"get_resource": "Controller"}}, "tenant_ip_address": {"description": "IP address of the server in the tenant network", "value": {"get_attr": ["TenantPort", "ip_address"]}}, "external_ip_address": {"description": "IP address of the server in the external network", "value": {"get_attr": ["ExternalPort", "ip_address"]}}, "swift_device": {"description": "Swift device formatted for swift-ring-builder", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}}, "template": "r1z1-IP:%PORT%/d1"}}}, "corosync_node": {"description": "Node object in the format {ip: ..., name: ...} format that the corosync element expects\\n", "value": {"ip": {"get_attr": ["Controller", "networks", "ctlplane", 0]}, "name": {"get_attr": ["Controller", "name"]}}}, "hosts_entry": {"description": "Server\'s IP address and hostname in the /etc/hosts format\\n", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "ControllerHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["Controller", "name"]}, "CLOUDNAME": {"get_param": "CloudName"}}, "template": "IP HOST.localdomain HOST CLOUDNAME"}}}, "swift_proxy_memcache": {"description": "Swift proxy-memcache value", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MemcachedNetwork"]}]}}, "template": "IP:11211"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "ip_address": {"description": "IP address of the server in the ctlplane network", "value": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "heat_template_version": "2015-04-30", "description": "OpenStack controller node configured by Puppet.\\n", "parameters": {"MysqlMaxConnections": {"default": 1024, "type": "number", "description": "Configures MySQL max_connections config setting"}, "EnableCephStorage": {"default": false, "type": "boolean", "description": "Whether to deploy Ceph Storage (OSD) on the Controller"}, "NeutronPublicInterfaceRawDevice": {"default": "", "type": "string", "description": "If set, the public interface is a vlan with this device as the raw device."}, "KeystoneSigningKey": {"default": "", "hidden": true, "type": "string", "description": "Keystone key for signing tokens."}, "SSLCACertificate": {"default": "", "type": "string", "description": "If set, the contents of an SSL certificate authority file."}, "NtpServer": {"default": "", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "GlanceFilePcmkManage": {"default": false, "type": "boolean", "description": "Whether to make Glance file backend a mount managed by Pacemaker. Effective when GlanceBackend is \'file\'.\\n"}, "KeystoneSSLCertificateKey": {"default": "", "hidden": true, "type": "string", "description": "Keystone key for signing tokens."}, "NeutronDhcpAgentsPerNetwork": {"default": 3, "type": "number", "description": "The number of neutron dhcp agents to schedule per network"}, "NeutronPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the neutron service and db account, used by neutron agents."}, "NeutronFlatNetworks": {"default": "datacentre", "type": "string", "description": "If set, flat networks to configure in neutron plugins."}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "NeutronPublicInterface": {"default": "nic1", "type": "string", "description": "What interface to bridge onto br-ex for network nodes."}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "GlancePassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the glance service and db account, used by the glance services."}, "NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n"}, "CinderEnableRbdBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the Rbd backend for Cinder"}, "SwiftReplicas": {"default": 3, "type": "number", "description": "How many replicas to use in the swift rings."}, "NeutronPublicInterfaceTag": {"default": "", "type": "string", "description": "VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\\n"}, "NeutronNetworkVLANRanges": {"default": "datacentre", "type": "comma_delimited_list", "description": "The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the \'datacentre\' physical network (See NeutronBridgeMappings).\\n"}, "KeystoneSigningCertificate": {"default": "", "type": "string", "description": "Keystone certificate for verifying token validity."}, "SSLKey": {"default": "", "hidden": true, "type": "string", "description": "If set, the contents of an SSL certificate .key file for encrypting SSL endpoints."}, "GlanceFilePcmkFstype": {"default": "nfs", "type": "string", "description": "Filesystem type for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "RabbitCookie": {"default": "", "hidden": true, "type": "string"}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "MysqlRootPassword": {"default": "", "hidden": true, "type": "string"}, "GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "CinderISCSIHelper": {"default": "tgtadm", "type": "string", "description": "The iSCSI helper to use with cinder."}, "MysqlClusterUniquePart": {"default": "unset", "type": "string", "description": "A unique identifier of the MySQL cluster the controller is in."}, "CinderPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the cinder service and db account, used by cinder-api."}, "CloudName": {"default": "", "type": "string", "description": "The DNS name of this cloud. E.g. ci-overcloud.tripleo.org"}, "CinderLVMLoopDeviceSize": {"default": 5000, "type": "number", "description": "The size of the loopback file used by the cinder LVM driver."}, "RabbitPassword": {"default": "guest", "hidden": true, "type": "string", "description": "The password for RabbitMQ"}, "CinderNfsServers": {"default": "", "type": "comma_delimited_list", "description": "NFS servers used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n"}, "NeutronApiVirtualIP": {"default": "", "type": "string"}, "ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "MysqlInnodbBufferPoolSize": {"default": 0, "type": "number", "description": "Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as \\"no value\\" and will defer to the lower level default.\\n"}, "PublicVirtualInterface": {"default": "br-ex", "type": "string", "description": "Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used.\\n"}, "Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "NeutronAgentMode": {"default": "dvr_snat", "type": "string", "description": "Agent mode for the neutron-l3-agent on the controller hosts"}, "GlanceFilePcmkDevice": {"default": "", "type": "string", "description": "An exported storage device that should be mounted by Pacemaker as Glance storage. Effective when GlanceFilePcmkManage is true.\\n"}, "AdminToken": {"default": "unset", "hidden": true, "type": "string", "description": "The keystone auth secret and db password."}, "SwiftMinPartHours": {"default": 1, "type": "number", "description": "The minimum time (in hours) before a partition in a ring can be moved following a rebalance."}, "KeystoneSSLCertificate": {"default": "", "type": "string", "description": "Keystone certificate for verifying token validity."}, "NeutronL3HA": {"default": "False", "type": "string", "description": "Whether to enable l3-agent HA"}, "EnableGalera": {"default": true, "type": "boolean", "description": "Whether to use Galera instead of regular MariaDB."}, "HorizonSecret": {"type": "string", "description": "Secret key for Django"}, "NeutronBridgeMappings": {"default": "datacentre:br-ex", "type": "string", "description": "The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name \'datacentre\' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep \'datacentre\' as a mapping network name.\\n"}, "VirtualIP": {"default": "", "type": "string"}, "CinderEnableIscsiBackend": {"default": true, "type": "boolean", "description": "Whether to enable or not the Iscsi backend for Cinder"}, "CeilometerMeteringSecret": {"default": "unset", "hidden": true, "type": "string", "description": "Secret shared by the ceilometer services."}, "NeutronMetadataProxySharedSecret": {"default": "unset", "type": "string", "description": "Shared secret to prevent spoofing"}, "PublicVirtualIP": {"default": "", "type": "string"}, "Flavor": {"type": "string", "description": "Flavor for control nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "CinderEnableNfsBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the NFS backend for Cinder"}, "NovaPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the nova service and db account, used by nova-api."}, "KeystonePublicApiVirtualIP": {"default": "", "type": "string"}, "GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "SwiftPartPower": {"default": 10, "type": "number", "description": "Partition Power to use when building Swift rings"}, "HeatApiVirtualIP": {"default": "", "type": "string"}, "NeutronPublicInterfaceDefaultRoute": {"default": "", "type": "string", "description": "A custom default route for the NeutronPublicInterface."}, "HeatPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the Heat service and db account, used by the Heat services."}, "MysqlVirtualIP": {"default": "", "type": "string"}, "RedisVirtualIP": {"default": "", "type": "string"}, "ControllerExtraConfig": {"default": {}, "type": "json", "description": "Controller specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n"}, "ControlVirtualInterface": {"default": "br-ex", "type": "string", "description": "Interface where virtual ip will be assigned."}, "SwiftMountCheck": {"default": "false", "type": "boolean", "description": "Value of mount_check in Swift account/container/object -server.conf"}, "HeatStackDomainAdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "Password for heat_stack_domain_admin user."}, "RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "PcsdPassword": {"type": "string", "description": "The password for the \'pcsd\' user."}, "GlanceApiVirtualIP": {"default": "", "type": "string"}, "SwiftPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the swift service account, used by the swift proxy services."}, "EnableSwiftStorage": {"default": true, "type": "boolean", "description": "Whether to enable Swift Storage on the Controller"}, "EnablePacemaker": {"default": false, "type": "boolean", "description": "If enabled services will be monitored by Pacemaker; it will manage VIPs as well, in place of Keepalived."}, "NeutronNetworkType": {"default": "gre", "type": "string", "description": "The tenant network type for Neutron, either gre or vxlan."}, "CeilometerPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the ceilometer service and db account."}, "SSLCertificate": {"default": "", "hidden": true, "type": "string", "description": "If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints."}, "NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n"}, "GlanceNotifierStrategy": {"default": "noop", "type": "string", "description": "Strategy to use for Glance notification queue"}, "CinderBackendConfig": {"default": {}, "type": "json", "description": "Contains parameters to configure Cinder backends. Typically set via parameter_defaults in the resource registry."}, "NeutronMechanismDrivers": {"default": "openvswitch", "type": "string", "description": "The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'openvswitch,l2_population\'\\n"}, "GlanceBackend": {"default": "swift", "type": "string", "description": "The short name of the Glance backend to use. Should be one of swift, rbd, or file", "constraints": [{"allowed_values": ["swift", "file", "rbd"]}]}, "RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n"}, "NeutronAllowL3AgentFailover": {"default": "True", "type": "string", "description": "Allow automatic l3-agent failover"}, "HeatAuthEncryptionKey": {"type": "string", "description": "Auth encryption key for heat-engine"}, "GlanceFilePcmkOptions": {"default": "", "type": "string", "description": "Mount options for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n"}, "RabbitUserName": {"default": "guest", "type": "string", "description": "The username for RabbitMQ"}, "GlanceLogFile": {"default": "", "type": "string", "description": "The filepath of the file to use for logging messages from Glance."}, "CinderNfsMountOptions": {"default": "", "type": "string", "description": "Mount options for NFS mounts used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n"}, "NeutronExternalNetworkBridge": {"default": "br-ex", "type": "string", "description": "Name of bridge used for external network traffic."}, "CeilometerBackend": {"default": "mongodb", "type": "string", "description": "The ceilometer backend type."}, "NeutronPublicInterfaceIP": {"default": "", "type": "string", "description": "A custom IP address to put onto the NeutronPublicInterface."}, "SwiftHashSuffix": {"default": "unset", "hidden": true, "type": "string", "description": "A random string to be used as a salt when hashing to determine mappings in the ring."}, "AdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the keystone admin account, used for monitoring, querying neutron etc."}, "NeutronDVR": {"default": "False", "type": "string", "description": "Whether to configure Neutron Distributed Virtual Routers"}, "Image": {"default": "overcloud-control", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\"FILEKEY\\":\\n {\\"config\\":\\n [{\\"section\\": \\"SECTIONNAME\\",\\n \\"values\\":\\n [{\\"option\\": \\"OPTIONNAME\\",\\n \\"value\\": \\"VALUENAME\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\"nova\\":\\n {\\"config\\":\\n [{\\"section\\": \\"default\\",\\n \\"values\\":\\n [{\\"option\\": \\"compute_manager\\",\\n \\"value\\": \\"ironic.nova.compute.manager.ClusterComputeManager\\"\\n }\\n ]\\n },\\n {\\"section\\": \\"cells\\",\\n \\"values\\":\\n [{\\"option\\": \\"driver\\",\\n \\"value\\": \\"nova.cells.rpc_driver.CellsRPCDriver\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n"}, "NeutronTunnelTypes": {"default": "gre", "type": "string", "description": "The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'gre,vxlan\'\\n"}, "NeutronEnableTunnelling": {"default": "True", "type": "string"}, "KeystoneCACertificate": {"default": "", "type": "string", "description": "Keystone self-signed certificate authority certificate."}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}, "NeutronDnsmasqOptions": {"default": "dhcp-option-force=26,1400", "type": "string", "description": "Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead."}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "ControllerExtraConfigPre": {"depends_on": "ControllerDeployment", "type": "OS::TripleO::ControllerExtraConfigPre", "properties": {"server": {"get_resource": "Controller"}}}, "TenantPort": {"type": "OS::TripleO::Controller::Ports::TenantPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "ExternalPort": {"type": "OS::TripleO::Controller::Ports::ExternalPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "NetworkConfig": {"type": "OS::TripleO::Controller::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}, "TenantIpSubnet": {"get_attr": ["TenantPort", "ip_subnet"]}, "ExternalIpSubnet": {"get_attr": ["ExternalPort", "ip_subnet"]}}}, "StorageMgmtPort": {"type": "OS::TripleO::Controller::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "ControllerDeployment": {"depends_on": "NetworkDeployment", "type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"heat_stack_domain_admin_password": {"get_param": "HeatStackDomainAdminPassword"}, "admin_token": {"get_param": "AdminToken"}, "heat.metadata_server_url": {"list_join": ["", ["http://", {"get_param": "HeatApiVirtualIP"}, ":8000"]]}, "neutron_router_distributed": {"get_param": "NeutronDVR"}, "swift_password": {"get_param": "SwiftPassword"}, "neutron_flat_networks": {"get_param": "NeutronFlatNetworks"}, "redis_vip": {"get_param": "RedisVirtualIP"}, "glance_port": {"get_param": "GlancePort"}, "glance_api_servers": {"list_join": ["", [{"get_param": "GlanceProtocol"}, "://", {"get_param": "GlanceApiVirtualIP"}, ":", {"get_param": "GlancePort"}]]}, "rabbit_password": {"get_param": "RabbitPassword"}, "neutron_vni_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronVniRanges"}]}}, "template": "[\'RANGES\']"}}, "neutron_tunnel_types": {"get_param": "NeutronTunnelTypes"}, "neutron_dnsmasq_options": {"get_param": "NeutronDnsmasqOptions"}, "keystone_admin_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystoneAdminApiNetwork"]}]}, "enable_package_install": {"get_param": "EnablePackageInstall"}, "neutron_public_interface_raw_device": {"get_param": "NeutronPublicInterfaceRawDevice"}, "neutron_password": {"get_param": "NeutronPassword"}, "cinder_enable_rbd_backend": {"get_param": "CinderEnableRbdBackend"}, "glance_file_pcmk_options": {"get_param": "GlanceFilePcmkOptions"}, "enable_swift_storage": {"get_param": "EnableSwiftStorage"}, "glance_backend": {"get_param": "GlanceBackend"}, "horizon_secret": {"get_param": "HorizonSecret"}, "glance_file_pcmk_fstype": {"get_param": "GlanceFilePcmkFstype"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "neutron_l3_ha": {"get_param": "NeutronL3HA"}, "neutron_local_ip": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronTenantNetwork"]}]}, "admin_password": {"get_param": "AdminPassword"}, "neutron_admin_auth_url": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":35357/v2.0"]]}, "ceph_public_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "bootstack_nodeid": {"get_attr": ["Controller", "name"]}, "glance_file_pcmk_device": {"get_param": "GlanceFilePcmkDevice"}, "heat_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HeatApiNetwork"]}]}, "cinder_dsn": {"list_join": ["", ["mysql://cinder:", {"get_param": "CinderPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/cinder"]]}, "enable_ceph_storage": {"get_param": "EnableCephStorage"}, "cinder_lvm_loop_device_size": {"get_param": "CinderLVMLoopDeviceSize"}, "neutron_mechanism_drivers": {"get_param": "NeutronMechanismDrivers"}, "neutron_public_interface_ip": {"get_param": "NeutronPublicInterfaceIP"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "keystone_dsn": {"list_join": ["", ["mysql://keystone:", {"get_param": "AdminToken"}, "@", {"get_param": "MysqlVirtualIP"}, "/keystone"]]}, "keystone_signing_certificate": {"get_param": "KeystoneSigningCertificate"}, "mysql_innodb_buffer_pool_size": {"get_param": "MysqlInnodbBufferPoolSize"}, "glance_dsn": {"list_join": ["", ["mysql://glance:", {"get_param": "GlancePassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/glance"]]}, "ceilometer_coordination_url": {"list_join": ["", ["redis://", {"get_param": "RedisVirtualIP"}, ":6379"]]}, "nova_dsn": {"list_join": ["", ["mysql://nova:", {"get_param": "NovaPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/nova"]]}, "cinder_password": {"get_param": "CinderPassword"}, "swift_hash_suffix": {"get_param": "SwiftHashSuffix"}, "nova_metadata_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaMetadataNetwork"]}]}, "pcsd_password": {"get_param": "PcsdPassword"}, "keystone_public_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}, "neutron_bridge_mappings": {"get_param": "NeutronBridgeMappings"}, "public_virtual_interface": {"get_param": "PublicVirtualInterface"}, "neutron_public_interface": {"get_param": "NeutronPublicInterface"}, "neutron_url": {"list_join": ["", ["http://", {"get_param": "NeutronApiVirtualIP"}, ":9696"]]}, "ceilometer_metering_secret": {"get_param": "CeilometerMeteringSecret"}, "glance_password": {"get_param": "GlancePassword"}, "nova_password": {"get_param": "NovaPassword"}, "neutron_dhcp_agents_per_network": {"get_param": "NeutronDhcpAgentsPerNetwork"}, "keystone_auth_uri": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":5000/v2.0/"]]}, "rabbit_username": {"get_param": "RabbitUserName"}, "neutron_enable_tunneling": {"get_param": "NeutronEnableTunnelling"}, "heat_password": {"get_param": "HeatPassword"}, "debug": {"get_param": "Debug"}, "keystone_ca_certificate": {"get_param": "KeystoneCACertificate"}, "rabbit_client_port": {"get_param": "RabbitClientPort"}, "keystone_signing_key": {"get_param": "KeystoneSigningKey"}, "swift_management_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}, "neutron_tunnel_id_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronTunnelIdRanges"}]}}, "template": "[\'RANGES\']"}}, "swift_min_part_hours": {"get_param": "SwiftMinPartHours"}, "neutron_public_interface_default_route": {"get_param": "NeutronPublicInterfaceDefaultRoute"}, "mongo_db_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MongoDbNetwork"]}]}, "swift_mount_check": {"get_param": "SwiftMountCheck"}, "heat.watch_server_url": {"list_join": ["", ["http://", {"get_param": "HeatApiVirtualIP"}, ":8003"]]}, "heat_dsn": {"list_join": ["", ["mysql://heat:", {"get_param": "HeatPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/heat"]]}, "keystone_ssl_certificate_key": {"get_param": "KeystoneSSLCertificateKey"}, "rabbitmq_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RabbitMqNetwork"]}]}, "mysql_cluster_name": {"str_replace": {"params": {"CLUSTER": {"get_param": "MysqlClusterUniquePart"}}, "template": "tripleo-CLUSTER"}}, "neutron_public_interface_tag": {"get_param": "NeutronPublicInterfaceTag"}, "cinder_iscsi_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderIscsiNetwork"]}]}, "control_virtual_interface": {"get_param": "ControlVirtualInterface"}, "cinder_iscsi_helper": {"get_param": "CinderISCSIHelper"}, "neutron_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}, "rabbit_client_use_ssl": {"get_param": "RabbitClientUseSSL"}, "mysql_root_password": {"get_param": "MysqlRootPassword"}, "glance_log_file": {"get_param": "GlanceLogFile"}, "swift_proxy_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftProxyNetwork"]}]}, "memcached_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MemcachedNetwork"]}]}, "heat_auth_encryption_key": {"get_param": "HeatAuthEncryptionKey"}, "keystone_ec2_uri": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":5000/v2.0/ec2tokens"]]}, "enable_galera": {"get_param": "EnableGalera"}, "mysql_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MysqlNetwork"]}]}, "neutron_allow_l3agent_failover": {"get_param": "NeutronAllowL3AgentFailover"}, "mysql_max_connections": {"get_param": "MysqlMaxConnections"}, "keystone_identity_uri": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":35357/"]]}, "keystone_ssl_certificate": {"get_param": "KeystoneSSLCertificate"}, "neutron_metadata_proxy_shared_secret": {"get_param": "NeutronMetadataProxySharedSecret"}, "cinder_backend_config": {"get_param": "CinderBackendConfig"}, "cinder_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderApiNetwork"]}]}, "swift_replicas": {"get_param": "SwiftReplicas"}, "rabbit_cookie": {"get_param": "RabbitCookie"}, "keystone_auth_address": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":5000/v2.0"]]}, "glance_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "ceph_public_ip": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "cinder_enable_iscsi_backend": {"get_param": "CinderEnableIscsiBackend"}, "ceilometer_password": {"get_param": "CeilometerPassword"}, "neutron_tenant_network_type": {"get_param": "NeutronNetworkType"}, "glance_notifier_strategy": {"get_param": "GlanceNotifierStrategy"}, "neutron_network_vlan_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronNetworkVLANRanges"}]}}, "template": "[\'RANGES\']"}}, "ceilometer_dsn": {"list_join": ["", ["mysql://ceilometer:unset@", {"get_param": "MysqlVirtualIP"}, "/ceilometer"]]}, "glance_registry_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceRegistryNetwork"]}]}, "ceph_cluster_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephClusterNetwork"]}]}, "neutron_agent_mode": {"get_param": "NeutronAgentMode"}, "horizon_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HorizonNetwork"]}]}, "cinder_nfs_mount_options": {"get_param": "CinderNfsMountOptions"}, "cinder_enable_nfs_backend": {"get_param": "CinderEnableNfsBackend"}, "ceilometer_backend": {"get_param": "CeilometerBackend"}, "neutron_external_network_bridge": {"get_param": "NeutronExternalNetworkBridge"}, "glance_file_pcmk_manage": {"get_param": "GlanceFilePcmkManage"}, "swift_part_power": {"get_param": "SwiftPartPower"}, "neutron_dsn": {"list_join": ["", ["mysql://neutron:", {"get_param": "NeutronPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/ovs_neutron?charset=utf8"]]}, "cinder_nfs_servers": {"str_replace": {"params": {"SERVERS": {"list_join": ["\',\'", {"get_param": "CinderNfsServers"}]}}, "template": "[\'SERVERS\']"}}, "redis_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RedisNetwork"]}]}, "ceilometer_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CeilometerApiNetwork"]}]}, "nova_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaApiNetwork"]}]}, "heat.waitcondition_server_url": {"list_join": ["", ["http://", {"get_param": "HeatApiVirtualIP"}, ":8000/v1/waitcondition"]]}}, "config": {"get_resource": "ControllerConfig"}, "server": {"get_resource": "Controller"}}}, "ControllerConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "controller", "object", "swift_devices_and_proxy", "ceph_cluster", "ceph", "bootstrap_node", "all_nodes", "vip_data", "RedHat", "common", "cinder_netapp_data"], "datafiles": {"ceph": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/ceph.yaml"}, "mapped_data": {"ceph::profile::params::cluster_network": {"get_input": "ceph_cluster_network"}, "ceph::profile::params::public_network": {"get_input": "ceph_public_network"}, "ceph::mon::public_addr": {"get_input": "ceph_public_ip"}}}, "controller": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/controller.yaml"}, "mapped_data": {"nova::rabbit_port": {"get_input": "rabbit_client_port"}, "horizon::bind_address": {"get_input": "horizon_network"}, "horizon::secret_key": {"get_input": "horizon_secret"}, "neutron_tunnel_types": {"get_input": "neutron_tunnel_types"}, "heat::keystone::domain::auth_url": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":35357/v2.0"]]}, "neutron_dnsmasq_options": {"get_input": "neutron_dnsmasq_options"}, "cinder::api::identity_uri": {"get_input": "keystone_identity_uri"}, "keystone::database_connection": {"get_input": "keystone_dsn"}, "glance::registry::database_connection": {"get_input": "glance_dsn"}, "swift::storage::all::storage_local_net_ip": {"get_input": "swift_management_network"}, "glance::registry::identity_uri": {"get_input": "keystone_identity_uri"}, "enable_swift_storage": {"get_input": "enable_swift_storage"}, "glance::registry::keystone_password": {"get_input": "glance_password"}, "glance::registry::debug": {"get_input": "debug"}, "ceilometer::api::keystone_identity_uri": {"get_input": "keystone_identity_uri"}, "keystone_ssl_certificate": {"get_input": "keystone_ssl_certificate"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "apache::ip": {"get_input": "horizon_network"}, "neutron::debug": {"get_input": "debug"}, "ntp::servers": {"get_input": "ntp_servers"}, "cinder::debug": {"get_input": "debug"}, "enable_ceph_storage": {"get_input": "enable_ceph_storage"}, "heat::debug": {"get_input": "debug"}, "mongodb::server::bind_ip": {"get_input": "mongo_db_network"}, "tripleo::loadbalancer::public_virtual_interface": {"get_input": "public_virtual_interface"}, "neutron_public_interface_ip": {"get_input": "neutron_public_interface_ip"}, "cinder::rabbit_port": {"get_input": "rabbit_client_port"}, "nova::rabbit_userid": {"get_input": "rabbit_username"}, "keystone_signing_certificate": {"get_input": "keystone_signing_certificate"}, "glance::registry::auth_uri": {"get_input": "keystone_auth_uri"}, "neutron::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::plugins::ml2::tunnel_id_ranges": {"get_input": "neutron_tunnel_id_ranges"}, "heat::keystone::domain::keystone_password": {"get_input": "admin_password"}, "heat::auth_uri": {"get_input": "keystone_auth_uri"}, "ceilometer::metering_secret": {"get_input": "ceilometer_metering_secret"}, "ceilometer::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "cinder::glance::glance_api_servers": {"get_input": "glance_api_servers"}, "neutron::dhcp_agents_per_network": {"get_input": "neutron_dhcp_agents_per_network"}, "ceilometer::debug": {"get_input": "debug"}, "ceilometer::rabbit_password": {"get_input": "rabbit_password"}, "neutron_public_interface": {"get_input": "neutron_public_interface"}, "heat::engine::auth_encryption_key": {"get_input": "heat_auth_encryption_key"}, "glance::api::auth_uri": {"get_input": "keystone_auth_uri"}, "neutron::agents::metadata::metadata_ip": {"get_input": "neutron_api_network"}, "nova::api::api_bind_address": {"get_input": "nova_api_network"}, "tripleo::ringbuilder::build_ring": true, "glance::api::registry_host": {"get_input": "glance_registry_network"}, "tripleo::loadbalancer::control_virtual_interface": {"get_input": "control_virtual_interface"}, "glance::api::bind_host": {"get_input": "glance_api_network"}, "swift::proxy::authtoken::auth_uri": {"get_input": "keystone_auth_uri"}, "glance::api::keystone_password": {"get_input": "glance_password"}, "neutron::plugins::ml2::vni_ranges": {"get_input": "neutron_vni_ranges"}, "horizon::keystone_url": {"get_input": "keystone_auth_uri"}, "glance::backend::swift::swift_store_auth_address": {"get_input": "keystone_auth_address"}, "heat::keystone_ec2_uri": {"get_input": "keystone_ec2_uri"}, "ceilometer::api::host": {"get_input": "ceilometer_api_network"}, "neutron::server::database_connection": {"get_input": "neutron_dsn"}, "heat::api_cfn::bind_host": {"get_input": "heat_api_network"}, "neutron::bind_host": {"get_input": "neutron_api_network"}, "heat::api::bind_host": {"get_input": "heat_api_network"}, "keystone::admin_bind_host": {"get_input": "keystone_admin_api_network"}, "nova::rabbit_password": {"get_input": "rabbit_password"}, "neutron::server::auth_password": {"get_input": "neutron_password"}, "neutron::rabbit_user": {"get_input": "rabbit_user"}, "cinder_backend_config": {"get_input": "CinderBackendConfig"}, "cinder_iscsi_ip_address": {"get_input": "cinder_iscsi_network"}, "glance_file_pcmk_options": {"get_param": "GlanceFilePcmkOptions"}, "redis::bind": {"get_input": "redis_network"}, "nova::glance_api_servers": {"get_input": "glance_api_servers"}, "nova::debug": {"get_input": "debug"}, "swift::swift_hash_suffix": {"get_input": "swift_hash_suffix"}, "cinder::database_connection": {"get_input": "cinder_dsn"}, "heat::engine::heat_watch_server_url": {"get_input": "heat.watch_server_url"}, "ceilometer_mysql_conn_string": {"get_input": "ceilometer_dsn"}, "neutron::agents::l3::external_network_bridge": {"get_input": "neutron_external_network_bridge"}, "heat::keystone_password": {"get_input": "heat_password"}, "cinder::rabbit_password": {"get_input": "rabbit_password"}, "memcached::listen_ip": {"get_input": "memcached_network"}, "swift::proxy::authtoken::identity_uri": {"get_input": "keystone_identity_uri"}, "ceilometer::api::keystone_password": {"get_input": "ceilometer_password"}, "neutron_agent_mode": {"get_input": "neutron_agent_mode"}, "glance::backend::swift::swift_store_user": "service:glance", "heat::identity_uri": {"get_input": "keystone_identity_uri"}, "cinder_nfs_mount_options": {"get_input": "cinder_nfs_mount_options"}, "ceilometer_backend": {"get_input": "ceilometer_backend"}, "glance_file_pcmk_manage": {"get_param": "GlanceFilePcmkManage"}, "neutron_dsn": {"get_input": "neutron_dsn"}, "cinder_nfs_servers": {"get_input": "cinder_nfs_servers"}, "heat::rabbit_userid": {"get_input": "rabbit_username"}, "cinder::api::auth_uri": {"get_input": "keystone_auth_uri"}, "nova::api::identity_uri": {"get_input": "keystone_identity_uri"}, "cinder::api::keystone_password": {"get_input": "cinder_password"}, "heat_stack_domain_admin_password": {"get_input": "heat_stack_domain_admin_password"}, "cinder::api::bind_host": {"get_input": "cinder_api_network"}, "neutron_router_distributed": {"get_input": "neutron_router_distributed"}, "hacluster_pwd": {"get_input": "pcsd_password"}, "ceilometer::agent::auth::auth_password": {"get_input": "ceilometer_password"}, "redis_vip": {"get_input": "redis_vip"}, "neutron::agents::metadata::auth_password": {"get_input": "neutron_password"}, "neutron::plugins::ml2::network_vlan_ranges": {"get_input": "neutron_network_vlan_ranges"}, "neutron_bridge_mappings": {"get_input": "neutron_bridge_mappings"}, "rabbitmq::node_ip_address": {"get_input": "rabbitmq_network"}, "nova::api::metadata_listen": {"get_input": "nova_metadata_network"}, "keystone_ca_certificate": {"get_input": "keystone_ca_certificate"}, "glance::registry::bind_host": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceRegistryNetwork"]}]}, "rabbitmq::erlang_cookie": {"get_input": "rabbit_cookie"}, "neutron_public_interface_raw_device": {"get_input": "neutron_public_interface_raw_device"}, "heat::keystone::domain::domain_password": {"get_input": "heat_stack_domain_admin_password"}, "cinder_enable_rbd_backend": {"get_input": "cinder_enable_rbd_backend"}, "neutron::server::l3_ha": {"get_input": "neutron_l3_ha"}, "ceilometer::agent::central::coordination_url": {"get_input": "ceilometer_coordination_url"}, "glance_file_pcmk_fstype": {"get_param": "GlanceFilePcmkFstype"}, "glance_backend": {"get_input": "glance_backend"}, "glance_log_file": {"get_input": "glance_log_file"}, "heat::database_connection": {"get_input": "heat_dsn"}, "admin_password": {"get_input": "admin_password"}, "neutron_mechanism_drivers": {"get_input": "neutron_mechanism_drivers"}, "horizon::django_debug": {"get_input": "debug"}, "glance::backend::swift::swift_store_key": {"get_input": "glance_password"}, "heat::engine::heat_waitcondition_server_url": {"get_input": "heat.waitcondition_server_url"}, "nova::api::neutron_metadata_proxy_shared_secret": {"get_input": "neutron_metadata_proxy_shared_secret"}, "cinder_lvm_loop_device_size": {"get_input": "cinder_lvm_loop_device_size"}, "tripleo::ringbuilder::replicas": {"get_input": "swift_replicas"}, "nova::network::neutron::neutron_admin_password": {"get_input": "neutron_password"}, "nova::vncproxy::host": {"get_input": "nova_api_network"}, "mysql_bind_host": {"get_input": "mysql_network"}, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "keystone_signing_key": {"get_input": "keystone_signing_key"}, "glance_file_pcmk_device": {"get_param": "GlanceFilePcmkDevice"}, "heat::api_cloudwatch::bind_host": {"get_input": "heat_api_network"}, "public_virtual_interface": {"get_input": "public_virtual_interface"}, "neutron::server::allow_automatic_l3agent_failover": {"get_input": "neutron_allow_l3agent_failover"}, "neutron::agents::ml2::ovs::enable_tunneling": {"get_input": "neutron_enable_tunneling"}, "keystone::public_bind_host": {"get_input": "keystone_public_api_network"}, "nova::network::neutron::neutron_admin_auth_url": {"get_input": "neutron_admin_auth_url"}, "glance::api::bind_port": {"get_input": "glance_port"}, "nova::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "glance::api::debug": {"get_input": "debug"}, "swift::proxy::authtoken::admin_password": {"get_input": "swift_password"}, "tripleo::ringbuilder::min_part_hours": {"get_input": "swift_min_part_hours"}, "neutron::agents::metadata::shared_secret": {"get_input": "neutron_metadata_proxy_shared_secret"}, "neutron::server::identity_uri": {"get_input": "keystone_identity_uri"}, "swift_mount_check": {"get_input": "swift_mount_check"}, "mysql_cluster_name": {"get_input": "mysql_cluster_name"}, "nova::api::admin_password": {"get_input": "nova_password"}, "keystone::debug": {"get_input": "debug"}, "neutron::agents::metadata::auth_url": {"get_input": "keystone_identity_uri"}, "nova::database_connection": {"get_input": "nova_dsn"}, "tripleo::ringbuilder::part_power": {"get_input": "swift_part_power"}, "swift::proxy::proxy_local_net_ip": {"get_input": "swift_proxy_network"}, "ceilometer::rabbit_userid": {"get_input": "rabbit_username"}, "heat::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::agents::ml2::ovs::local_ip": {"get_input": "neutron_local_ip"}, "ceilometer::api::keystone_auth_uri": {"get_input": "keystone_auth_uri"}, "cinder::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "mysql::server::root_password": {"get_input": "mysql_root_password"}, "control_virtual_interface": {"get_input": "control_virtual_interface"}, "cinder_iscsi_helper": {"get_input": "cinder_iscsi_helper"}, "heat::rabbit_port": {"get_input": "rabbit_client_port"}, "neutron_flat_networks": {"get_input": "neutron_flat_networks"}, "ceilometer::rabbit_port": {"get_input": "rabbit_client_port"}, "heat::engine::heat_metadata_server_url": {"get_input": "heat.metadata_server_url"}, "enable_galera": {"get_input": "enable_galera"}, "nova::network::neutron::neutron_url": {"get_input": "neutron_url"}, "mysql_max_connections": {"get_input": "mysql_max_connections"}, "keystone_ssl_certificate_key": {"get_input": "keystone_ssl_certificate_key"}, "keystone::roles::admin::password": {"get_input": "admin_password"}, "glance::api::database_connection": {"get_input": "glance_dsn"}, "neutron::rabbit_port": {"get_input": "rabbit_client_port"}, "bootstack_nodeid": {"get_input": "bootstack_nodeid"}, "nova::api::auth_uri": {"get_input": "keystone_auth_uri"}, "mysql_innodb_buffer_pool_size": {"get_input": "mysql_innodb_buffer_pool_size"}, "cinder_enable_iscsi_backend": {"get_input": "cinder_enable_iscsi_backend"}, "glance::api::identity_uri": {"get_input": "keystone_identity_uri"}, "neutron::server::auth_uri": {"get_input": "keystone_auth_uri"}, "neutron_public_interface_default_route": {"get_input": "neutron_public_interface_default_route"}, "glance_notifier_strategy": {"get_input": "glance_notifier_strategy"}, "cinder::rabbit_userid": {"get_input": "rabbit_username"}, "heat::rabbit_password": {"get_input": "rabbit_password"}, "cinder_enable_nfs_backend": {"get_input": "cinder_enable_nfs_backend"}, "enable_package_install": {"get_input": "enable_package_install"}, "neutron_tenant_network_type": {"get_input": "neutron_tenant_network_type"}, "neutron::rabbit_password": {"get_input": "rabbit_password"}, "keystone::admin_token": {"get_input": "admin_token"}, "neutron_public_interface_tag": {"get_input": "neutron_public_interface_tag"}, "ceilometer::agent::auth::auth_url": {"get_input": "keystone_auth_address"}}}, "object": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/object.yaml"}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/common.yaml"}}}}}, "group": "os-apply-config"}}, "InternalApiPort": {"type": "OS::TripleO::Controller::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "NetIpSubnetMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"ExternalIp": {"get_attr": ["ExternalPort", "ip_subnet"]}, "StorageIp": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "TenantIp": {"get_attr": ["TenantPort", "ip_subnet"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "Controller"}}}, "StoragePort": {"type": "OS::TripleO::Controller::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"interface_name": {"get_param": "NeutronPublicInterface"}, "bridge_name": "br-ex"}, "config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "Controller"}}}, "Controller": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "image_update_policy": {"get_param": "ImageUpdatePolicy"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"ExternalIp": {"get_attr": ["ExternalPort", "ip_address"]}, "StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "TenantIp": {"get_attr": ["TenantPort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}}}', u'file:///tmp/tmpVtTjeI/puppet/manifests/ringbuilder.pp': '# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the "License"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif str2bool(hiera(\'disable_package_install\', \'false\')) {\n case $::osfamily {\n \'RedHat\': {\n Package { provider => \'norpm\' } # provided by tripleo-puppet\n }\n default: {\n warning(\'disable_package_install option not supported.\')\n }\n }\n}\n\ndefine add_devices(\n $swift_zones = \'1\'\n){\n\n # NOTE(dprince): Swift zones is not yet properly wired into the Heat\n # templates. See: https://review.openstack.org/#/c/97758/3\n # For now our regex supports the r1z1-192.0.2.6:%PORT%/d1 syntax or the\n # newer r1z%<controller or SwiftStorage><N>%-192.0.2.6:%PORT%/d1 syntax.\n $server_num_or_device = regsubst($name,\'^r1z%+[A-Za-z]*([0-9]+)%+-(.*)$\',\'\\1\')\n if (is_integer($server_num_or_device)) {\n $server_num = $server_num_or_device\n } else {\n $server_num = \'1\'\n }\n # Function to place server in its zone. Zone is calculated by\n # server number in heat template modulo the number of zones + 1.\n $zone = (($server_num%$swift_zones) + 1)\n\n # add the rings\n $base = regsubst($name,\'^r1.*-(.*)$\',\'\\1\')\n $object = regsubst($base, \'%PORT%\', \'6000\')\n ring_object_device { $object:\n zone => \'1\',\n weight => 100,\n }\n $container = regsubst($base, \'%PORT%\', \'6001\')\n ring_container_device { $container:\n zone => \'1\',\n weight => 100,\n }\n $account = regsubst($base, \'%PORT%\', \'6002\')\n ring_account_device { $account:\n zone => \'1\',\n weight => 100,\n }\n}\n\nclass tripleo::ringbuilder (\n $swift_zones = \'1\',\n $devices = \'\',\n $build_ring = \'True\',\n $part_power,\n $replicas,\n $min_part_hours,\n) {\n\n if str2bool(downcase("$build_ring")) {\n\n $device_array = strip(split(rstrip($devices), \',\'))\n\n # create local rings\n swift::ringbuilder::create{ [\'object\', \'account\', \'container\']:\n part_power => $part_power,\n replicas => $replicas,\n min_part_hours => $min_part_hours,\n } ->\n\n # add all other devices\n add_devices {$device_array:\n swift_zones => $swift_zones\n } ->\n\n # rebalance\n swift::ringbuilder::rebalance{ [\'object\', \'account\', \'container\']:\n seed => 999,\n }\n\n Ring_object_device<| |> ~> Exec[\'rebalance_object\']\n Ring_object_device<| |> ~> Exec[\'rebalance_account\']\n Ring_object_device<| |> ~> Exec[\'rebalance_container\']\n\n }\n}\n\ninclude ::tripleo::ringbuilder\n', u'file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_volume.pp': '# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the "License"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif str2bool(hiera(\'disable_package_install\', \'false\')) {\n case $::osfamily {\n \'RedHat\': {\n Package { provider => \'norpm\' } # provided by tripleo-puppet\n }\n default: {\n warning(\'disable_package_install option not supported.\')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera(\'sysctl_settings\'), {})\n\nif count(hiera(\'ntp::servers\')) > 0 {\n include ::ntp\n}\n\ninclude ::cinder\ninclude ::cinder::config\ninclude ::cinder::glance\ninclude ::cinder::volume\ninclude ::cinder::setup_test_volume\n\n$cinder_enable_iscsi = hiera(\'cinder_enable_iscsi_backend\', true)\nif $cinder_enable_iscsi {\n $cinder_iscsi_backend = \'tripleo_iscsi\'\n\n cinder::backend::iscsi { $cinder_iscsi_backend :\n iscsi_ip_address => hiera(\'cinder_iscsi_ip_address\'),\n iscsi_helper => hiera(\'cinder_iscsi_helper\'),\n }\n}\n\n$cinder_enabled_backends = any2array($cinder_iscsi_backend)\nclass { \'::cinder::backends\' :\n enabled_backends => $cinder_enabled_backends,\n}\n\n$snmpd_user = hiera(\'snmpd_readonly_user_name\')\nsnmp::snmpv3_user { $snmpd_user:\n authtype => \'MD5\',\n authpass => hiera(\'snmpd_readonly_user_password\'),\n}\nclass { \'snmp\':\n agentaddress => [\'udp:161\',\'udp6:[::1]:161\'],\n snmpd_config => [ join([\'rouser \', hiera(\'snmpd_readonly_user_name\')]), \'proc cron\', \'includeAllDisks 10%\', \'master agentx\', \'trapsink localhost public\', \'iquerySecName internalUser\', \'rouser internalUser\', \'defaultMonitors yes\', \'linkUpDownNotifications yes\' ],\n}\n', u'file:///tmp/tmpVtTjeI/network/networks.yaml': '{"heat_template_version": "2015-04-30", "description": "Create networks to split out Overcloud traffic", "resources": {"StorageMgmtNetwork": {"type": "OS::TripleO::Network::StorageMgmt"}, "ExternalNetwork": {"type": "OS::TripleO::Network::External"}, "InternalNetwork": {"type": "OS::TripleO::Network::InternalApi"}, "StorageNetwork": {"type": "OS::TripleO::Network::Storage"}, "TenantNetwork": {"type": "OS::TripleO::Network::Tenant"}}}', u'file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_object.pp': '# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the "License"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif !str2bool(hiera(\'enable_package_install\', \'false\')) {\n case $::osfamily {\n \'RedHat\': {\n Package { provider => \'norpm\' } # provided by tripleo-puppet\n }\n default: {\n warning(\'enable_package_install option not supported.\')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera(\'sysctl_settings\'), {})\n\nif count(hiera(\'ntp::servers\')) > 0 {\n include ::ntp\n}\n\ninclude ::swift\nclass {\'swift::storage::all\':\n mount_check => str2bool(hiera(\'swift_mount_check\'))\n}\nif(!defined(File[\'/srv/node\'])) {\n file { \'/srv/node\':\n ensure => directory,\n owner => \'swift\',\n group => \'swift\',\n require => Package[\'openstack-swift\'],\n }\n}\n\n$swift_components = [\'account\', \'container\', \'object\']\nswift::storage::filter::recon { $swift_components : }\nswift::storage::filter::healthcheck { $swift_components : }\n\n$snmpd_user = hiera(\'snmpd_readonly_user_name\')\nsnmp::snmpv3_user { $snmpd_user:\n authtype => \'MD5\',\n authpass => hiera(\'snmpd_readonly_user_password\'),\n}\nclass { \'snmp\':\n agentaddress => [\'udp:161\',\'udp6:[::1]:161\'],\n snmpd_config => [ join([\'rouser \', hiera(\'snmpd_readonly_user_name\')]), \'proc cron\', \'includeAllDisks 10%\', \'master agentx\', \'trapsink localhost public\', \'iquerySecName internalUser\', \'rouser internalUser\', \'defaultMonitors yes\', \'linkUpDownNotifications yes\' ],\n}\n', u'file:///tmp/tmpVtTjeI/net-config-noop.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to no-op for os-net-config. Using this will allow you to use the parameter driven (init-neutron-ovs) configuration instead.\\n", "parameters": {"StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": null}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the external network IP", "value": {"list_join": ["", [{"get_attr": ["ExternalPort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["ExternalPort", "subnets", 0, "cidr", -2]}, {"get_attr": ["ExternalPort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "external network IP", "value": {"get_attr": ["ExternalPort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port on the external network.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "ExternalNetName": {"default": "external", "type": "string", "description": "Name of the external neutron network"}}, "resources": {"ExternalPort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "ExternalNetName"}, "name": {"get_param": "PortName"}}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the storage network IP", "value": {"list_join": ["", [{"get_attr": ["StoragePort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["StoragePort", "subnets", 0, "cidr", -2]}, {"get_attr": ["StoragePort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "storage network IP", "value": {"get_attr": ["StoragePort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port on the storage network.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "StorageNetName": {"default": "storage", "type": "string", "description": "Name of the storage neutron network"}}, "resources": {"StoragePort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "StorageNetName"}, "name": {"get_param": "PortName"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/swift-storage-post.yaml': '{"heat_template_version": "2015-04-30", "description": "OpenStack swift storage node post deployment for Puppet", "parameters": {"servers": {"type": "json"}, "NodeConfigIdentifiers": {"type": "json", "description": "Value which changes if the node configuration may need to be re-applied"}}, "resources": {"StoragePuppetConfig": {"type": "OS::Heat::SoftwareConfig", "properties": {"outputs": [{"name": "result"}], "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_object.pp"}, "group": "puppet"}}, "StorageRingbuilderPuppetConfig": {"type": "OS::Heat::SoftwareConfig", "properties": {"outputs": [{"name": "result"}], "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/ringbuilder.pp"}, "group": "puppet"}}, "StorageDeployment_Step1": {"type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "StoragePuppetConfig"}, "servers": {"get_param": "servers"}}}, "StorageRingbuilderDeployment_Step2": {"depends_on": "StorageDeployment_Step1", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "StorageRingbuilderPuppetConfig"}, "servers": {"get_param": "servers"}}}, "ExtraConfig": {"depends_on": "StorageRingbuilderDeployment_Step2", "type": "OS::TripleO::NodeExtraConfigPost", "properties": {"servers": {"get_param": "servers"}}}}}', u'file:///tmp/tmpVtTjeI/provider-Compute-1.yaml': '{"outputs": {"hostname": {"description": "Hostname of the server", "value": {"get_attr": ["NovaCompute", "name"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["NovaComputeDeployment", "deploy_stdout"]}}, "nova_server_resource": {"description": "Heat resource handle for the Nova compute server", "value": {"get_resource": "NovaCompute"}}, "tenant_ip_address": {"description": "IP address of the server in the tenant network", "value": {"get_attr": ["TenantPort", "ip_address"]}}, "hosts_entry": {"description": "Server\'s IP address and hostname in the /etc/hosts format\\n", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "ComputeHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["NovaCompute", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "ip_address": {"description": "IP address of the server in the ctlplane network", "value": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "heat_template_version": "2015-04-30", "description": "OpenStack hypervisor node configured via Puppet.\\n", "parameters": {"NeutronPublicInterfaceRawDevice": {"default": "", "type": "string"}, "NeutronNetworkVLANRanges": {"default": "datacentre", "type": "comma_delimited_list", "description": "The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the \'datacentre\' physical network (See NeutronBridgeMappings).\\n"}, "NovaComputeDriver": {"default": "libvirt.LibvirtDriver", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "NeutronPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the neutron service account, used by neutron agents."}, "NeutronBridgeMappings": {"default": "datacentre:br-ex", "type": "string", "description": "The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name \'datacentre\' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep \'datacentre\' as a mapping network name.\\n"}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "NovaEnableRbdBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the Rbd backend for Nova"}, "GlanceHost": {"default": "", "type": "string"}, "NeutronTunnelTypes": {"default": "gre", "type": "string", "description": "The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'gre,vxlan\'\\n"}, "NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n"}, "NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n"}, "Flavor": {"type": "string", "description": "Flavor for the nova compute node", "constraints": [{"custom_constraint": "nova.flavor"}]}, "NeutronAgentMode": {"default": "dvr_snat", "type": "string", "description": "Agent mode for the neutron-l3-agent on the controller hosts"}, "NovaApiHost": {"default": "", "type": "string"}, "RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "NovaComputeExtraConfig": {"default": {}, "type": "json", "description": "NovaCompute specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "NovaPublicIP": {"default": "", "type": "string"}, "NeutronNetworkType": {"default": "gre", "type": "string", "description": "The tenant network type for Neutron, either gre or vxlan."}, "CeilometerPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the ceilometer service account."}, "NtpServer": {"default": "", "type": "string"}, "CinderEnableNfsBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the NFS backend for Cinder"}, "KeystoneHost": {"default": "", "type": "string"}, "NeutronMechanismDrivers": {"default": "openvswitch", "type": "string", "description": "The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'openvswitch,l2_population\'\\n"}, "RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n"}, "NeutronAllowL3AgentFailover": {"default": "True", "type": "string", "description": "Allow automatic l3-agent failover"}, "RabbitPassword": {"default": "guest", "hidden": true, "type": "string", "description": "The password for RabbitMQ"}, "ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "RabbitUserName": {"default": "guest", "type": "string", "description": "The username for RabbitMQ"}, "Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "NeutronPublicInterface": {"default": "nic1", "type": "string", "description": "A port to add to the NeutronPhysicalBridge."}, "NovaPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the nova service account, used by nova-api."}, "GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "NeutronDVR": {"default": "False", "type": "string"}, "NeutronL3HA": {"default": "False", "type": "string", "description": "Whether to enable l3-agent HA"}, "NovaComputeLibvirtType": {"default": "", "type": "string"}, "AdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the keystone admin account, used for monitoring, querying neutron etc."}, "NeutronPhysicalBridge": {"default": "br-ex", "type": "string", "description": "An OVS bridge to create for accessing external networks."}, "CeilometerComputeAgent": {"default": "", "type": "string", "description": "Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly", "constraints": [{"allowed_values": ["", "Present"]}]}, "Image": {"default": "overcloud-compute", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\"FILEKEY\\":\\n {\\"config\\":\\n [{\\"section\\": \\"SECTIONNAME\\",\\n \\"values\\":\\n [{\\"option\\": \\"OPTIONNAME\\",\\n \\"value\\": \\"VALUENAME\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\"nova\\":\\n {\\"config\\":\\n [{\\"section\\": \\"default\\",\\n \\"values\\":\\n [{\\"option\\": \\"force_config_drive\\",\\n \\"value\\": \\"always\\"\\n }\\n ]\\n },\\n {\\"section\\": \\"cells\\",\\n \\"values\\":\\n [{\\"option\\": \\"driver\\",\\n \\"value\\": \\"nova.cells.rpc_driver.CellsRPCDriver\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n"}, "RabbitHost": {"default": "", "type": "string"}, "NeutronFlatNetworks": {"default": "datacentre", "type": "string", "description": "If set, flat networks to configure in neutron plugins.\\n"}, "CeilometerMeteringSecret": {"default": "unset", "hidden": true, "type": "string", "description": "Secret shared by the ceilometer services."}, "NeutronMetadataProxySharedSecret": {"default": "unset", "type": "string", "description": "Shared secret to prevent spoofing"}, "NeutronEnableTunnelling": {"default": "True", "type": "string"}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "NeutronHost": {"default": "", "type": "string"}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "NovaCompute": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "image_update_policy": {"get_param": "ImageUpdatePolicy"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "TenantPort": {"type": "OS::TripleO::Compute::Ports::TenantPort", "properties": {"ControlPlaneIP": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "NetworkConfig": {"type": "OS::TripleO::Compute::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "TenantIpSubnet": {"get_attr": ["TenantPort", "ip_subnet"]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"interface_name": {"get_param": "NeutronPublicInterface"}, "bridge_name": {"get_param": "NeutronPhysicalBridge"}}, "config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "NovaCompute"}}}, "StoragePort": {"type": "OS::TripleO::Compute::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "NovaComputeDeployment": {"depends_on": "NetworkDeployment", "type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"neutron_host": {"get_param": "NeutronHost"}, "neutron_router_distributed": {"get_param": "NeutronDVR"}, "nova_compute_libvirt_type": {"get_param": "NovaComputeLibvirtType"}, "nova_compute_driver": {"get_param": "NovaComputeDriver"}, "neutron_flat_networks": {"get_param": "NeutronFlatNetworks"}, "glance_api_servers": {"list_join": ["", [{"get_param": "GlanceProtocol"}, "://", {"get_param": "GlanceHost"}, ":", {"get_param": "GlancePort"}]]}, "rabbit_password": {"get_param": "RabbitPassword"}, "neutron_bridge_mappings": {"get_param": "NeutronBridgeMappings"}, "neutron_tunnel_types": {"get_param": "NeutronTunnelTypes"}, "neutron_public_interface_raw_device": {"get_param": "NeutronPublicInterfaceRawDevice"}, "neutron_password": {"get_param": "NeutronPassword"}, "ceilometer_agent_auth_url": {"list_join": ["", ["http://", {"get_param": "KeystoneHost"}, ":5000/v2.0"]]}, "rabbit_client_use_ssl": {"get_param": "RabbitClientUseSSL"}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "nova_public_ip": {"get_param": "NovaPublicIP"}, "neutron_local_ip": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronTenantNetwork"]}]}, "admin_password": {"get_param": "AdminPassword"}, "neutron_mechanism_drivers": {"get_param": "NeutronMechanismDrivers"}, "nova_vnc_proxyclient_address": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaVncProxyNetwork"]}]}, "nova_password": {"get_param": "NovaPassword"}, "neutron_url": {"list_join": ["", ["http://", {"get_param": "NeutronHost"}, ":9696"]]}, "neutron_physical_bridge": {"get_param": "NeutronPhysicalBridge"}, "nova_enable_rbd_backend": {"get_param": "NovaEnableRbdBackend"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "neutron_metadata_proxy_shared_secret": {"get_param": "NeutronMetadataProxySharedSecret"}, "neutron_admin_auth_url": {"list_join": ["", ["http://", {"get_param": "NeutronHost"}, ":35357/v2.0"]]}, "nova_api_host": {"get_param": "NovaApiHost"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "ceilometer_password": {"get_param": "CeilometerPassword"}, "neutron_tenant_network_type": {"get_param": "NeutronNetworkType"}, "neutron_network_vlan_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronNetworkVLANRanges"}]}}, "template": "[\'RANGES\']"}}, "neutron_vni_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronVniRanges"}]}}, "template": "[\'RANGES\']"}}, "neutron_agent_mode": {"get_param": "NeutronAgentMode"}, "neutron_public_interface": {"get_param": "NeutronPublicInterface"}, "ceilometer_metering_secret": {"get_param": "CeilometerMeteringSecret"}, "neutron_tunnel_id_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronTunnelIdRanges"}]}}, "template": "[\'RANGES\']"}}, "cinder_enable_nfs_backend": {"get_param": "CinderEnableNfsBackend"}, "ceilometer_compute_agent": {"get_param": "CeilometerComputeAgent"}, "rabbit_username": {"get_param": "RabbitUserName"}, "enable_package_install": {"get_param": "EnablePackageInstall"}, "neutron_enable_tunneling": {"get_param": "NeutronEnableTunnelling"}, "debug": {"get_param": "Debug"}, "rabbit_client_port": {"get_param": "RabbitClientPort"}}, "config": {"get_resource": "NovaComputeConfig"}, "server": {"get_resource": "NovaCompute"}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "InternalApiPort": {"type": "OS::TripleO::Compute::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["NovaCompute", "networks", "ctlplane", 0]}}}, "NovaComputeConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "compute", "ceph_cluster", "ceph", "all_nodes", "RedHat", "common"], "datafiles": {"ceph": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/ceph.yaml"}}, "compute": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/compute.yaml"}, "mapped_data": {"nova::rabbit_port": {"get_input": "rabbit_client_port"}, "neutron_host": {"get_input": "neutron_host"}, "neutron_router_distributed": {"get_input": "neutron_router_distributed"}, "neutron::debug": {"get_input": "debug"}, "neutron::plugins::ml2::vni_ranges": {"get_input": "neutron_vni_ranges"}, "ceilometer::agent::auth::auth_password": {"get_input": "ceilometer_password"}, "nova::rabbit_userid": {"get_input": "rabbit_username"}, "nova::compute::vncproxy_host": {"get_input": "nova_public_ip"}, "neutron::plugins::ml2::network_vlan_ranges": {"get_input": "neutron_network_vlan_ranges"}, "neutron_bridge_mappings": {"get_input": "neutron_bridge_mappings"}, "ceilometer::rabbit_userid": {"get_input": "rabbit_username"}, "neutron_tunnel_types": {"get_input": "neutron_tunnel_types"}, "neutron::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron_public_interface_raw_device": {"get_input": "neutron_public_interface_raw_device"}, "nova::network::neutron::neutron_admin_auth_url": {"get_input": "neutron_admin_auth_url"}, "neutron::agents::ml2::ovs::local_ip": {"get_input": "neutron_local_ip"}, "neutron_flat_networks": {"get_input": "neutron_flat_networks"}, "ceilometer::rabbit_port": {"get_input": "rabbit_client_port"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "neutron::rabbit_user": {"get_input": "rabbit_user"}, "neutron_mechanism_drivers": {"get_input": "neutron_mechanism_drivers"}, "ntp::servers": {"get_input": "ntp_servers"}, "nova_password": {"get_input": "nova_password"}, "nova_compute_driver": {"get_input": "nova_compute_driver"}, "nova::network::neutron::neutron_url": {"get_input": "neutron_url"}, "nova::compute::libvirt::libvirt_virt_type": {"get_input": "nova_compute_libvirt_type"}, "nova_enable_rbd_backend": {"get_input": "nova_enable_rbd_backend"}, "neutron_metadata_proxy_shared_secret": {"get_input": "neutron_metadata_proxy_shared_secret"}, "nova::glance_api_servers": {"get_input": "glance_api_servers"}, "nova::debug": {"get_input": "debug"}, "neutron_physical_bridge": {"get_input": "neutron_physical_bridge"}, "nova_api_host": {"get_input": "nova_api_host"}, "nova::network::neutron::neutron_admin_password": {"get_input": "neutron_password"}, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "neutron::plugins::ml2::tunnel_id_ranges": {"get_input": "neutron_tunnel_id_ranges"}, "neutron_tenant_network_type": {"get_input": "neutron_tenant_network_type"}, "neutron::agents::ml2::ovs::enable_tunneling": {"get_input": "neutron_enable_tunneling"}, "ceilometer::metering_secret": {"get_input": "ceilometer_metering_secret"}, "ceilometer::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron_agent_mode": {"get_input": "neutron_agent_mode"}, "ceilometer::debug": {"get_input": "debug"}, "ceilometer::rabbit_password": {"get_input": "rabbit_password"}, "admin_password": {"get_input": "admin_password"}, "neutron_public_interface": {"get_input": "neutron_public_interface"}, "nova::compute::vncserver_proxyclient_address": {"get_input": "nova_vnc_proxyclient_address"}, "cinder_enable_nfs_backend": {"get_input": "cinder_enable_nfs_backend"}, "neutron::rabbit_port": {"get_input": "rabbit_client_port"}, "ceilometer_compute_agent": {"get_input": "ceilometer_compute_agent"}, "nova::rabbit_password": {"get_input": "rabbit_password"}, "nova::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::rabbit_password": {"get_input": "rabbit_password"}, "enable_package_install": {"get_input": "enable_package_install"}, "ceilometer::agent::auth::auth_url": {"get_input": "ceilometer_agent_auth_url"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/common.yaml"}}}}}, "group": "os-apply-config"}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "TenantIp": {"get_attr": ["TenantPort", "ip_address"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "NovaCompute"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/swift-storage-puppet.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hosts_entry": {"value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "ObjectStorageHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["SwiftStorage", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["SwiftStorageHieraDeploy", "deploy_stdout"]}}, "nova_server_resource": {"description": "Heat resource handle for the swift storage server", "value": {"get_resource": "SwiftStorage"}}, "swift_device": {"description": "Swift device formatted for swift-ring-builder", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}}, "template": "r1z1-IP:%PORT%/d1"}}}}, "heat_template_version": "2015-04-30", "description": "OpenStack swift storage node configured by Puppet", "parameters": {"PartPower": {"default": 10, "type": "number", "description": "Partition Power to use when building Swift rings"}, "Replicas": {"default": 3, "type": "number", "description": "How many replicas to use in the swift rings."}, "HashSuffix": {"default": "unset", "hidden": true, "type": "string", "description": "A random string to be used as a salt when hashing to determine mappings in the ring."}, "Image": {"default": "overcloud-swift-storage", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "MinPartHours": {"default": 1, "type": "number", "description": "The minimum time (in hours) before a partition in a ring can be moved following a rebalance."}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "Flavor": {"type": "string", "description": "Flavor for Swift storage nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "NtpServer": {"default": "", "type": "string"}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}, "MountCheck": {"default": "false", "type": "boolean", "description": "Value of mount_check in Swift account/container/object -server.conf"}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "SwiftStorageHieraConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "object", "swift_devices_and_proxy", "all_nodes", "RedHat", "common"], "datafiles": {"object": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/object.yaml"}, "mapped_data": {"swift::storage::all::storage_local_net_ip": {"get_input": "swift_management_network"}, "swift_mount_check": {"get_input": "swift_mount_check"}, "swift::swift_hash_suffix": {"get_input": "swift_hash_suffix"}, "tripleo::ringbuilder::part_power": {"get_input": "swift_part_power"}, "tripleo::ringbuilder::min_part_hours": {"get_input": "swift_min_part_hours"}, "tripleo::ringbuilder::build_ring": true, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "tripleo::ringbuilder::replicas": {"get_input": "swift_replicas"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "ntp::servers": {"get_input": "ntp_servers"}, "enable_package_install": {"get_input": "enable_package_install"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml"}}}}}}}, "StoragePort": {"type": "OS::TripleO::SwiftStorage::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}}}, "StorageMgmtPort": {"type": "OS::TripleO::SwiftStorage::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}}}, "NetworkConfig": {"type": "OS::TripleO::ObjectStorage::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "InternalApiPort": {"type": "OS::TripleO::SwiftStorage::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}}}, "SwiftStorage": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "SwiftStorage"}}}, "SwiftStorageHieraDeploy": {"depends_on": "NetworkDeployment", "type": "OS::Heat::StructuredDeployment", "properties": {"input_values": {"swift_management_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}, "swift_min_part_hours": {"get_param": "MinPartHours"}, "swift_mount_check": {"get_param": "MountCheck"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "local_ip": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "swift_part_power": {"get_param": "PartPower"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "swift_hash_suffix": {"get_param": "HashSuffix"}, "swift_replicas": {"get_param": "Replicas"}, "enable_package_install": {"get_param": "EnablePackageInstall"}}, "config": {"get_resource": "SwiftStorageHieraConfig"}, "server": {"get_resource": "SwiftStorage"}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "SwiftStorage"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/ceph-cluster-config.yaml': '{"outputs": {"config_id": {"description": "The ID of the CephClusterConfigImpl resource.", "value": {"get_resource": "CephClusterConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Ceph Cluster config data for Puppet", "parameters": {"ceph_mon_names": {"type": "comma_delimited_list"}, "ceph_mon_ips": {"type": "comma_delimited_list"}, "ceph_admin_key": {"default": "", "type": "string"}, "ceph_mon_key": {"default": "", "type": "string"}, "ceph_fsid": {"default": "", "type": "string"}}, "resources": {"CephClusterConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"datafiles": {"ceph_cluster": {"mapped_data": {"ceph::profile::params::fsid": {"get_param": "ceph_fsid"}, "ceph::profile::params::client_keys": {"str_replace": {"params": {"ADMIN_KEY": {"get_param": "ceph_admin_key"}}, "template": "{ client.admin: { secret: \'ADMIN_KEY\', mode: \'0600\', cap_mon: \'allow *\', cap_osd: \'allow *\', cap_mds: \'allow *\' }, client.bootstrap-osd: { secret: \'ADMIN_KEY\', keyring_path: \'/var/lib/ceph/bootstrap-osd/ceph.keyring\', cap_mon: \'allow profile bootstrap-osd\' }, client.openstack: { secret: \'ADMIN_KEY\', mode: \'0644\', cap_mon: \'allow r\', cap_osd: \'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images\' } }"}}, "ceph::profile::params::mon_host": {"list_join": [",", {"get_param": "ceph_mon_ips"}]}, "ceph_mon_initial_members": {"list_join": [",", {"get_param": "ceph_mon_names"}]}, "ceph::profile::params::mon_key": {"get_param": "ceph_mon_key"}}}}}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/vip-config.yaml': '{"outputs": {"OS::stack_id": {"description": "The VipConfigImpl resource.", "value": {"get_resource": "VipConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Configure hieradata for service -> virtual IP mappings.\\n", "resources": {"VipConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"datafiles": {"vip_data": {"mapped_data": {"nova_metadata_vip": {"get_input": "nova_metadata_vip"}, "redis_vip": {"get_input": "redis_vip"}, "tripleo::loadbalancer::internal_api_virtual_ip": {"get_input": "internal_api_virtual_ip"}, "tripleo::redis_notification::haproxy_monitor_ip": {"get_input": "control_virtual_ip"}, "mysql_vip": {"get_input": "mysql_vip"}, "heat_api_vip": {"get_input": "heat_api_vip"}, "keystone_public_api_vip": {"get_input": "keystone_public_api_vip"}, "nova_api_vip": {"get_input": "nova_api_vip"}, "tripleo::loadbalancer::storage_mgmt_virtual_ip": {"get_input": "storage_mgmt_virtual_ip"}, "neutron_api_vip": {"get_input": "neutron_api_vip"}, "tripleo::loadbalancer::storage_virtual_ip": {"get_input": "storage_virtual_ip"}, "horizon_vip": {"get_input": "horizon_vip"}, "keystone_admin_api_vip": {"get_input": "keystone_admin_api_vip"}, "cinder_api_vip": {"get_input": "cinder_api_vip"}, "swift_proxy_vip": {"get_input": "swift_proxy_vip"}, "tripleo::loadbalancer::controller_virtual_ip": {"get_input": "control_virtual_ip"}, "ceilometer_api_vip": {"get_input": "ceilometer_api_vip"}, "tripleo::loadbalancer::public_virtual_ip": {"get_input": "public_virtual_ip"}, "glance_api_vip": {"get_input": "glance_api_vip"}, "glance_registry_vip": {"get_input": "glance_registry_vip"}}}}}}}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the internal API network IP", "value": {"list_join": ["", [{"get_attr": ["InternalApiPort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["InternalApiPort", "subnets", 0, "cidr", -2]}, {"get_attr": ["InternalApiPort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "internal API network IP", "value": {"get_attr": ["InternalApiPort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port on the internal_api network.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "InternalApiNetName": {"default": "internal_api", "type": "string", "description": "Name of the internal API neutron network"}}, "resources": {"InternalApiPort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "InternalApiNetName"}, "name": {"get_param": "PortName"}}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/tenant.yaml': '{"outputs": {"OS::stack_id": {"description": "Neutron tenant network", "value": {"get_resource": "TenantNetwork"}}}, "heat_template_version": "2015-04-30", "description": "Tenant network.\\n", "parameters": {"TenantNetShared": {"default": false, "type": "boolean", "description": "Whether this network is shared across all tenants."}, "TenantNetName": {"default": "tenant", "type": "string", "description": "The name of the tenant network."}, "TenantSubnetName": {"default": "tenant_subnet", "type": "string", "description": "The name of the tenant subnet in Neutron."}, "TenantNetCidr": {"default": "172.16.0.0/24", "type": "string", "description": "Cidr for the tenant network."}, "TenantNetAdminStateUp": {"default": false, "type": "boolean", "description": "This admin state of of the network."}, "TenantNetEnableDHCP": {"default": false, "type": "boolean", "description": "Whether to enable DHCP on the associated subnet."}, "TenantNetValueSpecs": {"default": {"provider:physical_network": "tenant", "provider:network_type": "flat"}, "type": "string", "description": "Value specs for the tenant network."}, "TenantAllocationPools": {"default": [{"start": "172.16.0.4", "end": "172.16.0.250"}], "type": "json", "description": "Ip allocation pool range for the tenant network."}}, "resources": {"TenantSubnet": {"type": "OS::Neutron::Subnet", "properties": {"network": {"get_resource": "TenantNetwork"}, "allocation_pools": {"get_param": "TenantAllocationPools"}, "cidr": {"get_param": "TenantNetCidr"}, "enable_dhcp": {"get_param": "TenantNetEnableDHCP"}, "name": {"get_param": "TenantSubnetName"}}}, "TenantNetwork": {"type": "OS::Neutron::Net", "properties": {"shared": {"get_param": "TenantNetShared"}, "admin_state_up": {"get_param": "TenantNetAdminStateUp"}, "value_specs": {"get_param": "TenantNetValueSpecs"}, "name": {"get_param": "TenantNetName"}}}}}', u'file:///tmp/tmpVtTjeI/extraconfig/post_deploy/default.yaml': '{"heat_template_version": "2014-10-16", "description": "Extra Post Deployment Config", "parameters": {"servers": {"type": "json"}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the tenant network IP", "value": {"list_join": ["", [{"get_attr": ["TenantPort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["TenantPort", "subnets", 0, "cidr", -2]}, {"get_attr": ["TenantPort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "tenant network IP", "value": {"get_attr": ["TenantPort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port on the tenant network.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "TenantNetName": {"default": "tenant", "type": "string", "description": "Name of the tenant neutron network"}}, "resources": {"TenantPort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "TenantNetName"}, "name": {"get_param": "PortName"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/hieradata/controller.yaml': '# Hiera data here applies to all controller nodes\nkeystone::roles::admin::email: \'root@localhost\'\nkeystone::roles::admin::admin_tenant: \'admin\'\n\nnova::api::enabled: true\nnova::conductor::enabled: true\nnova::consoleauth::enabled: true\nnova::vncproxy::enabled: true\nnova::scheduler::enabled: true\n\n# rabbitmq\nrabbitmq::delete_guest_user: false\nrabbitmq::wipe_db_on_cookie_change: true\nrabbitmq::port: \'5672\'\nrabbitmq::package_source: undef\nrabbitmq::repos_ensure: false\nrabbitmq_environment:\n RABBITMQ_NODENAME: "rabbit@%{::hostname}"\n RABBITMQ_SERVER_ERL_ARGS: \'"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]"\'\nrabbitmq_kernel_variables:\n inet_dist_listen_min: \'35672\'\n inet_dist_listen_max: \'35672\'\nrabbitmq_config_variables:\n tcp_listen_options: \'[binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]\'\n cluster_partition_handling: \'pause_minority\'\n\nmongodb::server::replset: tripleo\nmongodb::server::config: \'/etc/mongod.conf\'\n\nredis::port: 6379\nredis::sentinel::master_name: "%{hiera(\'bootstrap_nodeid\')}"\nredis::sentinel::redis_host: "%{hiera(\'bootstrap_nodeid_ip\')}"\nredis::sentinel::notification_script: \'/usr/local/bin/redis-notifications.sh\'\n\n# service tenant\nnova::api::admin_tenant_name: \'service\'\nglance::api::keystone_tenant: \'service\'\nglance::registry::keystone_tenant: \'service\'\nneutron::server::auth_tenant: \'service\'\nneutron::agents::metadata::auth_tenant: \'service\'\ncinder::api::keystone_tenant: \'service\'\nswift::proxy::authtoken::admin_tenant_name: \'service\'\nceilometer::api::keystone_tenant: \'service\'\nheat::keystone_tenant: \'service\'\n\n#swift\nswift::proxy::pipeline:\n - \'catch_errors\'\n - \'healthcheck\'\n - \'cache\'\n - \'ratelimit\'\n - \'tempurl\'\n - \'formpost\'\n - \'staticweb\'\n - \'ceilometer\'\n - \'authtoken\'\n - \'keystone\'\n - \'proxy-logging\'\n - \'proxy-server\'\n\nswift::proxy::account_autocreate: true\n\n# glance\nglance::api::pipeline: \'keystone\'\nglance::registry::pipeline: \'keystone\'\nglance::backend::swift::swift_store_create_container_on_put: true\nglance::backend::rbd::rbd_store_user: \'openstack\'\nglance_file_pcmk_directory: \'/var/lib/glance/images\'\n\n# neutron\nneutron::core_plugin: \'ml2\'\nneutron::service_plugins:\n - \'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin\'\nneutron::server::sync_db: true\nneutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf\n\n# nova\nnova::notify_on_state_change: \'vm_and_task_state\'\nnova::api::osapi_v3: true\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\n# heat\nheat::engine::configure_delegated_roles: false\nheat::engine::trusts_delegated_roles: []\nheat::instance_user: \'\'\nheat::keystone::domain::keystone_admin: \'admin\'\nheat::keystone::domain::keystone_tenant: \'admin\'\nheat::keystone::domain::domain_name: \'heat_stack\'\nheat::keystone::domain::domain_admin: \'heat_stack_domain_admin\'\n\n# pacemaker\npacemaker::corosync::cluster_name: \'tripleo_cluster\'\npacemaker::corosync::manage_fw: false\n\n# horizon\nhorizon::allowed_hosts: \'*\'\nhorizon::django_session_engine: \'django.contrib.sessions.backends.cache\'\n\n# mysql\nmysql::server::manage_config_file: true\n\n\ntripleo::loadbalancer::keystone_admin: true\ntripleo::loadbalancer::keystone_public: true\ntripleo::loadbalancer::neutron: true\ntripleo::loadbalancer::cinder: true\ntripleo::loadbalancer::glance_api: true\ntripleo::loadbalancer::glance_registry: true\ntripleo::loadbalancer::nova_ec2: true\ntripleo::loadbalancer::nova_osapi: true\ntripleo::loadbalancer::nova_metadata: true\ntripleo::loadbalancer::nova_novncproxy: true\ntripleo::loadbalancer::mysql: true\ntripleo::loadbalancer::redis: true\ntripleo::loadbalancer::swift_proxy_server: true\ntripleo::loadbalancer::ceilometer: true\ntripleo::loadbalancer::heat_api: true\ntripleo::loadbalancer::heat_cloudwatch: true\ntripleo::loadbalancer::heat_cfn: true\ntripleo::loadbalancer::horizon: true\n', u'file:///home/stack/nic-configs/compute.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the compute role.\\n", "parameters": {"TenantNetworkVlanID": {"default": 50, "type": "number", "description": "Vlan ID for the tenant network traffic."}, "TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "BondInterfaceOvsOptions": {"default": "", "type": "string", "description": "The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option."}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "InternalApiNetworkVlanID": {"default": 20, "type": "number", "description": "Vlan ID for the internal_api network traffic."}, "StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "StorageNetworkVlanID": {"default": 30, "type": "number", "description": "Vlan ID for the storage network traffic."}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"os_net_config": {"network_config": [{"type": "ovs_bridge", "name": "br-bond", "members": [{"ovs_options": {"get_param": "BondInterfaceOvsOptions"}, "type": "ovs_bond", "name": "bond1", "members": [{"type": "interface", "name": "nic5", "primary": true}, {"type": "interface", "name": "nic6"}]}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "InternalApiIpSubnet"}}], "vlan_id": {"get_param": "InternalApiNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageIpSubnet"}}], "vlan_id": {"get_param": "StorageNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "TenantIpSubnet"}}], "vlan_id": {"get_param": "TenantNetworkVlanID"}}]}]}}}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/storage.yaml': '{"outputs": {"OS::stack_id": {"description": "Neutron storage network", "value": {"get_resource": "StorageNetwork"}}}, "heat_template_version": "2015-04-30", "description": "Storage network.\\n", "parameters": {"StorageNetShared": {"default": false, "type": "boolean", "description": "Whether this network is shared across all tenants."}, "StorageSubnetName": {"default": "storage_subnet", "type": "string", "description": "The name of the storage subnet in Neutron."}, "StorageNetEnableDHCP": {"default": false, "type": "boolean", "description": "Whether to enable DHCP on the associated subnet."}, "StorageNetCidr": {"default": "172.16.1.0/24", "type": "string", "description": "Cidr for the storage network."}, "StorageNetValueSpecs": {"default": {"provider:physical_network": "storage", "provider:network_type": "flat"}, "type": "string", "description": "Value specs for the storage network."}, "StorageAllocationPools": {"default": [{"start": "172.16.1.4", "end": "172.16.1.250"}], "type": "json", "description": "Ip allocation pool range for the storage network."}, "StorageNetName": {"default": "storage", "type": "string", "description": "The name of the storage network."}, "StorageNetAdminStateUp": {"default": false, "type": "boolean", "description": "This admin state of of the network."}}, "resources": {"StorageSubnet": {"type": "OS::Neutron::Subnet", "properties": {"network": {"get_resource": "StorageNetwork"}, "allocation_pools": {"get_param": "StorageAllocationPools"}, "cidr": {"get_param": "StorageNetCidr"}, "enable_dhcp": {"get_param": "StorageNetEnableDHCP"}, "name": {"get_param": "StorageSubnetName"}}}, "StorageNetwork": {"type": "OS::Neutron::Net", "properties": {"shared": {"get_param": "StorageNetShared"}, "admin_state_up": {"get_param": "StorageNetAdminStateUp"}, "value_specs": {"get_param": "StorageNetValueSpecs"}, "name": {"get_param": "StorageNetName"}}}}}', u'file:///tmp/tmpVtTjeI/provider-Swift-Storage-1.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hosts_entry": {"value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "ObjectStorageHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["SwiftStorage", "name"]}}, "template": "IP HOST.localdomain HOST"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "config_identifier": {"description": "identifier which changes if the node configuration may need re-applying", "value": {"get_attr": ["SwiftStorageHieraDeploy", "deploy_stdout"]}}, "nova_server_resource": {"description": "Heat resource handle for the swift storage server", "value": {"get_resource": "SwiftStorage"}}, "swift_device": {"description": "Swift device formatted for swift-ring-builder", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}}, "template": "r1z1-IP:%PORT%/d1"}}}}, "heat_template_version": "2015-04-30", "description": "OpenStack swift storage node configured by Puppet", "parameters": {"Hostname": {"default": "", "type": "string"}, "Replicas": {"default": 3, "type": "number", "description": "How many replicas to use in the swift rings."}, "HashSuffix": {"default": "unset", "hidden": true, "type": "string", "description": "A random string to be used as a salt when hashing to determine mappings in the ring."}, "Image": {"default": "overcloud-swift-storage", "type": "string"}, "PartPower": {"default": 10, "type": "number", "description": "Partition Power to use when building Swift rings"}, "MinPartHours": {"default": 1, "type": "number", "description": "The minimum time (in hours) before a partition in a ring can be moved following a rebalance."}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "Flavor": {"type": "string", "description": "Flavor for Swift storage nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "NtpServer": {"default": "", "type": "string"}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}, "MountCheck": {"default": "false", "type": "boolean", "description": "Value of mount_check in Swift account/container/object -server.conf"}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "SwiftStorageHieraConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "object", "swift_devices_and_proxy", "all_nodes", "RedHat", "common"], "datafiles": {"object": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/object.yaml"}, "mapped_data": {"swift::storage::all::storage_local_net_ip": {"get_input": "swift_management_network"}, "swift_mount_check": {"get_input": "swift_mount_check"}, "tripleo::ringbuilder::part_power": {"get_input": "swift_part_power"}, "swift::swift_hash_suffix": {"get_input": "swift_hash_suffix"}, "tripleo::ringbuilder::replicas": {"get_input": "swift_replicas"}, "enable_package_install": {"get_input": "enable_package_install"}, "tripleo::ringbuilder::build_ring": true, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "ntp::servers": {"get_input": "ntp_servers"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "tripleo::ringbuilder::min_part_hours": {"get_input": "swift_min_part_hours"}}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/hieradata/common.yaml"}}}}}, "group": "os-apply-config"}}, "NetworkConfig": {"type": "OS::TripleO::ObjectStorage::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "StorageMgmtPort": {"type": "OS::TripleO::SwiftStorage::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}}}, "StoragePort": {"type": "OS::TripleO::SwiftStorage::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "InternalApiPort": {"type": "OS::TripleO::SwiftStorage::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}}}, "SwiftStorage": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "SwiftStorage"}}}, "SwiftStorageHieraDeploy": {"depends_on": "NetworkDeployment", "type": "OS::Heat::StructuredDeployment", "properties": {"input_values": {"swift_management_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}, "swift_min_part_hours": {"get_param": "MinPartHours"}, "local_ip": {"get_attr": ["SwiftStorage", "networks", "ctlplane", 0]}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "swift_mount_check": {"get_param": "MountCheck"}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "swift_part_power": {"get_param": "PartPower"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "swift_hash_suffix": {"get_param": "HashSuffix"}, "swift_replicas": {"get_param": "Replicas"}, "enable_package_install": {"get_param": "EnablePackageInstall"}}, "config": {"get_resource": "SwiftStorageHieraConfig"}, "server": {"get_resource": "SwiftStorage"}}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "SwiftStorage"}}}}}', u'file:///tmp/tmpVtTjeI/hieradata/object.yaml': '# Hiera data for swift storage nodes\nswift::storage::all::object_pipeline:\n - healthcheck\n - recon\n - object-server\nswift::storage::all::container_pipeline:\n - healthcheck\n - container-server\nswift::storage::all::account_pipeline:\n - healthcheck\n - account-server\n\nswift::proxy::keystone::operator_roles:\n - admin\n - swiftoperator\n - ResellerAdmin\n', u'file:///tmp/tmpVtTjeI/puppet/controller-puppet.yaml': '{"outputs": {"storage_mgmt_ip_address": {"description": "IP address of the server in the storage_mgmt network", "value": {"get_attr": ["StorageMgmtPort", "ip_address"]}}, "hostname": {"description": "Hostname of the server", "value": {"get_attr": ["Controller", "name"]}}, "config_identifier": {"description": "identifier which changes if the controller configuration may need re-applying", "value": {"list_join": [",", [{"get_attr": ["ControllerDeployment", "deploy_stdout"]}, {"get_attr": ["ControllerExtraConfigPre", "deploy_stdout"]}]]}}, "nova_server_resource": {"description": "Heat resource handle for the Nova compute server", "value": {"get_resource": "Controller"}}, "tenant_ip_address": {"description": "IP address of the server in the tenant network", "value": {"get_attr": ["TenantPort", "ip_address"]}}, "external_ip_address": {"description": "IP address of the server in the external network", "value": {"get_attr": ["ExternalPort", "ip_address"]}}, "swift_device": {"description": "Swift device formatted for swift-ring-builder", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}}, "template": "r1z1-IP:%PORT%/d1"}}}, "corosync_node": {"description": "Node object in the format {ip: ..., name: ...} format that the corosync element expects\\n", "value": {"ip": {"get_attr": ["Controller", "networks", "ctlplane", 0]}, "name": {"get_attr": ["Controller", "name"]}}}, "hosts_entry": {"description": "Server\'s IP address and hostname in the /etc/hosts format\\n", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "ControllerHostnameResolveNetwork"]}]}, "HOST": {"get_attr": ["Controller", "name"]}, "CLOUDNAME": {"get_param": "CloudName"}}, "template": "IP HOST.localdomain HOST CLOUDNAME"}}}, "swift_proxy_memcache": {"description": "Swift proxy-memcache value", "value": {"str_replace": {"params": {"IP": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MemcachedNetwork"]}]}}, "template": "IP:11211"}}}, "storage_ip_address": {"description": "IP address of the server in the storage network", "value": {"get_attr": ["StoragePort", "ip_address"]}}, "internal_api_ip_address": {"description": "IP address of the server in the internal_api network", "value": {"get_attr": ["InternalApiPort", "ip_address"]}}, "ip_address": {"description": "IP address of the server in the ctlplane network", "value": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "heat_template_version": "2015-04-30", "description": "OpenStack controller node configured by Puppet.\\n", "parameters": {"MysqlMaxConnections": {"default": 1024, "type": "number", "description": "Configures MySQL max_connections config setting"}, "EnableCephStorage": {"default": false, "type": "boolean", "description": "Whether to deploy Ceph Storage (OSD) on the Controller"}, "NeutronPublicInterfaceRawDevice": {"default": "", "type": "string", "description": "If set, the public interface is a vlan with this device as the raw device."}, "KeystoneSigningKey": {"default": "", "hidden": true, "type": "string", "description": "Keystone key for signing tokens."}, "SSLCACertificate": {"default": "", "type": "string", "description": "If set, the contents of an SSL certificate authority file."}, "NtpServer": {"default": "", "type": "string"}, "Hostname": {"default": "", "type": "string"}, "GlanceFilePcmkManage": {"default": false, "type": "boolean", "description": "Whether to make Glance file backend a mount managed by Pacemaker. Effective when GlanceBackend is \'file\'.\\n"}, "KeystoneSSLCertificateKey": {"default": "", "hidden": true, "type": "string", "description": "Keystone key for signing tokens."}, "NeutronDhcpAgentsPerNetwork": {"default": 3, "type": "number", "description": "The number of neutron dhcp agents to schedule per network"}, "NeutronPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the neutron service and db account, used by neutron agents."}, "NeutronFlatNetworks": {"default": "datacentre", "type": "string", "description": "If set, flat networks to configure in neutron plugins."}, "EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "NeutronPublicInterface": {"default": "nic1", "type": "string", "description": "What interface to bridge onto br-ex for network nodes."}, "SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "GlancePassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the glance service and db account, used by the glance services."}, "NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n"}, "CinderEnableRbdBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the Rbd backend for Cinder"}, "SwiftReplicas": {"default": 3, "type": "number", "description": "How many replicas to use in the swift rings."}, "NeutronPublicInterfaceTag": {"default": "", "type": "string", "description": "VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\\n"}, "NeutronNetworkVLANRanges": {"default": "datacentre", "type": "comma_delimited_list", "description": "The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the \'datacentre\' physical network (See NeutronBridgeMappings).\\n"}, "KeystoneSigningCertificate": {"default": "", "type": "string", "description": "Keystone certificate for verifying token validity."}, "SSLKey": {"default": "", "hidden": true, "type": "string", "description": "If set, the contents of an SSL certificate .key file for encrypting SSL endpoints."}, "GlanceFilePcmkFstype": {"default": "nfs", "type": "string", "description": "Filesystem type for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n"}, "ServiceNetMap": {"default": {}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "RabbitCookie": {"default": "", "hidden": true, "type": "string"}, "SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "MysqlRootPassword": {"default": "", "hidden": true, "type": "string"}, "GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "CinderISCSIHelper": {"default": "tgtadm", "type": "string", "description": "The iSCSI helper to use with cinder."}, "MysqlClusterUniquePart": {"default": "unset", "type": "string", "description": "A unique identifier of the MySQL cluster the controller is in."}, "CinderPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the cinder service and db account, used by cinder-api."}, "CloudName": {"default": "", "type": "string", "description": "The DNS name of this cloud. E.g. ci-overcloud.tripleo.org"}, "CinderLVMLoopDeviceSize": {"default": 5000, "type": "number", "description": "The size of the loopback file used by the cinder LVM driver."}, "RabbitPassword": {"default": "guest", "hidden": true, "type": "string", "description": "The password for RabbitMQ"}, "CinderNfsServers": {"default": "", "type": "comma_delimited_list", "description": "NFS servers used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n"}, "NeutronApiVirtualIP": {"default": "", "type": "string"}, "ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "MysqlInnodbBufferPoolSize": {"default": 0, "type": "number", "description": "Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as \\"no value\\" and will defer to the lower level default.\\n"}, "PublicVirtualInterface": {"default": "br-ex", "type": "string", "description": "Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used.\\n"}, "Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "NeutronAgentMode": {"default": "dvr_snat", "type": "string", "description": "Agent mode for the neutron-l3-agent on the controller hosts"}, "GlanceFilePcmkDevice": {"default": "", "type": "string", "description": "An exported storage device that should be mounted by Pacemaker as Glance storage. Effective when GlanceFilePcmkManage is true.\\n"}, "AdminToken": {"default": "unset", "hidden": true, "type": "string", "description": "The keystone auth secret and db password."}, "SwiftMinPartHours": {"default": 1, "type": "number", "description": "The minimum time (in hours) before a partition in a ring can be moved following a rebalance."}, "KeystoneSSLCertificate": {"default": "", "type": "string", "description": "Keystone certificate for verifying token validity."}, "NeutronL3HA": {"default": "False", "type": "string", "description": "Whether to enable l3-agent HA"}, "EnableGalera": {"default": true, "type": "boolean", "description": "Whether to use Galera instead of regular MariaDB."}, "HorizonSecret": {"type": "string", "description": "Secret key for Django"}, "NeutronBridgeMappings": {"default": "datacentre:br-ex", "type": "string", "description": "The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name \'datacentre\' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep \'datacentre\' as a mapping network name.\\n"}, "VirtualIP": {"default": "", "type": "string"}, "CinderEnableIscsiBackend": {"default": true, "type": "boolean", "description": "Whether to enable or not the Iscsi backend for Cinder"}, "CeilometerMeteringSecret": {"default": "unset", "hidden": true, "type": "string", "description": "Secret shared by the ceilometer services."}, "NeutronMetadataProxySharedSecret": {"default": "unset", "type": "string", "description": "Shared secret to prevent spoofing"}, "PublicVirtualIP": {"default": "", "type": "string"}, "Flavor": {"type": "string", "description": "Flavor for control nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "CinderEnableNfsBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the NFS backend for Cinder"}, "NovaPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the nova service and db account, used by nova-api."}, "KeystonePublicApiVirtualIP": {"default": "", "type": "string"}, "GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "SwiftPartPower": {"default": 10, "type": "number", "description": "Partition Power to use when building Swift rings"}, "HeatApiVirtualIP": {"default": "", "type": "string"}, "NeutronPublicInterfaceDefaultRoute": {"default": "", "type": "string", "description": "A custom default route for the NeutronPublicInterface."}, "HeatPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the Heat service and db account, used by the Heat services."}, "MysqlVirtualIP": {"default": "", "type": "string"}, "RedisVirtualIP": {"default": "", "type": "string"}, "ControllerExtraConfig": {"default": {}, "type": "json", "description": "Controller specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n"}, "ControlVirtualInterface": {"default": "br-ex", "type": "string", "description": "Interface where virtual ip will be assigned."}, "SwiftMountCheck": {"default": "false", "type": "boolean", "description": "Value of mount_check in Swift account/container/object -server.conf"}, "HeatStackDomainAdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "Password for heat_stack_domain_admin user."}, "RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "PcsdPassword": {"type": "string", "description": "The password for the \'pcsd\' user."}, "GlanceApiVirtualIP": {"default": "", "type": "string"}, "SwiftPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the swift service account, used by the swift proxy services."}, "EnableSwiftStorage": {"default": true, "type": "boolean", "description": "Whether to enable Swift Storage on the Controller"}, "EnablePacemaker": {"default": false, "type": "boolean", "description": "If enabled services will be monitored by Pacemaker; it will manage VIPs as well, in place of Keepalived."}, "NeutronNetworkType": {"default": "gre", "type": "string", "description": "The tenant network type for Neutron, either gre or vxlan."}, "CeilometerPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the ceilometer service and db account."}, "SSLCertificate": {"default": "", "hidden": true, "type": "string", "description": "If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints."}, "NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n"}, "GlanceNotifierStrategy": {"default": "noop", "type": "string", "description": "Strategy to use for Glance notification queue"}, "CinderBackendConfig": {"default": {}, "type": "json", "description": "Contains parameters to configure Cinder backends. Typically set via parameter_defaults in the resource registry."}, "NeutronMechanismDrivers": {"default": "openvswitch", "type": "string", "description": "The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'openvswitch,l2_population\'\\n"}, "GlanceBackend": {"default": "swift", "type": "string", "description": "The short name of the Glance backend to use. Should be one of swift, rbd, or file", "constraints": [{"allowed_values": ["swift", "file", "rbd"]}]}, "RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n"}, "NeutronAllowL3AgentFailover": {"default": "True", "type": "string", "description": "Allow automatic l3-agent failover"}, "HeatAuthEncryptionKey": {"type": "string", "description": "Auth encryption key for heat-engine"}, "GlanceFilePcmkOptions": {"default": "", "type": "string", "description": "Mount options for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n"}, "RabbitUserName": {"default": "guest", "type": "string", "description": "The username for RabbitMQ"}, "GlanceLogFile": {"default": "", "type": "string", "description": "The filepath of the file to use for logging messages from Glance."}, "CinderNfsMountOptions": {"default": "", "type": "string", "description": "Mount options for NFS mounts used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n"}, "NeutronExternalNetworkBridge": {"default": "br-ex", "type": "string", "description": "Name of bridge used for external network traffic."}, "CeilometerBackend": {"default": "mongodb", "type": "string", "description": "The ceilometer backend type."}, "NeutronPublicInterfaceIP": {"default": "", "type": "string", "description": "A custom IP address to put onto the NeutronPublicInterface."}, "SwiftHashSuffix": {"default": "unset", "hidden": true, "type": "string", "description": "A random string to be used as a salt when hashing to determine mappings in the ring."}, "AdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the keystone admin account, used for monitoring, querying neutron etc."}, "NeutronDVR": {"default": "False", "type": "string", "description": "Whether to configure Neutron Distributed Virtual Routers"}, "Image": {"default": "overcloud-control", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\"FILEKEY\\":\\n {\\"config\\":\\n [{\\"section\\": \\"SECTIONNAME\\",\\n \\"values\\":\\n [{\\"option\\": \\"OPTIONNAME\\",\\n \\"value\\": \\"VALUENAME\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\"nova\\":\\n {\\"config\\":\\n [{\\"section\\": \\"default\\",\\n \\"values\\":\\n [{\\"option\\": \\"compute_manager\\",\\n \\"value\\": \\"ironic.nova.compute.manager.ClusterComputeManager\\"\\n }\\n ]\\n },\\n {\\"section\\": \\"cells\\",\\n \\"values\\":\\n [{\\"option\\": \\"driver\\",\\n \\"value\\": \\"nova.cells.rpc_driver.CellsRPCDriver\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n"}, "NeutronTunnelTypes": {"default": "gre", "type": "string", "description": "The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: \'gre,vxlan\'\\n"}, "NeutronEnableTunnelling": {"default": "True", "type": "string"}, "KeystoneCACertificate": {"default": "", "type": "string", "description": "Keystone self-signed certificate authority certificate."}, "UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\\n"}, "NeutronDnsmasqOptions": {"default": "dhcp-option-force=26,1400", "type": "string", "description": "Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead."}}, "resources": {"NodeUserData": {"type": "OS::TripleO::NodeUserData"}, "ControllerExtraConfigPre": {"depends_on": "ControllerDeployment", "type": "OS::TripleO::ControllerExtraConfigPre", "properties": {"server": {"get_resource": "Controller"}}}, "TenantPort": {"type": "OS::TripleO::Controller::Ports::TenantPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "ExternalPort": {"type": "OS::TripleO::Controller::Ports::ExternalPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "NetworkConfig": {"type": "OS::TripleO::Controller::Net::SoftwareConfig", "properties": {"StorageIpSubnet": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIpSubnet": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "StorageMgmtIpSubnet": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}, "TenantIpSubnet": {"get_attr": ["TenantPort", "ip_subnet"]}, "ExternalIpSubnet": {"get_attr": ["ExternalPort", "ip_subnet"]}}}, "StorageMgmtPort": {"type": "OS::TripleO::Controller::Ports::StorageMgmtPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "UpdateConfig": {"type": "OS::TripleO::Tasks::PackageUpdate"}, "ControllerDeployment": {"depends_on": "NetworkDeployment", "type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"heat_stack_domain_admin_password": {"get_param": "HeatStackDomainAdminPassword"}, "admin_token": {"get_param": "AdminToken"}, "heat.metadata_server_url": {"list_join": ["", ["http://", {"get_param": "HeatApiVirtualIP"}, ":8000"]]}, "neutron_router_distributed": {"get_param": "NeutronDVR"}, "swift_password": {"get_param": "SwiftPassword"}, "neutron_flat_networks": {"get_param": "NeutronFlatNetworks"}, "redis_vip": {"get_param": "RedisVirtualIP"}, "glance_port": {"get_param": "GlancePort"}, "glance_api_servers": {"list_join": ["", [{"get_param": "GlanceProtocol"}, "://", {"get_param": "GlanceApiVirtualIP"}, ":", {"get_param": "GlancePort"}]]}, "rabbit_password": {"get_param": "RabbitPassword"}, "neutron_vni_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronVniRanges"}]}}, "template": "[\'RANGES\']"}}, "neutron_tunnel_types": {"get_param": "NeutronTunnelTypes"}, "neutron_dnsmasq_options": {"get_param": "NeutronDnsmasqOptions"}, "heat_dsn": {"list_join": ["", ["mysql://heat:", {"get_param": "HeatPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/heat"]]}, "enable_package_install": {"get_param": "EnablePackageInstall"}, "neutron_public_interface_raw_device": {"get_param": "NeutronPublicInterfaceRawDevice"}, "neutron_password": {"get_param": "NeutronPassword"}, "cinder_enable_rbd_backend": {"get_param": "CinderEnableRbdBackend"}, "glance_file_pcmk_options": {"get_param": "GlanceFilePcmkOptions"}, "enable_swift_storage": {"get_param": "EnableSwiftStorage"}, "glance_backend": {"get_param": "GlanceBackend"}, "horizon_secret": {"get_param": "HorizonSecret"}, "ceilometer_password": {"get_param": "CeilometerPassword"}, "snmpd_readonly_user_name": {"get_param": "SnmpdReadonlyUserName"}, "snmpd_readonly_user_password": {"get_param": "SnmpdReadonlyUserPassword"}, "neutron_l3_ha": {"get_param": "NeutronL3HA"}, "neutron_local_ip": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronTenantNetwork"]}]}, "admin_password": {"get_param": "AdminPassword"}, "neutron_admin_auth_url": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":35357/v2.0"]]}, "ceph_public_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "bootstack_nodeid": {"get_attr": ["Controller", "name"]}, "glance_file_pcmk_device": {"get_param": "GlanceFilePcmkDevice"}, "heat_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HeatApiNetwork"]}]}, "cinder_dsn": {"list_join": ["", ["mysql://cinder:", {"get_param": "CinderPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/cinder"]]}, "enable_ceph_storage": {"get_param": "EnableCephStorage"}, "cinder_lvm_loop_device_size": {"get_param": "CinderLVMLoopDeviceSize"}, "neutron_mechanism_drivers": {"get_param": "NeutronMechanismDrivers"}, "neutron_public_interface_ip": {"get_param": "NeutronPublicInterfaceIP"}, "ntp_servers": {"str_replace": {"params": {"server": {"get_param": "NtpServer"}}, "template": "[\\"server\\"]"}}, "keystone_dsn": {"list_join": ["", ["mysql://keystone:", {"get_param": "AdminToken"}, "@", {"get_param": "MysqlVirtualIP"}, "/keystone"]]}, "keystone_signing_certificate": {"get_param": "KeystoneSigningCertificate"}, "mysql_innodb_buffer_pool_size": {"get_param": "MysqlInnodbBufferPoolSize"}, "glance_dsn": {"list_join": ["", ["mysql://glance:", {"get_param": "GlancePassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/glance"]]}, "ceilometer_coordination_url": {"list_join": ["", ["redis://", {"get_param": "RedisVirtualIP"}, ":6379"]]}, "public_virtual_interface": {"get_param": "PublicVirtualInterface"}, "nova_dsn": {"list_join": ["", ["mysql://nova:", {"get_param": "NovaPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/nova"]]}, "cinder_password": {"get_param": "CinderPassword"}, "swift_hash_suffix": {"get_param": "SwiftHashSuffix"}, "nova_metadata_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaMetadataNetwork"]}]}, "pcsd_password": {"get_param": "PcsdPassword"}, "keystone_public_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}, "neutron_bridge_mappings": {"get_param": "NeutronBridgeMappings"}, "nova_password": {"get_param": "NovaPassword"}, "neutron_public_interface": {"get_param": "NeutronPublicInterface"}, "neutron_url": {"list_join": ["", ["http://", {"get_param": "NeutronApiVirtualIP"}, ":9696"]]}, "ceilometer_metering_secret": {"get_param": "CeilometerMeteringSecret"}, "glance_password": {"get_param": "GlancePassword"}, "neutron_dhcp_agents_per_network": {"get_param": "NeutronDhcpAgentsPerNetwork"}, "keystone_auth_uri": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":5000/v2.0/"]]}, "rabbit_username": {"get_param": "RabbitUserName"}, "neutron_enable_tunneling": {"get_param": "NeutronEnableTunnelling"}, "heat_password": {"get_param": "HeatPassword"}, "debug": {"get_param": "Debug"}, "keystone_ca_certificate": {"get_param": "KeystoneCACertificate"}, "rabbit_client_port": {"get_param": "RabbitClientPort"}, "keystone_signing_key": {"get_param": "KeystoneSigningKey"}, "swift_management_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftMgmtNetwork"]}]}, "neutron_tunnel_id_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronTunnelIdRanges"}]}}, "template": "[\'RANGES\']"}}, "swift_min_part_hours": {"get_param": "SwiftMinPartHours"}, "neutron_public_interface_default_route": {"get_param": "NeutronPublicInterfaceDefaultRoute"}, "mongo_db_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MongoDbNetwork"]}]}, "swift_mount_check": {"get_param": "SwiftMountCheck"}, "heat.watch_server_url": {"list_join": ["", ["http://", {"get_param": "HeatApiVirtualIP"}, ":8003"]]}, "keystone_admin_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystoneAdminApiNetwork"]}]}, "keystone_ssl_certificate_key": {"get_param": "KeystoneSSLCertificateKey"}, "rabbitmq_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RabbitMqNetwork"]}]}, "mysql_cluster_name": {"str_replace": {"params": {"CLUSTER": {"get_param": "MysqlClusterUniquePart"}}, "template": "tripleo-CLUSTER"}}, "neutron_public_interface_tag": {"get_param": "NeutronPublicInterfaceTag"}, "cinder_iscsi_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderIscsiNetwork"]}]}, "control_virtual_interface": {"get_param": "ControlVirtualInterface"}, "cinder_iscsi_helper": {"get_param": "CinderISCSIHelper"}, "neutron_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}, "rabbit_client_use_ssl": {"get_param": "RabbitClientUseSSL"}, "mysql_root_password": {"get_param": "MysqlRootPassword"}, "glance_log_file": {"get_param": "GlanceLogFile"}, "swift_proxy_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftProxyNetwork"]}]}, "memcached_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MemcachedNetwork"]}]}, "heat_auth_encryption_key": {"get_param": "HeatAuthEncryptionKey"}, "keystone_ec2_uri": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":5000/v2.0/ec2tokens"]]}, "enable_galera": {"get_param": "EnableGalera"}, "mysql_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MysqlNetwork"]}]}, "neutron_allow_l3agent_failover": {"get_param": "NeutronAllowL3AgentFailover"}, "mysql_max_connections": {"get_param": "MysqlMaxConnections"}, "keystone_identity_uri": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":35357/"]]}, "keystone_ssl_certificate": {"get_param": "KeystoneSSLCertificate"}, "neutron_metadata_proxy_shared_secret": {"get_param": "NeutronMetadataProxySharedSecret"}, "cinder_backend_config": {"get_param": "CinderBackendConfig"}, "cinder_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderApiNetwork"]}]}, "swift_replicas": {"get_param": "SwiftReplicas"}, "rabbit_cookie": {"get_param": "RabbitCookie"}, "keystone_auth_address": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":5000/v2.0"]]}, "glance_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "ceph_public_ip": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "cinder_enable_iscsi_backend": {"get_param": "CinderEnableIscsiBackend"}, "glance_file_pcmk_fstype": {"get_param": "GlanceFilePcmkFstype"}, "neutron_tenant_network_type": {"get_param": "NeutronNetworkType"}, "glance_notifier_strategy": {"get_param": "GlanceNotifierStrategy"}, "neutron_network_vlan_ranges": {"str_replace": {"params": {"RANGES": {"list_join": ["\',\'", {"get_param": "NeutronNetworkVLANRanges"}]}}, "template": "[\'RANGES\']"}}, "ceilometer_dsn": {"list_join": ["", ["mysql://ceilometer:unset@", {"get_param": "MysqlVirtualIP"}, "/ceilometer"]]}, "glance_registry_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceRegistryNetwork"]}]}, "ceph_cluster_network": {"get_attr": ["NetIpSubnetMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephClusterNetwork"]}]}, "neutron_agent_mode": {"get_param": "NeutronAgentMode"}, "horizon_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HorizonNetwork"]}]}, "cinder_nfs_mount_options": {"get_param": "CinderNfsMountOptions"}, "cinder_enable_nfs_backend": {"get_param": "CinderEnableNfsBackend"}, "ceilometer_backend": {"get_param": "CeilometerBackend"}, "neutron_external_network_bridge": {"get_param": "NeutronExternalNetworkBridge"}, "glance_file_pcmk_manage": {"get_param": "GlanceFilePcmkManage"}, "swift_part_power": {"get_param": "SwiftPartPower"}, "neutron_dsn": {"list_join": ["", ["mysql://neutron:", {"get_param": "NeutronPassword"}, "@", {"get_param": "MysqlVirtualIP"}, "/ovs_neutron?charset=utf8"]]}, "cinder_nfs_servers": {"str_replace": {"params": {"SERVERS": {"list_join": ["\',\'", {"get_param": "CinderNfsServers"}]}}, "template": "[\'SERVERS\']"}}, "redis_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RedisNetwork"]}]}, "ceilometer_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CeilometerApiNetwork"]}]}, "nova_api_network": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaApiNetwork"]}]}, "heat.waitcondition_server_url": {"list_join": ["", ["http://", {"get_param": "HeatApiVirtualIP"}, ":8000/v1/waitcondition"]]}}, "config": {"get_resource": "ControllerConfig"}, "server": {"get_resource": "Controller"}}}, "ControllerConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"hierarchy": ["heat_config_%{::deploy_config_name}", "controller", "object", "swift_devices_and_proxy", "ceph_cluster", "ceph", "bootstrap_node", "all_nodes", "vip_data", "RedHat", "common", "cinder_netapp_data"], "datafiles": {"ceph": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml"}, "mapped_data": {"ceph::profile::params::cluster_network": {"get_input": "ceph_cluster_network"}, "ceph::profile::params::public_network": {"get_input": "ceph_public_network"}, "ceph::mon::public_addr": {"get_input": "ceph_public_ip"}}}, "controller": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/controller.yaml"}, "mapped_data": {"nova::rabbit_port": {"get_input": "rabbit_client_port"}, "neutron::debug": {"get_input": "debug"}, "neutron::plugins::ml2::network_vlan_ranges": {"get_input": "neutron_network_vlan_ranges"}, "horizon::secret_key": {"get_input": "horizon_secret"}, "neutron_tunnel_types": {"get_input": "neutron_tunnel_types"}, "heat::keystone::domain::auth_url": {"list_join": ["", ["http://", {"get_param": "KeystonePublicApiVirtualIP"}, ":35357/v2.0"]]}, "neutron_dnsmasq_options": {"get_input": "neutron_dnsmasq_options"}, "keystone::database_connection": {"get_input": "keystone_dsn"}, "glance::registry::database_connection": {"get_input": "glance_dsn"}, "swift::storage::all::storage_local_net_ip": {"get_input": "swift_management_network"}, "glance::registry::identity_uri": {"get_input": "keystone_identity_uri"}, "enable_swift_storage": {"get_input": "enable_swift_storage"}, "glance::registry::keystone_password": {"get_input": "glance_password"}, "glance::registry::debug": {"get_input": "debug"}, "ceilometer::api::keystone_identity_uri": {"get_input": "keystone_identity_uri"}, "keystone_ssl_certificate": {"get_input": "keystone_ssl_certificate"}, "snmpd_readonly_user_password": {"get_input": "snmpd_readonly_user_password"}, "horizon::bind_address": {"get_input": "horizon_network"}, "ntp::servers": {"get_input": "ntp_servers"}, "cinder::debug": {"get_input": "debug"}, "enable_ceph_storage": {"get_input": "enable_ceph_storage"}, "heat::debug": {"get_input": "debug"}, "mongodb::server::bind_ip": {"get_input": "mongo_db_network"}, "tripleo::loadbalancer::public_virtual_interface": {"get_input": "public_virtual_interface"}, "neutron_public_interface_ip": {"get_input": "neutron_public_interface_ip"}, "cinder::rabbit_port": {"get_input": "rabbit_client_port"}, "nova::rabbit_userid": {"get_input": "rabbit_username"}, "keystone_signing_certificate": {"get_input": "keystone_signing_certificate"}, "glance::registry::auth_uri": {"get_input": "keystone_auth_uri"}, "neutron::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::plugins::ml2::tunnel_id_ranges": {"get_input": "neutron_tunnel_id_ranges"}, "heat::keystone::domain::keystone_password": {"get_input": "admin_password"}, "heat::auth_uri": {"get_input": "keystone_auth_uri"}, "ceilometer::metering_secret": {"get_input": "ceilometer_metering_secret"}, "ceilometer::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "cinder::glance::glance_api_servers": {"get_input": "glance_api_servers"}, "neutron::dhcp_agents_per_network": {"get_input": "neutron_dhcp_agents_per_network"}, "neutron_public_interface": {"get_input": "neutron_public_interface"}, "glance::api::auth_uri": {"get_input": "keystone_auth_uri"}, "ceilometer::debug": {"get_input": "debug"}, "heat::engine::auth_encryption_key": {"get_input": "heat_auth_encryption_key"}, "ceilometer::rabbit_password": {"get_input": "rabbit_password"}, "ceilometer::rabbit_userid": {"get_input": "rabbit_username"}, "nova::api::api_bind_address": {"get_input": "nova_api_network"}, "tripleo::ringbuilder::build_ring": true, "glance::api::registry_host": {"get_input": "glance_registry_network"}, "tripleo::loadbalancer::control_virtual_interface": {"get_input": "control_virtual_interface"}, "glance::api::bind_host": {"get_input": "glance_api_network"}, "glance::api::keystone_password": {"get_input": "glance_password"}, "neutron::plugins::ml2::vni_ranges": {"get_input": "neutron_vni_ranges"}, "horizon::keystone_url": {"get_input": "keystone_auth_uri"}, "glance::backend::swift::swift_store_auth_address": {"get_input": "keystone_auth_address"}, "heat::keystone_ec2_uri": {"get_input": "keystone_ec2_uri"}, "ceilometer::api::host": {"get_input": "ceilometer_api_network"}, "neutron::server::database_connection": {"get_input": "neutron_dsn"}, "heat::api_cfn::bind_host": {"get_input": "heat_api_network"}, "neutron::bind_host": {"get_input": "neutron_api_network"}, "heat::api::bind_host": {"get_input": "heat_api_network"}, "glance_log_file": {"get_input": "glance_log_file"}, "nova::rabbit_password": {"get_input": "rabbit_password"}, "neutron::server::auth_password": {"get_input": "neutron_password"}, "neutron::rabbit_user": {"get_input": "rabbit_user"}, "cinder_backend_config": {"get_input": "CinderBackendConfig"}, "cinder_iscsi_ip_address": {"get_input": "cinder_iscsi_network"}, "glance_file_pcmk_options": {"get_param": "GlanceFilePcmkOptions"}, "redis::bind": {"get_input": "redis_network"}, "nova::glance_api_servers": {"get_input": "glance_api_servers"}, "nova::debug": {"get_input": "debug"}, "swift::swift_hash_suffix": {"get_input": "swift_hash_suffix"}, "swift::proxy::authtoken::identity_uri": {"get_input": "keystone_identity_uri"}, "heat::engine::heat_watch_server_url": {"get_input": "heat.watch_server_url"}, "ceilometer_mysql_conn_string": {"get_input": "ceilometer_dsn"}, "neutron::agents::l3::external_network_bridge": {"get_input": "neutron_external_network_bridge"}, "heat::keystone_password": {"get_input": "heat_password"}, "cinder::rabbit_password": {"get_input": "rabbit_password"}, "nova::api::neutron_metadata_proxy_shared_secret": {"get_input": "neutron_metadata_proxy_shared_secret"}, "cinder::database_connection": {"get_input": "cinder_dsn"}, "ceilometer::api::keystone_password": {"get_input": "ceilometer_password"}, "neutron_agent_mode": {"get_input": "neutron_agent_mode"}, "glance::backend::swift::swift_store_user": "service:glance", "heat::identity_uri": {"get_input": "keystone_identity_uri"}, "cinder_nfs_mount_options": {"get_input": "cinder_nfs_mount_options"}, "ceilometer_backend": {"get_input": "ceilometer_backend"}, "glance_file_pcmk_manage": {"get_param": "GlanceFilePcmkManage"}, "neutron_dsn": {"get_input": "neutron_dsn"}, "tripleo::ringbuilder::min_part_hours": {"get_input": "swift_min_part_hours"}, "heat::rabbit_userid": {"get_input": "rabbit_username"}, "cinder::api::auth_uri": {"get_input": "keystone_auth_uri"}, "nova::api::identity_uri": {"get_input": "keystone_identity_uri"}, "cinder::api::keystone_password": {"get_input": "cinder_password"}, "heat_stack_domain_admin_password": {"get_input": "heat_stack_domain_admin_password"}, "cinder::api::bind_host": {"get_input": "cinder_api_network"}, "neutron_router_distributed": {"get_input": "neutron_router_distributed"}, "hacluster_pwd": {"get_input": "pcsd_password"}, "ceilometer::agent::auth::auth_password": {"get_input": "ceilometer_password"}, "redis_vip": {"get_input": "redis_vip"}, "neutron::agents::metadata::auth_password": {"get_input": "neutron_password"}, "apache::ip": {"get_input": "horizon_network"}, "neutron_bridge_mappings": {"get_input": "neutron_bridge_mappings"}, "rabbitmq::node_ip_address": {"get_input": "rabbitmq_network"}, "nova::api::metadata_listen": {"get_input": "nova_metadata_network"}, "keystone_ca_certificate": {"get_input": "keystone_ca_certificate"}, "glance::registry::bind_host": {"get_attr": ["NetIpMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceRegistryNetwork"]}]}, "rabbitmq::erlang_cookie": {"get_input": "rabbit_cookie"}, "neutron_public_interface_raw_device": {"get_input": "neutron_public_interface_raw_device"}, "cinder_enable_nfs_backend": {"get_input": "cinder_enable_nfs_backend"}, "heat::keystone::domain::domain_password": {"get_input": "heat_stack_domain_admin_password"}, "cinder_enable_rbd_backend": {"get_input": "cinder_enable_rbd_backend"}, "neutron::agents::metadata::metadata_ip": {"get_input": "neutron_api_network"}, "neutron::server::l3_ha": {"get_input": "neutron_l3_ha"}, "ceilometer::agent::central::coordination_url": {"get_input": "ceilometer_coordination_url"}, "glance_file_pcmk_fstype": {"get_param": "GlanceFilePcmkFstype"}, "swift_mount_check": {"get_input": "swift_mount_check"}, "heat::database_connection": {"get_input": "heat_dsn"}, "cinder::api::identity_uri": {"get_input": "keystone_identity_uri"}, "admin_password": {"get_input": "admin_password"}, "neutron_mechanism_drivers": {"get_input": "neutron_mechanism_drivers"}, "horizon::django_debug": {"get_input": "debug"}, "glance::backend::swift::swift_store_key": {"get_input": "glance_password"}, "heat::engine::heat_waitcondition_server_url": {"get_input": "heat.waitcondition_server_url"}, "memcached::listen_ip": {"get_input": "memcached_network"}, "cinder_lvm_loop_device_size": {"get_input": "cinder_lvm_loop_device_size"}, "tripleo::ringbuilder::replicas": {"get_input": "swift_replicas"}, "nova::network::neutron::neutron_admin_password": {"get_input": "neutron_password"}, "nova::vncproxy::host": {"get_input": "nova_api_network"}, "mysql_bind_host": {"get_input": "mysql_network"}, "snmpd_readonly_user_name": {"get_input": "snmpd_readonly_user_name"}, "keystone_signing_key": {"get_input": "keystone_signing_key"}, "glance_file_pcmk_device": {"get_param": "GlanceFilePcmkDevice"}, "heat::api_cloudwatch::bind_host": {"get_input": "heat_api_network"}, "public_virtual_interface": {"get_input": "public_virtual_interface"}, "neutron::server::allow_automatic_l3agent_failover": {"get_input": "neutron_allow_l3agent_failover"}, "neutron::agents::ml2::ovs::enable_tunneling": {"get_input": "neutron_enable_tunneling"}, "keystone::public_bind_host": {"get_input": "keystone_public_api_network"}, "nova::network::neutron::neutron_admin_auth_url": {"get_input": "neutron_admin_auth_url"}, "tripleo::ringbuilder::part_power": {"get_input": "swift_part_power"}, "nova::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "glance::api::debug": {"get_input": "debug"}, "swift::proxy::authtoken::admin_password": {"get_input": "swift_password"}, "cinder_nfs_servers": {"get_input": "cinder_nfs_servers"}, "neutron::agents::metadata::shared_secret": {"get_input": "neutron_metadata_proxy_shared_secret"}, "neutron::server::identity_uri": {"get_input": "keystone_identity_uri"}, "glance_backend": {"get_input": "glance_backend"}, "swift::proxy::proxy_local_net_ip": {"get_input": "swift_proxy_network"}, "nova::api::admin_password": {"get_input": "nova_password"}, "keystone::debug": {"get_input": "debug"}, "neutron::agents::metadata::auth_url": {"get_input": "keystone_identity_uri"}, "nova::database_connection": {"get_input": "nova_dsn"}, "glance::api::bind_port": {"get_input": "glance_port"}, "mysql_cluster_name": {"get_input": "mysql_cluster_name"}, "swift::proxy::authtoken::auth_uri": {"get_input": "keystone_auth_uri"}, "heat::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "neutron::agents::ml2::ovs::local_ip": {"get_input": "neutron_local_ip"}, "ceilometer::api::keystone_auth_uri": {"get_input": "keystone_auth_uri"}, "cinder::rabbit_use_ssl": {"get_input": "rabbit_client_use_ssl"}, "mysql::server::root_password": {"get_input": "mysql_root_password"}, "control_virtual_interface": {"get_input": "control_virtual_interface"}, "cinder_iscsi_helper": {"get_input": "cinder_iscsi_helper"}, "heat::rabbit_port": {"get_input": "rabbit_client_port"}, "neutron_flat_networks": {"get_input": "neutron_flat_networks"}, "ceilometer::rabbit_port": {"get_input": "rabbit_client_port"}, "heat::engine::heat_metadata_server_url": {"get_input": "heat.metadata_server_url"}, "enable_galera": {"get_input": "enable_galera"}, "nova::network::neutron::neutron_url": {"get_input": "neutron_url"}, "mysql_max_connections": {"get_input": "mysql_max_connections"}, "keystone_ssl_certificate_key": {"get_input": "keystone_ssl_certificate_key"}, "keystone::roles::admin::password": {"get_input": "admin_password"}, "glance::api::database_connection": {"get_input": "glance_dsn"}, "neutron::rabbit_port": {"get_input": "rabbit_client_port"}, "bootstack_nodeid": {"get_input": "bootstack_nodeid"}, "nova::api::auth_uri": {"get_input": "keystone_auth_uri"}, "mysql_innodb_buffer_pool_size": {"get_input": "mysql_innodb_buffer_pool_size"}, "cinder_enable_iscsi_backend": {"get_input": "cinder_enable_iscsi_backend"}, "glance::api::identity_uri": {"get_input": "keystone_identity_uri"}, "neutron::server::auth_uri": {"get_input": "keystone_auth_uri"}, "neutron_public_interface_default_route": {"get_input": "neutron_public_interface_default_route"}, "glance_notifier_strategy": {"get_input": "glance_notifier_strategy"}, "cinder::rabbit_userid": {"get_input": "rabbit_username"}, "heat::rabbit_password": {"get_input": "rabbit_password"}, "keystone::admin_bind_host": {"get_input": "keystone_admin_api_network"}, "neutron_public_interface_tag": {"get_input": "neutron_public_interface_tag"}, "neutron_tenant_network_type": {"get_input": "neutron_tenant_network_type"}, "neutron::rabbit_password": {"get_input": "rabbit_password"}, "keystone::admin_token": {"get_input": "admin_token"}, "enable_package_install": {"get_input": "enable_package_install"}, "ceilometer::agent::auth::auth_url": {"get_input": "keystone_auth_address"}}}, "object": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/object.yaml"}}, "common": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml"}}}}}}}, "InternalApiPort": {"type": "OS::TripleO::Controller::Ports::InternalApiPort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "NetIpSubnetMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"ExternalIp": {"get_attr": ["ExternalPort", "ip_subnet"]}, "StorageIp": {"get_attr": ["StoragePort", "ip_subnet"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_subnet"]}, "TenantIp": {"get_attr": ["TenantPort", "ip_subnet"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_subnet"]}}}, "UpdateDeployment": {"type": "OS::Heat::SoftwareDeployment", "properties": {"input_values": {"update_identifier": {"get_param": "UpdateIdentifier"}}, "config": {"get_resource": "UpdateConfig"}, "server": {"get_resource": "Controller"}}}, "StoragePort": {"type": "OS::TripleO::Controller::Ports::StoragePort", "properties": {"ControlPlaneIP": {"get_attr": ["Controller", "networks", "ctlplane", 0]}}}, "NetworkDeployment": {"type": "OS::TripleO::SoftwareDeployment", "properties": {"input_values": {"interface_name": {"get_param": "NeutronPublicInterface"}, "bridge_name": "br-ex"}, "config": {"get_resource": "NetworkConfig"}, "server": {"get_resource": "Controller"}}}, "Controller": {"type": "OS::Nova::Server", "properties": {"user_data_format": "SOFTWARE_CONFIG", "name": {"get_param": "Hostname"}, "key_name": {"get_param": "KeyName"}, "image": {"get_param": "Image"}, "image_update_policy": {"get_param": "ImageUpdatePolicy"}, "user_data": {"get_resource": "NodeUserData"}, "flavor": {"get_param": "Flavor"}, "networks": [{"network": "ctlplane"}]}}, "NetIpMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"ExternalIp": {"get_attr": ["ExternalPort", "ip_address"]}, "StorageIp": {"get_attr": ["StoragePort", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiPort", "ip_address"]}, "TenantIp": {"get_attr": ["TenantPort", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtPort", "ip_address"]}}}}}', u'file:///tmp/tmpVtTjeI/network/ports/ctlplane_vip.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the internal API network IP", "value": {"list_join": ["", [{"get_attr": ["VipPort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["VipPort", "subnets", 0, "cidr", -2]}, {"get_attr": ["VipPort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "Virtual IP network IP", "value": {"get_attr": ["VipPort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port for a VIP on the undercloud ctlplane network.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "NetworkName": {"default": "ctlplane", "type": "string", "description": null}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "ControlPlaneNetwork": {"default": "ctlplane", "type": "string", "description": "The name of the undercloud Neutron control plane"}}, "resources": {"VipPort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "ControlPlaneNetwork"}, "name": {"get_param": "PortName"}}}}}', u'file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.sh': '#!/bin/bash\n\n# A heat-config-script which runs yum update during a stack-update.\n# Inputs:\n# deploy_action - yum will only be run if this is UPDATE\n# update_identifier - yum will only run for previously unused values of update_identifier\n# command - yum sub-command to run, defaults to "update"\n# command_arguments - yum command arguments, defaults to ""\n\necho "Started yum_update.sh on server $deploy_server_id at `date`"\n\nif [[ -z "$update_identifier" ]]; then\n echo "Not running due to unset update_identifier"\n exit 0\nfi\n\ntimestamp_dir=/var/lib/overcloud-yum-update\nmkdir -p $timestamp_dir\n\n# sanitise to remove unusual characters\nupdate_identifier=${update_identifier//[^a-zA-Z0-9-_]/}\n\ntimestamp_file="$timestamp_dir/$update_identifier"\nif [[ -a "$timestamp_file" ]]; then\n echo "Not running for already-run timestamp \\"$update_identifier\\""\n exit 0\nfi\ntouch "$timestamp_file"\n\ncommand=${command:-update}\nfull_command="yum -y $command $command_arguments"\necho "Running: $full_command"\n\nresult=$($full_command)\nreturn_code=$?\necho "$result"\necho "yum return code: $return_code"\n\necho "Finished yum_update.sh on server $deploy_server_id at `date`"\n\nexit $return_code\n', u'file:///home/stack/nic-configs/controller.yaml': '{"outputs": {"OS::stack_id": {"description": "The OsNetConfigImpl resource.", "value": {"get_resource": "OsNetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the controller role.\\n", "parameters": {"TenantNetworkVlanID": {"default": 50, "type": "number", "description": "Vlan ID for the tenant network traffic."}, "TenantIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the tenant network"}, "BondInterfaceOvsOptions": {"default": "", "type": "string", "description": "The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option."}, "InternalApiIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the internal API network"}, "InternalApiNetworkVlanID": {"default": 20, "type": "number", "description": "Vlan ID for the internal_api network traffic."}, "StorageIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage network"}, "ExternalInterfaceDefaultRoute": {"default": "10.0.0.1", "type": "string", "description": "default route for the external network"}, "StorageMgmtIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the storage mgmt network"}, "StorageMgmtNetworkVlanID": {"default": 40, "type": "number", "description": "Vlan ID for the storage mgmt network traffic."}, "StorageNetworkVlanID": {"default": 30, "type": "number", "description": "Vlan ID for the storage network traffic."}, "ExternalNetworkVlanID": {"default": 10, "type": "number", "description": "Vlan ID for the external network traffic."}, "ExternalIpSubnet": {"default": "", "type": "string", "description": "IP address/subnet on the external network"}}, "resources": {"OsNetConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"os_net_config": {"network_config": [{"type": "ovs_bridge", "name": {"get_input": "bridge_name"}, "members": [{"ovs_options": {"get_param": "BondInterfaceOvsOptions"}, "type": "ovs_bond", "name": "bond1", "members": [{"type": "interface", "name": "nic5", "primary": true}, {"type": "interface", "name": "nic6"}]}, {"device": "bond1", "routes": [{"ip_netmask": "0.0.0.0/0", "next_hop": {"get_param": "ExternalInterfaceDefaultRoute"}}], "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "ExternalIpSubnet"}}], "vlan_id": {"get_param": "ExternalNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "InternalApiIpSubnet"}}], "vlan_id": {"get_param": "InternalApiNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageIpSubnet"}}], "vlan_id": {"get_param": "StorageNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "StorageMgmtIpSubnet"}}], "vlan_id": {"get_param": "StorageMgmtNetworkVlanID"}}, {"device": "bond1", "type": "vlan", "addresses": [{"ip_netmask": {"get_param": "TenantIpSubnet"}}], "vlan_id": {"get_param": "TenantNetworkVlanID"}}]}]}}}}}}', u'file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.yaml': '{"outputs": {"OS::stack_id": {"value": {"get_resource": "config"}}}, "heat_template_version": "2014-10-16", "description": "Software-config for performing package updates using yum\\n", "resources": {"config": {"type": "OS::Heat::SoftwareConfig", "properties": {"group": "script", "config": {"get_file": "file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.sh"}, "inputs": [{"default": "", "name": "update_identifier", "description": "yum will only run for previously unused values of update_identifier"}, {"default": "update", "name": "command", "description": "yum sub-command to run, defaults to \\"update\\""}, {"default": "", "name": "command_arguments", "description": "yum command arguments, defaults to \\"\\""}]}}}}', u'file:///tmp/tmpVtTjeI/network/ports/net_ip_list_map.yaml': '{"outputs": {"net_ip_map": {"description": "A Hash containing a mapping of network names to assigned lists of IP addresses.\\n", "value": {"storage_mgmt": {"get_param": "StorageMgmtIpList"}, "internal_api": {"get_param": "InternalApiIpList"}, "storage": {"get_param": "StorageIpList"}, "external": {"get_param": "ExternalIpList"}, "tenant": {"get_param": "TenantIpList"}}}}, "heat_template_version": "2015-04-30", "parameters": {"ExternalIpList": {"default": [], "type": "comma_delimited_list"}, "TenantIpList": {"default": [], "type": "comma_delimited_list"}, "StorageIpList": {"default": [], "type": "comma_delimited_list"}, "StorageMgmtIpList": {"default": [], "type": "comma_delimited_list"}, "InternalApiIpList": {"default": [], "type": "comma_delimited_list"}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml': '{"outputs": {"OS::stack_id": {"description": "Neutron internal network", "value": {"get_resource": "InternalApiNetwork"}}}, "heat_template_version": "2015-04-30", "description": "Internal API network. Used for most APIs, Database, RPC.\\n", "parameters": {"InternalApiSubnetName": {"default": "internal_api_subnet", "type": "string", "description": "The name of the internal API subnet in Neutron."}, "InternalApiNetCidr": {"default": "172.16.2.0/24", "type": "string", "description": "Cidr for the internal API network."}, "InternalApiAllocationPools": {"default": [{"start": "172.16.2.4", "end": "172.16.2.250"}], "type": "json", "description": "Ip allocation pool range for the internal API network."}, "InternalApiNetValueSpecs": {"default": {"provider:physical_network": "internal_api", "provider:network_type": "flat"}, "type": "string", "description": "Value specs for the internal API network."}, "InternalApiNetShared": {"default": false, "type": "boolean", "description": "Whether this network is shared across all tenants."}, "InternalApiNetEnableDHCP": {"default": false, "type": "boolean", "description": "Whether to enable DHCP on the associated subnet."}, "InternalApiNetAdminStateUp": {"default": false, "type": "boolean", "description": "This admin state of of the network."}, "InternalApiNetName": {"default": "internal_api", "type": "string", "description": "The name of the internal API network."}}, "resources": {"InternalApiNetwork": {"type": "OS::Neutron::Net", "properties": {"shared": {"get_param": "InternalApiNetShared"}, "admin_state_up": {"get_param": "InternalApiNetAdminStateUp"}, "value_specs": {"get_param": "InternalApiNetValueSpecs"}, "name": {"get_param": "InternalApiNetName"}}}, "InternalApiSubnet": {"type": "OS::Neutron::Subnet", "properties": {"network": {"get_resource": "InternalApiNetwork"}, "allocation_pools": {"get_param": "InternalApiAllocationPools"}, "cidr": {"get_param": "InternalApiNetCidr"}, "enable_dhcp": {"get_param": "InternalApiNetEnableDHCP"}, "name": {"get_param": "InternalApiSubnetName"}}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml': '{"outputs": {"OS::stack_id": {"description": "Neutron storage management network", "value": {"get_resource": "StorageMgmtNetwork"}}}, "heat_template_version": "2015-04-30", "description": "Storage management network. Storage replication, etc.\\n", "parameters": {"StorageMgmtAllocationPools": {"default": [{"start": "172.16.3.4", "end": "172.16.3.250"}], "type": "json", "description": "Ip allocation pool range for the storage mgmt network."}, "StorageMgmtNetCidr": {"default": "172.16.3.0/24", "type": "string", "description": "Cidr for the storage management network."}, "StorageMgmtSubnetName": {"default": "storage_mgmt_subnet", "type": "string", "description": "The name of the Storage management subnet in Neutron."}, "StorageMgmtNetValueSpecs": {"default": {"provider:physical_network": "storage_mgmt", "provider:network_type": "flat"}, "type": "string", "description": "Value specs for the storage_mgmt network."}, "StorageMgmtNetEnableDHCP": {"default": false, "type": "boolean", "description": "Whether to enable DHCP on the associated subnet."}, "StorageMgmtNetShared": {"default": false, "type": "boolean", "description": "Whether this network is shared across all tenants."}, "StorageMgmtNetAdminStateUp": {"default": false, "type": "boolean", "description": "This admin state of of the network."}, "StorageMgmtNetName": {"default": "storage_mgmt", "type": "string", "description": "The name of the Storage management network."}}, "resources": {"StorageMgmtNetwork": {"type": "OS::Neutron::Net", "properties": {"shared": {"get_param": "StorageMgmtNetShared"}, "admin_state_up": {"get_param": "StorageMgmtNetAdminStateUp"}, "value_specs": {"get_param": "StorageMgmtNetValueSpecs"}, "name": {"get_param": "StorageMgmtNetName"}}}, "StorageMgmtSubnet": {"type": "OS::Neutron::Subnet", "properties": {"network": {"get_resource": "StorageMgmtNetwork"}, "allocation_pools": {"get_param": "StorageMgmtAllocationPools"}, "cidr": {"get_param": "StorageMgmtNetCidr"}, "enable_dhcp": {"get_param": "StorageMgmtNetEnableDHCP"}, "name": {"get_param": "StorageMgmtSubnetName"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/swift-devices-and-proxy-config.yaml': '{"outputs": {"config_id": {"description": "The ID of the SwiftDevicesAndProxyConfigImpl resource.", "value": {"get_resource": "SwiftDevicesAndProxyConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "Swift Devices and Proxy Config for Puppet", "parameters": {"controller_swift_devices": {"type": "comma_delimited_list"}, "object_store_swift_devices": {"type": "comma_delimited_list"}, "controller_swift_proxy_memcaches": {"type": "comma_delimited_list"}}, "resources": {"SwiftDevicesAndProxyConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"group": "os-apply-config", "config": {"hiera": {"datafiles": {"swift_devices_and_proxy": {"mapped_data": {"swift::proxy::cache::memcache_servers": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "controller_swift_proxy_memcaches"}]}}, "template": "[\'SERVERS_LIST\']"}}, "tripleo::ringbuilder::devices": {"list_join": [", ", [{"list_join": [", ", {"get_param": "controller_swift_devices"}]}, {"list_join": [", ", {"get_param": "object_store_swift_devices"}]}]]}}}}}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/controller-config-pacemaker.yaml': '{"outputs": {"OS::stack_id": {"description": "The software config which runs overcloud_controller_pacemaker.pp", "value": {"get_resource": "ControllerPuppetConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "A software config which runs manifests/overcloud_controller_pacemaker.pp\\n", "resources": {"ControllerPuppetConfigImpl": {"type": "OS::Heat::SoftwareConfig", "properties": {"outputs": [{"name": "result"}], "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_controller_pacemaker.pp"}, "options": {"enable_hiera": true, "enable_facter": false}, "group": "puppet"}}}}', u'file:///tmp/tmpVtTjeI/puppet/compute-post-puppet.yaml': '{"heat_template_version": "2015-04-30", "description": "OpenStack compute node post deployment for Puppet.\\n", "parameters": {"servers": {"type": "json"}, "NodeConfigIdentifiers": {"type": "json", "description": "Value which changes if the node configuration may need to be re-applied"}}, "resources": {"ComputePuppetConfig": {"type": "OS::Heat::SoftwareConfig", "properties": {"outputs": [{"name": "result"}], "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_compute.pp"}, "group": "puppet"}}, "ComputePuppetDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ComputePuppetConfig"}, "servers": {"get_param": "servers"}}}, "ExtraConfig": {"depends_on": "ComputePuppetDeployment", "type": "OS::TripleO::NodeExtraConfigPost", "properties": {"servers": {"get_param": "servers"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/all-nodes-config.yaml': '{"outputs": {"config_id": {"description": "The ID of the allNodesConfigImpl resource.", "value": {"get_resource": "allNodesConfigImpl"}}}, "heat_template_version": "2015-04-30", "description": "All Nodes Config for Puppet", "parameters": {"redis_node_ips": {"type": "comma_delimited_list"}, "glance_registry_node_ips": {"type": "comma_delimited_list"}, "rabbit_node_ips": {"type": "comma_delimited_list"}, "ceilometer_api_node_ips": {"type": "comma_delimited_list"}, "keystone_admin_api_node_ips": {"type": "comma_delimited_list"}, "glance_api_node_ips": {"type": "comma_delimited_list"}, "keystone_public_api_node_ips": {"type": "comma_delimited_list"}, "compute_hosts": {"type": "comma_delimited_list"}, "nova_api_node_ips": {"type": "comma_delimited_list"}, "mongo_node_ips": {"type": "comma_delimited_list"}, "neutron_api_node_ips": {"type": "comma_delimited_list"}, "memcache_node_ips": {"type": "comma_delimited_list"}, "object_storage_hosts": {"type": "comma_delimited_list"}, "controller_hosts": {"type": "comma_delimited_list"}, "nova_metadata_node_ips": {"type": "comma_delimited_list"}, "controller_ips": {"type": "comma_delimited_list"}, "mysql_node_ips": {"type": "comma_delimited_list"}, "controller_names": {"type": "comma_delimited_list"}, "horizon_node_ips": {"type": "comma_delimited_list"}, "swift_proxy_node_ips": {"type": "comma_delimited_list"}, "heat_api_node_ips": {"type": "comma_delimited_list"}, "ceph_storage_hosts": {"type": "comma_delimited_list"}, "block_storage_hosts": {"type": "comma_delimited_list"}, "cinder_api_node_ips": {"type": "comma_delimited_list"}}, "resources": {"allNodesConfigImpl": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"hosts": {"list_join": ["\\n", [{"list_join": ["\\n", {"get_param": "compute_hosts"}]}, {"list_join": ["\\n", {"get_param": "controller_hosts"}]}, {"list_join": ["\\n", {"get_param": "block_storage_hosts"}]}, {"list_join": ["\\n", {"get_param": "object_storage_hosts"}]}, {"list_join": ["\\n", {"get_param": "ceph_storage_hosts"}]}]]}, "hiera": {"datafiles": {"all_nodes": {"mapped_data": {"redis_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "redis_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "glance_registry_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "glance_registry_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "rabbit_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "rabbit_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "ceilometer_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "ceilometer_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "keystone_admin_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "keystone_admin_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "galera_node_names": {"list_join": [",", {"get_param": "controller_names"}]}, "keystone_public_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "keystone_public_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "nova::rabbit_hosts": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "rabbit_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "nova_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "nova_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "mongo_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "mongo_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "controller_node_names": {"list_join": [",", {"get_param": "controller_names"}]}, "neutron_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "neutron_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "cinder::rabbit_hosts": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "rabbit_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "memcache_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "memcache_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "swift_proxy_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "swift_proxy_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "nova_metadata_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "nova_metadata_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "mysql_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "mysql_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "controller_node_ips": {"list_join": [",", {"get_param": "controller_ips"}]}, "heat::rabbit_hosts": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "rabbit_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "horizon_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "horizon_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "heat_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "heat_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "glance_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "glance_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "neutron::rabbit_hosts": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "rabbit_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "ceilometer::rabbit_hosts": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "rabbit_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}, "cinder_api_node_ips": {"str_replace": {"params": {"SERVERS_LIST": {"list_join": ["\',\'", {"get_param": "cinder_api_node_ips"}]}}, "template": "[\'SERVERS_LIST\']"}}}}, "RedHat": {"raw_data": {"get_file": "file:///tmp/tmpVtTjeI/puppet/hieradata/RedHat.yaml"}}}}, "completion-signal": {"get_input": "deploy_signal_id"}}}}}}', u'file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_cephstorage.pp': '# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the "License"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif !str2bool(hiera(\'enable_package_install\', \'false\')) {\n case $::osfamily {\n \'RedHat\': {\n Package { provider => \'norpm\' } # provided by tripleo-puppet\n }\n default: {\n warning(\'enable_package_install option not supported.\')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera(\'sysctl_settings\'), {})\n\nif count(hiera(\'ntp::servers\')) > 0 {\n include ::ntp\n}\n\nif str2bool(hiera(\'ceph_osd_selinux_permissive\', true)) {\n exec { \'set selinux to permissive on boot\':\n command => "sed -ie \'s/^SELINUX=.*/SELINUX=permissive/\' /etc/selinux/config",\n onlyif => "test -f /etc/selinux/config && ! grep \'^SELINUX=permissive\' /etc/selinux/config",\n path => ["/usr/bin", "/usr/sbin"],\n }\n\n exec { \'set selinux to permissive\':\n command => "setenforce 0",\n onlyif => "which setenforce && getenforce | grep -i \'enforcing\'",\n path => ["/usr/bin", "/usr/sbin"],\n } -> Class[\'ceph::profile::osd\']\n}\n\ninclude ::ceph::profile::client\ninclude ::ceph::profile::osd', u'file:///tmp/tmpVtTjeI/network/ports/net_ip_map.yaml': '{"outputs": {"net_ip_map": {"description": "A Hash containing a mapping of network names to assigned IPs for a specific machine.\\n", "value": {"storage_mgmt": {"get_param": "StorageMgmtIp"}, "internal_api": {"get_param": "InternalApiIp"}, "storage": {"get_param": "StorageIp"}, "external": {"get_param": "ExternalIp"}, "tenant": {"get_param": "TenantIp"}}}}, "heat_template_version": "2015-04-30", "parameters": {"ExternalIp": {"default": "", "type": "string"}, "StorageIp": {"default": "", "type": "string"}, "InternalApiIp": {"default": "", "type": "string"}, "TenantIp": {"default": "", "type": "string"}, "StorageMgmtIp": {"default": "", "type": "string"}}}', u'file:///tmp/tmpVtTjeI/hieradata/common.yaml': "# Common Hiera data gets applied to all nodes\nssh::server::storeconfigs_enabled: false\n\n# ceilometer settings used by compute and controller ceilo auth settings\nceilometer::agent::auth::auth_region: 'regionOne'\n# FIXME: Might be better to use 'service' tenant here but this requires\n# changes in the tripleo-incubator keystone role setup\nceilometer::agent::auth::auth_tenant_name: 'admin'\n\nnova::network::neutron::neutron_admin_tenant_name: 'service'\nnova::network::neutron::neutron_admin_username: 'neutron'\nnova::network::neutron::vif_plugging_is_fatal: false\nnova::network::neutron::vif_plugging_timeout: 30\nnova::network::neutron::dhcp_domain: ''\n\nneutron::allow_overlapping_ips: true\nneutron::plugins::ml2::type_drivers:\n - flat\n - gre\n - vxlan\n - vlan\n\nsysctl_settings:\n net.ipv4.tcp_keepalive_intvl:\n value: 1\n net.ipv4.tcp_keepalive_probes:\n value: 5\n net.ipv4.tcp_keepalive_time:\n value: 5\n", u'file:///tmp/tmpVtTjeI/hieradata/compute.yaml': '# Hiera data here applies to all compute nodes\n\nnova::notify_on_state_change: \'vm_and_task_state\'\n\nnova::compute::enabled: true\nnova::compute::instance_usage_audit: true\nnova::compute::instance_usage_audit_period: \'hour\'\nnova::compute::vnc_enabled: true\n\nnova::compute::libvirt::vncserver_listen: \'0.0.0.0\'\nnova::compute::libvirt::migration_support: true\n\nnova::compute::rbd::libvirt_rbd_user: \'openstack\'\nnova::compute::rbd::rbd_keyring: \'client.openstack\'\nnova::compute::rbd::libvirt_images_rbd_pool: \'vms\'\nnova::compute::rbd::libvirt_rbd_secret_uuid: "%{hiera(\'ceph::profile::params::fsid\')}"\n\nnova::config::nova_config:\n cinder/catalog_info:\n value: \'volumev2:cinderv2:internalURL\'\n\nceilometer::agent::auth::auth_tenant_name: \'service\'\n', u'file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml': 'ceph::profile::params::osd_journal_size: 1024\nceph::profile::params::osd_pool_default_pg_num: 128\nceph::profile::params::osd_pool_default_pgp_num: 128\nceph::profile::params::osd_pool_default_size: 3\nceph::profile::params::osd_pool_default_min_size: 1\nceph::profile::params::osds: {/srv/data: {}}\nceph::profile::params::manage_repo: false\nceph::profile::params::authentication_type: cephx\n\nceph_pools:\n - volumes\n - vms\n - images\n\nceph_osd_selinux_permissive: true\n', u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the internal API network IP", "value": {"list_join": ["", [{"get_attr": ["VipPort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["VipPort", "subnets", 0, "cidr", -2]}, {"get_attr": ["VipPort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "Virtual IP network IP", "value": {"get_attr": ["VipPort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port for a VIP on the isolated network NetworkName.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "NetworkName": {"default": "internal_api", "type": "string", "description": "Name of the network where the VIP will be created"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}, "ControlPlaneNetwork": {"default": "ctlplane", "type": "string", "description": "The name of the undercloud Neutron control plane"}}, "resources": {"VipPort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "NetworkName"}, "name": {"get_param": "PortName"}}}}}', u'file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml': '{"outputs": {"ip_subnet": {"description": "IP/Subnet CIDR for the storage_mgmt network IP", "value": {"list_join": ["", [{"get_attr": ["StorageMgmtPort", "fixed_ips", 0, "ip_address"]}, "/", {"get_attr": ["StorageMgmtPort", "subnets", 0, "cidr", -2]}, {"get_attr": ["StorageMgmtPort", "subnets", 0, "cidr", -1]}]]}}, "ip_address": {"description": "storage_mgmt network IP", "value": {"get_attr": ["StorageMgmtPort", "fixed_ips", 0, "ip_address"]}}}, "heat_template_version": "2015-04-30", "description": "Creates a port on the storage_mgmt API network.\\n", "parameters": {"PortName": {"default": "", "type": "string", "description": "Name of the port"}, "StorageMgmtNetName": {"default": "storage_mgmt", "type": "string", "description": "Name of the storage_mgmt API neutron network"}, "ControlPlaneIP": {"type": "string", "description": "IP address on the control plane"}}, "resources": {"StorageMgmtPort": {"type": "OS::Neutron::Port", "properties": {"replacement_policy": "AUTO", "network": {"get_param": "StorageMgmtNetName"}, "name": {"get_param": "PortName"}}}}}', u'file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_compute.pp': '# Copyright 2014 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the "License"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif !str2bool(hiera(\'enable_package_install\', \'false\')) {\n case $::osfamily {\n \'RedHat\': {\n Package { provider => \'norpm\' } # provided by tripleo-puppet\n }\n default: {\n warning(\'enable_package_install option not supported.\')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera(\'sysctl_settings\'), {})\n\nif count(hiera(\'ntp::servers\')) > 0 {\n include ::ntp\n}\n\nfile { [\'/etc/libvirt/qemu/networks/autostart/default.xml\',\n \'/etc/libvirt/qemu/networks/default.xml\']:\n ensure => absent,\n before => Service[\'libvirt\']\n}\n# in case libvirt has been already running before the Puppet run, make\n# sure the default network is destroyed\nexec { \'libvirt-default-net-destroy\':\n command => \'/usr/bin/virsh net-destroy default\',\n onlyif => \'/usr/bin/virsh net-info default | /bin/grep -i "^active:\\s*yes"\',\n before => Service[\'libvirt\'],\n}\n\ninclude ::nova\ninclude ::nova::config\ninclude ::nova::compute\n\nnova_config {\n \'DEFAULT/my_ip\': value => $ipaddress;\n \'DEFAULT/linuxnet_interface_driver\': value => \'nova.network.linux_net.LinuxOVSInterfaceDriver\';\n}\n\n$nova_enable_rbd_backend = hiera(\'nova_enable_rbd_backend\', false)\nif $nova_enable_rbd_backend {\n include ::ceph::profile::client\n\n $client_keys = hiera(\'ceph::profile::params::client_keys\')\n class { \'::nova::compute::rbd\':\n libvirt_rbd_secret_key => $client_keys[\'client.openstack\'][\'secret\'],\n }\n}\n\nif hiera(\'cinder_enable_nfs_backend\', false) {\n if ($::selinux != "false") {\n selboolean { \'virt_use_nfs\':\n value => on,\n persistent => true,\n } -> Package[\'nfs-utils\']\n }\n\n package {\'nfs-utils\': } -> Service[\'nova-compute\']\n}\n\ninclude ::nova::compute::libvirt\ninclude ::nova::network::neutron\ninclude ::neutron\n\nclass { \'neutron::plugins::ml2\':\n flat_networks => split(hiera(\'neutron_flat_networks\'), \',\'),\n tenant_network_types => [hiera(\'neutron_tenant_network_type\')],\n}\n\nclass { \'neutron::agents::ml2::ovs\':\n bridge_mappings => split(hiera(\'neutron_bridge_mappings\'), \',\'),\n tunnel_types => split(hiera(\'neutron_tunnel_types\'), \',\'),\n}\n\ninclude ::ceilometer\ninclude ::ceilometer::agent::compute\ninclude ::ceilometer::agent::auth\n\n$snmpd_user = hiera(\'snmpd_readonly_user_name\')\nsnmp::snmpv3_user { $snmpd_user:\n authtype => \'MD5\',\n authpass => hiera(\'snmpd_readonly_user_password\'),\n}\nclass { \'snmp\':\n agentaddress => [\'udp:161\',\'udp6:[::1]:161\'],\n snmpd_config => [ join([\'rouser \', hiera(\'snmpd_readonly_user_name\')]), \'proc cron\', \'includeAllDisks 10%\', \'master agentx\', \'trapsink localhost public\', \'iquerySecName internalUser\', \'rouser internalUser\', \'defaultMonitors yes\', \'linkUpDownNotifications yes\' ],\n}\n', u'file:///tmp/tmpVtTjeI/puppet/controller-post-puppet.yaml': '{"heat_template_version": "2015-04-30", "description": "OpenStack controller node post deployment for Puppet.\\n", "parameters": {"servers": {"type": "json"}, "NodeConfigIdentifiers": {"type": "json", "description": "Value which changes if the node configuration may need to be re-applied"}}, "resources": {"ControllerLoadBalancerDeployment_Step1": {"type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"step": 1, "update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerPuppetConfig"}, "actions": ["CREATE"], "servers": {"get_param": "servers"}}}, "ControllerRingbuilderPuppetConfig": {"type": "OS::Heat::SoftwareConfig", "properties": {"inputs": null, "config": {"get_file": "file:///tmp/tmpVtTjeI/puppet/manifests/ringbuilder.pp"}, "options": {"enable_hiera": true, "enable_facter": false}, "outputs": [{"name": "result"}], "group": "puppet"}}, "ExtraConfig": {"depends_on": "ControllerOvercloudServicesDeployment_Step7", "type": "OS::TripleO::NodeExtraConfigPost", "properties": {"servers": {"get_param": "servers"}}}, "ControllerPuppetConfig": {"type": "OS::TripleO::ControllerConfig"}, "ControllerRingbuilderDeployment_Step3": {"depends_on": "ControllerServicesBaseDeployment_Step2", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerRingbuilderPuppetConfig"}, "servers": {"get_param": "servers"}}}, "ControllerOvercloudServicesDeployment_Step4": {"depends_on": "ControllerRingbuilderDeployment_Step3", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"step": 3, "update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerPuppetConfig"}, "servers": {"get_param": "servers"}}}, "ControllerOvercloudServicesDeployment_Step5": {"depends_on": "ControllerOvercloudServicesDeployment_Step4", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"step": 4, "update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerPuppetConfig"}, "servers": {"get_param": "servers"}}}, "ControllerOvercloudServicesDeployment_Step6": {"depends_on": "ControllerOvercloudServicesDeployment_Step5", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"step": 5, "update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerPuppetConfig"}, "servers": {"get_param": "servers"}}}, "ControllerOvercloudServicesDeployment_Step7": {"depends_on": "ControllerOvercloudServicesDeployment_Step6", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"step": 6, "update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerPuppetConfig"}, "servers": {"get_param": "servers"}}}, "ControllerServicesBaseDeployment_Step2": {"depends_on": "ControllerLoadBalancerDeployment_Step1", "type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"step": 2, "update_identifier": {"get_param": "NodeConfigIdentifiers"}}, "config": {"get_resource": "ControllerPuppetConfig"}, "actions": ["CREATE"], "servers": {"get_param": "servers"}}}}}'}
INFO: rdomanager_oscplugin.v1.overcloud_deploy.DeployOvercloud Performing Heat stack create
DEBUG: heatclient.common.http curl -g -i -X POST -H 'X-Auth-User: admin' -H 'X-Auth-Token: {SHA1}729830e7c5157be9850feef95ea5903cff9cdc11' -H 'X-Auth-Key: edaaf4e6eec66dec04602f3e9ba892a0c0f416a7' -H 'Accept: application/json' -H 'User-Agent: python-heatclient' -H 'Content-Type: application/json' -H 'X-Auth-Url: http://192.0.2.1:5000/v2.0' -d '{"files": {"file:///home/stack/nic-configs/ceph-storage.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the ceph storage role.\\n\", \"parameters\": {\"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"BondInterfaceOvsOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option.\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"StorageMgmtNetworkVlanID\": {\"default\": 40, \"type\": \"number\", \"description\": \"Vlan ID for the storage mgmt network traffic.\"}, \"StorageNetworkVlanID\": {\"default\": 30, \"type\": \"number\", \"description\": \"Vlan ID for the storage network traffic.\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"os_net_config\": {\"network_config\": [{\"type\": \"ovs_bridge\", \"name\": \"br-bond\", \"members\": [{\"ovs_options\": {\"get_param\": \"BondInterfaceOvsOptions\"}, \"type\": \"ovs_bond\", \"name\": \"bond1\", \"members\": [{\"type\": \"interface\", \"name\": \"nic5\", \"primary\": true}, {\"type\": \"interface\", \"name\": \"nic6\"}]}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageMgmtIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageMgmtNetworkVlanID\"}}]}]}}}}}}", "file:///tmp/tmpVtTjeI/puppet/extraconfig/pre_deploy/default.yaml": "{\"outputs\": {\"deploy_stdout\": {\"value\": \"None\"}}, \"heat_template_version\": \"2014-10-16\", \"description\": \"Noop Extra Pre-Deployment Config\", \"parameters\": {\"server\": {\"type\": \"string\"}}}", "file:///tmp/tmpVtTjeI/hieradata/ceph.yaml": "ceph::profile::params::osd_journal_size: 1024\nceph::profile::params::osd_pool_default_pg_num: 128\nceph::profile::params::osd_pool_default_pgp_num: 128\nceph::profile::params::osd_pool_default_size: 3\nceph::profile::params::osd_pool_default_min_size: 1\nceph::profile::params::osds: {/srv/data: {}}\nceph::profile::params::manage_repo: false\nceph::profile::params::authentication_type: cephx\n\nceph_pools:\n - volumes\n - vms\n - images\n\nceph_osd_selinux_permissive: true\n", "file:///tmp/tmpVtTjeI/provider-Ceph-Storage-1.yaml": "{\"outputs\": {\"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"CephStorageDeployment\", \"deploy_stdout\"]}}, \"hosts_entry\": {\"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephStorageHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"CephStorage\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the ceph storage server\", \"value\": {\"get_resource\": \"CephStorage\"}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack ceph storage node configured by Puppet\", \"parameters\": {\"ImageUpdatePolicy\": {\"default\": \"REBUILD_PRESERVE_EPHEMERAL\", \"type\": \"string\", \"description\": \"What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\", \"constraints\": [{\"custom_constraint\": \"nova.keypair\"}]}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for the Ceph Storage node.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"Image\": {\"default\": \"overcloud-ceph-storage\", \"type\": \"string\", \"constraints\": [{\"custom_constraint\": \"glance.image\"}]}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"CephStorageConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"ceph_cluster\", \"ceph\", \"RedHat\", \"common\"], \"datafiles\": {\"ceph\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/ceph.yaml\"}, \"mapped_data\": {\"ceph::profile::params::cluster_network\": {\"get_input\": \"ceph_cluster_network\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"ceph::profile::params::public_network\": {\"get_input\": \"ceph_public_network\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/common.yaml\"}}}}}, \"group\": \"os-apply-config\"}}, \"CephStorage\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"image_update_policy\": {\"get_param\": \"ImageUpdatePolicy\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::CephStorage::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"CephStorage\"}}}, \"StoragePort\": {\"type\": \"OS::TripleO::CephStorage::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"CephStorage\", \"networks\", \"ctlplane\", 0]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::CephStorage::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"CephStorage\", \"networks\", \"ctlplane\", 0]}}}, \"NetIpSubnetMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"CephStorage\"}}}, \"CephStorageDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::Heat::StructuredDeployment\", \"properties\": {\"input_values\": {\"ceph_public_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephPublicNetwork\"]}]}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"ceph_cluster_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephClusterNetwork\"]}]}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}}, \"config\": {\"get_resource\": \"CephStorageConfig\"}, \"server\": {\"get_resource\": \"CephStorage\"}}}}}", "file:///tmp/tmpVtTjeI/firstboot/userdata_default.yaml": "{\"outputs\": {\"OS::stack_id\": {\"value\": {\"get_resource\": \"userdata\"}}}, \"heat_template_version\": \"2014-10-16\", \"description\": \"This is a default no-op template which provides empty user-data which can be passed to the OS::Nova::Server resources. This template can be replaced with a different implementation via the resource registry, such that deployers may customize their first-boot configuration.\\n\", \"resources\": {\"userdata\": {\"type\": \"OS::Heat::MultipartMime\"}}}", "file:///home/stack/nic-configs/swift-storage.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the swift storage role.\\n\", \"parameters\": {\"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"BondInterfaceOvsOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option.\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"InternalApiNetworkVlanID\": {\"default\": 20, \"type\": \"number\", \"description\": \"Vlan ID for the internal_api network traffic.\"}, \"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"StorageMgmtNetworkVlanID\": {\"default\": 40, \"type\": \"number\", \"description\": \"Vlan ID for the storage mgmt network traffic.\"}, \"StorageNetworkVlanID\": {\"default\": 30, \"type\": \"number\", \"description\": \"Vlan ID for the storage network traffic.\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"os_net_config\": {\"network_config\": [{\"type\": \"ovs_bridge\", \"name\": \"br-bond\", \"members\": [{\"ovs_options\": {\"get_param\": \"BondInterfaceOvsOptions\"}, \"type\": \"ovs_bond\", \"name\": \"bond1\", \"members\": [{\"type\": \"interface\", \"name\": \"nic5\", \"primary\": true}, {\"type\": \"interface\", \"name\": \"nic6\"}]}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"InternalApiIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"InternalApiNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageMgmtIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageMgmtNetworkVlanID\"}}]}]}}}}}}", "file:///tmp/tmpVtTjeI/puppet/ceph-storage-puppet.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hosts_entry\": {\"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephStorageHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"CephStorage\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the ceph storage server\", \"value\": {\"get_resource\": \"CephStorage\"}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"CephStorageDeployment\", \"deploy_stdout\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack ceph storage node configured by Puppet\", \"parameters\": {\"ImageUpdatePolicy\": {\"default\": \"REBUILD_PRESERVE_EPHEMERAL\", \"type\": \"string\", \"description\": \"What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\", \"constraints\": [{\"custom_constraint\": \"nova.keypair\"}]}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for the Ceph Storage node.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"Image\": {\"default\": \"overcloud-ceph-storage\", \"type\": \"string\", \"constraints\": [{\"custom_constraint\": \"glance.image\"}]}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"CephStorage\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"image_update_policy\": {\"get_param\": \"ImageUpdatePolicy\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"CephStorageConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"ceph_cluster\", \"ceph\", \"RedHat\", \"common\"], \"datafiles\": {\"ceph\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml\"}, \"mapped_data\": {\"ceph::profile::params::cluster_network\": {\"get_input\": \"ceph_cluster_network\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"ceph::profile::params::public_network\": {\"get_input\": \"ceph_public_network\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml\"}}}}}}}, \"StoragePort\": {\"type\": \"OS::TripleO::CephStorage::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"CephStorage\", \"networks\", \"ctlplane\", 0]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::CephStorage::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"CephStorage\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::CephStorage::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"CephStorage\"}}}, \"NetIpSubnetMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"CephStorage\"}}}, \"CephStorageDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::Heat::StructuredDeployment\", \"properties\": {\"input_values\": {\"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"ceph_public_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephPublicNetwork\"]}]}, \"ceph_cluster_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephClusterNetwork\"]}]}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}}, \"config\": {\"get_resource\": \"CephStorageConfig\"}, \"server\": {\"get_resource\": \"CephStorage\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/cinder-storage-post.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack cinder storage post deployment for Puppet\", \"parameters\": {\"servers\": {\"type\": \"json\"}, \"NodeConfigIdentifiers\": {\"type\": \"json\", \"description\": \"Value which changes if the node configuration may need to be re-applied\"}}, \"resources\": {\"VolumePuppetConfig\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"outputs\": [{\"name\": \"result\"}], \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_volume.pp\"}, \"group\": \"puppet\"}}, \"VolumeDeployment_Step1\": {\"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"config\": {\"get_resource\": \"VolumePuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}}}", "file:///tmp/tmpVtTjeI/net-config-bridge.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to drive os-net-config for a simple bridge.\\n\", \"parameters\": {\"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"os_net_config\": {\"network_config\": [{\"use_dhcp\": true, \"type\": \"ovs_bridge\", \"name\": {\"get_input\": \"bridge_name\"}, \"members\": [{\"type\": \"interface\", \"name\": {\"get_input\": \"interface_name\"}, \"primary\": true}]}]}}}}}}", "file:///tmp/tmpVtTjeI/puppet/ceph-storage-post-puppet.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack ceph storage node post deployment for Puppet\\n\", \"parameters\": {\"servers\": {\"type\": \"json\"}, \"NodeConfigIdentifiers\": {\"type\": \"json\", \"description\": \"Value which changes if the node configuration may need to be re-applied\"}}, \"resources\": {\"CephStoragePuppetConfig\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"outputs\": [{\"name\": \"result\"}], \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_cephstorage.pp\"}, \"group\": \"puppet\"}}, \"CephStorageDeployment_Step1\": {\"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"CephStoragePuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ExtraConfig\": {\"depends_on\": \"CephStorageDeployment_Step1\", \"type\": \"OS::TripleO::NodeExtraConfigPost\", \"properties\": {\"servers\": {\"get_param\": \"servers\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml": "# Common Hiera data gets applied to all nodes\nssh::server::storeconfigs_enabled: false\n\n# ceilometer settings used by compute and controller ceilo auth settings\nceilometer::agent::auth::auth_region: 'regionOne'\n# FIXME: Might be better to use 'service' tenant here but this requires\n# changes in the tripleo-incubator keystone role setup\nceilometer::agent::auth::auth_tenant_name: 'admin'\n\nnova::network::neutron::neutron_admin_tenant_name: 'service'\nnova::network::neutron::neutron_admin_username: 'neutron'\nnova::network::neutron::vif_plugging_is_fatal: false\nnova::network::neutron::vif_plugging_timeout: 30\nnova::network::neutron::dhcp_domain: ''\n\nneutron::allow_overlapping_ips: true\nneutron::plugins::ml2::type_drivers:\n - flat\n - gre\n - vxlan\n - vlan\n\nsysctl_settings:\n net.ipv4.tcp_keepalive_intvl:\n value: 1\n net.ipv4.tcp_keepalive_probes:\n value: 5\n net.ipv4.tcp_keepalive_time:\n value: 5\n", "file:///home/stack/nic-configs/cinder-storage.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the cinder storage role.\\n\", \"parameters\": {\"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"BondInterfaceOvsOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option.\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"InternalApiNetworkVlanID\": {\"default\": 20, \"type\": \"number\", \"description\": \"Vlan ID for the internal_api network traffic.\"}, \"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"StorageMgmtNetworkVlanID\": {\"default\": 40, \"type\": \"number\", \"description\": \"Vlan ID for the storage mgmt network traffic.\"}, \"StorageNetworkVlanID\": {\"default\": 30, \"type\": \"number\", \"description\": \"Vlan ID for the storage network traffic.\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"os_net_config\": {\"network_config\": [{\"type\": \"ovs_bridge\", \"name\": \"br-bond\", \"members\": [{\"ovs_options\": {\"get_param\": \"BondInterfaceOvsOptions\"}, \"type\": \"ovs_bond\", \"name\": \"bond1\", \"members\": [{\"type\": \"interface\", \"name\": \"nic5\", \"primary\": true}, {\"type\": \"interface\", \"name\": \"nic6\"}]}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"InternalApiIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"InternalApiNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageMgmtIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageMgmtNetworkVlanID\"}}]}]}}}}}}", "file:///tmp/tmpVtTjeI/network/noop.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"A stack which creates no network(s).\"}", "file:///tmp/tmpVtTjeI/provider-Cinder-Storage-1.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hosts_entry\": {\"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"BlockStorageHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"BlockStorage\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"BlockStorageDeployment\", \"deploy_stdout\"]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the block storage server\", \"value\": {\"get_resource\": \"BlockStorage\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack cinder storage configured by Puppet\", \"parameters\": {\"CinderEnableIscsiBackend\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Iscsi backend for Cinder\"}, \"RabbitClientUseSSL\": {\"default\": false, \"type\": \"string\", \"description\": \"Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"RabbitPassword\": {\"default\": \"guest\", \"type\": \"string\"}, \"GlancePort\": {\"default\": \"9292\", \"type\": \"string\", \"description\": \"Glance port.\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"RabbitUserName\": {\"default\": \"guest\", \"type\": \"string\"}, \"Debug\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Set to True to enable debugging on all services.\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"MysqlVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"VirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"GlanceProtocol\": {\"default\": \"http\", \"type\": \"string\", \"description\": \"Protocol to use when connecting to glance, set to https for SSL.\"}, \"RabbitClientPort\": {\"default\": 5672, \"type\": \"number\", \"description\": \"Set rabbit subscriber port, change this if using SSL\"}, \"Image\": {\"default\": \"overcloud-cinder-volume\", \"type\": \"string\"}, \"ExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\\"FILEKEY\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"SECTIONNAME\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"OPTIONNAME\\\",\\n \\\"value\\\": \\\"VALUENAME\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\\"nova\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"default\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"force_config_drive\\\",\\n \\\"value\\\": \\\"always\\\"\\n }\\n ]\\n },\\n {\\\"section\\\": \\\"cells\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"driver\\\",\\n \\\"value\\\": \\\"nova.cells.rpc_driver.CellsRPCDriver\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"GlanceApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}, \"CinderISCSIHelper\": {\"default\": \"tgtadm\", \"type\": \"string\", \"description\": \"The iSCSI helper to use with cinder.\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for block storage nodes to request when deploying.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"CinderLVMLoopDeviceSize\": {\"default\": 5000, \"type\": \"number\", \"description\": \"The size of the loopback file used by the cinder LVM driver.\"}, \"CinderPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the cinder service and db account, used by cinder-api.\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"BlockStorage\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"BlockStorageConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"volume\", \"all_nodes\", \"RedHat\", \"common\"], \"datafiles\": {\"volume\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/volume.yaml\"}, \"mapped_data\": {\"cinder::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"cinder::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"cinder::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"cinder::glance::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"cinder_iscsi_helper\": {\"get_input\": \"cinder_iscsi_helper\"}, \"cinder::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"cinder::setup_test_volume::size\": {\"get_input\": \"cinder_lvm_loop_device_size\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"cinder::database_connection\": {\"get_input\": \"cinder_dsn\"}, \"cinder_iscsi_ip_address\": {\"get_input\": \"cinder_iscsi_ip_address\"}, \"cinder_enable_iscsi_backend\": {\"get_input\": \"cinder_enable_iscsi_backend\"}, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"cinder::debug\": {\"get_input\": \"debug\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/common.yaml\"}}}}}, \"group\": \"os-apply-config\"}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::BlockStorage::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"BlockStorage\"}}}, \"StoragePort\": {\"type\": \"OS::TripleO::BlockStorage::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"BlockStorage\", \"networks\", \"ctlplane\", 0]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"InternalApiPort\": {\"type\": \"OS::TripleO::BlockStorage::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"BlockStorage\", \"networks\", \"ctlplane\", 0]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::BlockStorage::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"BlockStorage\", \"networks\", \"ctlplane\", 0]}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"BlockStorageDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::Heat::StructuredDeployment\", \"properties\": {\"input_values\": {\"cinder_lvm_loop_device_size\": {\"str_replace\": {\"params\": {\"size\": {\"get_param\": \"CinderLVMLoopDeviceSize\"}}, \"template\": \"sizeM\"}}, \"cinder_dsn\": {\"list_join\": [\"\", [\"mysql://cinder:\", {\"get_param\": \"CinderPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/cinder\"]]}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}, \"cinder_iscsi_helper\": {\"get_param\": \"CinderISCSIHelper\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"rabbit_client_use_ssl\": {\"get_param\": \"RabbitClientUseSSL\"}, \"glance_api_servers\": {\"list_join\": [\"\", [{\"get_param\": \"GlanceProtocol\"}, \"://\", {\"get_param\": \"GlanceApiVirtualIP\"}, \":\", {\"get_param\": \"GlancePort\"}]]}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"rabbit_username\": {\"get_param\": \"RabbitUserName\"}, \"cinder_iscsi_ip_address\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CinderIscsiNetwork\"]}]}, \"cinder_enable_iscsi_backend\": {\"get_param\": \"CinderEnableIscsiBackend\"}, \"debug\": {\"get_param\": \"Debug\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"rabbit_password\": {\"get_param\": \"RabbitPassword\"}, \"rabbit_client_port\": {\"get_param\": \"RabbitClientPort\"}}, \"config\": {\"get_resource\": \"BlockStorageConfig\"}, \"server\": {\"get_resource\": \"BlockStorage\"}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"BlockStorage\"}}}}}", "file:///tmp/tmpVtTjeI/network/ports/noop.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the pass thru network IP\", \"value\": {\"list_join\": [\"\", [{\"get_param\": \"ControlPlaneIP\"}, \"/\", {\"get_param\": \"ControlPlaneSubnetCidr\"}]]}}, \"ip_address\": {\"description\": \"pass thru network IP\", \"value\": {\"get_param\": \"ControlPlaneIP\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Returns the control plane port (provisioning network) as the ip_address.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"ControlPlaneNetwork\": {\"default\": \"ctlplane\", \"type\": \"string\", \"description\": \"Name of the control plane network\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"NetworkName\": {\"default\": \"\", \"type\": \"string\", \"description\": null}, \"ControlPlaneSubnetCidr\": {\"default\": \"24\", \"type\": \"string\", \"description\": \"The subnet CIDR of the control plane network.\"}}}", "file:///tmp/tmpVtTjeI/puppet/bootstrap-config.yaml": "{\"outputs\": {\"config_id\": {\"description\": \"The ID of the BootstrapNodeConfigImpl resource.\", \"value\": {\"get_resource\": \"BootstrapNodeConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Bootstrap Config Puppet\", \"parameters\": {\"bootstrap_nodeid\": {\"type\": \"string\"}, \"bootstrap_nodeid_ip\": {\"type\": \"string\"}}, \"resources\": {\"BootstrapNodeConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"datafiles\": {\"bootstrap_node\": {\"mapped_data\": {\"bootstrap_nodeid\": {\"get_param\": \"bootstrap_nodeid\"}, \"bootstrap_nodeid_ip\": {\"get_param\": \"bootstrap_nodeid_ip\"}}}}}}}}}}", "file:///tmp/tmpVtTjeI/puppet/cinder-storage-puppet.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hosts_entry\": {\"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"BlockStorageHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"BlockStorage\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"BlockStorageDeployment\", \"deploy_stdout\"]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the block storage server\", \"value\": {\"get_resource\": \"BlockStorage\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack cinder storage configured by Puppet\", \"parameters\": {\"CinderEnableIscsiBackend\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Iscsi backend for Cinder\"}, \"RabbitClientUseSSL\": {\"default\": false, \"type\": \"string\", \"description\": \"Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"RabbitPassword\": {\"default\": \"guest\", \"type\": \"string\"}, \"GlancePort\": {\"default\": \"9292\", \"type\": \"string\", \"description\": \"Glance port.\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"RabbitUserName\": {\"default\": \"guest\", \"type\": \"string\"}, \"Debug\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Set to True to enable debugging on all services.\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"MysqlVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"VirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"GlanceProtocol\": {\"default\": \"http\", \"type\": \"string\", \"description\": \"Protocol to use when connecting to glance, set to https for SSL.\"}, \"RabbitClientPort\": {\"default\": 5672, \"type\": \"number\", \"description\": \"Set rabbit subscriber port, change this if using SSL\"}, \"Image\": {\"default\": \"overcloud-cinder-volume\", \"type\": \"string\"}, \"ExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\\"FILEKEY\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"SECTIONNAME\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"OPTIONNAME\\\",\\n \\\"value\\\": \\\"VALUENAME\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\\"nova\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"default\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"force_config_drive\\\",\\n \\\"value\\\": \\\"always\\\"\\n }\\n ]\\n },\\n {\\\"section\\\": \\\"cells\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"driver\\\",\\n \\\"value\\\": \\\"nova.cells.rpc_driver.CellsRPCDriver\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"GlanceApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}, \"CinderISCSIHelper\": {\"default\": \"tgtadm\", \"type\": \"string\", \"description\": \"The iSCSI helper to use with cinder.\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for block storage nodes to request when deploying.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"CinderLVMLoopDeviceSize\": {\"default\": 5000, \"type\": \"number\", \"description\": \"The size of the loopback file used by the cinder LVM driver.\"}, \"CinderPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the cinder service and db account, used by cinder-api.\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"BlockStorage\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"BlockStorageConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"volume\", \"all_nodes\", \"RedHat\", \"common\"], \"datafiles\": {\"volume\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/volume.yaml\"}, \"mapped_data\": {\"cinder::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"cinder::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"cinder::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"cinder::glance::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"cinder_iscsi_helper\": {\"get_input\": \"cinder_iscsi_helper\"}, \"cinder::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"cinder::setup_test_volume::size\": {\"get_input\": \"cinder_lvm_loop_device_size\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"cinder::database_connection\": {\"get_input\": \"cinder_dsn\"}, \"cinder_iscsi_ip_address\": {\"get_input\": \"cinder_iscsi_ip_address\"}, \"cinder_enable_iscsi_backend\": {\"get_input\": \"cinder_enable_iscsi_backend\"}, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"cinder::debug\": {\"get_input\": \"debug\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml\"}}}}}}}, \"StoragePort\": {\"type\": \"OS::TripleO::BlockStorage::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"BlockStorage\", \"networks\", \"ctlplane\", 0]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::BlockStorage::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"BlockStorage\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::BlockStorage::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"InternalApiPort\": {\"type\": \"OS::TripleO::BlockStorage::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"BlockStorage\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"BlockStorage\"}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"BlockStorageDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::Heat::StructuredDeployment\", \"properties\": {\"input_values\": {\"cinder_lvm_loop_device_size\": {\"str_replace\": {\"params\": {\"size\": {\"get_param\": \"CinderLVMLoopDeviceSize\"}}, \"template\": \"sizeM\"}}, \"cinder_dsn\": {\"list_join\": [\"\", [\"mysql://cinder:\", {\"get_param\": \"CinderPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/cinder\"]]}, \"cinder_iscsi_helper\": {\"get_param\": \"CinderISCSIHelper\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"rabbit_client_use_ssl\": {\"get_param\": \"RabbitClientUseSSL\"}, \"rabbit_client_port\": {\"get_param\": \"RabbitClientPort\"}, \"glance_api_servers\": {\"list_join\": [\"\", [{\"get_param\": \"GlanceProtocol\"}, \"://\", {\"get_param\": \"GlanceApiVirtualIP\"}, \":\", {\"get_param\": \"GlancePort\"}]]}, \"rabbit_password\": {\"get_param\": \"RabbitPassword\"}, \"rabbit_username\": {\"get_param\": \"RabbitUserName\"}, \"cinder_iscsi_ip_address\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CinderIscsiNetwork\"]}]}, \"cinder_enable_iscsi_backend\": {\"get_param\": \"CinderEnableIscsiBackend\"}, \"debug\": {\"get_param\": \"Debug\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}}, \"config\": {\"get_resource\": \"BlockStorageConfig\"}, \"server\": {\"get_resource\": \"BlockStorage\"}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"BlockStorage\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/hieradata/volume.yaml": "# Hiera data here applies to all volume storage nodes\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\ncinder::config::cinder_config:\n DEFAULT/nova_catalog_info:\n value: 'compute:Compute Service:internalURL'\n DEFAULT/swift_catalog_info:\n value: 'object-store:swift:internalURL'\n", "file:///tmp/tmpVtTjeI/puppet/hieradata/object.yaml": "# Hiera data for swift storage nodes\nswift::storage::all::object_pipeline:\n - healthcheck\n - recon\n - object-server\nswift::storage::all::container_pipeline:\n - healthcheck\n - container-server\nswift::storage::all::account_pipeline:\n - healthcheck\n - account-server\n\nswift::proxy::keystone::operator_roles:\n - admin\n - swiftoperator\n - ResellerAdmin\n", "file:///usr/share/openstack-tripleo-heat-templates/network/external.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"Neutron external network\", \"value\": {\"get_resource\": \"ExternalNetwork\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"External network. Public traffic, Neutron l3router for floating IPs/SNAT, etc.\\n\", \"parameters\": {\"ExternalNetName\": {\"default\": \"external\", \"type\": \"string\", \"description\": \"The name of the external network.\"}, \"ExternalNetAdminStateUp\": {\"default\": false, \"type\": \"boolean\", \"description\": \"This admin state of of the network.\"}, \"ExternalAllocationPools\": {\"default\": [{\"start\": \"10.0.0.4\", \"end\": \"10.0.0.250\"}], \"type\": \"json\", \"description\": \"Ip allocation pool range for the external network.\"}, \"ExternalNetValueSpecs\": {\"default\": {\"provider:physical_network\": \"external\", \"provider:network_type\": \"flat\"}, \"type\": \"string\", \"description\": \"Value specs for the external network.\"}, \"ExternalNetShared\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether this network is shared across all tenants.\"}, \"ExternalNetCidr\": {\"default\": \"10.0.0.0/24\", \"type\": \"string\", \"description\": \"Cidr for the external network.\"}, \"ExternalSubnetName\": {\"default\": \"external_subnet\", \"type\": \"string\", \"description\": \"The name of the external subnet in Neutron.\"}, \"ExternalNetEnableDHCP\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable DHCP on the associated subnet.\"}}, \"resources\": {\"ExternalNetwork\": {\"type\": \"OS::Neutron::Net\", \"properties\": {\"shared\": {\"get_param\": \"ExternalNetShared\"}, \"admin_state_up\": {\"get_param\": \"ExternalNetAdminStateUp\"}, \"value_specs\": {\"get_param\": \"ExternalNetValueSpecs\"}, \"name\": {\"get_param\": \"ExternalNetName\"}}}, \"ExternalSubnet\": {\"type\": \"OS::Neutron::Subnet\", \"properties\": {\"network\": {\"get_resource\": \"ExternalNetwork\"}, \"allocation_pools\": {\"get_param\": \"ExternalAllocationPools\"}, \"cidr\": {\"get_param\": \"ExternalNetCidr\"}, \"enable_dhcp\": {\"get_param\": \"ExternalNetEnableDHCP\"}, \"name\": {\"get_param\": \"ExternalSubnetName\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/hieradata/RedHat.yaml": "# RedHat specific overrides go here\nrabbitmq::package_provider: 'yum'\n\n# The Galera package should work in cluster and\n# non-cluster modes based on the config file.\n# We set the package name here explicitly so\n# that it matches what we pre-install\n# in tripleo-puppet-elements.\nmysql::server::package_name: 'mariadb-galera-server'\n", "file:///tmp/tmpVtTjeI/puppet/hieradata/compute.yaml": "# Hiera data here applies to all compute nodes\n\nnova::notify_on_state_change: 'vm_and_task_state'\n\nnova::compute::enabled: true\nnova::compute::instance_usage_audit: true\nnova::compute::instance_usage_audit_period: 'hour'\nnova::compute::vnc_enabled: true\n\nnova::compute::libvirt::vncserver_listen: '0.0.0.0'\nnova::compute::libvirt::migration_support: true\n\nnova::compute::rbd::libvirt_rbd_user: 'openstack'\nnova::compute::rbd::rbd_keyring: 'client.openstack'\nnova::compute::rbd::libvirt_images_rbd_pool: 'vms'\nnova::compute::rbd::libvirt_rbd_secret_uuid: \"%{hiera('ceph::profile::params::fsid')}\"\n\nnova::config::nova_config:\n cinder/catalog_info:\n value: 'volumev2:cinderv2:internalURL'\n\nceilometer::agent::auth::auth_tenant_name: 'service'\n", "file:///tmp/tmpVtTjeI/hieradata/volume.yaml": "# Hiera data here applies to all volume storage nodes\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\ncinder::config::cinder_config:\n DEFAULT/nova_catalog_info:\n value: 'compute:Compute Service:internalURL'\n DEFAULT/swift_catalog_info:\n value: 'object-store:swift:internalURL'\n", "file:///tmp/tmpVtTjeI/puppet/compute-puppet.yaml": "{\"outputs\": {\"hostname\": {\"description\": \"Hostname of the server\", \"value\": {\"get_attr\": [\"NovaCompute\", \"name\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"NovaComputeDeployment\", \"deploy_stdout\"]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the Nova compute server\", \"value\": {\"get_resource\": \"NovaCompute\"}}, \"tenant_ip_address\": {\"description\": \"IP address of the server in the tenant network\", \"value\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}}, \"hosts_entry\": {\"description\": \"Server's IP address and hostname in the /etc/hosts format\\n\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"ComputeHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"NovaCompute\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"ip_address\": {\"description\": \"IP address of the server in the ctlplane network\", \"value\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack hypervisor node configured via Puppet.\\n\", \"parameters\": {\"NeutronPublicInterfaceRawDevice\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronNetworkVLANRanges\": {\"default\": \"datacentre\", \"type\": \"comma_delimited_list\", \"description\": \"The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\\n\"}, \"NovaComputeDriver\": {\"default\": \"libvirt.LibvirtDriver\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"GlancePort\": {\"default\": \"9292\", \"type\": \"string\", \"description\": \"Glance port.\"}, \"NeutronPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the neutron service account, used by neutron agents.\"}, \"NeutronFlatNetworks\": {\"default\": \"datacentre\", \"type\": \"string\", \"description\": \"If set, flat networks to configure in neutron plugins.\\n\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"NeutronPublicInterface\": {\"default\": \"nic1\", \"type\": \"string\", \"description\": \"A port to add to the NeutronPhysicalBridge.\"}, \"NovaEnableRbdBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Rbd backend for Nova\"}, \"GlanceHost\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronTunnelTypes\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'gre,vxlan'\\n\"}, \"NeutronTunnelIdRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n\"}, \"NeutronVniRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for the nova compute node\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"NovaApiHost\": {\"default\": \"\", \"type\": \"string\"}, \"RabbitClientPort\": {\"default\": 5672, \"type\": \"number\", \"description\": \"Set rabbit subscriber port, change this if using SSL\"}, \"NovaComputeExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"NovaCompute specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\", \"constraints\": [{\"custom_constraint\": \"nova.keypair\"}]}, \"NovaPublicIP\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronNetworkType\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tenant network type for Neutron, either gre or vxlan.\"}, \"CeilometerPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the ceilometer service account.\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"CinderEnableNfsBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the NFS backend for Cinder\"}, \"KeystoneHost\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronMechanismDrivers\": {\"default\": \"openvswitch\", \"type\": \"string\", \"description\": \"The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\\n\"}, \"RabbitClientUseSSL\": {\"default\": false, \"type\": \"string\", \"description\": \"Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n\"}, \"NeutronAllowL3AgentFailover\": {\"default\": \"True\", \"type\": \"string\", \"description\": \"Allow automatic l3-agent failover\"}, \"RabbitPassword\": {\"default\": \"guest\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for RabbitMQ\"}, \"ImageUpdatePolicy\": {\"default\": \"REBUILD_PRESERVE_EPHEMERAL\", \"type\": \"string\", \"description\": \"What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.\"}, \"RabbitUserName\": {\"default\": \"guest\", \"type\": \"string\", \"description\": \"The username for RabbitMQ\"}, \"Debug\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Set to True to enable debugging on all services.\"}, \"NeutronAgentMode\": {\"default\": \"dvr_snat\", \"type\": \"string\", \"description\": \"Agent mode for the neutron-l3-agent on the controller hosts\"}, \"NovaPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the nova service account, used by nova-api.\"}, \"GlanceProtocol\": {\"default\": \"http\", \"type\": \"string\", \"description\": \"Protocol to use when connecting to glance, set to https for SSL.\"}, \"NeutronDVR\": {\"default\": \"False\", \"type\": \"string\"}, \"NeutronL3HA\": {\"default\": \"False\", \"type\": \"string\", \"description\": \"Whether to enable l3-agent HA\"}, \"NovaComputeLibvirtType\": {\"default\": \"\", \"type\": \"string\"}, \"AdminPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the keystone admin account, used for monitoring, querying neutron etc.\"}, \"NeutronPhysicalBridge\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"An OVS bridge to create for accessing external networks.\"}, \"CeilometerComputeAgent\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly\", \"constraints\": [{\"allowed_values\": [\"\", \"Present\"]}]}, \"Image\": {\"default\": \"overcloud-compute\", \"type\": \"string\", \"constraints\": [{\"custom_constraint\": \"glance.image\"}]}, \"ExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\\"FILEKEY\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"SECTIONNAME\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"OPTIONNAME\\\",\\n \\\"value\\\": \\\"VALUENAME\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\\"nova\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"default\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"force_config_drive\\\",\\n \\\"value\\\": \\\"always\\\"\\n }\\n ]\\n },\\n {\\\"section\\\": \\\"cells\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"driver\\\",\\n \\\"value\\\": \\\"nova.cells.rpc_driver.CellsRPCDriver\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n\"}, \"RabbitHost\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronBridgeMappings\": {\"default\": \"datacentre:br-ex\", \"type\": \"string\", \"description\": \"The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\\n\"}, \"CeilometerMeteringSecret\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"Secret shared by the ceilometer services.\"}, \"NeutronMetadataProxySharedSecret\": {\"default\": \"unset\", \"type\": \"string\", \"description\": \"Shared secret to prevent spoofing\"}, \"NeutronEnableTunnelling\": {\"default\": \"True\", \"type\": \"string\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"NeutronHost\": {\"default\": \"\", \"type\": \"string\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"NovaCompute\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"image_update_policy\": {\"get_param\": \"ImageUpdatePolicy\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"TenantPort\": {\"type\": \"OS::TripleO::Compute::Ports::TenantPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"StoragePort\": {\"type\": \"OS::TripleO::Compute::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"interface_name\": {\"get_param\": \"NeutronPublicInterface\"}, \"bridge_name\": {\"get_param\": \"NeutronPhysicalBridge\"}}, \"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"NovaCompute\"}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::Compute::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"TenantIpSubnet\": {\"get_attr\": [\"TenantPort\", \"ip_subnet\"]}}}, \"NovaComputeDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"neutron_host\": {\"get_param\": \"NeutronHost\"}, \"neutron_router_distributed\": {\"get_param\": \"NeutronDVR\"}, \"nova_compute_libvirt_type\": {\"get_param\": \"NovaComputeLibvirtType\"}, \"nova_compute_driver\": {\"get_param\": \"NovaComputeDriver\"}, \"neutron_flat_networks\": {\"get_param\": \"NeutronFlatNetworks\"}, \"glance_api_servers\": {\"list_join\": [\"\", [{\"get_param\": \"GlanceProtocol\"}, \"://\", {\"get_param\": \"GlanceHost\"}, \":\", {\"get_param\": \"GlancePort\"}]]}, \"rabbit_password\": {\"get_param\": \"RabbitPassword\"}, \"neutron_vni_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronVniRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"neutron_tunnel_types\": {\"get_param\": \"NeutronTunnelTypes\"}, \"neutron_public_interface_raw_device\": {\"get_param\": \"NeutronPublicInterfaceRawDevice\"}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"ceilometer_agent_auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystoneHost\"}, \":5000/v2.0\"]]}, \"rabbit_client_use_ssl\": {\"get_param\": \"RabbitClientUseSSL\"}, \"neutron_password\": {\"get_param\": \"NeutronPassword\"}, \"nova_public_ip\": {\"get_param\": \"NovaPublicIP\"}, \"neutron_local_ip\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NeutronTenantNetwork\"]}]}, \"admin_password\": {\"get_param\": \"AdminPassword\"}, \"neutron_physical_bridge\": {\"get_param\": \"NeutronPhysicalBridge\"}, \"nova_vnc_proxyclient_address\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NovaVncProxyNetwork\"]}]}, \"nova_password\": {\"get_param\": \"NovaPassword\"}, \"neutron_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"NeutronHost\"}, \":9696\"]]}, \"neutron_mechanism_drivers\": {\"get_param\": \"NeutronMechanismDrivers\"}, \"nova_enable_rbd_backend\": {\"get_param\": \"NovaEnableRbdBackend\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"neutron_metadata_proxy_shared_secret\": {\"get_param\": \"NeutronMetadataProxySharedSecret\"}, \"neutron_admin_auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"NeutronHost\"}, \":35357/v2.0\"]]}, \"nova_api_host\": {\"get_param\": \"NovaApiHost\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"ceilometer_password\": {\"get_param\": \"CeilometerPassword\"}, \"neutron_tenant_network_type\": {\"get_param\": \"NeutronNetworkType\"}, \"neutron_network_vlan_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronNetworkVLANRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"neutron_bridge_mappings\": {\"get_param\": \"NeutronBridgeMappings\"}, \"neutron_agent_mode\": {\"get_param\": \"NeutronAgentMode\"}, \"neutron_public_interface\": {\"get_param\": \"NeutronPublicInterface\"}, \"ceilometer_metering_secret\": {\"get_param\": \"CeilometerMeteringSecret\"}, \"neutron_tunnel_id_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronTunnelIdRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"cinder_enable_nfs_backend\": {\"get_param\": \"CinderEnableNfsBackend\"}, \"ceilometer_compute_agent\": {\"get_param\": \"CeilometerComputeAgent\"}, \"rabbit_username\": {\"get_param\": \"RabbitUserName\"}, \"rabbit_client_port\": {\"get_param\": \"RabbitClientPort\"}, \"neutron_enable_tunneling\": {\"get_param\": \"NeutronEnableTunnelling\"}, \"debug\": {\"get_param\": \"Debug\"}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}}, \"config\": {\"get_resource\": \"NovaComputeConfig\"}, \"server\": {\"get_resource\": \"NovaCompute\"}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"InternalApiPort\": {\"type\": \"OS::TripleO::Compute::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"NovaComputeConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"compute\", \"ceph_cluster\", \"ceph\", \"all_nodes\", \"RedHat\", \"common\"], \"datafiles\": {\"ceph\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml\"}}, \"compute\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/compute.yaml\"}, \"mapped_data\": {\"nova::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"neutron_host\": {\"get_input\": \"neutron_host\"}, \"neutron_router_distributed\": {\"get_input\": \"neutron_router_distributed\"}, \"neutron::debug\": {\"get_input\": \"debug\"}, \"neutron::plugins::ml2::vni_ranges\": {\"get_input\": \"neutron_vni_ranges\"}, \"nova_compute_driver\": {\"get_input\": \"nova_compute_driver\"}, \"nova::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"nova::compute::vncproxy_host\": {\"get_input\": \"nova_public_ip\"}, \"neutron::plugins::ml2::network_vlan_ranges\": {\"get_input\": \"neutron_network_vlan_ranges\"}, \"neutron_bridge_mappings\": {\"get_input\": \"neutron_bridge_mappings\"}, \"ceilometer::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"neutron_tunnel_types\": {\"get_input\": \"neutron_tunnel_types\"}, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"neutron_public_interface_raw_device\": {\"get_input\": \"neutron_public_interface_raw_device\"}, \"nova::compute::libvirt::libvirt_virt_type\": {\"get_input\": \"nova_compute_libvirt_type\"}, \"neutron::agents::ml2::ovs::local_ip\": {\"get_input\": \"neutron_local_ip\"}, \"neutron_flat_networks\": {\"get_input\": \"neutron_flat_networks\"}, \"ceilometer::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"neutron::rabbit_user\": {\"get_input\": \"rabbit_user\"}, \"neutron_mechanism_drivers\": {\"get_input\": \"neutron_mechanism_drivers\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"nova_password\": {\"get_input\": \"nova_password\"}, \"ceilometer::agent::auth::auth_password\": {\"get_input\": \"ceilometer_password\"}, \"nova::network::neutron::neutron_url\": {\"get_input\": \"neutron_url\"}, \"neutron_physical_bridge\": {\"get_input\": \"neutron_physical_bridge\"}, \"nova_enable_rbd_backend\": {\"get_input\": \"nova_enable_rbd_backend\"}, \"neutron_metadata_proxy_shared_secret\": {\"get_input\": \"neutron_metadata_proxy_shared_secret\"}, \"nova::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"nova::debug\": {\"get_input\": \"debug\"}, \"neutron::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"nova_api_host\": {\"get_input\": \"nova_api_host\"}, \"nova::network::neutron::neutron_admin_password\": {\"get_input\": \"neutron_password\"}, \"neutron::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::plugins::ml2::tunnel_id_ranges\": {\"get_input\": \"neutron_tunnel_id_ranges\"}, \"neutron_tenant_network_type\": {\"get_input\": \"neutron_tenant_network_type\"}, \"neutron::agents::ml2::ovs::enable_tunneling\": {\"get_input\": \"neutron_enable_tunneling\"}, \"ceilometer::metering_secret\": {\"get_input\": \"ceilometer_metering_secret\"}, \"ceilometer::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron_agent_mode\": {\"get_input\": \"neutron_agent_mode\"}, \"ceilometer::debug\": {\"get_input\": \"debug\"}, \"ceilometer::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"admin_password\": {\"get_input\": \"admin_password\"}, \"neutron_public_interface\": {\"get_input\": \"neutron_public_interface\"}, \"nova::compute::vncserver_proxyclient_address\": {\"get_input\": \"nova_vnc_proxyclient_address\"}, \"cinder_enable_nfs_backend\": {\"get_input\": \"cinder_enable_nfs_backend\"}, \"nova::network::neutron::neutron_admin_auth_url\": {\"get_input\": \"neutron_admin_auth_url\"}, \"ceilometer_compute_agent\": {\"get_input\": \"ceilometer_compute_agent\"}, \"nova::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"nova::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}, \"ceilometer::agent::auth::auth_url\": {\"get_input\": \"ceilometer_agent_auth_url\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml\"}}}}}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"TenantIp\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"NovaCompute\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_controller_pacemaker.pp": "# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nPcmk_resource <| |> {\n tries => 10,\n try_sleep => 3,\n}\n\nif !str2bool(hiera('enable_package_install', 'false')) {\n case $::osfamily {\n 'RedHat': {\n Package { provider => 'norpm' } # provided by tripleo-puppet\n }\n default: {\n warning('enable_package_install option not supported.')\n }\n }\n}\n\nif $::hostname == downcase(hiera('bootstrap_nodeid')) {\n $pacemaker_master = true\n $sync_db = true\n} else {\n $pacemaker_master = false\n $sync_db = false\n}\n\n# When to start and enable services which haven't been Pacemakerized\n# FIXME: remove when we start all OpenStack services using Pacemaker\n# (occurences of this variable will be gradually replaced with false)\n$non_pcmk_start = hiera('step') >= 4\n\nif hiera('step') >= 1 {\n\n create_resources(sysctl::value, hiera('sysctl_settings'), {})\n\n if count(hiera('ntp::servers')) > 0 {\n include ::ntp\n }\n\n $controller_node_ips = split(hiera('controller_node_ips'), ',')\n $controller_node_names = split(downcase(hiera('controller_node_names')), ',')\n class { '::tripleo::loadbalancer' :\n controller_hosts => $controller_node_ips,\n controller_hosts_names => $controller_node_names,\n redis => true,\n manage_vip => false,\n mysql_clustercheck => true,\n haproxy_service_manage => false,\n }\n\n $pacemaker_cluster_members = downcase(regsubst(hiera('controller_node_names'), ',', ' ', 'G'))\n user { 'hacluster':\n ensure => present,\n } ->\n class { '::pacemaker':\n hacluster_pwd => hiera('hacluster_pwd'),\n } ->\n class { '::pacemaker::corosync':\n cluster_members => $pacemaker_cluster_members,\n setup_cluster => $pacemaker_master,\n }\n class { '::pacemaker::stonith':\n disable => true,\n }\n\n # FIXME(gfidente): sets 60secs as default start timeout op\n # param; until we can use pcmk global defaults we'll still\n # need to add it to every resource which redefines op params\n Pacemaker::Resource::Service {\n op_params => 'start timeout=60s',\n }\n\n # Only configure RabbitMQ in this step, don't start it yet to\n # avoid races where non-master nodes attempt to start without\n # config (eg. binding on 0.0.0.0)\n # The module ignores erlang_cookie if cluster_config is false\n class { '::rabbitmq':\n service_manage => false,\n tcp_keepalive => false,\n config_kernel_variables => hiera('rabbitmq_kernel_variables'),\n config_variables => hiera('rabbitmq_config_variables'),\n environment_variables => hiera('rabbitmq_environment'),\n } ->\n file { '/var/lib/rabbitmq/.erlang.cookie':\n ensure => 'present',\n owner => 'rabbitmq',\n group => 'rabbitmq',\n mode => '0400',\n content => hiera('rabbitmq::erlang_cookie'),\n replace => true,\n }\n\n if downcase(hiera('ceilometer_backend')) == 'mongodb' {\n include ::mongodb::globals\n class { '::mongodb::server' :\n service_manage => false,\n }\n }\n\n # Memcached\n class {'::memcached' :\n service_manage => false,\n }\n\n # Redis\n class { '::redis' :\n service_manage => false,\n notify_service => false,\n }\n\n # Galera\n if str2bool(hiera('enable_galera', 'true')) {\n $mysql_config_file = '/etc/my.cnf.d/galera.cnf'\n } else {\n $mysql_config_file = '/etc/my.cnf.d/server.cnf'\n }\n $galera_nodes = downcase(hiera('galera_node_names', $::hostname))\n\n $mysqld_options = {\n 'mysqld' => {\n 'skip-name-resolve' => '1',\n 'binlog_format' => 'ROW',\n 'default-storage-engine' => 'innodb',\n 'innodb_autoinc_lock_mode' => '2',\n 'innodb_locks_unsafe_for_binlog'=> '1',\n 'query_cache_size' => '0',\n 'query_cache_type' => '0',\n 'bind-address' => hiera('mysql_bind_host'),\n 'max_connections' => hiera('mysql_max_connections'),\n 'open_files_limit' => '-1',\n 'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',\n 'wsrep_cluster_name' => 'galera_cluster',\n 'wsrep_slave_threads' => '1',\n 'wsrep_certify_nonPK' => '1',\n 'wsrep_max_ws_rows' => '131072',\n 'wsrep_max_ws_size' => '1073741824',\n 'wsrep_debug' => '0',\n 'wsrep_convert_LOCK_to_trx' => '0',\n 'wsrep_retry_autocommit' => '1',\n 'wsrep_auto_increment_control' => '1',\n 'wsrep_drupal_282555_workaround'=> '0',\n 'wsrep_causal_reads' => '0',\n 'wsrep_notify_cmd' => '',\n 'wsrep_sst_method' => 'rsync',\n }\n }\n\n class { '::mysql::server':\n create_root_user => false,\n create_root_my_cnf => false,\n config_file => $mysql_config_file,\n override_options => $mysqld_options,\n service_manage => false,\n service_enabled => false,\n }\n\n}\n\nif hiera('step') >= 2 {\n\n # NOTE(gfidente): the following vars are needed on all nodes so they\n # need to stay out of pacemaker_master conditional\n $mongo_node_ips_with_port = suffix(hiera('mongo_node_ips'), ':27017')\n $mongodb_replset = hiera('mongodb::server::replset')\n\n if $pacemaker_master {\n\n # FIXME: we should not have to access tripleo::loadbalancer class\n # parameters here to configure pacemaker VIPs. The configuration\n # of pacemaker VIPs could move into puppet-tripleo or we should\n # make use of less specific hiera parameters here for the settings.\n pacemaker::resource::service { 'haproxy':\n clone_params => true,\n }\n\n $control_vip = hiera('tripleo::loadbalancer::controller_virtual_ip')\n pacemaker::resource::ip { 'control_vip':\n ip_address => $control_vip,\n }\n pacemaker::constraint::base { 'control_vip-then-haproxy':\n constraint_type => 'order',\n first_resource => \"ip-${control_vip}\",\n second_resource => 'haproxy-clone',\n first_action => 'start',\n second_action => 'start',\n constraint_params => 'kind=Optional',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['control_vip']],\n }\n pacemaker::constraint::colocation { 'control_vip-with-haproxy':\n source => \"ip-${control_vip}\",\n target => 'haproxy-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['control_vip']],\n }\n\n $public_vip = hiera('tripleo::loadbalancer::public_virtual_ip')\n if $public_vip and $public_vip != $control_vip {\n pacemaker::resource::ip { 'public_vip':\n ip_address => $public_vip,\n }\n pacemaker::constraint::base { 'public_vip-then-haproxy':\n constraint_type => 'order',\n first_resource => \"ip-${public_vip}\",\n second_resource => 'haproxy-clone',\n first_action => 'start',\n second_action => 'start',\n constraint_params => 'kind=Optional',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['public_vip']],\n }\n pacemaker::constraint::colocation { 'public_vip-with-haproxy':\n source => \"ip-${public_vip}\",\n target => 'haproxy-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['public_vip']],\n }\n }\n\n $redis_vip = hiera('redis_vip')\n if $redis_vip and $redis_vip != $control_vip {\n pacemaker::resource::ip { 'redis_vip':\n ip_address => $redis_vip,\n }\n pacemaker::constraint::base { 'redis_vip-then-haproxy':\n constraint_type => 'order',\n first_resource => \"ip-${redis_vip}\",\n second_resource => 'haproxy-clone',\n first_action => 'start',\n second_action => 'start',\n constraint_params => 'kind=Optional',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['redis_vip']],\n }\n pacemaker::constraint::colocation { 'redis_vip-with-haproxy':\n source => \"ip-${redis_vip}\",\n target => 'haproxy-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['redis_vip']],\n }\n }\n\n $internal_api_vip = hiera('tripleo::loadbalancer::internal_api_virtual_ip')\n if $internal_api_vip and $internal_api_vip != $control_vip {\n pacemaker::resource::ip { 'internal_api_vip':\n ip_address => $internal_api_vip,\n }\n pacemaker::constraint::base { 'internal_api_vip-then-haproxy':\n constraint_type => 'order',\n first_resource => \"ip-${internal_api_vip}\",\n second_resource => 'haproxy-clone',\n first_action => 'start',\n second_action => 'start',\n constraint_params => 'kind=Optional',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['internal_api_vip']],\n }\n pacemaker::constraint::colocation { 'internal_api_vip-with-haproxy':\n source => \"ip-${internal_api_vip}\",\n target => 'haproxy-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['internal_api_vip']],\n }\n }\n\n $storage_vip = hiera('tripleo::loadbalancer::storage_virtual_ip')\n if $storage_vip and $storage_vip != $control_vip {\n pacemaker::resource::ip { 'storage_vip':\n ip_address => $storage_vip,\n }\n pacemaker::constraint::base { 'storage_vip-then-haproxy':\n constraint_type => 'order',\n first_resource => \"ip-${storage_vip}\",\n second_resource => 'haproxy-clone',\n first_action => 'start',\n second_action => 'start',\n constraint_params => 'kind=Optional',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['storage_vip']],\n }\n pacemaker::constraint::colocation { 'storage_vip-with-haproxy':\n source => \"ip-${storage_vip}\",\n target => 'haproxy-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['storage_vip']],\n }\n }\n\n $storage_mgmt_vip = hiera('tripleo::loadbalancer::storage_mgmt_virtual_ip')\n if $storage_mgmt_vip and $storage_mgmt_vip != $control_vip {\n pacemaker::resource::ip { 'storage_mgmt_vip':\n ip_address => $storage_mgmt_vip,\n }\n pacemaker::constraint::base { 'storage_mgmt_vip-then-haproxy':\n constraint_type => 'order',\n first_resource => \"ip-${storage_mgmt_vip}\",\n second_resource => 'haproxy-clone',\n first_action => 'start',\n second_action => 'start',\n constraint_params => 'kind=Optional',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['storage_mgmt_vip']],\n }\n pacemaker::constraint::colocation { 'storage_mgmt_vip-with-haproxy':\n source => \"ip-${storage_mgmt_vip}\",\n target => 'haproxy-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service['haproxy'],\n Pacemaker::Resource::Ip['storage_mgmt_vip']],\n }\n }\n\n pacemaker::resource::service { $::memcached::params::service_name :\n clone_params => true,\n require => Class['::memcached'],\n }\n\n pacemaker::resource::ocf { 'rabbitmq':\n ocf_agent_name => 'heartbeat:rabbitmq-cluster',\n resource_params => 'set_policy=\\'ha-all ^(?!amq\\.).* {\"ha-mode\":\"all\"}\\'',\n clone_params => 'ordered=true interleave=true',\n require => Class['::rabbitmq'],\n }\n\n if downcase(hiera('ceilometer_backend')) == 'mongodb' {\n pacemaker::resource::service { $::mongodb::params::service_name :\n op_params => 'start timeout=120s',\n clone_params => true,\n require => Class['::mongodb::server'],\n }\n # NOTE (spredzy) : The replset can only be run\n # once all the nodes have joined the cluster.\n mongodb_conn_validator { $mongo_node_ips_with_port :\n require => Pacemaker::Resource::Service[$::mongodb::params::service_name],\n before => Mongodb_replset[$mongodb_replset],\n }\n mongodb_replset { $mongodb_replset :\n members => $mongo_node_ips_with_port,\n }\n }\n\n pacemaker::resource::ocf { 'galera' :\n ocf_agent_name => 'heartbeat:galera',\n op_params => 'promote timeout=300s on-fail=block',\n master_params => '',\n meta_params => \"master-max=3 ordered=true\",\n resource_params => \"additional_parameters='--open-files-limit=16384' enable_creation=true wsrep_cluster_address='gcomm://${galera_nodes}'\",\n require => Class['::mysql::server'],\n before => Exec['galera-ready'],\n }\n\n pacemaker::resource::ocf { 'redis':\n ocf_agent_name => 'heartbeat:redis',\n master_params => '',\n meta_params => 'notify=true ordered=true interleave=true',\n resource_params => 'wait_last_known_master=true',\n require => Class['::redis'],\n }\n\n }\n\n exec { 'galera-ready' :\n command => '/usr/bin/clustercheck >/dev/null',\n timeout => 30,\n tries => 180,\n try_sleep => 10,\n environment => [\"AVAILABLE_WHEN_READONLY=0\"],\n require => File['/etc/sysconfig/clustercheck'],\n }\n\n file { '/etc/sysconfig/clustercheck' :\n ensure => file,\n content => \"MYSQL_USERNAME=root\\n\nMYSQL_PASSWORD=''\\n\nMYSQL_HOST=localhost\\n\",\n }\n\n xinetd::service { 'galera-monitor' :\n port => '9200',\n server => '/usr/bin/clustercheck',\n per_source => 'UNLIMITED',\n log_on_success => '',\n log_on_failure => 'HOST',\n flags => 'REUSE',\n service_type => 'UNLISTED',\n user => 'root',\n group => 'root',\n require => File['/etc/sysconfig/clustercheck'],\n }\n\n # Create all the database schemas\n # Example DSN format: mysql://user:password@host/dbname\n if $sync_db {\n $allowed_hosts = ['%',hiera('mysql_bind_host')]\n $keystone_dsn = split(hiera('keystone::database_connection'), '[@:/?]')\n class { 'keystone::db::mysql':\n user => $keystone_dsn[3],\n password => $keystone_dsn[4],\n host => $keystone_dsn[5],\n dbname => $keystone_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n $glance_dsn = split(hiera('glance::api::database_connection'), '[@:/?]')\n class { 'glance::db::mysql':\n user => $glance_dsn[3],\n password => $glance_dsn[4],\n host => $glance_dsn[5],\n dbname => $glance_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n $nova_dsn = split(hiera('nova::database_connection'), '[@:/?]')\n class { 'nova::db::mysql':\n user => $nova_dsn[3],\n password => $nova_dsn[4],\n host => $nova_dsn[5],\n dbname => $nova_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n $neutron_dsn = split(hiera('neutron::server::database_connection'), '[@:/?]')\n class { 'neutron::db::mysql':\n user => $neutron_dsn[3],\n password => $neutron_dsn[4],\n host => $neutron_dsn[5],\n dbname => $neutron_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n $cinder_dsn = split(hiera('cinder::database_connection'), '[@:/?]')\n class { 'cinder::db::mysql':\n user => $cinder_dsn[3],\n password => $cinder_dsn[4],\n host => $cinder_dsn[5],\n dbname => $cinder_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n $heat_dsn = split(hiera('heat::database_connection'), '[@:/?]')\n class { 'heat::db::mysql':\n user => $heat_dsn[3],\n password => $heat_dsn[4],\n host => $heat_dsn[5],\n dbname => $heat_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n if downcase(hiera('ceilometer_backend')) == 'mysql' {\n $ceilometer_dsn = split(hiera('ceilometer_mysql_conn_string'), '[@:/?]')\n class { 'ceilometer::db::mysql':\n user => $ceilometer_dsn[3],\n password => $ceilometer_dsn[4],\n host => $ceilometer_dsn[5],\n dbname => $ceilometer_dsn[6],\n allowed_hosts => $allowed_hosts,\n require => Exec['galera-ready'],\n }\n }\n }\n\n # pre-install swift here so we can build rings\n include ::swift\n\n # Ceph\n $cinder_enable_rbd_backend = hiera('cinder_enable_rbd_backend', false)\n $enable_ceph = $cinder_enable_rbd_backend\n\n if $enable_ceph {\n class { 'ceph::profile::params':\n mon_initial_members => downcase(hiera('ceph_mon_initial_members'))\n }\n include ::ceph::profile::mon\n }\n\n if str2bool(hiera('enable_ceph_storage', 'false')) {\n if str2bool(hiera('ceph_osd_selinux_permissive', true)) {\n exec { 'set selinux to permissive on boot':\n command => \"sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config\",\n onlyif => \"test -f /etc/selinux/config && ! grep '^SELINUX=permissive' /etc/selinux/config\",\n path => [\"/usr/bin\", \"/usr/sbin\"],\n }\n\n exec { 'set selinux to permissive':\n command => \"setenforce 0\",\n onlyif => \"which setenforce && getenforce | grep -i 'enforcing'\",\n path => [\"/usr/bin\", \"/usr/sbin\"],\n } -> Class['ceph::profile::osd']\n }\n\n include ::ceph::profile::client\n include ::ceph::profile::osd\n }\n\n\n} #END STEP 2\n\nif hiera('step') >= 3 {\n\n class { '::keystone':\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n\n #TODO: need a cleanup-keystone-tokens.sh solution here\n keystone_config {\n 'ec2/driver': value => 'keystone.contrib.ec2.backends.sql.Ec2';\n }\n file { [ '/etc/keystone/ssl', '/etc/keystone/ssl/certs', '/etc/keystone/ssl/private' ]:\n ensure => 'directory',\n owner => 'keystone',\n group => 'keystone',\n require => Package['keystone'],\n }\n file { '/etc/keystone/ssl/certs/signing_cert.pem':\n content => hiera('keystone_signing_certificate'),\n owner => 'keystone',\n group => 'keystone',\n notify => Service['keystone'],\n require => File['/etc/keystone/ssl/certs'],\n }\n file { '/etc/keystone/ssl/private/signing_key.pem':\n content => hiera('keystone_signing_key'),\n owner => 'keystone',\n group => 'keystone',\n notify => Service['keystone'],\n require => File['/etc/keystone/ssl/private'],\n }\n file { '/etc/keystone/ssl/certs/ca.pem':\n content => hiera('keystone_ca_certificate'),\n owner => 'keystone',\n group => 'keystone',\n notify => Service['keystone'],\n require => File['/etc/keystone/ssl/certs'],\n }\n\n $glance_backend = downcase(hiera('glance_backend', 'swift'))\n case $glance_backend {\n swift: { $backend_store = 'glance.store.swift.Store' }\n file: { $backend_store = 'glance.store.filesystem.Store' }\n rbd: { $backend_store = 'glance.store.rbd.Store' }\n default: { fail('Unrecognized glance_backend parameter.') }\n }\n $http_store = ['glance.store.http.Store']\n $glance_store = concat($http_store, $backend_store)\n\n if $glance_backend == 'file' and hiera('glance_file_pcmk_manage', false) {\n pacemaker::resource::filesystem { \"glance-fs\":\n device => hiera('glance_file_pcmk_device'),\n directory => hiera('glance_file_pcmk_directory'),\n fstype => hiera('glance_file_pcmk_fstype'),\n fsoptions => hiera('glance_file_pcmk_options', ''),\n clone_params => '',\n }\n }\n\n # TODO: notifications, scrubber, etc.\n include ::glance\n class { 'glance::api':\n known_stores => $glance_store,\n manage_service => false,\n enabled => false,\n }\n class { '::glance::registry' :\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n include join(['::glance::backend::', $glance_backend])\n\n class { '::nova' :\n memcached_servers => suffix(hiera('memcache_node_ips'), ':11211'),\n }\n\n class { '::nova::api' :\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n class { '::nova::cert' :\n manage_service => false,\n enabled => false,\n }\n class { '::nova::conductor' :\n manage_service => false,\n enabled => false,\n }\n class { '::nova::consoleauth' :\n manage_service => false,\n enabled => false,\n }\n class { '::nova::vncproxy' :\n manage_service => false,\n enabled => false,\n }\n class { '::nova::scheduler' :\n manage_service => false,\n enabled => false,\n }\n include ::nova::network::neutron\n\n # Neutron class definitions\n include ::neutron\n class { '::neutron::server' :\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n class { '::neutron::agents::dhcp' :\n manage_service => false,\n enabled => false,\n }\n class { '::neutron::agents::l3' :\n manage_service => false,\n enabled => false,\n }\n class { 'neutron::agents::metadata':\n manage_service => false,\n enabled => false,\n }\n file { '/etc/neutron/dnsmasq-neutron.conf':\n content => hiera('neutron_dnsmasq_options'),\n owner => 'neutron',\n group => 'neutron',\n notify => Service['neutron-dhcp-service'],\n require => Package['neutron'],\n }\n class { 'neutron::plugins::ml2':\n flat_networks => split(hiera('neutron_flat_networks'), ','),\n tenant_network_types => [hiera('neutron_tenant_network_type')],\n }\n class { 'neutron::agents::ml2::ovs':\n # manage_service => false # not implemented\n enabled => false,\n bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),\n tunnel_types => split(hiera('neutron_tunnel_types'), ','),\n }\n\n include ::cinder\n class { '::cinder::api':\n sync_db => $sync_db,\n manage_service => false,\n enabled => false,\n }\n class { '::cinder::scheduler' :\n manage_service => false,\n enabled => false,\n }\n class { '::cinder::volume' :\n manage_service => false,\n enabled => false,\n }\n include ::cinder::glance\n class {'cinder::setup_test_volume':\n size => join([hiera('cinder_lvm_loop_device_size'), 'M']),\n }\n\n $cinder_enable_iscsi = hiera('cinder_enable_iscsi_backend', true)\n if $cinder_enable_iscsi {\n $cinder_iscsi_backend = 'tripleo_iscsi'\n\n cinder::backend::iscsi { $cinder_iscsi_backend :\n iscsi_ip_address => hiera('cinder_iscsi_ip_address'),\n iscsi_helper => hiera('cinder_iscsi_helper'),\n }\n }\n\n if $enable_ceph {\n\n Ceph_pool {\n pg_num => hiera('ceph::profile::params::osd_pool_default_pg_num'),\n pgp_num => hiera('ceph::profile::params::osd_pool_default_pgp_num'),\n size => hiera('ceph::profile::params::osd_pool_default_size'),\n }\n\n $ceph_pools = hiera('ceph_pools')\n ceph::pool { $ceph_pools : }\n }\n\n if $cinder_enable_rbd_backend {\n $cinder_rbd_backend = 'tripleo_ceph'\n\n cinder_config {\n \"${cinder_rbd_backend}/host\": value => 'hostgroup';\n }\n\n cinder::backend::rbd { $cinder_rbd_backend :\n rbd_pool => 'volumes',\n rbd_user => 'openstack',\n rbd_secret_uuid => hiera('ceph::profile::params::fsid'),\n require => Ceph::Pool['volumes'],\n }\n }\n\n if hiera('cinder_enable_netapp_backend', false) {\n $cinder_netapp_backend = hiera('cinder::backend::netapp::title')\n\n cinder_config {\n \"${cinder_netapp_backend}/host\": value => 'hostgroup';\n }\n\n if hiera('cinder::backend::netapp::nfs_shares', undef) {\n $cinder_netapp_nfs_shares = split(hiera('cinder::backend::netapp::nfs_shares', undef), ',')\n }\n\n cinder::backend::netapp { $cinder_netapp_backend :\n netapp_login => hiera('cinder::backend::netapp::netapp_login', undef),\n netapp_password => hiera('cinder::backend::netapp::netapp_password', undef),\n netapp_server_hostname => hiera('cinder::backend::netapp::netapp_server_hostname', undef),\n netapp_server_port => hiera('cinder::backend::netapp::netapp_server_port', undef),\n netapp_size_multiplier => hiera('cinder::backend::netapp::netapp_size_multiplier', undef),\n netapp_storage_family => hiera('cinder::backend::netapp::netapp_storage_family', undef),\n netapp_storage_protocol => hiera('cinder::backend::netapp::netapp_storage_protocol', undef),\n netapp_transport_type => hiera('cinder::backend::netapp::netapp_transport_type', undef),\n netapp_vfiler => hiera('cinder::backend::netapp::netapp_vfiler', undef),\n netapp_volume_list => hiera('cinder::backend::netapp::netapp_volume_list', undef),\n netapp_vserver => hiera('cinder::backend::netapp::netapp_vserver', undef),\n netapp_partner_backend_name => hiera('cinder::backend::netapp::netapp_partner_backend_name', undef),\n nfs_shares => $cinder_netapp_nfs_shares,\n nfs_shares_config => hiera('cinder::backend::netapp::nfs_shares_config', undef),\n netapp_copyoffload_tool_path => hiera('cinder::backend::netapp::netapp_copyoffload_tool_path', undef),\n netapp_controller_ips => hiera('cinder::backend::netapp::netapp_controller_ips', undef),\n netapp_sa_password => hiera('cinder::backend::netapp::netapp_sa_password', undef),\n netapp_storage_pools => hiera('cinder::backend::netapp::netapp_storage_pools', undef),\n netapp_eseries_host_type => hiera('cinder::backend::netapp::netapp_eseries_host_type', undef),\n netapp_webservice_path => hiera('cinder::backend::netapp::netapp_webservice_path', undef),\n }\n }\n\n if hiera('cinder_enable_nfs_backend', false) {\n $cinder_nfs_backend = 'tripleo_nfs'\n\n if ($::selinux != \"false\") {\n selboolean { 'virt_use_nfs':\n value => on,\n persistent => true,\n } -> Package['nfs-utils']\n }\n\n package {'nfs-utils': } ->\n cinder::backend::nfs { $cinder_nfs_backend:\n nfs_servers => hiera('cinder_nfs_servers'),\n nfs_mount_options => hiera('cinder_nfs_mount_options'),\n nfs_shares_config => '/etc/cinder/shares-nfs.conf',\n }\n }\n\n $cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend, $cinder_rbd_backend, $cinder_netapp_backend, $cinder_nfs_backend])\n class { '::cinder::backends' :\n enabled_backends => $cinder_enabled_backends,\n }\n\n # swift proxy\n class { '::swift::proxy' :\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n include ::swift::proxy::proxy_logging\n include ::swift::proxy::healthcheck\n include ::swift::proxy::cache\n include ::swift::proxy::keystone\n include ::swift::proxy::authtoken\n include ::swift::proxy::staticweb\n include ::swift::proxy::ceilometer\n include ::swift::proxy::ratelimit\n include ::swift::proxy::catch_errors\n include ::swift::proxy::tempurl\n include ::swift::proxy::formpost\n\n # swift storage\n if str2bool(hiera('enable_swift_storage', 'true')) {\n class {'::swift::storage::all':\n mount_check => str2bool(hiera('swift_mount_check'))\n }\n class {'::swift::storage::account':\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n class {'::swift::storage::container':\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n class {'::swift::storage::object':\n manage_service => $non_pcmk_start,\n enabled => $non_pcmk_start,\n }\n if(!defined(File['/srv/node'])) {\n file { '/srv/node':\n ensure => directory,\n owner => 'swift',\n group => 'swift',\n require => Package['openstack-swift'],\n }\n }\n $swift_components = ['account', 'container', 'object']\n swift::storage::filter::recon { $swift_components : }\n swift::storage::filter::healthcheck { $swift_components : }\n }\n\n # Ceilometer\n $ceilometer_backend = downcase(hiera('ceilometer_backend'))\n case $ceilometer_backend {\n /mysql/ : {\n $ceilometer_database_connection = hiera('ceilometer_mysql_conn_string')\n }\n default : {\n $mongo_node_string = join($mongo_node_ips_with_port, ',')\n $ceilometer_database_connection = \"mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}\"\n }\n }\n include ::ceilometer\n class { '::ceilometer::api' :\n manage_service => false,\n enabled => false,\n }\n class { '::ceilometer::agent::notification' :\n manage_service => false,\n enabled => false,\n }\n class { '::ceilometer::agent::central' :\n manage_service => false,\n enabled => false,\n }\n class { '::ceilometer::alarm::notifier' :\n manage_service => false,\n enabled => false,\n }\n class { '::ceilometer::alarm::evaluator' :\n manage_service => false,\n enabled => false,\n }\n class { '::ceilometer::collector' :\n manage_service => false,\n enabled => false,\n }\n include ::ceilometer::expirer\n class { '::ceilometer::db' :\n database_connection => $ceilometer_database_connection,\n sync_db => $sync_db,\n }\n include ceilometer::agent::auth\n\n Cron <| title == 'ceilometer-expirer' |> { command => \"sleep $((\\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}\" }\n\n # Heat\n class { '::heat' :\n sync_db => $sync_db,\n }\n class { '::heat::api' :\n manage_service => false,\n enabled => false,\n }\n class { '::heat::api_cfn' :\n manage_service => false,\n enabled => false,\n }\n class { '::heat::api_cloudwatch' :\n manage_service => false,\n enabled => false,\n }\n class { '::heat::engine' :\n manage_service => false,\n enabled => false,\n }\n\n # httpd/apache and horizon\n include ::apache\n class { '::apache::mod::status':\n allow_from => ['127.0.0.1'],\n }\n # Horizon\n $vhost_params = {\n add_listen => false,\n priority => 10,\n }\n class { 'horizon':\n cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),\n vhost_extra_params => $vhost_params,\n server_aliases => $::hostname,\n }\n\n $snmpd_user = hiera('snmpd_readonly_user_name')\n snmp::snmpv3_user { $snmpd_user:\n authtype => 'MD5',\n authpass => hiera('snmpd_readonly_user_password'),\n }\n class { 'snmp':\n agentaddress => ['udp:161','udp6:[::1]:161'],\n snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],\n }\n\n} #END STEP 3\n\nif hiera('step') >= 4 {\n if $pacemaker_master {\n\n # Keystone\n pacemaker::resource::service { $::keystone::params::service_name :\n clone_params => \"interleave=true\",\n }\n\n # Cinder\n pacemaker::resource::service { $::cinder::params::api_service :\n clone_params => \"interleave=true\",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name],\n }\n pacemaker::resource::service { $::cinder::params::scheduler_service :\n clone_params => \"interleave=true\",\n }\n pacemaker::resource::service { $::cinder::params::volume_service : }\n\n pacemaker::constraint::base { 'keystone-then-cinder-api-constraint':\n constraint_type => 'order',\n first_resource => \"${::keystone::params::service_name}-clone\",\n second_resource => \"${::cinder::params::api_service}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::cinder::params::api_service],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { 'cinder-api-then-cinder-scheduler-constraint':\n constraint_type => \"order\",\n first_resource => \"${::cinder::params::api_service}-clone\",\n second_resource => \"${::cinder::params::scheduler_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::cinder::params::api_service],\n Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],\n }\n pacemaker::constraint::colocation { 'cinder-scheduler-with-cinder-api-colocation':\n source => \"${::cinder::params::scheduler_service}-clone\",\n target => \"${::cinder::params::api_service}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[$::cinder::params::api_service],\n Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],\n }\n pacemaker::constraint::base { 'cinder-scheduler-then-cinder-volume-constraint':\n constraint_type => \"order\",\n first_resource => \"${::cinder::params::scheduler_service}-clone\",\n second_resource => \"${::cinder::params::volume_service}\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],\n Pacemaker::Resource::Service[$::cinder::params::volume_service]],\n }\n pacemaker::constraint::colocation { 'cinder-volume-with-cinder-scheduler-colocation':\n source => \"${::cinder::params::volume_service}\",\n target => \"${::cinder::params::scheduler_service}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],\n Pacemaker::Resource::Service[$::cinder::params::volume_service]],\n }\n\n # Glance\n pacemaker::resource::service { $::glance::params::registry_service_name :\n clone_params => \"interleave=true\",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name],\n }\n pacemaker::resource::service { $::glance::params::api_service_name :\n clone_params => \"interleave=true\",\n }\n\n pacemaker::constraint::base { 'keystone-then-glance-registry-constraint':\n constraint_type => 'order',\n first_resource => \"${::keystone::params::service_name}-clone\",\n second_resource => \"${::glance::params::registry_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { 'glance-registry-then-glance-api-constraint':\n constraint_type => \"order\",\n first_resource => \"${::glance::params::registry_service_name}-clone\",\n second_resource => \"${::glance::params::api_service_name}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],\n Pacemaker::Resource::Service[$::glance::params::api_service_name]],\n }\n pacemaker::constraint::colocation { 'glance-api-with-glance-registry-colocation':\n source => \"${::glance::params::api_service_name}-clone\",\n target => \"${::glance::params::registry_service_name}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],\n Pacemaker::Resource::Service[$::glance::params::api_service_name]],\n }\n\n # Neutron\n # NOTE(gfidente): Neutron will try to populate the database with some data\n # as soon as neutron-server is started; to avoid races we want to make this\n # happen only on one node, before normal Pacemaker initialization\n # https://bugzilla.redhat.com/show_bug.cgi?id=1233061\n exec { 'neutron-server-start-wait-stop' :\n command => \"systemctl start neutron-server && \\\n sleep 5s && \\\n systemctl stop neutron-server\",\n path => [\"/usr/bin\", \"/usr/sbin\"],\n } ->\n pacemaker::resource::service { $::neutron::params::server_service:\n op_params => \"start timeout=90\",\n clone_params => \"interleave=true\",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name]\n }\n pacemaker::resource::service { $::neutron::params::l3_agent_service:\n clone_params => \"interleave=true\",\n }\n pacemaker::resource::service { $::neutron::params::dhcp_agent_service:\n clone_params => \"interleave=true\",\n }\n pacemaker::resource::service { $::neutron::params::ovs_agent_service:\n clone_params => \"interleave=true\",\n }\n pacemaker::resource::service { $::neutron::params::metadata_agent_service:\n clone_params => \"interleave=true\",\n }\n pacemaker::resource::ocf { $::neutron::params::ovs_cleanup_service:\n ocf_agent_name => \"neutron:OVSCleanup\",\n clone_params => \"interleave=true\",\n }\n pacemaker::resource::ocf { 'neutron-netns-cleanup':\n ocf_agent_name => \"neutron:NetnsCleanup\",\n clone_params => \"interleave=true\",\n }\n pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':\n constraint_type => \"order\",\n first_resource => \"${::keystone::params::service_name}-clone\",\n second_resource => \"${::neutron::params::server_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::keystone::params::service_name],\n Pacemaker::Resource::Service[$::neutron::params::server_service]],\n }\n pacemaker::constraint::base { 'neutron-server-to-neutron-ovs-cleanup-constraint':\n constraint_type => \"order\",\n first_resource => \"${::neutron::params::server_service}-clone\",\n second_resource => \"${::neutron::params::ovs_cleanup_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::neutron::params::server_service],\n Pacemaker::Resource::Ocf[\"${::neutron::params::ovs_cleanup_service}\"]],\n }\n pacemaker::constraint::base { 'neutron-ovs-cleanup-to-netns-cleanup-constraint':\n constraint_type => \"order\",\n first_resource => \"${::neutron::params::ovs_cleanup_service}-clone\",\n second_resource => \"neutron-netns-cleanup-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Ocf[\"${::neutron::params::ovs_cleanup_service}\"],\n Pacemaker::Resource::Ocf['neutron-netns-cleanup']],\n }\n pacemaker::constraint::colocation { 'neutron-ovs-cleanup-to-netns-cleanup-colocation':\n source => \"neutron-netns-cleanup-clone\",\n target => \"${::neutron::params::ovs_cleanup_service}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Ocf[\"${::neutron::params::ovs_cleanup_service}\"],\n Pacemaker::Resource::Ocf['neutron-netns-cleanup']],\n }\n pacemaker::constraint::base { 'neutron-netns-cleanup-to-openvswitch-agent-constraint':\n constraint_type => \"order\",\n first_resource => \"neutron-netns-cleanup-clone\",\n second_resource => \"${::neutron::params::ovs_agent_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Ocf[\"neutron-netns-cleanup\"],\n Pacemaker::Resource::Service[\"${::neutron::params::ovs_agent_service}\"]],\n }\n pacemaker::constraint::colocation { 'neutron-netns-cleanup-to-openvswitch-agent-colocation':\n source => \"${::neutron::params::ovs_agent_service}-clone\",\n target => \"neutron-netns-cleanup-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Ocf[\"neutron-netns-cleanup\"],\n Pacemaker::Resource::Service[\"${::neutron::params::ovs_agent_service}\"]],\n }\n pacemaker::constraint::base { 'neutron-openvswitch-agent-to-dhcp-agent-constraint':\n constraint_type => \"order\",\n first_resource => \"${::neutron::params::ovs_agent_service}-clone\",\n second_resource => \"${::neutron::params::dhcp_agent_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[\"${::neutron::params::ovs_agent_service}\"],\n Pacemaker::Resource::Service[\"${::neutron::params::dhcp_agent_service}\"]],\n\n }\n pacemaker::constraint::colocation { 'neutron-openvswitch-agent-to-dhcp-agent-colocation':\n source => \"${::neutron::params::dhcp_agent_service}-clone\",\n target => \"${::neutron::params::ovs_agent_service}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[\"${::neutron::params::ovs_agent_service}\"],\n Pacemaker::Resource::Service[\"${::neutron::params::dhcp_agent_service}\"]],\n }\n pacemaker::constraint::base { 'neutron-dhcp-agent-to-l3-agent-constraint':\n constraint_type => \"order\",\n first_resource => \"${::neutron::params::dhcp_agent_service}-clone\",\n second_resource => \"${::neutron::params::l3_agent_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[\"${::neutron::params::dhcp_agent_service}\"],\n Pacemaker::Resource::Service[\"${::neutron::params::l3_agent_service}\"]]\n }\n pacemaker::constraint::colocation { 'neutron-dhcp-agent-to-l3-agent-colocation':\n source => \"${::neutron::params::l3_agent_service}-clone\",\n target => \"${::neutron::params::dhcp_agent_service}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[\"${::neutron::params::dhcp_agent_service}\"],\n Pacemaker::Resource::Service[\"${::neutron::params::l3_agent_service}\"]]\n }\n pacemaker::constraint::base { 'neutron-l3-agent-to-metadata-agent-constraint':\n constraint_type => \"order\",\n first_resource => \"${::neutron::params::l3_agent_service}-clone\",\n second_resource => \"${::neutron::params::metadata_agent_service}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[\"${::neutron::params::l3_agent_service}\"],\n Pacemaker::Resource::Service[\"${::neutron::params::metadata_agent_service}\"]]\n }\n pacemaker::constraint::colocation { 'neutron-l3-agent-to-metadata-agent-colocation':\n source => \"${::neutron::params::metadata_agent_service}-clone\",\n target => \"${::neutron::params::l3_agent_service}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[\"${::neutron::params::l3_agent_service}\"],\n Pacemaker::Resource::Service[\"${::neutron::params::metadata_agent_service}\"]]\n }\n\n # Nova\n pacemaker::resource::service { $::nova::params::api_service_name :\n clone_params => \"interleave=true\",\n op_params => \"start timeout=60s monitor start-delay=10s\",\n }\n pacemaker::resource::service { $::nova::params::conductor_service_name :\n clone_params => \"interleave=true\",\n op_params => \"start timeout=60s monitor start-delay=10s\",\n }\n pacemaker::resource::service { $::nova::params::consoleauth_service_name :\n clone_params => \"interleave=true\",\n op_params => \"start timeout=60s monitor start-delay=10s\",\n require => Pacemaker::Resource::Service[$::keystone::params::service_name],\n }\n pacemaker::resource::service { $::nova::params::vncproxy_service_name :\n clone_params => \"interleave=true\",\n op_params => \"start timeout=60s monitor start-delay=10s\",\n }\n pacemaker::resource::service { $::nova::params::scheduler_service_name :\n clone_params => \"interleave=true\",\n op_params => \"start timeout=60s monitor start-delay=10s\",\n }\n\n pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':\n constraint_type => 'order',\n first_resource => \"${::keystone::params::service_name}-clone\",\n second_resource => \"${::nova::params::consoleauth_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { 'nova-consoleauth-then-nova-vncproxy-constraint':\n constraint_type => \"order\",\n first_resource => \"${::nova::params::consoleauth_service_name}-clone\",\n second_resource => \"${::nova::params::vncproxy_service_name}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],\n Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],\n }\n pacemaker::constraint::colocation { 'nova-vncproxy-with-nova-consoleauth-colocation':\n source => \"${::nova::params::vncproxy_service_name}-clone\",\n target => \"${::nova::params::consoleauth_service_name}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],\n Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],\n }\n # FIXME(gfidente): novncproxy will not start unless websockify is updated to 0.6\n # which is not the case for f20 nor f21; ucomment when it becomes available\n #pacemaker::constraint::base { 'nova-vncproxy-then-nova-api-constraint':\n # constraint_type => \"order\",\n # first_resource => \"${::nova::params::vncproxy_service_name}-clone\",\n # second_resource => \"${::nova::params::api_service_name}-clone\",\n # first_action => \"start\",\n # second_action => \"start\",\n # require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],\n # Pacemaker::Resource::Service[$::nova::params::api_service_name]],\n #}\n #pacemaker::constraint::colocation { 'nova-api-with-nova-vncproxy-colocation':\n # source => \"${::nova::params::api_service_name}-clone\",\n # target => \"${::nova::params::vncproxy_service_name}-clone\",\n # score => \"INFINITY\",\n # require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],\n # Pacemaker::Resource::Service[$::nova::params::api_service_name]],\n #}\n pacemaker::constraint::base { 'nova-api-then-nova-scheduler-constraint':\n constraint_type => \"order\",\n first_resource => \"${::nova::params::api_service_name}-clone\",\n second_resource => \"${::nova::params::scheduler_service_name}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],\n Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],\n }\n pacemaker::constraint::colocation { 'nova-scheduler-with-nova-api-colocation':\n source => \"${::nova::params::scheduler_service_name}-clone\",\n target => \"${::nova::params::api_service_name}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],\n Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],\n }\n pacemaker::constraint::base { 'nova-scheduler-then-nova-conductor-constraint':\n constraint_type => \"order\",\n first_resource => \"${::nova::params::scheduler_service_name}-clone\",\n second_resource => \"${::nova::params::conductor_service_name}-clone\",\n first_action => \"start\",\n second_action => \"start\",\n require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],\n Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],\n }\n pacemaker::constraint::colocation { 'nova-conductor-with-nova-scheduler-colocation':\n source => \"${::nova::params::conductor_service_name}-clone\",\n target => \"${::nova::params::scheduler_service_name}-clone\",\n score => \"INFINITY\",\n require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],\n Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],\n }\n\n # Ceilometer\n pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :\n clone_params => 'interleave=true',\n require => [Pacemaker::Resource::Service[$::keystone::params::service_name],\n Pacemaker::Resource::Service[$::mongodb::params::service_name]],\n }\n pacemaker::resource::service { $::ceilometer::params::collector_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::ceilometer::params::api_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::ceilometer::params::alarm_evaluator_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::ocf { 'delay' :\n ocf_agent_name => 'heartbeat:Delay',\n clone_params => 'interleave=true',\n resource_params => 'startdelay=10',\n }\n pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':\n constraint_type => 'order',\n first_resource => \"${::keystone::params::service_name}-clone\",\n second_resource => \"${::ceilometer::params::agent_central_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { 'ceilometer-central-then-ceilometer-collector-constraint':\n constraint_type => 'order',\n first_resource => \"${::ceilometer::params::agent_central_service_name}-clone\",\n second_resource => \"${::ceilometer::params::collector_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],\n }\n pacemaker::constraint::base { 'ceilometer-collector-then-ceilometer-api-constraint':\n constraint_type => 'order',\n first_resource => \"${::ceilometer::params::collector_service_name}-clone\",\n second_resource => \"${::ceilometer::params::api_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::api_service_name]],\n }\n pacemaker::constraint::colocation { 'ceilometer-api-with-ceilometer-collector-colocation':\n source => \"${::ceilometer::params::api_service_name}-clone\",\n target => \"${::ceilometer::params::collector_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],\n }\n pacemaker::constraint::base { 'ceilometer-api-then-ceilometer-delay-constraint':\n constraint_type => 'order',\n first_resource => \"${::ceilometer::params::api_service_name}-clone\",\n second_resource => 'delay-clone',\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Ocf['delay']],\n }\n pacemaker::constraint::colocation { 'ceilometer-delay-with-ceilometer-api-colocation':\n source => 'delay-clone',\n target => \"${::ceilometer::params::api_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Ocf['delay']],\n }\n pacemaker::constraint::base { 'ceilometer-delay-then-ceilometer-alarm-evaluator-constraint':\n constraint_type => 'order',\n first_resource => 'delay-clone',\n second_resource => \"${::ceilometer::params::alarm_evaluator_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],\n Pacemaker::Resource::Ocf['delay']],\n }\n pacemaker::constraint::colocation { 'ceilometer-alarm-evaluator-with-ceilometer-delay-colocation':\n source => \"${::ceilometer::params::alarm_evaluator_service_name}-clone\",\n target => 'delay-clone',\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],\n Pacemaker::Resource::Ocf['delay']],\n }\n pacemaker::constraint::base { 'ceilometer-alarm-evaluator-then-ceilometer-alarm-notifier-constraint':\n constraint_type => 'order',\n first_resource => \"${::ceilometer::params::alarm_evaluator_service_name}-clone\",\n second_resource => \"${::ceilometer::params::alarm_notifier_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n pacemaker::constraint::colocation { 'ceilometer-alarm-notifier-with-ceilometer-alarm-evaluator-colocation':\n source => \"${::ceilometer::params::alarm_notifier_service_name}-clone\",\n target => \"${::ceilometer::params::alarm_evaluator_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n pacemaker::constraint::base { 'ceilometer-alarm-notifier-then-ceilometer-notification-constraint':\n constraint_type => 'order',\n first_resource => \"${::ceilometer::params::alarm_notifier_service_name}-clone\",\n second_resource => \"${::ceilometer::params::agent_notification_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n pacemaker::constraint::colocation { 'ceilometer-notification-with-ceilometer-alarm-notifier-colocation':\n source => \"${::ceilometer::params::agent_notification_service_name}-clone\",\n target => \"${::ceilometer::params::alarm_notifier_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],\n }\n if downcase(hiera('ceilometer_backend')) == 'mongodb' {\n pacemaker::constraint::base { 'mongodb-then-ceilometer-central-constraint':\n constraint_type => 'order',\n first_resource => \"${::mongodb::params::service_name}-clone\",\n second_resource => \"${::ceilometer::params::agent_central_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],\n Pacemaker::Resource::Service[$::mongodb::params::service_name]],\n }\n }\n\n # Heat\n pacemaker::resource::service { $::heat::params::api_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::heat::params::api_cloudwatch_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::heat::params::api_cfn_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::resource::service { $::heat::params::engine_service_name :\n clone_params => 'interleave=true',\n }\n pacemaker::constraint::base { 'keystone-then-heat-api-constraint':\n constraint_type => 'order',\n first_resource => \"${::keystone::params::service_name}-clone\",\n second_resource => \"${::heat::params::api_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],\n Pacemaker::Resource::Service[$::keystone::params::service_name]],\n }\n pacemaker::constraint::base { 'heat-api-then-heat-api-cfn-constraint':\n constraint_type => 'order',\n first_resource => \"${::heat::params::api_service_name}-clone\",\n second_resource => \"${::heat::params::api_cfn_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name]],\n }\n pacemaker::constraint::colocation { 'heat-api-cfn-with-heat-api-colocation':\n source => \"${::heat::params::api_cfn_service_name}-clone\",\n target => \"${::heat::params::api_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_service_name]],\n }\n pacemaker::constraint::base { 'heat-api-cfn-then-heat-api-cloudwatch-constraint':\n constraint_type => 'order',\n first_resource => \"${::heat::params::api_cfn_service_name}-clone\",\n second_resource => \"${::heat::params::api_cloudwatch_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name]],\n }\n pacemaker::constraint::colocation { 'heat-api-cloudwatch-with-heat-api-cfn-colocation':\n source => \"${::heat::params::api_cloudwatch_service_name}-clone\",\n target => \"${::heat::params::api_cfn_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name],\n Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name]],\n }\n pacemaker::constraint::base { 'heat-api-cloudwatch-then-heat-engine-constraint':\n constraint_type => 'order',\n first_resource => \"${::heat::params::api_cloudwatch_service_name}-clone\",\n second_resource => \"${::heat::params::engine_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],\n Pacemaker::Resource::Service[$::heat::params::engine_service_name]],\n }\n pacemaker::constraint::colocation { 'heat-engine-with-heat-api-cloudwatch-colocation':\n source => \"${::heat::params::engine_service_name}-clone\",\n target => \"${::heat::params::api_cloudwatch_service_name}-clone\",\n score => 'INFINITY',\n require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],\n Pacemaker::Resource::Service[$::heat::params::engine_service_name]],\n }\n pacemaker::constraint::base { 'ceilometer-notification-then-heat-api-constraint':\n constraint_type => 'order',\n first_resource => \"${::ceilometer::params::agent_notification_service_name}-clone\",\n second_resource => \"${::heat::params::api_service_name}-clone\",\n first_action => 'start',\n second_action => 'start',\n require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],\n Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name]],\n }\n\n # Horizon\n pacemaker::resource::service { $::horizon::params::http_service:\n clone_params => \"interleave=true\",\n }\n\n\n }\n\n} #END STEP 4\n\n# SERVICES INIT\n# Needs to happen on all nodes (some parts do .conf file amendments)\n# but it needs to happen on $pacemaker_master first (other parts make\n# API calls and we don't want races, and the .conf file amendments\n# often depend on the API calls having been made).\nif (hiera('step') >= 5 and $pacemaker_master) or hiera('step') >= 6 {\n\n include ::keystone::roles::admin\n\n # TO-DO: Remove this class as soon as Keystone v3 will be fully functional\n include ::heat::keystone::domain\n Class['::keystone::roles::admin'] -> Exec['heat_domain_create']\n\n} # END SERVICES INIT (STEP 5 and 6)\n", "file:///tmp/tmpVtTjeI/hieradata/controller.yaml": "# Hiera data here applies to all controller nodes\nkeystone::roles::admin::email: 'root@localhost'\nkeystone::roles::admin::admin_tenant: 'admin'\n\nnova::api::enabled: true\nnova::conductor::enabled: true\nnova::consoleauth::enabled: true\nnova::vncproxy::enabled: true\nnova::scheduler::enabled: true\n\n# rabbitmq\nrabbitmq::delete_guest_user: false\nrabbitmq::wipe_db_on_cookie_change: true\nrabbitmq::port: '5672'\nrabbitmq::package_source: undef\nrabbitmq::repos_ensure: false\nrabbitmq_environment:\n RABBITMQ_NODENAME: \"rabbit@%{::hostname}\"\n RABBITMQ_SERVER_ERL_ARGS: '\"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]\"'\nrabbitmq_kernel_variables:\n inet_dist_listen_min: '35672'\n inet_dist_listen_max: '35672'\nrabbitmq_config_variables:\n tcp_listen_options: '[binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]'\n cluster_partition_handling: 'pause_minority'\n\nmongodb::server::replset: tripleo\nmongodb::server::config: '/etc/mongod.conf'\n\nredis::port: 6379\nredis::sentinel::master_name: \"%{hiera('bootstrap_nodeid')}\"\nredis::sentinel::redis_host: \"%{hiera('bootstrap_nodeid_ip')}\"\nredis::sentinel::notification_script: '/usr/local/bin/redis-notifications.sh'\n\n# service tenant\nnova::api::admin_tenant_name: 'service'\nglance::api::keystone_tenant: 'service'\nglance::registry::keystone_tenant: 'service'\nneutron::server::auth_tenant: 'service'\nneutron::agents::metadata::auth_tenant: 'service'\ncinder::api::keystone_tenant: 'service'\nswift::proxy::authtoken::admin_tenant_name: 'service'\nceilometer::api::keystone_tenant: 'service'\nheat::keystone_tenant: 'service'\n\n#swift\nswift::proxy::pipeline:\n - 'catch_errors'\n - 'healthcheck'\n - 'cache'\n - 'ratelimit'\n - 'tempurl'\n - 'formpost'\n - 'staticweb'\n - 'ceilometer'\n - 'authtoken'\n - 'keystone'\n - 'proxy-logging'\n - 'proxy-server'\n\nswift::proxy::account_autocreate: true\n\n# glance\nglance::api::pipeline: 'keystone'\nglance::registry::pipeline: 'keystone'\nglance::backend::swift::swift_store_create_container_on_put: true\nglance::backend::rbd::rbd_store_user: 'openstack'\nglance_file_pcmk_directory: '/var/lib/glance/images'\n\n# neutron\nneutron::core_plugin: 'ml2'\nneutron::service_plugins:\n - 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin'\nneutron::server::sync_db: true\nneutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf\n\n# nova\nnova::notify_on_state_change: 'vm_and_task_state'\nnova::api::osapi_v3: true\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\n# heat\nheat::engine::configure_delegated_roles: false\nheat::engine::trusts_delegated_roles: []\nheat::instance_user: ''\nheat::keystone::domain::keystone_admin: 'admin'\nheat::keystone::domain::keystone_tenant: 'admin'\nheat::keystone::domain::domain_name: 'heat_stack'\nheat::keystone::domain::domain_admin: 'heat_stack_domain_admin'\n\n# pacemaker\npacemaker::corosync::cluster_name: 'tripleo_cluster'\npacemaker::corosync::manage_fw: false\n\n# horizon\nhorizon::allowed_hosts: '*'\nhorizon::django_session_engine: 'django.contrib.sessions.backends.cache'\n\n# mysql\nmysql::server::manage_config_file: true\n\n\ntripleo::loadbalancer::keystone_admin: true\ntripleo::loadbalancer::keystone_public: true\ntripleo::loadbalancer::neutron: true\ntripleo::loadbalancer::cinder: true\ntripleo::loadbalancer::glance_api: true\ntripleo::loadbalancer::glance_registry: true\ntripleo::loadbalancer::nova_ec2: true\ntripleo::loadbalancer::nova_osapi: true\ntripleo::loadbalancer::nova_metadata: true\ntripleo::loadbalancer::nova_novncproxy: true\ntripleo::loadbalancer::mysql: true\ntripleo::loadbalancer::redis: true\ntripleo::loadbalancer::swift_proxy_server: true\ntripleo::loadbalancer::ceilometer: true\ntripleo::loadbalancer::heat_api: true\ntripleo::loadbalancer::heat_cloudwatch: true\ntripleo::loadbalancer::heat_cfn: true\ntripleo::loadbalancer::horizon: true\n", "file:///tmp/tmpVtTjeI/provider-Controller-1.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hostname\": {\"description\": \"Hostname of the server\", \"value\": {\"get_attr\": [\"Controller\", \"name\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the controller configuration may need re-applying\", \"value\": {\"list_join\": [\",\", [{\"get_attr\": [\"ControllerDeployment\", \"deploy_stdout\"]}, {\"get_attr\": [\"ControllerExtraConfigPre\", \"deploy_stdout\"]}]]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the Nova compute server\", \"value\": {\"get_resource\": \"Controller\"}}, \"tenant_ip_address\": {\"description\": \"IP address of the server in the tenant network\", \"value\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}}, \"external_ip_address\": {\"description\": \"IP address of the server in the external network\", \"value\": {\"get_attr\": [\"ExternalPort\", \"ip_address\"]}}, \"swift_device\": {\"description\": \"Swift device formatted for swift-ring-builder\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}}, \"template\": \"r1z1-IP:%PORT%/d1\"}}}, \"corosync_node\": {\"description\": \"Node object in the format {ip: ..., name: ...} format that the corosync element expects\\n\", \"value\": {\"ip\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}, \"name\": {\"get_attr\": [\"Controller\", \"name\"]}}}, \"hosts_entry\": {\"description\": \"Server's IP address and hostname in the /etc/hosts format\\n\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"ControllerHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"Controller\", \"name\"]}, \"CLOUDNAME\": {\"get_param\": \"CloudName\"}}, \"template\": \"IP HOST.localdomain HOST CLOUDNAME\"}}}, \"swift_proxy_memcache\": {\"description\": \"Swift proxy-memcache value\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MemcachedNetwork\"]}]}}, \"template\": \"IP:11211\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"ip_address\": {\"description\": \"IP address of the server in the ctlplane network\", \"value\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack controller node configured by Puppet.\\n\", \"parameters\": {\"MysqlMaxConnections\": {\"default\": 1024, \"type\": \"number\", \"description\": \"Configures MySQL max_connections config setting\"}, \"EnableCephStorage\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to deploy Ceph Storage (OSD) on the Controller\"}, \"NeutronPublicInterfaceRawDevice\": {\"default\": \"\", \"type\": \"string\", \"description\": \"If set, the public interface is a vlan with this device as the raw device.\"}, \"KeystoneSigningKey\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"Keystone key for signing tokens.\"}, \"SSLCACertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"If set, the contents of an SSL certificate authority file.\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"GlanceFilePcmkManage\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to make Glance file backend a mount managed by Pacemaker. Effective when GlanceBackend is 'file'.\\n\"}, \"KeystoneSSLCertificateKey\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"Keystone key for signing tokens.\"}, \"NeutronDhcpAgentsPerNetwork\": {\"default\": 3, \"type\": \"number\", \"description\": \"The number of neutron dhcp agents to schedule per network\"}, \"NeutronPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the neutron service and db account, used by neutron agents.\"}, \"NeutronFlatNetworks\": {\"default\": \"datacentre\", \"type\": \"string\", \"description\": \"If set, flat networks to configure in neutron plugins.\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"NeutronPublicInterface\": {\"default\": \"nic1\", \"type\": \"string\", \"description\": \"What interface to bridge onto br-ex for network nodes.\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"GlancePassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the glance service and db account, used by the glance services.\"}, \"NeutronTunnelIdRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n\"}, \"CinderEnableRbdBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Rbd backend for Cinder\"}, \"SwiftReplicas\": {\"default\": 3, \"type\": \"number\", \"description\": \"How many replicas to use in the swift rings.\"}, \"NeutronPublicInterfaceTag\": {\"default\": \"\", \"type\": \"string\", \"description\": \"VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\\n\"}, \"NeutronNetworkVLANRanges\": {\"default\": \"datacentre\", \"type\": \"comma_delimited_list\", \"description\": \"The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\\n\"}, \"KeystoneSigningCertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Keystone certificate for verifying token validity.\"}, \"SSLKey\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.\"}, \"GlanceFilePcmkFstype\": {\"default\": \"nfs\", \"type\": \"string\", \"description\": \"Filesystem type for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"RabbitCookie\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\", \"constraints\": [{\"custom_constraint\": \"nova.keypair\"}]}, \"MysqlRootPassword\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\"}, \"GlanceProtocol\": {\"default\": \"http\", \"type\": \"string\", \"description\": \"Protocol to use when connecting to glance, set to https for SSL.\"}, \"CinderISCSIHelper\": {\"default\": \"tgtadm\", \"type\": \"string\", \"description\": \"The iSCSI helper to use with cinder.\"}, \"MysqlClusterUniquePart\": {\"default\": \"unset\", \"type\": \"string\", \"description\": \"A unique identifier of the MySQL cluster the controller is in.\"}, \"CinderPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the cinder service and db account, used by cinder-api.\"}, \"CloudName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The DNS name of this cloud. E.g. ci-overcloud.tripleo.org\"}, \"CinderLVMLoopDeviceSize\": {\"default\": 5000, \"type\": \"number\", \"description\": \"The size of the loopback file used by the cinder LVM driver.\"}, \"RabbitPassword\": {\"default\": \"guest\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for RabbitMQ\"}, \"CinderNfsServers\": {\"default\": \"\", \"type\": \"comma_delimited_list\", \"description\": \"NFS servers used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n\"}, \"NeutronApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"ImageUpdatePolicy\": {\"default\": \"REBUILD_PRESERVE_EPHEMERAL\", \"type\": \"string\", \"description\": \"What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.\"}, \"MysqlInnodbBufferPoolSize\": {\"default\": 0, \"type\": \"number\", \"description\": \"Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as \\\"no value\\\" and will defer to the lower level default.\\n\"}, \"PublicVirtualInterface\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used.\\n\"}, \"Debug\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Set to True to enable debugging on all services.\"}, \"NeutronAgentMode\": {\"default\": \"dvr_snat\", \"type\": \"string\", \"description\": \"Agent mode for the neutron-l3-agent on the controller hosts\"}, \"GlanceFilePcmkDevice\": {\"default\": \"\", \"type\": \"string\", \"description\": \"An exported storage device that should be mounted by Pacemaker as Glance storage. Effective when GlanceFilePcmkManage is true.\\n\"}, \"AdminToken\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The keystone auth secret and db password.\"}, \"SwiftMinPartHours\": {\"default\": 1, \"type\": \"number\", \"description\": \"The minimum time (in hours) before a partition in a ring can be moved following a rebalance.\"}, \"KeystoneSSLCertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Keystone certificate for verifying token validity.\"}, \"NeutronL3HA\": {\"default\": \"False\", \"type\": \"string\", \"description\": \"Whether to enable l3-agent HA\"}, \"EnableGalera\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to use Galera instead of regular MariaDB.\"}, \"HorizonSecret\": {\"type\": \"string\", \"description\": \"Secret key for Django\"}, \"NeutronBridgeMappings\": {\"default\": \"datacentre:br-ex\", \"type\": \"string\", \"description\": \"The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\\n\"}, \"VirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"CinderEnableIscsiBackend\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Iscsi backend for Cinder\"}, \"CeilometerMeteringSecret\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"Secret shared by the ceilometer services.\"}, \"NeutronMetadataProxySharedSecret\": {\"default\": \"unset\", \"type\": \"string\", \"description\": \"Shared secret to prevent spoofing\"}, \"PublicVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for control nodes to request when deploying.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"CinderEnableNfsBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the NFS backend for Cinder\"}, \"NovaPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the nova service and db account, used by nova-api.\"}, \"KeystonePublicApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"GlancePort\": {\"default\": \"9292\", \"type\": \"string\", \"description\": \"Glance port.\"}, \"SwiftPartPower\": {\"default\": 10, \"type\": \"number\", \"description\": \"Partition Power to use when building Swift rings\"}, \"HeatApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronPublicInterfaceDefaultRoute\": {\"default\": \"\", \"type\": \"string\", \"description\": \"A custom default route for the NeutronPublicInterface.\"}, \"HeatPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the Heat service and db account, used by the Heat services.\"}, \"MysqlVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"RedisVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"ControllerExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Controller specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n\"}, \"ControlVirtualInterface\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"Interface where virtual ip will be assigned.\"}, \"SwiftMountCheck\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Value of mount_check in Swift account/container/object -server.conf\"}, \"HeatStackDomainAdminPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"Password for heat_stack_domain_admin user.\"}, \"RabbitClientPort\": {\"default\": 5672, \"type\": \"number\", \"description\": \"Set rabbit subscriber port, change this if using SSL\"}, \"PcsdPassword\": {\"type\": \"string\", \"description\": \"The password for the 'pcsd' user.\"}, \"GlanceApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"SwiftPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the swift service account, used by the swift proxy services.\"}, \"EnableSwiftStorage\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to enable Swift Storage on the Controller\"}, \"EnablePacemaker\": {\"default\": false, \"type\": \"boolean\", \"description\": \"If enabled services will be monitored by Pacemaker; it will manage VIPs as well, in place of Keepalived.\"}, \"NeutronNetworkType\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tenant network type for Neutron, either gre or vxlan.\"}, \"CeilometerPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the ceilometer service and db account.\"}, \"SSLCertificate\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.\"}, \"NeutronVniRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n\"}, \"GlanceNotifierStrategy\": {\"default\": \"noop\", \"type\": \"string\", \"description\": \"Strategy to use for Glance notification queue\"}, \"CinderBackendConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Contains parameters to configure Cinder backends. Typically set via parameter_defaults in the resource registry.\"}, \"NeutronMechanismDrivers\": {\"default\": \"openvswitch\", \"type\": \"string\", \"description\": \"The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\\n\"}, \"GlanceBackend\": {\"default\": \"swift\", \"type\": \"string\", \"description\": \"The short name of the Glance backend to use. Should be one of swift, rbd, or file\", \"constraints\": [{\"allowed_values\": [\"swift\", \"file\", \"rbd\"]}]}, \"RabbitClientUseSSL\": {\"default\": false, \"type\": \"string\", \"description\": \"Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n\"}, \"NeutronAllowL3AgentFailover\": {\"default\": \"True\", \"type\": \"string\", \"description\": \"Allow automatic l3-agent failover\"}, \"HeatAuthEncryptionKey\": {\"type\": \"string\", \"description\": \"Auth encryption key for heat-engine\"}, \"GlanceFilePcmkOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Mount options for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n\"}, \"RabbitUserName\": {\"default\": \"guest\", \"type\": \"string\", \"description\": \"The username for RabbitMQ\"}, \"GlanceLogFile\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The filepath of the file to use for logging messages from Glance.\"}, \"CinderNfsMountOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Mount options for NFS mounts used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n\"}, \"NeutronExternalNetworkBridge\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"Name of bridge used for external network traffic.\"}, \"CeilometerBackend\": {\"default\": \"mongodb\", \"type\": \"string\", \"description\": \"The ceilometer backend type.\"}, \"NeutronPublicInterfaceIP\": {\"default\": \"\", \"type\": \"string\", \"description\": \"A custom IP address to put onto the NeutronPublicInterface.\"}, \"SwiftHashSuffix\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"A random string to be used as a salt when hashing to determine mappings in the ring.\"}, \"AdminPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the keystone admin account, used for monitoring, querying neutron etc.\"}, \"NeutronDVR\": {\"default\": \"False\", \"type\": \"string\", \"description\": \"Whether to configure Neutron Distributed Virtual Routers\"}, \"Image\": {\"default\": \"overcloud-control\", \"type\": \"string\", \"constraints\": [{\"custom_constraint\": \"glance.image\"}]}, \"ExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\\"FILEKEY\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"SECTIONNAME\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"OPTIONNAME\\\",\\n \\\"value\\\": \\\"VALUENAME\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\\"nova\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"default\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"compute_manager\\\",\\n \\\"value\\\": \\\"ironic.nova.compute.manager.ClusterComputeManager\\\"\\n }\\n ]\\n },\\n {\\\"section\\\": \\\"cells\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"driver\\\",\\n \\\"value\\\": \\\"nova.cells.rpc_driver.CellsRPCDriver\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n\"}, \"NeutronTunnelTypes\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'gre,vxlan'\\n\"}, \"NeutronEnableTunnelling\": {\"default\": \"True\", \"type\": \"string\"}, \"KeystoneCACertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Keystone self-signed certificate authority certificate.\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}, \"NeutronDnsmasqOptions\": {\"default\": \"dhcp-option-force=26,1400\", \"type\": \"string\", \"description\": \"Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"ControllerExtraConfigPre\": {\"depends_on\": \"ControllerDeployment\", \"type\": \"OS::TripleO::ControllerExtraConfigPre\", \"properties\": {\"server\": {\"get_resource\": \"Controller\"}}}, \"TenantPort\": {\"type\": \"OS::TripleO::Controller::Ports::TenantPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"ExternalPort\": {\"type\": \"OS::TripleO::Controller::Ports::ExternalPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::Controller::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}, \"TenantIpSubnet\": {\"get_attr\": [\"TenantPort\", \"ip_subnet\"]}, \"ExternalIpSubnet\": {\"get_attr\": [\"ExternalPort\", \"ip_subnet\"]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::Controller::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"ControllerDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"heat_stack_domain_admin_password\": {\"get_param\": \"HeatStackDomainAdminPassword\"}, \"admin_token\": {\"get_param\": \"AdminToken\"}, \"heat.metadata_server_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"HeatApiVirtualIP\"}, \":8000\"]]}, \"neutron_router_distributed\": {\"get_param\": \"NeutronDVR\"}, \"swift_password\": {\"get_param\": \"SwiftPassword\"}, \"neutron_flat_networks\": {\"get_param\": \"NeutronFlatNetworks\"}, \"redis_vip\": {\"get_param\": \"RedisVirtualIP\"}, \"glance_port\": {\"get_param\": \"GlancePort\"}, \"glance_api_servers\": {\"list_join\": [\"\", [{\"get_param\": \"GlanceProtocol\"}, \"://\", {\"get_param\": \"GlanceApiVirtualIP\"}, \":\", {\"get_param\": \"GlancePort\"}]]}, \"rabbit_password\": {\"get_param\": \"RabbitPassword\"}, \"neutron_vni_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronVniRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"neutron_tunnel_types\": {\"get_param\": \"NeutronTunnelTypes\"}, \"neutron_dnsmasq_options\": {\"get_param\": \"NeutronDnsmasqOptions\"}, \"keystone_admin_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"KeystoneAdminApiNetwork\"]}]}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}, \"neutron_public_interface_raw_device\": {\"get_param\": \"NeutronPublicInterfaceRawDevice\"}, \"neutron_password\": {\"get_param\": \"NeutronPassword\"}, \"cinder_enable_rbd_backend\": {\"get_param\": \"CinderEnableRbdBackend\"}, \"glance_file_pcmk_options\": {\"get_param\": \"GlanceFilePcmkOptions\"}, \"enable_swift_storage\": {\"get_param\": \"EnableSwiftStorage\"}, \"glance_backend\": {\"get_param\": \"GlanceBackend\"}, \"horizon_secret\": {\"get_param\": \"HorizonSecret\"}, \"glance_file_pcmk_fstype\": {\"get_param\": \"GlanceFilePcmkFstype\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"neutron_l3_ha\": {\"get_param\": \"NeutronL3HA\"}, \"neutron_local_ip\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NeutronTenantNetwork\"]}]}, \"admin_password\": {\"get_param\": \"AdminPassword\"}, \"neutron_admin_auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":35357/v2.0\"]]}, \"ceph_public_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephPublicNetwork\"]}]}, \"bootstack_nodeid\": {\"get_attr\": [\"Controller\", \"name\"]}, \"glance_file_pcmk_device\": {\"get_param\": \"GlanceFilePcmkDevice\"}, \"heat_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"HeatApiNetwork\"]}]}, \"cinder_dsn\": {\"list_join\": [\"\", [\"mysql://cinder:\", {\"get_param\": \"CinderPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/cinder\"]]}, \"enable_ceph_storage\": {\"get_param\": \"EnableCephStorage\"}, \"cinder_lvm_loop_device_size\": {\"get_param\": \"CinderLVMLoopDeviceSize\"}, \"neutron_mechanism_drivers\": {\"get_param\": \"NeutronMechanismDrivers\"}, \"neutron_public_interface_ip\": {\"get_param\": \"NeutronPublicInterfaceIP\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"keystone_dsn\": {\"list_join\": [\"\", [\"mysql://keystone:\", {\"get_param\": \"AdminToken\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/keystone\"]]}, \"keystone_signing_certificate\": {\"get_param\": \"KeystoneSigningCertificate\"}, \"mysql_innodb_buffer_pool_size\": {\"get_param\": \"MysqlInnodbBufferPoolSize\"}, \"glance_dsn\": {\"list_join\": [\"\", [\"mysql://glance:\", {\"get_param\": \"GlancePassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/glance\"]]}, \"ceilometer_coordination_url\": {\"list_join\": [\"\", [\"redis://\", {\"get_param\": \"RedisVirtualIP\"}, \":6379\"]]}, \"nova_dsn\": {\"list_join\": [\"\", [\"mysql://nova:\", {\"get_param\": \"NovaPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/nova\"]]}, \"cinder_password\": {\"get_param\": \"CinderPassword\"}, \"swift_hash_suffix\": {\"get_param\": \"SwiftHashSuffix\"}, \"nova_metadata_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NovaMetadataNetwork\"]}]}, \"pcsd_password\": {\"get_param\": \"PcsdPassword\"}, \"keystone_public_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"KeystonePublicApiNetwork\"]}]}, \"neutron_bridge_mappings\": {\"get_param\": \"NeutronBridgeMappings\"}, \"public_virtual_interface\": {\"get_param\": \"PublicVirtualInterface\"}, \"neutron_public_interface\": {\"get_param\": \"NeutronPublicInterface\"}, \"neutron_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"NeutronApiVirtualIP\"}, \":9696\"]]}, \"ceilometer_metering_secret\": {\"get_param\": \"CeilometerMeteringSecret\"}, \"glance_password\": {\"get_param\": \"GlancePassword\"}, \"nova_password\": {\"get_param\": \"NovaPassword\"}, \"neutron_dhcp_agents_per_network\": {\"get_param\": \"NeutronDhcpAgentsPerNetwork\"}, \"keystone_auth_uri\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":5000/v2.0/\"]]}, \"rabbit_username\": {\"get_param\": \"RabbitUserName\"}, \"neutron_enable_tunneling\": {\"get_param\": \"NeutronEnableTunnelling\"}, \"heat_password\": {\"get_param\": \"HeatPassword\"}, \"debug\": {\"get_param\": \"Debug\"}, \"keystone_ca_certificate\": {\"get_param\": \"KeystoneCACertificate\"}, \"rabbit_client_port\": {\"get_param\": \"RabbitClientPort\"}, \"keystone_signing_key\": {\"get_param\": \"KeystoneSigningKey\"}, \"swift_management_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}, \"neutron_tunnel_id_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronTunnelIdRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"swift_min_part_hours\": {\"get_param\": \"SwiftMinPartHours\"}, \"neutron_public_interface_default_route\": {\"get_param\": \"NeutronPublicInterfaceDefaultRoute\"}, \"mongo_db_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MongoDbNetwork\"]}]}, \"swift_mount_check\": {\"get_param\": \"SwiftMountCheck\"}, \"heat.watch_server_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"HeatApiVirtualIP\"}, \":8003\"]]}, \"heat_dsn\": {\"list_join\": [\"\", [\"mysql://heat:\", {\"get_param\": \"HeatPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/heat\"]]}, \"keystone_ssl_certificate_key\": {\"get_param\": \"KeystoneSSLCertificateKey\"}, \"rabbitmq_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"RabbitMqNetwork\"]}]}, \"mysql_cluster_name\": {\"str_replace\": {\"params\": {\"CLUSTER\": {\"get_param\": \"MysqlClusterUniquePart\"}}, \"template\": \"tripleo-CLUSTER\"}}, \"neutron_public_interface_tag\": {\"get_param\": \"NeutronPublicInterfaceTag\"}, \"cinder_iscsi_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CinderIscsiNetwork\"]}]}, \"control_virtual_interface\": {\"get_param\": \"ControlVirtualInterface\"}, \"cinder_iscsi_helper\": {\"get_param\": \"CinderISCSIHelper\"}, \"neutron_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NeutronApiNetwork\"]}]}, \"rabbit_client_use_ssl\": {\"get_param\": \"RabbitClientUseSSL\"}, \"mysql_root_password\": {\"get_param\": \"MysqlRootPassword\"}, \"glance_log_file\": {\"get_param\": \"GlanceLogFile\"}, \"swift_proxy_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftProxyNetwork\"]}]}, \"memcached_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MemcachedNetwork\"]}]}, \"heat_auth_encryption_key\": {\"get_param\": \"HeatAuthEncryptionKey\"}, \"keystone_ec2_uri\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":5000/v2.0/ec2tokens\"]]}, \"enable_galera\": {\"get_param\": \"EnableGalera\"}, \"mysql_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MysqlNetwork\"]}]}, \"neutron_allow_l3agent_failover\": {\"get_param\": \"NeutronAllowL3AgentFailover\"}, \"mysql_max_connections\": {\"get_param\": \"MysqlMaxConnections\"}, \"keystone_identity_uri\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":35357/\"]]}, \"keystone_ssl_certificate\": {\"get_param\": \"KeystoneSSLCertificate\"}, \"neutron_metadata_proxy_shared_secret\": {\"get_param\": \"NeutronMetadataProxySharedSecret\"}, \"cinder_backend_config\": {\"get_param\": \"CinderBackendConfig\"}, \"cinder_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CinderApiNetwork\"]}]}, \"swift_replicas\": {\"get_param\": \"SwiftReplicas\"}, \"rabbit_cookie\": {\"get_param\": \"RabbitCookie\"}, \"keystone_auth_address\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":5000/v2.0\"]]}, \"glance_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"GlanceApiNetwork\"]}]}, \"ceph_public_ip\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephPublicNetwork\"]}]}, \"cinder_enable_iscsi_backend\": {\"get_param\": \"CinderEnableIscsiBackend\"}, \"ceilometer_password\": {\"get_param\": \"CeilometerPassword\"}, \"neutron_tenant_network_type\": {\"get_param\": \"NeutronNetworkType\"}, \"glance_notifier_strategy\": {\"get_param\": \"GlanceNotifierStrategy\"}, \"neutron_network_vlan_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronNetworkVLANRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"ceilometer_dsn\": {\"list_join\": [\"\", [\"mysql://ceilometer:unset@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/ceilometer\"]]}, \"glance_registry_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"GlanceRegistryNetwork\"]}]}, \"ceph_cluster_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephClusterNetwork\"]}]}, \"neutron_agent_mode\": {\"get_param\": \"NeutronAgentMode\"}, \"horizon_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"HorizonNetwork\"]}]}, \"cinder_nfs_mount_options\": {\"get_param\": \"CinderNfsMountOptions\"}, \"cinder_enable_nfs_backend\": {\"get_param\": \"CinderEnableNfsBackend\"}, \"ceilometer_backend\": {\"get_param\": \"CeilometerBackend\"}, \"neutron_external_network_bridge\": {\"get_param\": \"NeutronExternalNetworkBridge\"}, \"glance_file_pcmk_manage\": {\"get_param\": \"GlanceFilePcmkManage\"}, \"swift_part_power\": {\"get_param\": \"SwiftPartPower\"}, \"neutron_dsn\": {\"list_join\": [\"\", [\"mysql://neutron:\", {\"get_param\": \"NeutronPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/ovs_neutron?charset=utf8\"]]}, \"cinder_nfs_servers\": {\"str_replace\": {\"params\": {\"SERVERS\": {\"list_join\": [\"','\", {\"get_param\": \"CinderNfsServers\"}]}}, \"template\": \"['SERVERS']\"}}, \"redis_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"RedisNetwork\"]}]}, \"ceilometer_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CeilometerApiNetwork\"]}]}, \"nova_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NovaApiNetwork\"]}]}, \"heat.waitcondition_server_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"HeatApiVirtualIP\"}, \":8000/v1/waitcondition\"]]}}, \"config\": {\"get_resource\": \"ControllerConfig\"}, \"server\": {\"get_resource\": \"Controller\"}}}, \"ControllerConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"controller\", \"object\", \"swift_devices_and_proxy\", \"ceph_cluster\", \"ceph\", \"bootstrap_node\", \"all_nodes\", \"vip_data\", \"RedHat\", \"common\", \"cinder_netapp_data\"], \"datafiles\": {\"ceph\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/ceph.yaml\"}, \"mapped_data\": {\"ceph::profile::params::cluster_network\": {\"get_input\": \"ceph_cluster_network\"}, \"ceph::profile::params::public_network\": {\"get_input\": \"ceph_public_network\"}, \"ceph::mon::public_addr\": {\"get_input\": \"ceph_public_ip\"}}}, \"controller\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/controller.yaml\"}, \"mapped_data\": {\"nova::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"horizon::bind_address\": {\"get_input\": \"horizon_network\"}, \"horizon::secret_key\": {\"get_input\": \"horizon_secret\"}, \"neutron_tunnel_types\": {\"get_input\": \"neutron_tunnel_types\"}, \"heat::keystone::domain::auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":35357/v2.0\"]]}, \"neutron_dnsmasq_options\": {\"get_input\": \"neutron_dnsmasq_options\"}, \"cinder::api::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"keystone::database_connection\": {\"get_input\": \"keystone_dsn\"}, \"glance::registry::database_connection\": {\"get_input\": \"glance_dsn\"}, \"swift::storage::all::storage_local_net_ip\": {\"get_input\": \"swift_management_network\"}, \"glance::registry::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"enable_swift_storage\": {\"get_input\": \"enable_swift_storage\"}, \"glance::registry::keystone_password\": {\"get_input\": \"glance_password\"}, \"glance::registry::debug\": {\"get_input\": \"debug\"}, \"ceilometer::api::keystone_identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"keystone_ssl_certificate\": {\"get_input\": \"keystone_ssl_certificate\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"apache::ip\": {\"get_input\": \"horizon_network\"}, \"neutron::debug\": {\"get_input\": \"debug\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"cinder::debug\": {\"get_input\": \"debug\"}, \"enable_ceph_storage\": {\"get_input\": \"enable_ceph_storage\"}, \"heat::debug\": {\"get_input\": \"debug\"}, \"mongodb::server::bind_ip\": {\"get_input\": \"mongo_db_network\"}, \"tripleo::loadbalancer::public_virtual_interface\": {\"get_input\": \"public_virtual_interface\"}, \"neutron_public_interface_ip\": {\"get_input\": \"neutron_public_interface_ip\"}, \"cinder::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"nova::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"keystone_signing_certificate\": {\"get_input\": \"keystone_signing_certificate\"}, \"glance::registry::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"neutron::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::plugins::ml2::tunnel_id_ranges\": {\"get_input\": \"neutron_tunnel_id_ranges\"}, \"heat::keystone::domain::keystone_password\": {\"get_input\": \"admin_password\"}, \"heat::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"ceilometer::metering_secret\": {\"get_input\": \"ceilometer_metering_secret\"}, \"ceilometer::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"cinder::glance::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"neutron::dhcp_agents_per_network\": {\"get_input\": \"neutron_dhcp_agents_per_network\"}, \"ceilometer::debug\": {\"get_input\": \"debug\"}, \"ceilometer::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"neutron_public_interface\": {\"get_input\": \"neutron_public_interface\"}, \"heat::engine::auth_encryption_key\": {\"get_input\": \"heat_auth_encryption_key\"}, \"glance::api::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"neutron::agents::metadata::metadata_ip\": {\"get_input\": \"neutron_api_network\"}, \"nova::api::api_bind_address\": {\"get_input\": \"nova_api_network\"}, \"tripleo::ringbuilder::build_ring\": true, \"glance::api::registry_host\": {\"get_input\": \"glance_registry_network\"}, \"tripleo::loadbalancer::control_virtual_interface\": {\"get_input\": \"control_virtual_interface\"}, \"glance::api::bind_host\": {\"get_input\": \"glance_api_network\"}, \"swift::proxy::authtoken::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"glance::api::keystone_password\": {\"get_input\": \"glance_password\"}, \"neutron::plugins::ml2::vni_ranges\": {\"get_input\": \"neutron_vni_ranges\"}, \"horizon::keystone_url\": {\"get_input\": \"keystone_auth_uri\"}, \"glance::backend::swift::swift_store_auth_address\": {\"get_input\": \"keystone_auth_address\"}, \"heat::keystone_ec2_uri\": {\"get_input\": \"keystone_ec2_uri\"}, \"ceilometer::api::host\": {\"get_input\": \"ceilometer_api_network\"}, \"neutron::server::database_connection\": {\"get_input\": \"neutron_dsn\"}, \"heat::api_cfn::bind_host\": {\"get_input\": \"heat_api_network\"}, \"neutron::bind_host\": {\"get_input\": \"neutron_api_network\"}, \"heat::api::bind_host\": {\"get_input\": \"heat_api_network\"}, \"keystone::admin_bind_host\": {\"get_input\": \"keystone_admin_api_network\"}, \"nova::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"neutron::server::auth_password\": {\"get_input\": \"neutron_password\"}, \"neutron::rabbit_user\": {\"get_input\": \"rabbit_user\"}, \"cinder_backend_config\": {\"get_input\": \"CinderBackendConfig\"}, \"cinder_iscsi_ip_address\": {\"get_input\": \"cinder_iscsi_network\"}, \"glance_file_pcmk_options\": {\"get_param\": \"GlanceFilePcmkOptions\"}, \"redis::bind\": {\"get_input\": \"redis_network\"}, \"nova::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"nova::debug\": {\"get_input\": \"debug\"}, \"swift::swift_hash_suffix\": {\"get_input\": \"swift_hash_suffix\"}, \"cinder::database_connection\": {\"get_input\": \"cinder_dsn\"}, \"heat::engine::heat_watch_server_url\": {\"get_input\": \"heat.watch_server_url\"}, \"ceilometer_mysql_conn_string\": {\"get_input\": \"ceilometer_dsn\"}, \"neutron::agents::l3::external_network_bridge\": {\"get_input\": \"neutron_external_network_bridge\"}, \"heat::keystone_password\": {\"get_input\": \"heat_password\"}, \"cinder::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"memcached::listen_ip\": {\"get_input\": \"memcached_network\"}, \"swift::proxy::authtoken::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"ceilometer::api::keystone_password\": {\"get_input\": \"ceilometer_password\"}, \"neutron_agent_mode\": {\"get_input\": \"neutron_agent_mode\"}, \"glance::backend::swift::swift_store_user\": \"service:glance\", \"heat::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"cinder_nfs_mount_options\": {\"get_input\": \"cinder_nfs_mount_options\"}, \"ceilometer_backend\": {\"get_input\": \"ceilometer_backend\"}, \"glance_file_pcmk_manage\": {\"get_param\": \"GlanceFilePcmkManage\"}, \"neutron_dsn\": {\"get_input\": \"neutron_dsn\"}, \"cinder_nfs_servers\": {\"get_input\": \"cinder_nfs_servers\"}, \"heat::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"cinder::api::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"nova::api::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"cinder::api::keystone_password\": {\"get_input\": \"cinder_password\"}, \"heat_stack_domain_admin_password\": {\"get_input\": \"heat_stack_domain_admin_password\"}, \"cinder::api::bind_host\": {\"get_input\": \"cinder_api_network\"}, \"neutron_router_distributed\": {\"get_input\": \"neutron_router_distributed\"}, \"hacluster_pwd\": {\"get_input\": \"pcsd_password\"}, \"ceilometer::agent::auth::auth_password\": {\"get_input\": \"ceilometer_password\"}, \"redis_vip\": {\"get_input\": \"redis_vip\"}, \"neutron::agents::metadata::auth_password\": {\"get_input\": \"neutron_password\"}, \"neutron::plugins::ml2::network_vlan_ranges\": {\"get_input\": \"neutron_network_vlan_ranges\"}, \"neutron_bridge_mappings\": {\"get_input\": \"neutron_bridge_mappings\"}, \"rabbitmq::node_ip_address\": {\"get_input\": \"rabbitmq_network\"}, \"nova::api::metadata_listen\": {\"get_input\": \"nova_metadata_network\"}, \"keystone_ca_certificate\": {\"get_input\": \"keystone_ca_certificate\"}, \"glance::registry::bind_host\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"GlanceRegistryNetwork\"]}]}, \"rabbitmq::erlang_cookie\": {\"get_input\": \"rabbit_cookie\"}, \"neutron_public_interface_raw_device\": {\"get_input\": \"neutron_public_interface_raw_device\"}, \"heat::keystone::domain::domain_password\": {\"get_input\": \"heat_stack_domain_admin_password\"}, \"cinder_enable_rbd_backend\": {\"get_input\": \"cinder_enable_rbd_backend\"}, \"neutron::server::l3_ha\": {\"get_input\": \"neutron_l3_ha\"}, \"ceilometer::agent::central::coordination_url\": {\"get_input\": \"ceilometer_coordination_url\"}, \"glance_file_pcmk_fstype\": {\"get_param\": \"GlanceFilePcmkFstype\"}, \"glance_backend\": {\"get_input\": \"glance_backend\"}, \"glance_log_file\": {\"get_input\": \"glance_log_file\"}, \"heat::database_connection\": {\"get_input\": \"heat_dsn\"}, \"admin_password\": {\"get_input\": \"admin_password\"}, \"neutron_mechanism_drivers\": {\"get_input\": \"neutron_mechanism_drivers\"}, \"horizon::django_debug\": {\"get_input\": \"debug\"}, \"glance::backend::swift::swift_store_key\": {\"get_input\": \"glance_password\"}, \"heat::engine::heat_waitcondition_server_url\": {\"get_input\": \"heat.waitcondition_server_url\"}, \"nova::api::neutron_metadata_proxy_shared_secret\": {\"get_input\": \"neutron_metadata_proxy_shared_secret\"}, \"cinder_lvm_loop_device_size\": {\"get_input\": \"cinder_lvm_loop_device_size\"}, \"tripleo::ringbuilder::replicas\": {\"get_input\": \"swift_replicas\"}, \"nova::network::neutron::neutron_admin_password\": {\"get_input\": \"neutron_password\"}, \"nova::vncproxy::host\": {\"get_input\": \"nova_api_network\"}, \"mysql_bind_host\": {\"get_input\": \"mysql_network\"}, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"keystone_signing_key\": {\"get_input\": \"keystone_signing_key\"}, \"glance_file_pcmk_device\": {\"get_param\": \"GlanceFilePcmkDevice\"}, \"heat::api_cloudwatch::bind_host\": {\"get_input\": \"heat_api_network\"}, \"public_virtual_interface\": {\"get_input\": \"public_virtual_interface\"}, \"neutron::server::allow_automatic_l3agent_failover\": {\"get_input\": \"neutron_allow_l3agent_failover\"}, \"neutron::agents::ml2::ovs::enable_tunneling\": {\"get_input\": \"neutron_enable_tunneling\"}, \"keystone::public_bind_host\": {\"get_input\": \"keystone_public_api_network\"}, \"nova::network::neutron::neutron_admin_auth_url\": {\"get_input\": \"neutron_admin_auth_url\"}, \"glance::api::bind_port\": {\"get_input\": \"glance_port\"}, \"nova::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"glance::api::debug\": {\"get_input\": \"debug\"}, \"swift::proxy::authtoken::admin_password\": {\"get_input\": \"swift_password\"}, \"tripleo::ringbuilder::min_part_hours\": {\"get_input\": \"swift_min_part_hours\"}, \"neutron::agents::metadata::shared_secret\": {\"get_input\": \"neutron_metadata_proxy_shared_secret\"}, \"neutron::server::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"swift_mount_check\": {\"get_input\": \"swift_mount_check\"}, \"mysql_cluster_name\": {\"get_input\": \"mysql_cluster_name\"}, \"nova::api::admin_password\": {\"get_input\": \"nova_password\"}, \"keystone::debug\": {\"get_input\": \"debug\"}, \"neutron::agents::metadata::auth_url\": {\"get_input\": \"keystone_identity_uri\"}, \"nova::database_connection\": {\"get_input\": \"nova_dsn\"}, \"tripleo::ringbuilder::part_power\": {\"get_input\": \"swift_part_power\"}, \"swift::proxy::proxy_local_net_ip\": {\"get_input\": \"swift_proxy_network\"}, \"ceilometer::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"heat::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::agents::ml2::ovs::local_ip\": {\"get_input\": \"neutron_local_ip\"}, \"ceilometer::api::keystone_auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"cinder::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"mysql::server::root_password\": {\"get_input\": \"mysql_root_password\"}, \"control_virtual_interface\": {\"get_input\": \"control_virtual_interface\"}, \"cinder_iscsi_helper\": {\"get_input\": \"cinder_iscsi_helper\"}, \"heat::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"neutron_flat_networks\": {\"get_input\": \"neutron_flat_networks\"}, \"ceilometer::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"heat::engine::heat_metadata_server_url\": {\"get_input\": \"heat.metadata_server_url\"}, \"enable_galera\": {\"get_input\": \"enable_galera\"}, \"nova::network::neutron::neutron_url\": {\"get_input\": \"neutron_url\"}, \"mysql_max_connections\": {\"get_input\": \"mysql_max_connections\"}, \"keystone_ssl_certificate_key\": {\"get_input\": \"keystone_ssl_certificate_key\"}, \"keystone::roles::admin::password\": {\"get_input\": \"admin_password\"}, \"glance::api::database_connection\": {\"get_input\": \"glance_dsn\"}, \"neutron::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"bootstack_nodeid\": {\"get_input\": \"bootstack_nodeid\"}, \"nova::api::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"mysql_innodb_buffer_pool_size\": {\"get_input\": \"mysql_innodb_buffer_pool_size\"}, \"cinder_enable_iscsi_backend\": {\"get_input\": \"cinder_enable_iscsi_backend\"}, \"glance::api::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"neutron::server::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"neutron_public_interface_default_route\": {\"get_input\": \"neutron_public_interface_default_route\"}, \"glance_notifier_strategy\": {\"get_input\": \"glance_notifier_strategy\"}, \"cinder::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"heat::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"cinder_enable_nfs_backend\": {\"get_input\": \"cinder_enable_nfs_backend\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}, \"neutron_tenant_network_type\": {\"get_input\": \"neutron_tenant_network_type\"}, \"neutron::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"keystone::admin_token\": {\"get_input\": \"admin_token\"}, \"neutron_public_interface_tag\": {\"get_input\": \"neutron_public_interface_tag\"}, \"ceilometer::agent::auth::auth_url\": {\"get_input\": \"keystone_auth_address\"}}}, \"object\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/object.yaml\"}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/common.yaml\"}}}}}, \"group\": \"os-apply-config\"}}, \"InternalApiPort\": {\"type\": \"OS::TripleO::Controller::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"NetIpSubnetMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"ExternalIp\": {\"get_attr\": [\"ExternalPort\", \"ip_subnet\"]}, \"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"TenantIp\": {\"get_attr\": [\"TenantPort\", \"ip_subnet\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"Controller\"}}}, \"StoragePort\": {\"type\": \"OS::TripleO::Controller::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"interface_name\": {\"get_param\": \"NeutronPublicInterface\"}, \"bridge_name\": \"br-ex\"}, \"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"Controller\"}}}, \"Controller\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"image_update_policy\": {\"get_param\": \"ImageUpdatePolicy\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"ExternalIp\": {\"get_attr\": [\"ExternalPort\", \"ip_address\"]}, \"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"TenantIp\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}}}", "file:///tmp/tmpVtTjeI/puppet/manifests/ringbuilder.pp": "# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif str2bool(hiera('disable_package_install', 'false')) {\n case $::osfamily {\n 'RedHat': {\n Package { provider => 'norpm' } # provided by tripleo-puppet\n }\n default: {\n warning('disable_package_install option not supported.')\n }\n }\n}\n\ndefine add_devices(\n $swift_zones = '1'\n){\n\n # NOTE(dprince): Swift zones is not yet properly wired into the Heat\n # templates. See: https://review.openstack.org/#/c/97758/3\n # For now our regex supports the r1z1-192.0.2.6:%PORT%/d1 syntax or the\n # newer r1z%<controller or SwiftStorage><N>%-192.0.2.6:%PORT%/d1 syntax.\n $server_num_or_device = regsubst($name,'^r1z%+[A-Za-z]*([0-9]+)%+-(.*)$','\\1')\n if (is_integer($server_num_or_device)) {\n $server_num = $server_num_or_device\n } else {\n $server_num = '1'\n }\n # Function to place server in its zone. Zone is calculated by\n # server number in heat template modulo the number of zones + 1.\n $zone = (($server_num%$swift_zones) + 1)\n\n # add the rings\n $base = regsubst($name,'^r1.*-(.*)$','\\1')\n $object = regsubst($base, '%PORT%', '6000')\n ring_object_device { $object:\n zone => '1',\n weight => 100,\n }\n $container = regsubst($base, '%PORT%', '6001')\n ring_container_device { $container:\n zone => '1',\n weight => 100,\n }\n $account = regsubst($base, '%PORT%', '6002')\n ring_account_device { $account:\n zone => '1',\n weight => 100,\n }\n}\n\nclass tripleo::ringbuilder (\n $swift_zones = '1',\n $devices = '',\n $build_ring = 'True',\n $part_power,\n $replicas,\n $min_part_hours,\n) {\n\n if str2bool(downcase(\"$build_ring\")) {\n\n $device_array = strip(split(rstrip($devices), ','))\n\n # create local rings\n swift::ringbuilder::create{ ['object', 'account', 'container']:\n part_power => $part_power,\n replicas => $replicas,\n min_part_hours => $min_part_hours,\n } ->\n\n # add all other devices\n add_devices {$device_array:\n swift_zones => $swift_zones\n } ->\n\n # rebalance\n swift::ringbuilder::rebalance{ ['object', 'account', 'container']:\n seed => 999,\n }\n\n Ring_object_device<| |> ~> Exec['rebalance_object']\n Ring_object_device<| |> ~> Exec['rebalance_account']\n Ring_object_device<| |> ~> Exec['rebalance_container']\n\n }\n}\n\ninclude ::tripleo::ringbuilder\n", "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_volume.pp": "# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif str2bool(hiera('disable_package_install', 'false')) {\n case $::osfamily {\n 'RedHat': {\n Package { provider => 'norpm' } # provided by tripleo-puppet\n }\n default: {\n warning('disable_package_install option not supported.')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera('sysctl_settings'), {})\n\nif count(hiera('ntp::servers')) > 0 {\n include ::ntp\n}\n\ninclude ::cinder\ninclude ::cinder::config\ninclude ::cinder::glance\ninclude ::cinder::volume\ninclude ::cinder::setup_test_volume\n\n$cinder_enable_iscsi = hiera('cinder_enable_iscsi_backend', true)\nif $cinder_enable_iscsi {\n $cinder_iscsi_backend = 'tripleo_iscsi'\n\n cinder::backend::iscsi { $cinder_iscsi_backend :\n iscsi_ip_address => hiera('cinder_iscsi_ip_address'),\n iscsi_helper => hiera('cinder_iscsi_helper'),\n }\n}\n\n$cinder_enabled_backends = any2array($cinder_iscsi_backend)\nclass { '::cinder::backends' :\n enabled_backends => $cinder_enabled_backends,\n}\n\n$snmpd_user = hiera('snmpd_readonly_user_name')\nsnmp::snmpv3_user { $snmpd_user:\n authtype => 'MD5',\n authpass => hiera('snmpd_readonly_user_password'),\n}\nclass { 'snmp':\n agentaddress => ['udp:161','udp6:[::1]:161'],\n snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],\n}\n", "file:///tmp/tmpVtTjeI/network/networks.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"Create networks to split out Overcloud traffic\", \"resources\": {\"StorageMgmtNetwork\": {\"type\": \"OS::TripleO::Network::StorageMgmt\"}, \"ExternalNetwork\": {\"type\": \"OS::TripleO::Network::External\"}, \"InternalNetwork\": {\"type\": \"OS::TripleO::Network::InternalApi\"}, \"StorageNetwork\": {\"type\": \"OS::TripleO::Network::Storage\"}, \"TenantNetwork\": {\"type\": \"OS::TripleO::Network::Tenant\"}}}", "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_object.pp": "# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif !str2bool(hiera('enable_package_install', 'false')) {\n case $::osfamily {\n 'RedHat': {\n Package { provider => 'norpm' } # provided by tripleo-puppet\n }\n default: {\n warning('enable_package_install option not supported.')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera('sysctl_settings'), {})\n\nif count(hiera('ntp::servers')) > 0 {\n include ::ntp\n}\n\ninclude ::swift\nclass {'swift::storage::all':\n mount_check => str2bool(hiera('swift_mount_check'))\n}\nif(!defined(File['/srv/node'])) {\n file { '/srv/node':\n ensure => directory,\n owner => 'swift',\n group => 'swift',\n require => Package['openstack-swift'],\n }\n}\n\n$swift_components = ['account', 'container', 'object']\nswift::storage::filter::recon { $swift_components : }\nswift::storage::filter::healthcheck { $swift_components : }\n\n$snmpd_user = hiera('snmpd_readonly_user_name')\nsnmp::snmpv3_user { $snmpd_user:\n authtype => 'MD5',\n authpass => hiera('snmpd_readonly_user_password'),\n}\nclass { 'snmp':\n agentaddress => ['udp:161','udp6:[::1]:161'],\n snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],\n}\n", "file:///tmp/tmpVtTjeI/net-config-noop.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to no-op for os-net-config. Using this will allow you to use the parameter driven (init-neutron-ovs) configuration instead.\\n\", \"parameters\": {\"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": null}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the external network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"ExternalPort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"ExternalPort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"ExternalPort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"external network IP\", \"value\": {\"get_attr\": [\"ExternalPort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port on the external network.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"ExternalNetName\": {\"default\": \"external\", \"type\": \"string\", \"description\": \"Name of the external neutron network\"}}, \"resources\": {\"ExternalPort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"ExternalNetName\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the storage network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"StoragePort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"StoragePort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"StoragePort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"storage network IP\", \"value\": {\"get_attr\": [\"StoragePort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port on the storage network.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"StorageNetName\": {\"default\": \"storage\", \"type\": \"string\", \"description\": \"Name of the storage neutron network\"}}, \"resources\": {\"StoragePort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"StorageNetName\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/swift-storage-post.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack swift storage node post deployment for Puppet\", \"parameters\": {\"servers\": {\"type\": \"json\"}, \"NodeConfigIdentifiers\": {\"type\": \"json\", \"description\": \"Value which changes if the node configuration may need to be re-applied\"}}, \"resources\": {\"StoragePuppetConfig\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"outputs\": [{\"name\": \"result\"}], \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_object.pp\"}, \"group\": \"puppet\"}}, \"StorageRingbuilderPuppetConfig\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"outputs\": [{\"name\": \"result\"}], \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/ringbuilder.pp\"}, \"group\": \"puppet\"}}, \"StorageDeployment_Step1\": {\"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"StoragePuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"StorageRingbuilderDeployment_Step2\": {\"depends_on\": \"StorageDeployment_Step1\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"StorageRingbuilderPuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ExtraConfig\": {\"depends_on\": \"StorageRingbuilderDeployment_Step2\", \"type\": \"OS::TripleO::NodeExtraConfigPost\", \"properties\": {\"servers\": {\"get_param\": \"servers\"}}}}}", "file:///tmp/tmpVtTjeI/provider-Compute-1.yaml": "{\"outputs\": {\"hostname\": {\"description\": \"Hostname of the server\", \"value\": {\"get_attr\": [\"NovaCompute\", \"name\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"NovaComputeDeployment\", \"deploy_stdout\"]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the Nova compute server\", \"value\": {\"get_resource\": \"NovaCompute\"}}, \"tenant_ip_address\": {\"description\": \"IP address of the server in the tenant network\", \"value\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}}, \"hosts_entry\": {\"description\": \"Server's IP address and hostname in the /etc/hosts format\\n\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"ComputeHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"NovaCompute\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"ip_address\": {\"description\": \"IP address of the server in the ctlplane network\", \"value\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack hypervisor node configured via Puppet.\\n\", \"parameters\": {\"NeutronPublicInterfaceRawDevice\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronNetworkVLANRanges\": {\"default\": \"datacentre\", \"type\": \"comma_delimited_list\", \"description\": \"The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\\n\"}, \"NovaComputeDriver\": {\"default\": \"libvirt.LibvirtDriver\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"GlancePort\": {\"default\": \"9292\", \"type\": \"string\", \"description\": \"Glance port.\"}, \"NeutronPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the neutron service account, used by neutron agents.\"}, \"NeutronBridgeMappings\": {\"default\": \"datacentre:br-ex\", \"type\": \"string\", \"description\": \"The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\\n\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"NovaEnableRbdBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Rbd backend for Nova\"}, \"GlanceHost\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronTunnelTypes\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'gre,vxlan'\\n\"}, \"NeutronTunnelIdRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n\"}, \"NeutronVniRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for the nova compute node\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"NeutronAgentMode\": {\"default\": \"dvr_snat\", \"type\": \"string\", \"description\": \"Agent mode for the neutron-l3-agent on the controller hosts\"}, \"NovaApiHost\": {\"default\": \"\", \"type\": \"string\"}, \"RabbitClientPort\": {\"default\": 5672, \"type\": \"number\", \"description\": \"Set rabbit subscriber port, change this if using SSL\"}, \"NovaComputeExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"NovaCompute specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\", \"constraints\": [{\"custom_constraint\": \"nova.keypair\"}]}, \"NovaPublicIP\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronNetworkType\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tenant network type for Neutron, either gre or vxlan.\"}, \"CeilometerPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the ceilometer service account.\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"CinderEnableNfsBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the NFS backend for Cinder\"}, \"KeystoneHost\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronMechanismDrivers\": {\"default\": \"openvswitch\", \"type\": \"string\", \"description\": \"The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\\n\"}, \"RabbitClientUseSSL\": {\"default\": false, \"type\": \"string\", \"description\": \"Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n\"}, \"NeutronAllowL3AgentFailover\": {\"default\": \"True\", \"type\": \"string\", \"description\": \"Allow automatic l3-agent failover\"}, \"RabbitPassword\": {\"default\": \"guest\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for RabbitMQ\"}, \"ImageUpdatePolicy\": {\"default\": \"REBUILD_PRESERVE_EPHEMERAL\", \"type\": \"string\", \"description\": \"What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.\"}, \"RabbitUserName\": {\"default\": \"guest\", \"type\": \"string\", \"description\": \"The username for RabbitMQ\"}, \"Debug\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Set to True to enable debugging on all services.\"}, \"NeutronPublicInterface\": {\"default\": \"nic1\", \"type\": \"string\", \"description\": \"A port to add to the NeutronPhysicalBridge.\"}, \"NovaPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the nova service account, used by nova-api.\"}, \"GlanceProtocol\": {\"default\": \"http\", \"type\": \"string\", \"description\": \"Protocol to use when connecting to glance, set to https for SSL.\"}, \"NeutronDVR\": {\"default\": \"False\", \"type\": \"string\"}, \"NeutronL3HA\": {\"default\": \"False\", \"type\": \"string\", \"description\": \"Whether to enable l3-agent HA\"}, \"NovaComputeLibvirtType\": {\"default\": \"\", \"type\": \"string\"}, \"AdminPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the keystone admin account, used for monitoring, querying neutron etc.\"}, \"NeutronPhysicalBridge\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"An OVS bridge to create for accessing external networks.\"}, \"CeilometerComputeAgent\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly\", \"constraints\": [{\"allowed_values\": [\"\", \"Present\"]}]}, \"Image\": {\"default\": \"overcloud-compute\", \"type\": \"string\", \"constraints\": [{\"custom_constraint\": \"glance.image\"}]}, \"ExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\\"FILEKEY\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"SECTIONNAME\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"OPTIONNAME\\\",\\n \\\"value\\\": \\\"VALUENAME\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\\"nova\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"default\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"force_config_drive\\\",\\n \\\"value\\\": \\\"always\\\"\\n }\\n ]\\n },\\n {\\\"section\\\": \\\"cells\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"driver\\\",\\n \\\"value\\\": \\\"nova.cells.rpc_driver.CellsRPCDriver\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n\"}, \"RabbitHost\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronFlatNetworks\": {\"default\": \"datacentre\", \"type\": \"string\", \"description\": \"If set, flat networks to configure in neutron plugins.\\n\"}, \"CeilometerMeteringSecret\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"Secret shared by the ceilometer services.\"}, \"NeutronMetadataProxySharedSecret\": {\"default\": \"unset\", \"type\": \"string\", \"description\": \"Shared secret to prevent spoofing\"}, \"NeutronEnableTunnelling\": {\"default\": \"True\", \"type\": \"string\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"NeutronHost\": {\"default\": \"\", \"type\": \"string\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"NovaCompute\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"image_update_policy\": {\"get_param\": \"ImageUpdatePolicy\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"TenantPort\": {\"type\": \"OS::TripleO::Compute::Ports::TenantPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::Compute::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"TenantIpSubnet\": {\"get_attr\": [\"TenantPort\", \"ip_subnet\"]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"interface_name\": {\"get_param\": \"NeutronPublicInterface\"}, \"bridge_name\": {\"get_param\": \"NeutronPhysicalBridge\"}}, \"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"NovaCompute\"}}}, \"StoragePort\": {\"type\": \"OS::TripleO::Compute::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"NovaComputeDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"neutron_host\": {\"get_param\": \"NeutronHost\"}, \"neutron_router_distributed\": {\"get_param\": \"NeutronDVR\"}, \"nova_compute_libvirt_type\": {\"get_param\": \"NovaComputeLibvirtType\"}, \"nova_compute_driver\": {\"get_param\": \"NovaComputeDriver\"}, \"neutron_flat_networks\": {\"get_param\": \"NeutronFlatNetworks\"}, \"glance_api_servers\": {\"list_join\": [\"\", [{\"get_param\": \"GlanceProtocol\"}, \"://\", {\"get_param\": \"GlanceHost\"}, \":\", {\"get_param\": \"GlancePort\"}]]}, \"rabbit_password\": {\"get_param\": \"RabbitPassword\"}, \"neutron_bridge_mappings\": {\"get_param\": \"NeutronBridgeMappings\"}, \"neutron_tunnel_types\": {\"get_param\": \"NeutronTunnelTypes\"}, \"neutron_public_interface_raw_device\": {\"get_param\": \"NeutronPublicInterfaceRawDevice\"}, \"neutron_password\": {\"get_param\": \"NeutronPassword\"}, \"ceilometer_agent_auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystoneHost\"}, \":5000/v2.0\"]]}, \"rabbit_client_use_ssl\": {\"get_param\": \"RabbitClientUseSSL\"}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"nova_public_ip\": {\"get_param\": \"NovaPublicIP\"}, \"neutron_local_ip\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NeutronTenantNetwork\"]}]}, \"admin_password\": {\"get_param\": \"AdminPassword\"}, \"neutron_mechanism_drivers\": {\"get_param\": \"NeutronMechanismDrivers\"}, \"nova_vnc_proxyclient_address\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NovaVncProxyNetwork\"]}]}, \"nova_password\": {\"get_param\": \"NovaPassword\"}, \"neutron_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"NeutronHost\"}, \":9696\"]]}, \"neutron_physical_bridge\": {\"get_param\": \"NeutronPhysicalBridge\"}, \"nova_enable_rbd_backend\": {\"get_param\": \"NovaEnableRbdBackend\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"neutron_metadata_proxy_shared_secret\": {\"get_param\": \"NeutronMetadataProxySharedSecret\"}, \"neutron_admin_auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"NeutronHost\"}, \":35357/v2.0\"]]}, \"nova_api_host\": {\"get_param\": \"NovaApiHost\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"ceilometer_password\": {\"get_param\": \"CeilometerPassword\"}, \"neutron_tenant_network_type\": {\"get_param\": \"NeutronNetworkType\"}, \"neutron_network_vlan_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronNetworkVLANRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"neutron_vni_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronVniRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"neutron_agent_mode\": {\"get_param\": \"NeutronAgentMode\"}, \"neutron_public_interface\": {\"get_param\": \"NeutronPublicInterface\"}, \"ceilometer_metering_secret\": {\"get_param\": \"CeilometerMeteringSecret\"}, \"neutron_tunnel_id_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronTunnelIdRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"cinder_enable_nfs_backend\": {\"get_param\": \"CinderEnableNfsBackend\"}, \"ceilometer_compute_agent\": {\"get_param\": \"CeilometerComputeAgent\"}, \"rabbit_username\": {\"get_param\": \"RabbitUserName\"}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}, \"neutron_enable_tunneling\": {\"get_param\": \"NeutronEnableTunnelling\"}, \"debug\": {\"get_param\": \"Debug\"}, \"rabbit_client_port\": {\"get_param\": \"RabbitClientPort\"}}, \"config\": {\"get_resource\": \"NovaComputeConfig\"}, \"server\": {\"get_resource\": \"NovaCompute\"}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"InternalApiPort\": {\"type\": \"OS::TripleO::Compute::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"NovaCompute\", \"networks\", \"ctlplane\", 0]}}}, \"NovaComputeConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"compute\", \"ceph_cluster\", \"ceph\", \"all_nodes\", \"RedHat\", \"common\"], \"datafiles\": {\"ceph\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/ceph.yaml\"}}, \"compute\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/compute.yaml\"}, \"mapped_data\": {\"nova::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"neutron_host\": {\"get_input\": \"neutron_host\"}, \"neutron_router_distributed\": {\"get_input\": \"neutron_router_distributed\"}, \"neutron::debug\": {\"get_input\": \"debug\"}, \"neutron::plugins::ml2::vni_ranges\": {\"get_input\": \"neutron_vni_ranges\"}, \"ceilometer::agent::auth::auth_password\": {\"get_input\": \"ceilometer_password\"}, \"nova::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"nova::compute::vncproxy_host\": {\"get_input\": \"nova_public_ip\"}, \"neutron::plugins::ml2::network_vlan_ranges\": {\"get_input\": \"neutron_network_vlan_ranges\"}, \"neutron_bridge_mappings\": {\"get_input\": \"neutron_bridge_mappings\"}, \"ceilometer::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"neutron_tunnel_types\": {\"get_input\": \"neutron_tunnel_types\"}, \"neutron::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron_public_interface_raw_device\": {\"get_input\": \"neutron_public_interface_raw_device\"}, \"nova::network::neutron::neutron_admin_auth_url\": {\"get_input\": \"neutron_admin_auth_url\"}, \"neutron::agents::ml2::ovs::local_ip\": {\"get_input\": \"neutron_local_ip\"}, \"neutron_flat_networks\": {\"get_input\": \"neutron_flat_networks\"}, \"ceilometer::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"neutron::rabbit_user\": {\"get_input\": \"rabbit_user\"}, \"neutron_mechanism_drivers\": {\"get_input\": \"neutron_mechanism_drivers\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"nova_password\": {\"get_input\": \"nova_password\"}, \"nova_compute_driver\": {\"get_input\": \"nova_compute_driver\"}, \"nova::network::neutron::neutron_url\": {\"get_input\": \"neutron_url\"}, \"nova::compute::libvirt::libvirt_virt_type\": {\"get_input\": \"nova_compute_libvirt_type\"}, \"nova_enable_rbd_backend\": {\"get_input\": \"nova_enable_rbd_backend\"}, \"neutron_metadata_proxy_shared_secret\": {\"get_input\": \"neutron_metadata_proxy_shared_secret\"}, \"nova::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"nova::debug\": {\"get_input\": \"debug\"}, \"neutron_physical_bridge\": {\"get_input\": \"neutron_physical_bridge\"}, \"nova_api_host\": {\"get_input\": \"nova_api_host\"}, \"nova::network::neutron::neutron_admin_password\": {\"get_input\": \"neutron_password\"}, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"neutron::plugins::ml2::tunnel_id_ranges\": {\"get_input\": \"neutron_tunnel_id_ranges\"}, \"neutron_tenant_network_type\": {\"get_input\": \"neutron_tenant_network_type\"}, \"neutron::agents::ml2::ovs::enable_tunneling\": {\"get_input\": \"neutron_enable_tunneling\"}, \"ceilometer::metering_secret\": {\"get_input\": \"ceilometer_metering_secret\"}, \"ceilometer::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron_agent_mode\": {\"get_input\": \"neutron_agent_mode\"}, \"ceilometer::debug\": {\"get_input\": \"debug\"}, \"ceilometer::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"admin_password\": {\"get_input\": \"admin_password\"}, \"neutron_public_interface\": {\"get_input\": \"neutron_public_interface\"}, \"nova::compute::vncserver_proxyclient_address\": {\"get_input\": \"nova_vnc_proxyclient_address\"}, \"cinder_enable_nfs_backend\": {\"get_input\": \"cinder_enable_nfs_backend\"}, \"neutron::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"ceilometer_compute_agent\": {\"get_input\": \"ceilometer_compute_agent\"}, \"nova::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"nova::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}, \"ceilometer::agent::auth::auth_url\": {\"get_input\": \"ceilometer_agent_auth_url\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/common.yaml\"}}}}}, \"group\": \"os-apply-config\"}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"TenantIp\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"NovaCompute\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/swift-storage-puppet.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hosts_entry\": {\"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"ObjectStorageHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"SwiftStorage\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"SwiftStorageHieraDeploy\", \"deploy_stdout\"]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the swift storage server\", \"value\": {\"get_resource\": \"SwiftStorage\"}}, \"swift_device\": {\"description\": \"Swift device formatted for swift-ring-builder\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}}, \"template\": \"r1z1-IP:%PORT%/d1\"}}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack swift storage node configured by Puppet\", \"parameters\": {\"PartPower\": {\"default\": 10, \"type\": \"number\", \"description\": \"Partition Power to use when building Swift rings\"}, \"Replicas\": {\"default\": 3, \"type\": \"number\", \"description\": \"How many replicas to use in the swift rings.\"}, \"HashSuffix\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"A random string to be used as a salt when hashing to determine mappings in the ring.\"}, \"Image\": {\"default\": \"overcloud-swift-storage\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"MinPartHours\": {\"default\": 1, \"type\": \"number\", \"description\": \"The minimum time (in hours) before a partition in a ring can be moved following a rebalance.\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for Swift storage nodes to request when deploying.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}, \"MountCheck\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Value of mount_check in Swift account/container/object -server.conf\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"SwiftStorageHieraConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"object\", \"swift_devices_and_proxy\", \"all_nodes\", \"RedHat\", \"common\"], \"datafiles\": {\"object\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/object.yaml\"}, \"mapped_data\": {\"swift::storage::all::storage_local_net_ip\": {\"get_input\": \"swift_management_network\"}, \"swift_mount_check\": {\"get_input\": \"swift_mount_check\"}, \"swift::swift_hash_suffix\": {\"get_input\": \"swift_hash_suffix\"}, \"tripleo::ringbuilder::part_power\": {\"get_input\": \"swift_part_power\"}, \"tripleo::ringbuilder::min_part_hours\": {\"get_input\": \"swift_min_part_hours\"}, \"tripleo::ringbuilder::build_ring\": true, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"tripleo::ringbuilder::replicas\": {\"get_input\": \"swift_replicas\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml\"}}}}}}}, \"StoragePort\": {\"type\": \"OS::TripleO::SwiftStorage::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::SwiftStorage::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::ObjectStorage::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"InternalApiPort\": {\"type\": \"OS::TripleO::SwiftStorage::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}}}, \"SwiftStorage\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"SwiftStorage\"}}}, \"SwiftStorageHieraDeploy\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::Heat::StructuredDeployment\", \"properties\": {\"input_values\": {\"swift_management_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}, \"swift_min_part_hours\": {\"get_param\": \"MinPartHours\"}, \"swift_mount_check\": {\"get_param\": \"MountCheck\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"local_ip\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"swift_part_power\": {\"get_param\": \"PartPower\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"swift_hash_suffix\": {\"get_param\": \"HashSuffix\"}, \"swift_replicas\": {\"get_param\": \"Replicas\"}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}}, \"config\": {\"get_resource\": \"SwiftStorageHieraConfig\"}, \"server\": {\"get_resource\": \"SwiftStorage\"}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"SwiftStorage\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/ceph-cluster-config.yaml": "{\"outputs\": {\"config_id\": {\"description\": \"The ID of the CephClusterConfigImpl resource.\", \"value\": {\"get_resource\": \"CephClusterConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Ceph Cluster config data for Puppet\", \"parameters\": {\"ceph_mon_names\": {\"type\": \"comma_delimited_list\"}, \"ceph_mon_ips\": {\"type\": \"comma_delimited_list\"}, \"ceph_admin_key\": {\"default\": \"\", \"type\": \"string\"}, \"ceph_mon_key\": {\"default\": \"\", \"type\": \"string\"}, \"ceph_fsid\": {\"default\": \"\", \"type\": \"string\"}}, \"resources\": {\"CephClusterConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"datafiles\": {\"ceph_cluster\": {\"mapped_data\": {\"ceph::profile::params::fsid\": {\"get_param\": \"ceph_fsid\"}, \"ceph::profile::params::client_keys\": {\"str_replace\": {\"params\": {\"ADMIN_KEY\": {\"get_param\": \"ceph_admin_key\"}}, \"template\": \"{ client.admin: { secret: 'ADMIN_KEY', mode: '0600', cap_mon: 'allow *', cap_osd: 'allow *', cap_mds: 'allow *' }, client.bootstrap-osd: { secret: 'ADMIN_KEY', keyring_path: '/var/lib/ceph/bootstrap-osd/ceph.keyring', cap_mon: 'allow profile bootstrap-osd' }, client.openstack: { secret: 'ADMIN_KEY', mode: '0644', cap_mon: 'allow r', cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images' } }\"}}, \"ceph::profile::params::mon_host\": {\"list_join\": [\",\", {\"get_param\": \"ceph_mon_ips\"}]}, \"ceph_mon_initial_members\": {\"list_join\": [\",\", {\"get_param\": \"ceph_mon_names\"}]}, \"ceph::profile::params::mon_key\": {\"get_param\": \"ceph_mon_key\"}}}}}}}}}}", "file:///tmp/tmpVtTjeI/puppet/vip-config.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The VipConfigImpl resource.\", \"value\": {\"get_resource\": \"VipConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Configure hieradata for service -> virtual IP mappings.\\n\", \"resources\": {\"VipConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"datafiles\": {\"vip_data\": {\"mapped_data\": {\"nova_metadata_vip\": {\"get_input\": \"nova_metadata_vip\"}, \"redis_vip\": {\"get_input\": \"redis_vip\"}, \"tripleo::loadbalancer::internal_api_virtual_ip\": {\"get_input\": \"internal_api_virtual_ip\"}, \"tripleo::redis_notification::haproxy_monitor_ip\": {\"get_input\": \"control_virtual_ip\"}, \"mysql_vip\": {\"get_input\": \"mysql_vip\"}, \"heat_api_vip\": {\"get_input\": \"heat_api_vip\"}, \"keystone_public_api_vip\": {\"get_input\": \"keystone_public_api_vip\"}, \"nova_api_vip\": {\"get_input\": \"nova_api_vip\"}, \"tripleo::loadbalancer::storage_mgmt_virtual_ip\": {\"get_input\": \"storage_mgmt_virtual_ip\"}, \"neutron_api_vip\": {\"get_input\": \"neutron_api_vip\"}, \"tripleo::loadbalancer::storage_virtual_ip\": {\"get_input\": \"storage_virtual_ip\"}, \"horizon_vip\": {\"get_input\": \"horizon_vip\"}, \"keystone_admin_api_vip\": {\"get_input\": \"keystone_admin_api_vip\"}, \"cinder_api_vip\": {\"get_input\": \"cinder_api_vip\"}, \"swift_proxy_vip\": {\"get_input\": \"swift_proxy_vip\"}, \"tripleo::loadbalancer::controller_virtual_ip\": {\"get_input\": \"control_virtual_ip\"}, \"ceilometer_api_vip\": {\"get_input\": \"ceilometer_api_vip\"}, \"tripleo::loadbalancer::public_virtual_ip\": {\"get_input\": \"public_virtual_ip\"}, \"glance_api_vip\": {\"get_input\": \"glance_api_vip\"}, \"glance_registry_vip\": {\"get_input\": \"glance_registry_vip\"}}}}}}}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the internal API network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"InternalApiPort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"InternalApiPort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"InternalApiPort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"internal API network IP\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port on the internal_api network.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"InternalApiNetName\": {\"default\": \"internal_api\", \"type\": \"string\", \"description\": \"Name of the internal API neutron network\"}}, \"resources\": {\"InternalApiPort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"InternalApiNetName\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/tenant.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"Neutron tenant network\", \"value\": {\"get_resource\": \"TenantNetwork\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Tenant network.\\n\", \"parameters\": {\"TenantNetShared\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether this network is shared across all tenants.\"}, \"TenantNetName\": {\"default\": \"tenant\", \"type\": \"string\", \"description\": \"The name of the tenant network.\"}, \"TenantSubnetName\": {\"default\": \"tenant_subnet\", \"type\": \"string\", \"description\": \"The name of the tenant subnet in Neutron.\"}, \"TenantNetCidr\": {\"default\": \"172.16.0.0/24\", \"type\": \"string\", \"description\": \"Cidr for the tenant network.\"}, \"TenantNetAdminStateUp\": {\"default\": false, \"type\": \"boolean\", \"description\": \"This admin state of of the network.\"}, \"TenantNetEnableDHCP\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable DHCP on the associated subnet.\"}, \"TenantNetValueSpecs\": {\"default\": {\"provider:physical_network\": \"tenant\", \"provider:network_type\": \"flat\"}, \"type\": \"string\", \"description\": \"Value specs for the tenant network.\"}, \"TenantAllocationPools\": {\"default\": [{\"start\": \"172.16.0.4\", \"end\": \"172.16.0.250\"}], \"type\": \"json\", \"description\": \"Ip allocation pool range for the tenant network.\"}}, \"resources\": {\"TenantSubnet\": {\"type\": \"OS::Neutron::Subnet\", \"properties\": {\"network\": {\"get_resource\": \"TenantNetwork\"}, \"allocation_pools\": {\"get_param\": \"TenantAllocationPools\"}, \"cidr\": {\"get_param\": \"TenantNetCidr\"}, \"enable_dhcp\": {\"get_param\": \"TenantNetEnableDHCP\"}, \"name\": {\"get_param\": \"TenantSubnetName\"}}}, \"TenantNetwork\": {\"type\": \"OS::Neutron::Net\", \"properties\": {\"shared\": {\"get_param\": \"TenantNetShared\"}, \"admin_state_up\": {\"get_param\": \"TenantNetAdminStateUp\"}, \"value_specs\": {\"get_param\": \"TenantNetValueSpecs\"}, \"name\": {\"get_param\": \"TenantNetName\"}}}}}", "file:///tmp/tmpVtTjeI/extraconfig/post_deploy/default.yaml": "{\"heat_template_version\": \"2014-10-16\", \"description\": \"Extra Post Deployment Config\", \"parameters\": {\"servers\": {\"type\": \"json\"}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the tenant network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"TenantPort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"TenantPort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"TenantPort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"tenant network IP\", \"value\": {\"get_attr\": [\"TenantPort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port on the tenant network.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"TenantNetName\": {\"default\": \"tenant\", \"type\": \"string\", \"description\": \"Name of the tenant neutron network\"}}, \"resources\": {\"TenantPort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"TenantNetName\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/hieradata/controller.yaml": "# Hiera data here applies to all controller nodes\nkeystone::roles::admin::email: 'root@localhost'\nkeystone::roles::admin::admin_tenant: 'admin'\n\nnova::api::enabled: true\nnova::conductor::enabled: true\nnova::consoleauth::enabled: true\nnova::vncproxy::enabled: true\nnova::scheduler::enabled: true\n\n# rabbitmq\nrabbitmq::delete_guest_user: false\nrabbitmq::wipe_db_on_cookie_change: true\nrabbitmq::port: '5672'\nrabbitmq::package_source: undef\nrabbitmq::repos_ensure: false\nrabbitmq_environment:\n RABBITMQ_NODENAME: \"rabbit@%{::hostname}\"\n RABBITMQ_SERVER_ERL_ARGS: '\"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true},{raw,6,18,<<5000:64/native>>}] -kernel inet_default_listen_options [{raw,6,18,<<5000:64/native>>}]\"'\nrabbitmq_kernel_variables:\n inet_dist_listen_min: '35672'\n inet_dist_listen_max: '35672'\nrabbitmq_config_variables:\n tcp_listen_options: '[binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]'\n cluster_partition_handling: 'pause_minority'\n\nmongodb::server::replset: tripleo\nmongodb::server::config: '/etc/mongod.conf'\n\nredis::port: 6379\nredis::sentinel::master_name: \"%{hiera('bootstrap_nodeid')}\"\nredis::sentinel::redis_host: \"%{hiera('bootstrap_nodeid_ip')}\"\nredis::sentinel::notification_script: '/usr/local/bin/redis-notifications.sh'\n\n# service tenant\nnova::api::admin_tenant_name: 'service'\nglance::api::keystone_tenant: 'service'\nglance::registry::keystone_tenant: 'service'\nneutron::server::auth_tenant: 'service'\nneutron::agents::metadata::auth_tenant: 'service'\ncinder::api::keystone_tenant: 'service'\nswift::proxy::authtoken::admin_tenant_name: 'service'\nceilometer::api::keystone_tenant: 'service'\nheat::keystone_tenant: 'service'\n\n#swift\nswift::proxy::pipeline:\n - 'catch_errors'\n - 'healthcheck'\n - 'cache'\n - 'ratelimit'\n - 'tempurl'\n - 'formpost'\n - 'staticweb'\n - 'ceilometer'\n - 'authtoken'\n - 'keystone'\n - 'proxy-logging'\n - 'proxy-server'\n\nswift::proxy::account_autocreate: true\n\n# glance\nglance::api::pipeline: 'keystone'\nglance::registry::pipeline: 'keystone'\nglance::backend::swift::swift_store_create_container_on_put: true\nglance::backend::rbd::rbd_store_user: 'openstack'\nglance_file_pcmk_directory: '/var/lib/glance/images'\n\n# neutron\nneutron::core_plugin: 'ml2'\nneutron::service_plugins:\n - 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin'\nneutron::server::sync_db: true\nneutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf\n\n# nova\nnova::notify_on_state_change: 'vm_and_task_state'\nnova::api::osapi_v3: true\n\n# cinder\ncinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler\n\n# heat\nheat::engine::configure_delegated_roles: false\nheat::engine::trusts_delegated_roles: []\nheat::instance_user: ''\nheat::keystone::domain::keystone_admin: 'admin'\nheat::keystone::domain::keystone_tenant: 'admin'\nheat::keystone::domain::domain_name: 'heat_stack'\nheat::keystone::domain::domain_admin: 'heat_stack_domain_admin'\n\n# pacemaker\npacemaker::corosync::cluster_name: 'tripleo_cluster'\npacemaker::corosync::manage_fw: false\n\n# horizon\nhorizon::allowed_hosts: '*'\nhorizon::django_session_engine: 'django.contrib.sessions.backends.cache'\n\n# mysql\nmysql::server::manage_config_file: true\n\n\ntripleo::loadbalancer::keystone_admin: true\ntripleo::loadbalancer::keystone_public: true\ntripleo::loadbalancer::neutron: true\ntripleo::loadbalancer::cinder: true\ntripleo::loadbalancer::glance_api: true\ntripleo::loadbalancer::glance_registry: true\ntripleo::loadbalancer::nova_ec2: true\ntripleo::loadbalancer::nova_osapi: true\ntripleo::loadbalancer::nova_metadata: true\ntripleo::loadbalancer::nova_novncproxy: true\ntripleo::loadbalancer::mysql: true\ntripleo::loadbalancer::redis: true\ntripleo::loadbalancer::swift_proxy_server: true\ntripleo::loadbalancer::ceilometer: true\ntripleo::loadbalancer::heat_api: true\ntripleo::loadbalancer::heat_cloudwatch: true\ntripleo::loadbalancer::heat_cfn: true\ntripleo::loadbalancer::horizon: true\n", "file:///home/stack/nic-configs/compute.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the compute role.\\n\", \"parameters\": {\"TenantNetworkVlanID\": {\"default\": 50, \"type\": \"number\", \"description\": \"Vlan ID for the tenant network traffic.\"}, \"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"BondInterfaceOvsOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option.\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"InternalApiNetworkVlanID\": {\"default\": 20, \"type\": \"number\", \"description\": \"Vlan ID for the internal_api network traffic.\"}, \"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"StorageNetworkVlanID\": {\"default\": 30, \"type\": \"number\", \"description\": \"Vlan ID for the storage network traffic.\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"os_net_config\": {\"network_config\": [{\"type\": \"ovs_bridge\", \"name\": \"br-bond\", \"members\": [{\"ovs_options\": {\"get_param\": \"BondInterfaceOvsOptions\"}, \"type\": \"ovs_bond\", \"name\": \"bond1\", \"members\": [{\"type\": \"interface\", \"name\": \"nic5\", \"primary\": true}, {\"type\": \"interface\", \"name\": \"nic6\"}]}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"InternalApiIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"InternalApiNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"TenantIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"TenantNetworkVlanID\"}}]}]}}}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/storage.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"Neutron storage network\", \"value\": {\"get_resource\": \"StorageNetwork\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Storage network.\\n\", \"parameters\": {\"StorageNetShared\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether this network is shared across all tenants.\"}, \"StorageSubnetName\": {\"default\": \"storage_subnet\", \"type\": \"string\", \"description\": \"The name of the storage subnet in Neutron.\"}, \"StorageNetEnableDHCP\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable DHCP on the associated subnet.\"}, \"StorageNetCidr\": {\"default\": \"172.16.1.0/24\", \"type\": \"string\", \"description\": \"Cidr for the storage network.\"}, \"StorageNetValueSpecs\": {\"default\": {\"provider:physical_network\": \"storage\", \"provider:network_type\": \"flat\"}, \"type\": \"string\", \"description\": \"Value specs for the storage network.\"}, \"StorageAllocationPools\": {\"default\": [{\"start\": \"172.16.1.4\", \"end\": \"172.16.1.250\"}], \"type\": \"json\", \"description\": \"Ip allocation pool range for the storage network.\"}, \"StorageNetName\": {\"default\": \"storage\", \"type\": \"string\", \"description\": \"The name of the storage network.\"}, \"StorageNetAdminStateUp\": {\"default\": false, \"type\": \"boolean\", \"description\": \"This admin state of of the network.\"}}, \"resources\": {\"StorageSubnet\": {\"type\": \"OS::Neutron::Subnet\", \"properties\": {\"network\": {\"get_resource\": \"StorageNetwork\"}, \"allocation_pools\": {\"get_param\": \"StorageAllocationPools\"}, \"cidr\": {\"get_param\": \"StorageNetCidr\"}, \"enable_dhcp\": {\"get_param\": \"StorageNetEnableDHCP\"}, \"name\": {\"get_param\": \"StorageSubnetName\"}}}, \"StorageNetwork\": {\"type\": \"OS::Neutron::Net\", \"properties\": {\"shared\": {\"get_param\": \"StorageNetShared\"}, \"admin_state_up\": {\"get_param\": \"StorageNetAdminStateUp\"}, \"value_specs\": {\"get_param\": \"StorageNetValueSpecs\"}, \"name\": {\"get_param\": \"StorageNetName\"}}}}}", "file:///tmp/tmpVtTjeI/provider-Swift-Storage-1.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hosts_entry\": {\"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"ObjectStorageHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"SwiftStorage\", \"name\"]}}, \"template\": \"IP HOST.localdomain HOST\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the node configuration may need re-applying\", \"value\": {\"get_attr\": [\"SwiftStorageHieraDeploy\", \"deploy_stdout\"]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the swift storage server\", \"value\": {\"get_resource\": \"SwiftStorage\"}}, \"swift_device\": {\"description\": \"Swift device formatted for swift-ring-builder\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}}, \"template\": \"r1z1-IP:%PORT%/d1\"}}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack swift storage node configured by Puppet\", \"parameters\": {\"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"Replicas\": {\"default\": 3, \"type\": \"number\", \"description\": \"How many replicas to use in the swift rings.\"}, \"HashSuffix\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"A random string to be used as a salt when hashing to determine mappings in the ring.\"}, \"Image\": {\"default\": \"overcloud-swift-storage\", \"type\": \"string\"}, \"PartPower\": {\"default\": 10, \"type\": \"number\", \"description\": \"Partition Power to use when building Swift rings\"}, \"MinPartHours\": {\"default\": 1, \"type\": \"number\", \"description\": \"The minimum time (in hours) before a partition in a ring can be moved following a rebalance.\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for Swift storage nodes to request when deploying.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}, \"MountCheck\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Value of mount_check in Swift account/container/object -server.conf\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"SwiftStorageHieraConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"object\", \"swift_devices_and_proxy\", \"all_nodes\", \"RedHat\", \"common\"], \"datafiles\": {\"object\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/object.yaml\"}, \"mapped_data\": {\"swift::storage::all::storage_local_net_ip\": {\"get_input\": \"swift_management_network\"}, \"swift_mount_check\": {\"get_input\": \"swift_mount_check\"}, \"tripleo::ringbuilder::part_power\": {\"get_input\": \"swift_part_power\"}, \"swift::swift_hash_suffix\": {\"get_input\": \"swift_hash_suffix\"}, \"tripleo::ringbuilder::replicas\": {\"get_input\": \"swift_replicas\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}, \"tripleo::ringbuilder::build_ring\": true, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"tripleo::ringbuilder::min_part_hours\": {\"get_input\": \"swift_min_part_hours\"}}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/hieradata/common.yaml\"}}}}}, \"group\": \"os-apply-config\"}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::ObjectStorage::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::SwiftStorage::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}}}, \"StoragePort\": {\"type\": \"OS::TripleO::SwiftStorage::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"InternalApiPort\": {\"type\": \"OS::TripleO::SwiftStorage::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}}}, \"SwiftStorage\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"SwiftStorage\"}}}, \"SwiftStorageHieraDeploy\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::Heat::StructuredDeployment\", \"properties\": {\"input_values\": {\"swift_management_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}, \"swift_min_part_hours\": {\"get_param\": \"MinPartHours\"}, \"local_ip\": {\"get_attr\": [\"SwiftStorage\", \"networks\", \"ctlplane\", 0]}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"swift_mount_check\": {\"get_param\": \"MountCheck\"}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"swift_part_power\": {\"get_param\": \"PartPower\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"swift_hash_suffix\": {\"get_param\": \"HashSuffix\"}, \"swift_replicas\": {\"get_param\": \"Replicas\"}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}}, \"config\": {\"get_resource\": \"SwiftStorageHieraConfig\"}, \"server\": {\"get_resource\": \"SwiftStorage\"}}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"SwiftStorage\"}}}}}", "file:///tmp/tmpVtTjeI/hieradata/object.yaml": "# Hiera data for swift storage nodes\nswift::storage::all::object_pipeline:\n - healthcheck\n - recon\n - object-server\nswift::storage::all::container_pipeline:\n - healthcheck\n - container-server\nswift::storage::all::account_pipeline:\n - healthcheck\n - account-server\n\nswift::proxy::keystone::operator_roles:\n - admin\n - swiftoperator\n - ResellerAdmin\n", "file:///tmp/tmpVtTjeI/puppet/controller-puppet.yaml": "{\"outputs\": {\"storage_mgmt_ip_address\": {\"description\": \"IP address of the server in the storage_mgmt network\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}, \"hostname\": {\"description\": \"Hostname of the server\", \"value\": {\"get_attr\": [\"Controller\", \"name\"]}}, \"config_identifier\": {\"description\": \"identifier which changes if the controller configuration may need re-applying\", \"value\": {\"list_join\": [\",\", [{\"get_attr\": [\"ControllerDeployment\", \"deploy_stdout\"]}, {\"get_attr\": [\"ControllerExtraConfigPre\", \"deploy_stdout\"]}]]}}, \"nova_server_resource\": {\"description\": \"Heat resource handle for the Nova compute server\", \"value\": {\"get_resource\": \"Controller\"}}, \"tenant_ip_address\": {\"description\": \"IP address of the server in the tenant network\", \"value\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}}, \"external_ip_address\": {\"description\": \"IP address of the server in the external network\", \"value\": {\"get_attr\": [\"ExternalPort\", \"ip_address\"]}}, \"swift_device\": {\"description\": \"Swift device formatted for swift-ring-builder\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}}, \"template\": \"r1z1-IP:%PORT%/d1\"}}}, \"corosync_node\": {\"description\": \"Node object in the format {ip: ..., name: ...} format that the corosync element expects\\n\", \"value\": {\"ip\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}, \"name\": {\"get_attr\": [\"Controller\", \"name\"]}}}, \"hosts_entry\": {\"description\": \"Server's IP address and hostname in the /etc/hosts format\\n\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"ControllerHostnameResolveNetwork\"]}]}, \"HOST\": {\"get_attr\": [\"Controller\", \"name\"]}, \"CLOUDNAME\": {\"get_param\": \"CloudName\"}}, \"template\": \"IP HOST.localdomain HOST CLOUDNAME\"}}}, \"swift_proxy_memcache\": {\"description\": \"Swift proxy-memcache value\", \"value\": {\"str_replace\": {\"params\": {\"IP\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MemcachedNetwork\"]}]}}, \"template\": \"IP:11211\"}}}, \"storage_ip_address\": {\"description\": \"IP address of the server in the storage network\", \"value\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}}, \"internal_api_ip_address\": {\"description\": \"IP address of the server in the internal_api network\", \"value\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}}, \"ip_address\": {\"description\": \"IP address of the server in the ctlplane network\", \"value\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack controller node configured by Puppet.\\n\", \"parameters\": {\"MysqlMaxConnections\": {\"default\": 1024, \"type\": \"number\", \"description\": \"Configures MySQL max_connections config setting\"}, \"EnableCephStorage\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to deploy Ceph Storage (OSD) on the Controller\"}, \"NeutronPublicInterfaceRawDevice\": {\"default\": \"\", \"type\": \"string\", \"description\": \"If set, the public interface is a vlan with this device as the raw device.\"}, \"KeystoneSigningKey\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"Keystone key for signing tokens.\"}, \"SSLCACertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"If set, the contents of an SSL certificate authority file.\"}, \"NtpServer\": {\"default\": \"\", \"type\": \"string\"}, \"Hostname\": {\"default\": \"\", \"type\": \"string\"}, \"GlanceFilePcmkManage\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to make Glance file backend a mount managed by Pacemaker. Effective when GlanceBackend is 'file'.\\n\"}, \"KeystoneSSLCertificateKey\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"Keystone key for signing tokens.\"}, \"NeutronDhcpAgentsPerNetwork\": {\"default\": 3, \"type\": \"number\", \"description\": \"The number of neutron dhcp agents to schedule per network\"}, \"NeutronPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the neutron service and db account, used by neutron agents.\"}, \"NeutronFlatNetworks\": {\"default\": \"datacentre\", \"type\": \"string\", \"description\": \"If set, flat networks to configure in neutron plugins.\"}, \"EnablePackageInstall\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Set to true to enable package installation via Puppet\"}, \"NeutronPublicInterface\": {\"default\": \"nic1\", \"type\": \"string\", \"description\": \"What interface to bridge onto br-ex for network nodes.\"}, \"SnmpdReadonlyUserPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The user password for SNMPd with readonly rights running on all Overcloud nodes\"}, \"GlancePassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the glance service and db account, used by the glance services.\"}, \"NeutronTunnelIdRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\\nof GRE tunnel IDs that are available for tenant network allocation\\n\"}, \"CinderEnableRbdBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Rbd backend for Cinder\"}, \"SwiftReplicas\": {\"default\": 3, \"type\": \"number\", \"description\": \"How many replicas to use in the swift rings.\"}, \"NeutronPublicInterfaceTag\": {\"default\": \"\", \"type\": \"string\", \"description\": \"VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\\n\"}, \"NeutronNetworkVLANRanges\": {\"default\": \"datacentre\", \"type\": \"comma_delimited_list\", \"description\": \"The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\\n\"}, \"KeystoneSigningCertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Keystone certificate for verifying token validity.\"}, \"SSLKey\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.\"}, \"GlanceFilePcmkFstype\": {\"default\": \"nfs\", \"type\": \"string\", \"description\": \"Filesystem type for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n\"}, \"ServiceNetMap\": {\"default\": {}, \"type\": \"json\", \"description\": \"Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry.\"}, \"RabbitCookie\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\"}, \"SnmpdReadonlyUserName\": {\"default\": \"ro_snmp_user\", \"type\": \"string\", \"description\": \"The user name for SNMPd with readonly rights running on all Overcloud nodes\"}, \"KeyName\": {\"default\": \"default\", \"type\": \"string\", \"description\": \"Name of an existing EC2 KeyPair to enable SSH access to the instances\", \"constraints\": [{\"custom_constraint\": \"nova.keypair\"}]}, \"MysqlRootPassword\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\"}, \"GlanceProtocol\": {\"default\": \"http\", \"type\": \"string\", \"description\": \"Protocol to use when connecting to glance, set to https for SSL.\"}, \"CinderISCSIHelper\": {\"default\": \"tgtadm\", \"type\": \"string\", \"description\": \"The iSCSI helper to use with cinder.\"}, \"MysqlClusterUniquePart\": {\"default\": \"unset\", \"type\": \"string\", \"description\": \"A unique identifier of the MySQL cluster the controller is in.\"}, \"CinderPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the cinder service and db account, used by cinder-api.\"}, \"CloudName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The DNS name of this cloud. E.g. ci-overcloud.tripleo.org\"}, \"CinderLVMLoopDeviceSize\": {\"default\": 5000, \"type\": \"number\", \"description\": \"The size of the loopback file used by the cinder LVM driver.\"}, \"RabbitPassword\": {\"default\": \"guest\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for RabbitMQ\"}, \"CinderNfsServers\": {\"default\": \"\", \"type\": \"comma_delimited_list\", \"description\": \"NFS servers used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n\"}, \"NeutronApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"ImageUpdatePolicy\": {\"default\": \"REBUILD_PRESERVE_EPHEMERAL\", \"type\": \"string\", \"description\": \"What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.\"}, \"MysqlInnodbBufferPoolSize\": {\"default\": 0, \"type\": \"number\", \"description\": \"Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as \\\"no value\\\" and will defer to the lower level default.\\n\"}, \"PublicVirtualInterface\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used.\\n\"}, \"Debug\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Set to True to enable debugging on all services.\"}, \"NeutronAgentMode\": {\"default\": \"dvr_snat\", \"type\": \"string\", \"description\": \"Agent mode for the neutron-l3-agent on the controller hosts\"}, \"GlanceFilePcmkDevice\": {\"default\": \"\", \"type\": \"string\", \"description\": \"An exported storage device that should be mounted by Pacemaker as Glance storage. Effective when GlanceFilePcmkManage is true.\\n\"}, \"AdminToken\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The keystone auth secret and db password.\"}, \"SwiftMinPartHours\": {\"default\": 1, \"type\": \"number\", \"description\": \"The minimum time (in hours) before a partition in a ring can be moved following a rebalance.\"}, \"KeystoneSSLCertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Keystone certificate for verifying token validity.\"}, \"NeutronL3HA\": {\"default\": \"False\", \"type\": \"string\", \"description\": \"Whether to enable l3-agent HA\"}, \"EnableGalera\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to use Galera instead of regular MariaDB.\"}, \"HorizonSecret\": {\"type\": \"string\", \"description\": \"Secret key for Django\"}, \"NeutronBridgeMappings\": {\"default\": \"datacentre:br-ex\", \"type\": \"string\", \"description\": \"The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\\n\"}, \"VirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"CinderEnableIscsiBackend\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to enable or not the Iscsi backend for Cinder\"}, \"CeilometerMeteringSecret\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"Secret shared by the ceilometer services.\"}, \"NeutronMetadataProxySharedSecret\": {\"default\": \"unset\", \"type\": \"string\", \"description\": \"Shared secret to prevent spoofing\"}, \"PublicVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"Flavor\": {\"type\": \"string\", \"description\": \"Flavor for control nodes to request when deploying.\", \"constraints\": [{\"custom_constraint\": \"nova.flavor\"}]}, \"CinderEnableNfsBackend\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable or not the NFS backend for Cinder\"}, \"NovaPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the nova service and db account, used by nova-api.\"}, \"KeystonePublicApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"GlancePort\": {\"default\": \"9292\", \"type\": \"string\", \"description\": \"Glance port.\"}, \"SwiftPartPower\": {\"default\": 10, \"type\": \"number\", \"description\": \"Partition Power to use when building Swift rings\"}, \"HeatApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"NeutronPublicInterfaceDefaultRoute\": {\"default\": \"\", \"type\": \"string\", \"description\": \"A custom default route for the NeutronPublicInterface.\"}, \"HeatPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the Heat service and db account, used by the Heat services.\"}, \"MysqlVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"RedisVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"ControllerExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Controller specific configuration to inject into the cluster. Same\\nstructure as ExtraConfig.\\n\"}, \"ControlVirtualInterface\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"Interface where virtual ip will be assigned.\"}, \"SwiftMountCheck\": {\"default\": \"false\", \"type\": \"boolean\", \"description\": \"Value of mount_check in Swift account/container/object -server.conf\"}, \"HeatStackDomainAdminPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"Password for heat_stack_domain_admin user.\"}, \"RabbitClientPort\": {\"default\": 5672, \"type\": \"number\", \"description\": \"Set rabbit subscriber port, change this if using SSL\"}, \"PcsdPassword\": {\"type\": \"string\", \"description\": \"The password for the 'pcsd' user.\"}, \"GlanceApiVirtualIP\": {\"default\": \"\", \"type\": \"string\"}, \"SwiftPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the swift service account, used by the swift proxy services.\"}, \"EnableSwiftStorage\": {\"default\": true, \"type\": \"boolean\", \"description\": \"Whether to enable Swift Storage on the Controller\"}, \"EnablePacemaker\": {\"default\": false, \"type\": \"boolean\", \"description\": \"If enabled services will be monitored by Pacemaker; it will manage VIPs as well, in place of Keepalived.\"}, \"NeutronNetworkType\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tenant network type for Neutron, either gre or vxlan.\"}, \"CeilometerPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the ceilometer service and db account.\"}, \"SSLCertificate\": {\"default\": \"\", \"hidden\": true, \"type\": \"string\", \"description\": \"If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.\"}, \"NeutronVniRanges\": {\"default\": \"1:1000\", \"type\": \"comma_delimited_list\", \"description\": \"Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\\nof VXLAN VNI IDs that are available for tenant network allocation\\n\"}, \"GlanceNotifierStrategy\": {\"default\": \"noop\", \"type\": \"string\", \"description\": \"Strategy to use for Glance notification queue\"}, \"CinderBackendConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Contains parameters to configure Cinder backends. Typically set via parameter_defaults in the resource registry.\"}, \"NeutronMechanismDrivers\": {\"default\": \"openvswitch\", \"type\": \"string\", \"description\": \"The mechanism drivers for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\\n\"}, \"GlanceBackend\": {\"default\": \"swift\", \"type\": \"string\", \"description\": \"The short name of the Glance backend to use. Should be one of swift, rbd, or file\", \"constraints\": [{\"allowed_values\": [\"swift\", \"file\", \"rbd\"]}]}, \"RabbitClientUseSSL\": {\"default\": false, \"type\": \"string\", \"description\": \"Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\\n\"}, \"NeutronAllowL3AgentFailover\": {\"default\": \"True\", \"type\": \"string\", \"description\": \"Allow automatic l3-agent failover\"}, \"HeatAuthEncryptionKey\": {\"type\": \"string\", \"description\": \"Auth encryption key for heat-engine\"}, \"GlanceFilePcmkOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Mount options for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\\n\"}, \"RabbitUserName\": {\"default\": \"guest\", \"type\": \"string\", \"description\": \"The username for RabbitMQ\"}, \"GlanceLogFile\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The filepath of the file to use for logging messages from Glance.\"}, \"CinderNfsMountOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Mount options for NFS mounts used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\\n\"}, \"NeutronExternalNetworkBridge\": {\"default\": \"br-ex\", \"type\": \"string\", \"description\": \"Name of bridge used for external network traffic.\"}, \"CeilometerBackend\": {\"default\": \"mongodb\", \"type\": \"string\", \"description\": \"The ceilometer backend type.\"}, \"NeutronPublicInterfaceIP\": {\"default\": \"\", \"type\": \"string\", \"description\": \"A custom IP address to put onto the NeutronPublicInterface.\"}, \"SwiftHashSuffix\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"A random string to be used as a salt when hashing to determine mappings in the ring.\"}, \"AdminPassword\": {\"default\": \"unset\", \"hidden\": true, \"type\": \"string\", \"description\": \"The password for the keystone admin account, used for monitoring, querying neutron etc.\"}, \"NeutronDVR\": {\"default\": \"False\", \"type\": \"string\", \"description\": \"Whether to configure Neutron Distributed Virtual Routers\"}, \"Image\": {\"default\": \"overcloud-control\", \"type\": \"string\", \"constraints\": [{\"custom_constraint\": \"glance.image\"}]}, \"ExtraConfig\": {\"default\": {}, \"type\": \"json\", \"description\": \"Additional configuration to inject into the cluster. The JSON should have\\nthe following structure:\\n {\\\"FILEKEY\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"SECTIONNAME\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"OPTIONNAME\\\",\\n \\\"value\\\": \\\"VALUENAME\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\nFor instance:\\n {\\\"nova\\\":\\n {\\\"config\\\":\\n [{\\\"section\\\": \\\"default\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"compute_manager\\\",\\n \\\"value\\\": \\\"ironic.nova.compute.manager.ClusterComputeManager\\\"\\n }\\n ]\\n },\\n {\\\"section\\\": \\\"cells\\\",\\n \\\"values\\\":\\n [{\\\"option\\\": \\\"driver\\\",\\n \\\"value\\\": \\\"nova.cells.rpc_driver.CellsRPCDriver\\\"\\n }\\n ]\\n }\\n ]\\n }\\n }\\n\"}, \"NeutronTunnelTypes\": {\"default\": \"gre\", \"type\": \"string\", \"description\": \"The tunnel types for the Neutron tenant network. To specify multiple\\nvalues, use a comma separated string, like so: 'gre,vxlan'\\n\"}, \"NeutronEnableTunnelling\": {\"default\": \"True\", \"type\": \"string\"}, \"KeystoneCACertificate\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Keystone self-signed certificate authority certificate.\"}, \"UpdateIdentifier\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Setting to a previously unused value during stack-update will trigger package update on all nodes\\n\"}, \"NeutronDnsmasqOptions\": {\"default\": \"dhcp-option-force=26,1400\", \"type\": \"string\", \"description\": \"Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.\"}}, \"resources\": {\"NodeUserData\": {\"type\": \"OS::TripleO::NodeUserData\"}, \"ControllerExtraConfigPre\": {\"depends_on\": \"ControllerDeployment\", \"type\": \"OS::TripleO::ControllerExtraConfigPre\", \"properties\": {\"server\": {\"get_resource\": \"Controller\"}}}, \"TenantPort\": {\"type\": \"OS::TripleO::Controller::Ports::TenantPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"ExternalPort\": {\"type\": \"OS::TripleO::Controller::Ports::ExternalPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkConfig\": {\"type\": \"OS::TripleO::Controller::Net::SoftwareConfig\", \"properties\": {\"StorageIpSubnet\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIpSubnet\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"StorageMgmtIpSubnet\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}, \"TenantIpSubnet\": {\"get_attr\": [\"TenantPort\", \"ip_subnet\"]}, \"ExternalIpSubnet\": {\"get_attr\": [\"ExternalPort\", \"ip_subnet\"]}}}, \"StorageMgmtPort\": {\"type\": \"OS::TripleO::Controller::Ports::StorageMgmtPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"UpdateConfig\": {\"type\": \"OS::TripleO::Tasks::PackageUpdate\"}, \"ControllerDeployment\": {\"depends_on\": \"NetworkDeployment\", \"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"heat_stack_domain_admin_password\": {\"get_param\": \"HeatStackDomainAdminPassword\"}, \"admin_token\": {\"get_param\": \"AdminToken\"}, \"heat.metadata_server_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"HeatApiVirtualIP\"}, \":8000\"]]}, \"neutron_router_distributed\": {\"get_param\": \"NeutronDVR\"}, \"swift_password\": {\"get_param\": \"SwiftPassword\"}, \"neutron_flat_networks\": {\"get_param\": \"NeutronFlatNetworks\"}, \"redis_vip\": {\"get_param\": \"RedisVirtualIP\"}, \"glance_port\": {\"get_param\": \"GlancePort\"}, \"glance_api_servers\": {\"list_join\": [\"\", [{\"get_param\": \"GlanceProtocol\"}, \"://\", {\"get_param\": \"GlanceApiVirtualIP\"}, \":\", {\"get_param\": \"GlancePort\"}]]}, \"rabbit_password\": {\"get_param\": \"RabbitPassword\"}, \"neutron_vni_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronVniRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"neutron_tunnel_types\": {\"get_param\": \"NeutronTunnelTypes\"}, \"neutron_dnsmasq_options\": {\"get_param\": \"NeutronDnsmasqOptions\"}, \"heat_dsn\": {\"list_join\": [\"\", [\"mysql://heat:\", {\"get_param\": \"HeatPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/heat\"]]}, \"enable_package_install\": {\"get_param\": \"EnablePackageInstall\"}, \"neutron_public_interface_raw_device\": {\"get_param\": \"NeutronPublicInterfaceRawDevice\"}, \"neutron_password\": {\"get_param\": \"NeutronPassword\"}, \"cinder_enable_rbd_backend\": {\"get_param\": \"CinderEnableRbdBackend\"}, \"glance_file_pcmk_options\": {\"get_param\": \"GlanceFilePcmkOptions\"}, \"enable_swift_storage\": {\"get_param\": \"EnableSwiftStorage\"}, \"glance_backend\": {\"get_param\": \"GlanceBackend\"}, \"horizon_secret\": {\"get_param\": \"HorizonSecret\"}, \"ceilometer_password\": {\"get_param\": \"CeilometerPassword\"}, \"snmpd_readonly_user_name\": {\"get_param\": \"SnmpdReadonlyUserName\"}, \"snmpd_readonly_user_password\": {\"get_param\": \"SnmpdReadonlyUserPassword\"}, \"neutron_l3_ha\": {\"get_param\": \"NeutronL3HA\"}, \"neutron_local_ip\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NeutronTenantNetwork\"]}]}, \"admin_password\": {\"get_param\": \"AdminPassword\"}, \"neutron_admin_auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":35357/v2.0\"]]}, \"ceph_public_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephPublicNetwork\"]}]}, \"bootstack_nodeid\": {\"get_attr\": [\"Controller\", \"name\"]}, \"glance_file_pcmk_device\": {\"get_param\": \"GlanceFilePcmkDevice\"}, \"heat_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"HeatApiNetwork\"]}]}, \"cinder_dsn\": {\"list_join\": [\"\", [\"mysql://cinder:\", {\"get_param\": \"CinderPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/cinder\"]]}, \"enable_ceph_storage\": {\"get_param\": \"EnableCephStorage\"}, \"cinder_lvm_loop_device_size\": {\"get_param\": \"CinderLVMLoopDeviceSize\"}, \"neutron_mechanism_drivers\": {\"get_param\": \"NeutronMechanismDrivers\"}, \"neutron_public_interface_ip\": {\"get_param\": \"NeutronPublicInterfaceIP\"}, \"ntp_servers\": {\"str_replace\": {\"params\": {\"server\": {\"get_param\": \"NtpServer\"}}, \"template\": \"[\\\"server\\\"]\"}}, \"keystone_dsn\": {\"list_join\": [\"\", [\"mysql://keystone:\", {\"get_param\": \"AdminToken\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/keystone\"]]}, \"keystone_signing_certificate\": {\"get_param\": \"KeystoneSigningCertificate\"}, \"mysql_innodb_buffer_pool_size\": {\"get_param\": \"MysqlInnodbBufferPoolSize\"}, \"glance_dsn\": {\"list_join\": [\"\", [\"mysql://glance:\", {\"get_param\": \"GlancePassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/glance\"]]}, \"ceilometer_coordination_url\": {\"list_join\": [\"\", [\"redis://\", {\"get_param\": \"RedisVirtualIP\"}, \":6379\"]]}, \"public_virtual_interface\": {\"get_param\": \"PublicVirtualInterface\"}, \"nova_dsn\": {\"list_join\": [\"\", [\"mysql://nova:\", {\"get_param\": \"NovaPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/nova\"]]}, \"cinder_password\": {\"get_param\": \"CinderPassword\"}, \"swift_hash_suffix\": {\"get_param\": \"SwiftHashSuffix\"}, \"nova_metadata_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NovaMetadataNetwork\"]}]}, \"pcsd_password\": {\"get_param\": \"PcsdPassword\"}, \"keystone_public_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"KeystonePublicApiNetwork\"]}]}, \"neutron_bridge_mappings\": {\"get_param\": \"NeutronBridgeMappings\"}, \"nova_password\": {\"get_param\": \"NovaPassword\"}, \"neutron_public_interface\": {\"get_param\": \"NeutronPublicInterface\"}, \"neutron_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"NeutronApiVirtualIP\"}, \":9696\"]]}, \"ceilometer_metering_secret\": {\"get_param\": \"CeilometerMeteringSecret\"}, \"glance_password\": {\"get_param\": \"GlancePassword\"}, \"neutron_dhcp_agents_per_network\": {\"get_param\": \"NeutronDhcpAgentsPerNetwork\"}, \"keystone_auth_uri\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":5000/v2.0/\"]]}, \"rabbit_username\": {\"get_param\": \"RabbitUserName\"}, \"neutron_enable_tunneling\": {\"get_param\": \"NeutronEnableTunnelling\"}, \"heat_password\": {\"get_param\": \"HeatPassword\"}, \"debug\": {\"get_param\": \"Debug\"}, \"keystone_ca_certificate\": {\"get_param\": \"KeystoneCACertificate\"}, \"rabbit_client_port\": {\"get_param\": \"RabbitClientPort\"}, \"keystone_signing_key\": {\"get_param\": \"KeystoneSigningKey\"}, \"swift_management_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftMgmtNetwork\"]}]}, \"neutron_tunnel_id_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronTunnelIdRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"swift_min_part_hours\": {\"get_param\": \"SwiftMinPartHours\"}, \"neutron_public_interface_default_route\": {\"get_param\": \"NeutronPublicInterfaceDefaultRoute\"}, \"mongo_db_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MongoDbNetwork\"]}]}, \"swift_mount_check\": {\"get_param\": \"SwiftMountCheck\"}, \"heat.watch_server_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"HeatApiVirtualIP\"}, \":8003\"]]}, \"keystone_admin_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"KeystoneAdminApiNetwork\"]}]}, \"keystone_ssl_certificate_key\": {\"get_param\": \"KeystoneSSLCertificateKey\"}, \"rabbitmq_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"RabbitMqNetwork\"]}]}, \"mysql_cluster_name\": {\"str_replace\": {\"params\": {\"CLUSTER\": {\"get_param\": \"MysqlClusterUniquePart\"}}, \"template\": \"tripleo-CLUSTER\"}}, \"neutron_public_interface_tag\": {\"get_param\": \"NeutronPublicInterfaceTag\"}, \"cinder_iscsi_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CinderIscsiNetwork\"]}]}, \"control_virtual_interface\": {\"get_param\": \"ControlVirtualInterface\"}, \"cinder_iscsi_helper\": {\"get_param\": \"CinderISCSIHelper\"}, \"neutron_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NeutronApiNetwork\"]}]}, \"rabbit_client_use_ssl\": {\"get_param\": \"RabbitClientUseSSL\"}, \"mysql_root_password\": {\"get_param\": \"MysqlRootPassword\"}, \"glance_log_file\": {\"get_param\": \"GlanceLogFile\"}, \"swift_proxy_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"SwiftProxyNetwork\"]}]}, \"memcached_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MemcachedNetwork\"]}]}, \"heat_auth_encryption_key\": {\"get_param\": \"HeatAuthEncryptionKey\"}, \"keystone_ec2_uri\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":5000/v2.0/ec2tokens\"]]}, \"enable_galera\": {\"get_param\": \"EnableGalera\"}, \"mysql_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"MysqlNetwork\"]}]}, \"neutron_allow_l3agent_failover\": {\"get_param\": \"NeutronAllowL3AgentFailover\"}, \"mysql_max_connections\": {\"get_param\": \"MysqlMaxConnections\"}, \"keystone_identity_uri\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":35357/\"]]}, \"keystone_ssl_certificate\": {\"get_param\": \"KeystoneSSLCertificate\"}, \"neutron_metadata_proxy_shared_secret\": {\"get_param\": \"NeutronMetadataProxySharedSecret\"}, \"cinder_backend_config\": {\"get_param\": \"CinderBackendConfig\"}, \"cinder_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CinderApiNetwork\"]}]}, \"swift_replicas\": {\"get_param\": \"SwiftReplicas\"}, \"rabbit_cookie\": {\"get_param\": \"RabbitCookie\"}, \"keystone_auth_address\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":5000/v2.0\"]]}, \"glance_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"GlanceApiNetwork\"]}]}, \"ceph_public_ip\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephPublicNetwork\"]}]}, \"cinder_enable_iscsi_backend\": {\"get_param\": \"CinderEnableIscsiBackend\"}, \"glance_file_pcmk_fstype\": {\"get_param\": \"GlanceFilePcmkFstype\"}, \"neutron_tenant_network_type\": {\"get_param\": \"NeutronNetworkType\"}, \"glance_notifier_strategy\": {\"get_param\": \"GlanceNotifierStrategy\"}, \"neutron_network_vlan_ranges\": {\"str_replace\": {\"params\": {\"RANGES\": {\"list_join\": [\"','\", {\"get_param\": \"NeutronNetworkVLANRanges\"}]}}, \"template\": \"['RANGES']\"}}, \"ceilometer_dsn\": {\"list_join\": [\"\", [\"mysql://ceilometer:unset@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/ceilometer\"]]}, \"glance_registry_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"GlanceRegistryNetwork\"]}]}, \"ceph_cluster_network\": {\"get_attr\": [\"NetIpSubnetMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CephClusterNetwork\"]}]}, \"neutron_agent_mode\": {\"get_param\": \"NeutronAgentMode\"}, \"horizon_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"HorizonNetwork\"]}]}, \"cinder_nfs_mount_options\": {\"get_param\": \"CinderNfsMountOptions\"}, \"cinder_enable_nfs_backend\": {\"get_param\": \"CinderEnableNfsBackend\"}, \"ceilometer_backend\": {\"get_param\": \"CeilometerBackend\"}, \"neutron_external_network_bridge\": {\"get_param\": \"NeutronExternalNetworkBridge\"}, \"glance_file_pcmk_manage\": {\"get_param\": \"GlanceFilePcmkManage\"}, \"swift_part_power\": {\"get_param\": \"SwiftPartPower\"}, \"neutron_dsn\": {\"list_join\": [\"\", [\"mysql://neutron:\", {\"get_param\": \"NeutronPassword\"}, \"@\", {\"get_param\": \"MysqlVirtualIP\"}, \"/ovs_neutron?charset=utf8\"]]}, \"cinder_nfs_servers\": {\"str_replace\": {\"params\": {\"SERVERS\": {\"list_join\": [\"','\", {\"get_param\": \"CinderNfsServers\"}]}}, \"template\": \"['SERVERS']\"}}, \"redis_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"RedisNetwork\"]}]}, \"ceilometer_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"CeilometerApiNetwork\"]}]}, \"nova_api_network\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"NovaApiNetwork\"]}]}, \"heat.waitcondition_server_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"HeatApiVirtualIP\"}, \":8000/v1/waitcondition\"]]}}, \"config\": {\"get_resource\": \"ControllerConfig\"}, \"server\": {\"get_resource\": \"Controller\"}}}, \"ControllerConfig\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"hierarchy\": [\"heat_config_%{::deploy_config_name}\", \"controller\", \"object\", \"swift_devices_and_proxy\", \"ceph_cluster\", \"ceph\", \"bootstrap_node\", \"all_nodes\", \"vip_data\", \"RedHat\", \"common\", \"cinder_netapp_data\"], \"datafiles\": {\"ceph\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml\"}, \"mapped_data\": {\"ceph::profile::params::cluster_network\": {\"get_input\": \"ceph_cluster_network\"}, \"ceph::profile::params::public_network\": {\"get_input\": \"ceph_public_network\"}, \"ceph::mon::public_addr\": {\"get_input\": \"ceph_public_ip\"}}}, \"controller\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/controller.yaml\"}, \"mapped_data\": {\"nova::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"neutron::debug\": {\"get_input\": \"debug\"}, \"neutron::plugins::ml2::network_vlan_ranges\": {\"get_input\": \"neutron_network_vlan_ranges\"}, \"horizon::secret_key\": {\"get_input\": \"horizon_secret\"}, \"neutron_tunnel_types\": {\"get_input\": \"neutron_tunnel_types\"}, \"heat::keystone::domain::auth_url\": {\"list_join\": [\"\", [\"http://\", {\"get_param\": \"KeystonePublicApiVirtualIP\"}, \":35357/v2.0\"]]}, \"neutron_dnsmasq_options\": {\"get_input\": \"neutron_dnsmasq_options\"}, \"keystone::database_connection\": {\"get_input\": \"keystone_dsn\"}, \"glance::registry::database_connection\": {\"get_input\": \"glance_dsn\"}, \"swift::storage::all::storage_local_net_ip\": {\"get_input\": \"swift_management_network\"}, \"glance::registry::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"enable_swift_storage\": {\"get_input\": \"enable_swift_storage\"}, \"glance::registry::keystone_password\": {\"get_input\": \"glance_password\"}, \"glance::registry::debug\": {\"get_input\": \"debug\"}, \"ceilometer::api::keystone_identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"keystone_ssl_certificate\": {\"get_input\": \"keystone_ssl_certificate\"}, \"snmpd_readonly_user_password\": {\"get_input\": \"snmpd_readonly_user_password\"}, \"horizon::bind_address\": {\"get_input\": \"horizon_network\"}, \"ntp::servers\": {\"get_input\": \"ntp_servers\"}, \"cinder::debug\": {\"get_input\": \"debug\"}, \"enable_ceph_storage\": {\"get_input\": \"enable_ceph_storage\"}, \"heat::debug\": {\"get_input\": \"debug\"}, \"mongodb::server::bind_ip\": {\"get_input\": \"mongo_db_network\"}, \"tripleo::loadbalancer::public_virtual_interface\": {\"get_input\": \"public_virtual_interface\"}, \"neutron_public_interface_ip\": {\"get_input\": \"neutron_public_interface_ip\"}, \"cinder::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"nova::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"keystone_signing_certificate\": {\"get_input\": \"keystone_signing_certificate\"}, \"glance::registry::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"neutron::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::plugins::ml2::tunnel_id_ranges\": {\"get_input\": \"neutron_tunnel_id_ranges\"}, \"heat::keystone::domain::keystone_password\": {\"get_input\": \"admin_password\"}, \"heat::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"ceilometer::metering_secret\": {\"get_input\": \"ceilometer_metering_secret\"}, \"ceilometer::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"cinder::glance::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"neutron::dhcp_agents_per_network\": {\"get_input\": \"neutron_dhcp_agents_per_network\"}, \"neutron_public_interface\": {\"get_input\": \"neutron_public_interface\"}, \"glance::api::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"ceilometer::debug\": {\"get_input\": \"debug\"}, \"heat::engine::auth_encryption_key\": {\"get_input\": \"heat_auth_encryption_key\"}, \"ceilometer::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"ceilometer::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"nova::api::api_bind_address\": {\"get_input\": \"nova_api_network\"}, \"tripleo::ringbuilder::build_ring\": true, \"glance::api::registry_host\": {\"get_input\": \"glance_registry_network\"}, \"tripleo::loadbalancer::control_virtual_interface\": {\"get_input\": \"control_virtual_interface\"}, \"glance::api::bind_host\": {\"get_input\": \"glance_api_network\"}, \"glance::api::keystone_password\": {\"get_input\": \"glance_password\"}, \"neutron::plugins::ml2::vni_ranges\": {\"get_input\": \"neutron_vni_ranges\"}, \"horizon::keystone_url\": {\"get_input\": \"keystone_auth_uri\"}, \"glance::backend::swift::swift_store_auth_address\": {\"get_input\": \"keystone_auth_address\"}, \"heat::keystone_ec2_uri\": {\"get_input\": \"keystone_ec2_uri\"}, \"ceilometer::api::host\": {\"get_input\": \"ceilometer_api_network\"}, \"neutron::server::database_connection\": {\"get_input\": \"neutron_dsn\"}, \"heat::api_cfn::bind_host\": {\"get_input\": \"heat_api_network\"}, \"neutron::bind_host\": {\"get_input\": \"neutron_api_network\"}, \"heat::api::bind_host\": {\"get_input\": \"heat_api_network\"}, \"glance_log_file\": {\"get_input\": \"glance_log_file\"}, \"nova::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"neutron::server::auth_password\": {\"get_input\": \"neutron_password\"}, \"neutron::rabbit_user\": {\"get_input\": \"rabbit_user\"}, \"cinder_backend_config\": {\"get_input\": \"CinderBackendConfig\"}, \"cinder_iscsi_ip_address\": {\"get_input\": \"cinder_iscsi_network\"}, \"glance_file_pcmk_options\": {\"get_param\": \"GlanceFilePcmkOptions\"}, \"redis::bind\": {\"get_input\": \"redis_network\"}, \"nova::glance_api_servers\": {\"get_input\": \"glance_api_servers\"}, \"nova::debug\": {\"get_input\": \"debug\"}, \"swift::swift_hash_suffix\": {\"get_input\": \"swift_hash_suffix\"}, \"swift::proxy::authtoken::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"heat::engine::heat_watch_server_url\": {\"get_input\": \"heat.watch_server_url\"}, \"ceilometer_mysql_conn_string\": {\"get_input\": \"ceilometer_dsn\"}, \"neutron::agents::l3::external_network_bridge\": {\"get_input\": \"neutron_external_network_bridge\"}, \"heat::keystone_password\": {\"get_input\": \"heat_password\"}, \"cinder::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"nova::api::neutron_metadata_proxy_shared_secret\": {\"get_input\": \"neutron_metadata_proxy_shared_secret\"}, \"cinder::database_connection\": {\"get_input\": \"cinder_dsn\"}, \"ceilometer::api::keystone_password\": {\"get_input\": \"ceilometer_password\"}, \"neutron_agent_mode\": {\"get_input\": \"neutron_agent_mode\"}, \"glance::backend::swift::swift_store_user\": \"service:glance\", \"heat::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"cinder_nfs_mount_options\": {\"get_input\": \"cinder_nfs_mount_options\"}, \"ceilometer_backend\": {\"get_input\": \"ceilometer_backend\"}, \"glance_file_pcmk_manage\": {\"get_param\": \"GlanceFilePcmkManage\"}, \"neutron_dsn\": {\"get_input\": \"neutron_dsn\"}, \"tripleo::ringbuilder::min_part_hours\": {\"get_input\": \"swift_min_part_hours\"}, \"heat::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"cinder::api::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"nova::api::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"cinder::api::keystone_password\": {\"get_input\": \"cinder_password\"}, \"heat_stack_domain_admin_password\": {\"get_input\": \"heat_stack_domain_admin_password\"}, \"cinder::api::bind_host\": {\"get_input\": \"cinder_api_network\"}, \"neutron_router_distributed\": {\"get_input\": \"neutron_router_distributed\"}, \"hacluster_pwd\": {\"get_input\": \"pcsd_password\"}, \"ceilometer::agent::auth::auth_password\": {\"get_input\": \"ceilometer_password\"}, \"redis_vip\": {\"get_input\": \"redis_vip\"}, \"neutron::agents::metadata::auth_password\": {\"get_input\": \"neutron_password\"}, \"apache::ip\": {\"get_input\": \"horizon_network\"}, \"neutron_bridge_mappings\": {\"get_input\": \"neutron_bridge_mappings\"}, \"rabbitmq::node_ip_address\": {\"get_input\": \"rabbitmq_network\"}, \"nova::api::metadata_listen\": {\"get_input\": \"nova_metadata_network\"}, \"keystone_ca_certificate\": {\"get_input\": \"keystone_ca_certificate\"}, \"glance::registry::bind_host\": {\"get_attr\": [\"NetIpMap\", \"net_ip_map\", {\"get_param\": [\"ServiceNetMap\", \"GlanceRegistryNetwork\"]}]}, \"rabbitmq::erlang_cookie\": {\"get_input\": \"rabbit_cookie\"}, \"neutron_public_interface_raw_device\": {\"get_input\": \"neutron_public_interface_raw_device\"}, \"cinder_enable_nfs_backend\": {\"get_input\": \"cinder_enable_nfs_backend\"}, \"heat::keystone::domain::domain_password\": {\"get_input\": \"heat_stack_domain_admin_password\"}, \"cinder_enable_rbd_backend\": {\"get_input\": \"cinder_enable_rbd_backend\"}, \"neutron::agents::metadata::metadata_ip\": {\"get_input\": \"neutron_api_network\"}, \"neutron::server::l3_ha\": {\"get_input\": \"neutron_l3_ha\"}, \"ceilometer::agent::central::coordination_url\": {\"get_input\": \"ceilometer_coordination_url\"}, \"glance_file_pcmk_fstype\": {\"get_param\": \"GlanceFilePcmkFstype\"}, \"swift_mount_check\": {\"get_input\": \"swift_mount_check\"}, \"heat::database_connection\": {\"get_input\": \"heat_dsn\"}, \"cinder::api::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"admin_password\": {\"get_input\": \"admin_password\"}, \"neutron_mechanism_drivers\": {\"get_input\": \"neutron_mechanism_drivers\"}, \"horizon::django_debug\": {\"get_input\": \"debug\"}, \"glance::backend::swift::swift_store_key\": {\"get_input\": \"glance_password\"}, \"heat::engine::heat_waitcondition_server_url\": {\"get_input\": \"heat.waitcondition_server_url\"}, \"memcached::listen_ip\": {\"get_input\": \"memcached_network\"}, \"cinder_lvm_loop_device_size\": {\"get_input\": \"cinder_lvm_loop_device_size\"}, \"tripleo::ringbuilder::replicas\": {\"get_input\": \"swift_replicas\"}, \"nova::network::neutron::neutron_admin_password\": {\"get_input\": \"neutron_password\"}, \"nova::vncproxy::host\": {\"get_input\": \"nova_api_network\"}, \"mysql_bind_host\": {\"get_input\": \"mysql_network\"}, \"snmpd_readonly_user_name\": {\"get_input\": \"snmpd_readonly_user_name\"}, \"keystone_signing_key\": {\"get_input\": \"keystone_signing_key\"}, \"glance_file_pcmk_device\": {\"get_param\": \"GlanceFilePcmkDevice\"}, \"heat::api_cloudwatch::bind_host\": {\"get_input\": \"heat_api_network\"}, \"public_virtual_interface\": {\"get_input\": \"public_virtual_interface\"}, \"neutron::server::allow_automatic_l3agent_failover\": {\"get_input\": \"neutron_allow_l3agent_failover\"}, \"neutron::agents::ml2::ovs::enable_tunneling\": {\"get_input\": \"neutron_enable_tunneling\"}, \"keystone::public_bind_host\": {\"get_input\": \"keystone_public_api_network\"}, \"nova::network::neutron::neutron_admin_auth_url\": {\"get_input\": \"neutron_admin_auth_url\"}, \"tripleo::ringbuilder::part_power\": {\"get_input\": \"swift_part_power\"}, \"nova::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"glance::api::debug\": {\"get_input\": \"debug\"}, \"swift::proxy::authtoken::admin_password\": {\"get_input\": \"swift_password\"}, \"cinder_nfs_servers\": {\"get_input\": \"cinder_nfs_servers\"}, \"neutron::agents::metadata::shared_secret\": {\"get_input\": \"neutron_metadata_proxy_shared_secret\"}, \"neutron::server::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"glance_backend\": {\"get_input\": \"glance_backend\"}, \"swift::proxy::proxy_local_net_ip\": {\"get_input\": \"swift_proxy_network\"}, \"nova::api::admin_password\": {\"get_input\": \"nova_password\"}, \"keystone::debug\": {\"get_input\": \"debug\"}, \"neutron::agents::metadata::auth_url\": {\"get_input\": \"keystone_identity_uri\"}, \"nova::database_connection\": {\"get_input\": \"nova_dsn\"}, \"glance::api::bind_port\": {\"get_input\": \"glance_port\"}, \"mysql_cluster_name\": {\"get_input\": \"mysql_cluster_name\"}, \"swift::proxy::authtoken::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"heat::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"neutron::agents::ml2::ovs::local_ip\": {\"get_input\": \"neutron_local_ip\"}, \"ceilometer::api::keystone_auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"cinder::rabbit_use_ssl\": {\"get_input\": \"rabbit_client_use_ssl\"}, \"mysql::server::root_password\": {\"get_input\": \"mysql_root_password\"}, \"control_virtual_interface\": {\"get_input\": \"control_virtual_interface\"}, \"cinder_iscsi_helper\": {\"get_input\": \"cinder_iscsi_helper\"}, \"heat::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"neutron_flat_networks\": {\"get_input\": \"neutron_flat_networks\"}, \"ceilometer::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"heat::engine::heat_metadata_server_url\": {\"get_input\": \"heat.metadata_server_url\"}, \"enable_galera\": {\"get_input\": \"enable_galera\"}, \"nova::network::neutron::neutron_url\": {\"get_input\": \"neutron_url\"}, \"mysql_max_connections\": {\"get_input\": \"mysql_max_connections\"}, \"keystone_ssl_certificate_key\": {\"get_input\": \"keystone_ssl_certificate_key\"}, \"keystone::roles::admin::password\": {\"get_input\": \"admin_password\"}, \"glance::api::database_connection\": {\"get_input\": \"glance_dsn\"}, \"neutron::rabbit_port\": {\"get_input\": \"rabbit_client_port\"}, \"bootstack_nodeid\": {\"get_input\": \"bootstack_nodeid\"}, \"nova::api::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"mysql_innodb_buffer_pool_size\": {\"get_input\": \"mysql_innodb_buffer_pool_size\"}, \"cinder_enable_iscsi_backend\": {\"get_input\": \"cinder_enable_iscsi_backend\"}, \"glance::api::identity_uri\": {\"get_input\": \"keystone_identity_uri\"}, \"neutron::server::auth_uri\": {\"get_input\": \"keystone_auth_uri\"}, \"neutron_public_interface_default_route\": {\"get_input\": \"neutron_public_interface_default_route\"}, \"glance_notifier_strategy\": {\"get_input\": \"glance_notifier_strategy\"}, \"cinder::rabbit_userid\": {\"get_input\": \"rabbit_username\"}, \"heat::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"keystone::admin_bind_host\": {\"get_input\": \"keystone_admin_api_network\"}, \"neutron_public_interface_tag\": {\"get_input\": \"neutron_public_interface_tag\"}, \"neutron_tenant_network_type\": {\"get_input\": \"neutron_tenant_network_type\"}, \"neutron::rabbit_password\": {\"get_input\": \"rabbit_password\"}, \"keystone::admin_token\": {\"get_input\": \"admin_token\"}, \"enable_package_install\": {\"get_input\": \"enable_package_install\"}, \"ceilometer::agent::auth::auth_url\": {\"get_input\": \"keystone_auth_address\"}}}, \"object\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/object.yaml\"}}, \"common\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/common.yaml\"}}}}}}}, \"InternalApiPort\": {\"type\": \"OS::TripleO::Controller::Ports::InternalApiPort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"NetIpSubnetMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"ExternalIp\": {\"get_attr\": [\"ExternalPort\", \"ip_subnet\"]}, \"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_subnet\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_subnet\"]}, \"TenantIp\": {\"get_attr\": [\"TenantPort\", \"ip_subnet\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_subnet\"]}}}, \"UpdateDeployment\": {\"type\": \"OS::Heat::SoftwareDeployment\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"UpdateIdentifier\"}}, \"config\": {\"get_resource\": \"UpdateConfig\"}, \"server\": {\"get_resource\": \"Controller\"}}}, \"StoragePort\": {\"type\": \"OS::TripleO::Controller::Ports::StoragePort\", \"properties\": {\"ControlPlaneIP\": {\"get_attr\": [\"Controller\", \"networks\", \"ctlplane\", 0]}}}, \"NetworkDeployment\": {\"type\": \"OS::TripleO::SoftwareDeployment\", \"properties\": {\"input_values\": {\"interface_name\": {\"get_param\": \"NeutronPublicInterface\"}, \"bridge_name\": \"br-ex\"}, \"config\": {\"get_resource\": \"NetworkConfig\"}, \"server\": {\"get_resource\": \"Controller\"}}}, \"Controller\": {\"type\": \"OS::Nova::Server\", \"properties\": {\"user_data_format\": \"SOFTWARE_CONFIG\", \"name\": {\"get_param\": \"Hostname\"}, \"key_name\": {\"get_param\": \"KeyName\"}, \"image\": {\"get_param\": \"Image\"}, \"image_update_policy\": {\"get_param\": \"ImageUpdatePolicy\"}, \"user_data\": {\"get_resource\": \"NodeUserData\"}, \"flavor\": {\"get_param\": \"Flavor\"}, \"networks\": [{\"network\": \"ctlplane\"}]}}, \"NetIpMap\": {\"type\": \"OS::TripleO::Network::Ports::NetIpMap\", \"properties\": {\"ExternalIp\": {\"get_attr\": [\"ExternalPort\", \"ip_address\"]}, \"StorageIp\": {\"get_attr\": [\"StoragePort\", \"ip_address\"]}, \"InternalApiIp\": {\"get_attr\": [\"InternalApiPort\", \"ip_address\"]}, \"TenantIp\": {\"get_attr\": [\"TenantPort\", \"ip_address\"]}, \"StorageMgmtIp\": {\"get_attr\": [\"StorageMgmtPort\", \"ip_address\"]}}}}}", "file:///tmp/tmpVtTjeI/network/ports/ctlplane_vip.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the internal API network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"VipPort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"VipPort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"VipPort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"Virtual IP network IP\", \"value\": {\"get_attr\": [\"VipPort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port for a VIP on the undercloud ctlplane network.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"NetworkName\": {\"default\": \"ctlplane\", \"type\": \"string\", \"description\": null}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"ControlPlaneNetwork\": {\"default\": \"ctlplane\", \"type\": \"string\", \"description\": \"The name of the undercloud Neutron control plane\"}}, \"resources\": {\"VipPort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"ControlPlaneNetwork\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.sh": "#!/bin/bash\n\n# A heat-config-script which runs yum update during a stack-update.\n# Inputs:\n# deploy_action - yum will only be run if this is UPDATE\n# update_identifier - yum will only run for previously unused values of update_identifier\n# command - yum sub-command to run, defaults to \"update\"\n# command_arguments - yum command arguments, defaults to \"\"\n\necho \"Started yum_update.sh on server $deploy_server_id at `date`\"\n\nif [[ -z \"$update_identifier\" ]]; then\n echo \"Not running due to unset update_identifier\"\n exit 0\nfi\n\ntimestamp_dir=/var/lib/overcloud-yum-update\nmkdir -p $timestamp_dir\n\n# sanitise to remove unusual characters\nupdate_identifier=${update_identifier//[^a-zA-Z0-9-_]/}\n\ntimestamp_file=\"$timestamp_dir/$update_identifier\"\nif [[ -a \"$timestamp_file\" ]]; then\n echo \"Not running for already-run timestamp \\\"$update_identifier\\\"\"\n exit 0\nfi\ntouch \"$timestamp_file\"\n\ncommand=${command:-update}\nfull_command=\"yum -y $command $command_arguments\"\necho \"Running: $full_command\"\n\nresult=$($full_command)\nreturn_code=$?\necho \"$result\"\necho \"yum return code: $return_code\"\n\necho \"Finished yum_update.sh on server $deploy_server_id at `date`\"\n\nexit $return_code\n", "file:///home/stack/nic-configs/controller.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The OsNetConfigImpl resource.\", \"value\": {\"get_resource\": \"OsNetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Software Config to drive os-net-config with 2 bonded nics on a bridge with a VLANs attached for the controller role.\\n\", \"parameters\": {\"TenantNetworkVlanID\": {\"default\": 50, \"type\": \"number\", \"description\": \"Vlan ID for the tenant network traffic.\"}, \"TenantIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the tenant network\"}, \"BondInterfaceOvsOptions\": {\"default\": \"\", \"type\": \"string\", \"description\": \"The ovs_options string for the bond interface. Set things like lacp=active and/or bond_mode=balance-slb using this option.\"}, \"InternalApiIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the internal API network\"}, \"InternalApiNetworkVlanID\": {\"default\": 20, \"type\": \"number\", \"description\": \"Vlan ID for the internal_api network traffic.\"}, \"StorageIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage network\"}, \"ExternalInterfaceDefaultRoute\": {\"default\": \"10.0.0.1\", \"type\": \"string\", \"description\": \"default route for the external network\"}, \"StorageMgmtIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the storage mgmt network\"}, \"StorageMgmtNetworkVlanID\": {\"default\": 40, \"type\": \"number\", \"description\": \"Vlan ID for the storage mgmt network traffic.\"}, \"StorageNetworkVlanID\": {\"default\": 30, \"type\": \"number\", \"description\": \"Vlan ID for the storage network traffic.\"}, \"ExternalNetworkVlanID\": {\"default\": 10, \"type\": \"number\", \"description\": \"Vlan ID for the external network traffic.\"}, \"ExternalIpSubnet\": {\"default\": \"\", \"type\": \"string\", \"description\": \"IP address/subnet on the external network\"}}, \"resources\": {\"OsNetConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"os_net_config\": {\"network_config\": [{\"type\": \"ovs_bridge\", \"name\": {\"get_input\": \"bridge_name\"}, \"members\": [{\"ovs_options\": {\"get_param\": \"BondInterfaceOvsOptions\"}, \"type\": \"ovs_bond\", \"name\": \"bond1\", \"members\": [{\"type\": \"interface\", \"name\": \"nic5\", \"primary\": true}, {\"type\": \"interface\", \"name\": \"nic6\"}]}, {\"device\": \"bond1\", \"routes\": [{\"ip_netmask\": \"0.0.0.0/0\", \"next_hop\": {\"get_param\": \"ExternalInterfaceDefaultRoute\"}}], \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"ExternalIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"ExternalNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"InternalApiIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"InternalApiNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"StorageMgmtIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"StorageMgmtNetworkVlanID\"}}, {\"device\": \"bond1\", \"type\": \"vlan\", \"addresses\": [{\"ip_netmask\": {\"get_param\": \"TenantIpSubnet\"}}], \"vlan_id\": {\"get_param\": \"TenantNetworkVlanID\"}}]}]}}}}}}", "file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.yaml": "{\"outputs\": {\"OS::stack_id\": {\"value\": {\"get_resource\": \"config\"}}}, \"heat_template_version\": \"2014-10-16\", \"description\": \"Software-config for performing package updates using yum\\n\", \"resources\": {\"config\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"group\": \"script\", \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.sh\"}, \"inputs\": [{\"default\": \"\", \"name\": \"update_identifier\", \"description\": \"yum will only run for previously unused values of update_identifier\"}, {\"default\": \"update\", \"name\": \"command\", \"description\": \"yum sub-command to run, defaults to \\\"update\\\"\"}, {\"default\": \"\", \"name\": \"command_arguments\", \"description\": \"yum command arguments, defaults to \\\"\\\"\"}]}}}}", "file:///tmp/tmpVtTjeI/network/ports/net_ip_list_map.yaml": "{\"outputs\": {\"net_ip_map\": {\"description\": \"A Hash containing a mapping of network names to assigned lists of IP addresses.\\n\", \"value\": {\"storage_mgmt\": {\"get_param\": \"StorageMgmtIpList\"}, \"internal_api\": {\"get_param\": \"InternalApiIpList\"}, \"storage\": {\"get_param\": \"StorageIpList\"}, \"external\": {\"get_param\": \"ExternalIpList\"}, \"tenant\": {\"get_param\": \"TenantIpList\"}}}}, \"heat_template_version\": \"2015-04-30\", \"parameters\": {\"ExternalIpList\": {\"default\": [], \"type\": \"comma_delimited_list\"}, \"TenantIpList\": {\"default\": [], \"type\": \"comma_delimited_list\"}, \"StorageIpList\": {\"default\": [], \"type\": \"comma_delimited_list\"}, \"StorageMgmtIpList\": {\"default\": [], \"type\": \"comma_delimited_list\"}, \"InternalApiIpList\": {\"default\": [], \"type\": \"comma_delimited_list\"}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"Neutron internal network\", \"value\": {\"get_resource\": \"InternalApiNetwork\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Internal API network. Used for most APIs, Database, RPC.\\n\", \"parameters\": {\"InternalApiSubnetName\": {\"default\": \"internal_api_subnet\", \"type\": \"string\", \"description\": \"The name of the internal API subnet in Neutron.\"}, \"InternalApiNetCidr\": {\"default\": \"172.16.2.0/24\", \"type\": \"string\", \"description\": \"Cidr for the internal API network.\"}, \"InternalApiAllocationPools\": {\"default\": [{\"start\": \"172.16.2.4\", \"end\": \"172.16.2.250\"}], \"type\": \"json\", \"description\": \"Ip allocation pool range for the internal API network.\"}, \"InternalApiNetValueSpecs\": {\"default\": {\"provider:physical_network\": \"internal_api\", \"provider:network_type\": \"flat\"}, \"type\": \"string\", \"description\": \"Value specs for the internal API network.\"}, \"InternalApiNetShared\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether this network is shared across all tenants.\"}, \"InternalApiNetEnableDHCP\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable DHCP on the associated subnet.\"}, \"InternalApiNetAdminStateUp\": {\"default\": false, \"type\": \"boolean\", \"description\": \"This admin state of of the network.\"}, \"InternalApiNetName\": {\"default\": \"internal_api\", \"type\": \"string\", \"description\": \"The name of the internal API network.\"}}, \"resources\": {\"InternalApiNetwork\": {\"type\": \"OS::Neutron::Net\", \"properties\": {\"shared\": {\"get_param\": \"InternalApiNetShared\"}, \"admin_state_up\": {\"get_param\": \"InternalApiNetAdminStateUp\"}, \"value_specs\": {\"get_param\": \"InternalApiNetValueSpecs\"}, \"name\": {\"get_param\": \"InternalApiNetName\"}}}, \"InternalApiSubnet\": {\"type\": \"OS::Neutron::Subnet\", \"properties\": {\"network\": {\"get_resource\": \"InternalApiNetwork\"}, \"allocation_pools\": {\"get_param\": \"InternalApiAllocationPools\"}, \"cidr\": {\"get_param\": \"InternalApiNetCidr\"}, \"enable_dhcp\": {\"get_param\": \"InternalApiNetEnableDHCP\"}, \"name\": {\"get_param\": \"InternalApiSubnetName\"}}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"Neutron storage management network\", \"value\": {\"get_resource\": \"StorageMgmtNetwork\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Storage management network. Storage replication, etc.\\n\", \"parameters\": {\"StorageMgmtAllocationPools\": {\"default\": [{\"start\": \"172.16.3.4\", \"end\": \"172.16.3.250\"}], \"type\": \"json\", \"description\": \"Ip allocation pool range for the storage mgmt network.\"}, \"StorageMgmtNetCidr\": {\"default\": \"172.16.3.0/24\", \"type\": \"string\", \"description\": \"Cidr for the storage management network.\"}, \"StorageMgmtSubnetName\": {\"default\": \"storage_mgmt_subnet\", \"type\": \"string\", \"description\": \"The name of the Storage management subnet in Neutron.\"}, \"StorageMgmtNetValueSpecs\": {\"default\": {\"provider:physical_network\": \"storage_mgmt\", \"provider:network_type\": \"flat\"}, \"type\": \"string\", \"description\": \"Value specs for the storage_mgmt network.\"}, \"StorageMgmtNetEnableDHCP\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether to enable DHCP on the associated subnet.\"}, \"StorageMgmtNetShared\": {\"default\": false, \"type\": \"boolean\", \"description\": \"Whether this network is shared across all tenants.\"}, \"StorageMgmtNetAdminStateUp\": {\"default\": false, \"type\": \"boolean\", \"description\": \"This admin state of of the network.\"}, \"StorageMgmtNetName\": {\"default\": \"storage_mgmt\", \"type\": \"string\", \"description\": \"The name of the Storage management network.\"}}, \"resources\": {\"StorageMgmtNetwork\": {\"type\": \"OS::Neutron::Net\", \"properties\": {\"shared\": {\"get_param\": \"StorageMgmtNetShared\"}, \"admin_state_up\": {\"get_param\": \"StorageMgmtNetAdminStateUp\"}, \"value_specs\": {\"get_param\": \"StorageMgmtNetValueSpecs\"}, \"name\": {\"get_param\": \"StorageMgmtNetName\"}}}, \"StorageMgmtSubnet\": {\"type\": \"OS::Neutron::Subnet\", \"properties\": {\"network\": {\"get_resource\": \"StorageMgmtNetwork\"}, \"allocation_pools\": {\"get_param\": \"StorageMgmtAllocationPools\"}, \"cidr\": {\"get_param\": \"StorageMgmtNetCidr\"}, \"enable_dhcp\": {\"get_param\": \"StorageMgmtNetEnableDHCP\"}, \"name\": {\"get_param\": \"StorageMgmtSubnetName\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/swift-devices-and-proxy-config.yaml": "{\"outputs\": {\"config_id\": {\"description\": \"The ID of the SwiftDevicesAndProxyConfigImpl resource.\", \"value\": {\"get_resource\": \"SwiftDevicesAndProxyConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Swift Devices and Proxy Config for Puppet\", \"parameters\": {\"controller_swift_devices\": {\"type\": \"comma_delimited_list\"}, \"object_store_swift_devices\": {\"type\": \"comma_delimited_list\"}, \"controller_swift_proxy_memcaches\": {\"type\": \"comma_delimited_list\"}}, \"resources\": {\"SwiftDevicesAndProxyConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"group\": \"os-apply-config\", \"config\": {\"hiera\": {\"datafiles\": {\"swift_devices_and_proxy\": {\"mapped_data\": {\"swift::proxy::cache::memcache_servers\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"controller_swift_proxy_memcaches\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"tripleo::ringbuilder::devices\": {\"list_join\": [\", \", [{\"list_join\": [\", \", {\"get_param\": \"controller_swift_devices\"}]}, {\"list_join\": [\", \", {\"get_param\": \"object_store_swift_devices\"}]}]]}}}}}}}}}}", "file:///tmp/tmpVtTjeI/puppet/controller-config-pacemaker.yaml": "{\"outputs\": {\"OS::stack_id\": {\"description\": \"The software config which runs overcloud_controller_pacemaker.pp\", \"value\": {\"get_resource\": \"ControllerPuppetConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"A software config which runs manifests/overcloud_controller_pacemaker.pp\\n\", \"resources\": {\"ControllerPuppetConfigImpl\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"outputs\": [{\"name\": \"result\"}], \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_controller_pacemaker.pp\"}, \"options\": {\"enable_hiera\": true, \"enable_facter\": false}, \"group\": \"puppet\"}}}}", "file:///tmp/tmpVtTjeI/puppet/compute-post-puppet.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack compute node post deployment for Puppet.\\n\", \"parameters\": {\"servers\": {\"type\": \"json\"}, \"NodeConfigIdentifiers\": {\"type\": \"json\", \"description\": \"Value which changes if the node configuration may need to be re-applied\"}}, \"resources\": {\"ComputePuppetConfig\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"outputs\": [{\"name\": \"result\"}], \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_compute.pp\"}, \"group\": \"puppet\"}}, \"ComputePuppetDeployment\": {\"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ComputePuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ExtraConfig\": {\"depends_on\": \"ComputePuppetDeployment\", \"type\": \"OS::TripleO::NodeExtraConfigPost\", \"properties\": {\"servers\": {\"get_param\": \"servers\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/all-nodes-config.yaml": "{\"outputs\": {\"config_id\": {\"description\": \"The ID of the allNodesConfigImpl resource.\", \"value\": {\"get_resource\": \"allNodesConfigImpl\"}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"All Nodes Config for Puppet\", \"parameters\": {\"redis_node_ips\": {\"type\": \"comma_delimited_list\"}, \"glance_registry_node_ips\": {\"type\": \"comma_delimited_list\"}, \"rabbit_node_ips\": {\"type\": \"comma_delimited_list\"}, \"ceilometer_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"keystone_admin_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"glance_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"keystone_public_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"compute_hosts\": {\"type\": \"comma_delimited_list\"}, \"nova_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"mongo_node_ips\": {\"type\": \"comma_delimited_list\"}, \"neutron_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"memcache_node_ips\": {\"type\": \"comma_delimited_list\"}, \"object_storage_hosts\": {\"type\": \"comma_delimited_list\"}, \"controller_hosts\": {\"type\": \"comma_delimited_list\"}, \"nova_metadata_node_ips\": {\"type\": \"comma_delimited_list\"}, \"controller_ips\": {\"type\": \"comma_delimited_list\"}, \"mysql_node_ips\": {\"type\": \"comma_delimited_list\"}, \"controller_names\": {\"type\": \"comma_delimited_list\"}, \"horizon_node_ips\": {\"type\": \"comma_delimited_list\"}, \"swift_proxy_node_ips\": {\"type\": \"comma_delimited_list\"}, \"heat_api_node_ips\": {\"type\": \"comma_delimited_list\"}, \"ceph_storage_hosts\": {\"type\": \"comma_delimited_list\"}, \"block_storage_hosts\": {\"type\": \"comma_delimited_list\"}, \"cinder_api_node_ips\": {\"type\": \"comma_delimited_list\"}}, \"resources\": {\"allNodesConfigImpl\": {\"type\": \"OS::Heat::StructuredConfig\", \"properties\": {\"config\": {\"hosts\": {\"list_join\": [\"\\n\", [{\"list_join\": [\"\\n\", {\"get_param\": \"compute_hosts\"}]}, {\"list_join\": [\"\\n\", {\"get_param\": \"controller_hosts\"}]}, {\"list_join\": [\"\\n\", {\"get_param\": \"block_storage_hosts\"}]}, {\"list_join\": [\"\\n\", {\"get_param\": \"object_storage_hosts\"}]}, {\"list_join\": [\"\\n\", {\"get_param\": \"ceph_storage_hosts\"}]}]]}, \"hiera\": {\"datafiles\": {\"all_nodes\": {\"mapped_data\": {\"redis_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"redis_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"glance_registry_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"glance_registry_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"rabbit_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"rabbit_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"ceilometer_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"ceilometer_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"keystone_admin_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"keystone_admin_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"galera_node_names\": {\"list_join\": [\",\", {\"get_param\": \"controller_names\"}]}, \"keystone_public_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"keystone_public_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"nova::rabbit_hosts\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"rabbit_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"nova_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"nova_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"mongo_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"mongo_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"controller_node_names\": {\"list_join\": [\",\", {\"get_param\": \"controller_names\"}]}, \"neutron_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"neutron_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"cinder::rabbit_hosts\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"rabbit_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"memcache_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"memcache_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"swift_proxy_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"swift_proxy_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"nova_metadata_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"nova_metadata_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"mysql_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"mysql_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"controller_node_ips\": {\"list_join\": [\",\", {\"get_param\": \"controller_ips\"}]}, \"heat::rabbit_hosts\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"rabbit_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"horizon_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"horizon_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"heat_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"heat_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"glance_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"glance_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"neutron::rabbit_hosts\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"rabbit_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"ceilometer::rabbit_hosts\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"rabbit_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}, \"cinder_api_node_ips\": {\"str_replace\": {\"params\": {\"SERVERS_LIST\": {\"list_join\": [\"','\", {\"get_param\": \"cinder_api_node_ips\"}]}}, \"template\": \"['SERVERS_LIST']\"}}}}, \"RedHat\": {\"raw_data\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/hieradata/RedHat.yaml\"}}}}, \"completion-signal\": {\"get_input\": \"deploy_signal_id\"}}}}}}", "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_cephstorage.pp": "# Copyright 2015 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif !str2bool(hiera('enable_package_install', 'false')) {\n case $::osfamily {\n 'RedHat': {\n Package { provider => 'norpm' } # provided by tripleo-puppet\n }\n default: {\n warning('enable_package_install option not supported.')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera('sysctl_settings'), {})\n\nif count(hiera('ntp::servers')) > 0 {\n include ::ntp\n}\n\nif str2bool(hiera('ceph_osd_selinux_permissive', true)) {\n exec { 'set selinux to permissive on boot':\n command => \"sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config\",\n onlyif => \"test -f /etc/selinux/config && ! grep '^SELINUX=permissive' /etc/selinux/config\",\n path => [\"/usr/bin\", \"/usr/sbin\"],\n }\n\n exec { 'set selinux to permissive':\n command => \"setenforce 0\",\n onlyif => \"which setenforce && getenforce | grep -i 'enforcing'\",\n path => [\"/usr/bin\", \"/usr/sbin\"],\n } -> Class['ceph::profile::osd']\n}\n\ninclude ::ceph::profile::client\ninclude ::ceph::profile::osd", "file:///tmp/tmpVtTjeI/network/ports/net_ip_map.yaml": "{\"outputs\": {\"net_ip_map\": {\"description\": \"A Hash containing a mapping of network names to assigned IPs for a specific machine.\\n\", \"value\": {\"storage_mgmt\": {\"get_param\": \"StorageMgmtIp\"}, \"internal_api\": {\"get_param\": \"InternalApiIp\"}, \"storage\": {\"get_param\": \"StorageIp\"}, \"external\": {\"get_param\": \"ExternalIp\"}, \"tenant\": {\"get_param\": \"TenantIp\"}}}}, \"heat_template_version\": \"2015-04-30\", \"parameters\": {\"ExternalIp\": {\"default\": \"\", \"type\": \"string\"}, \"StorageIp\": {\"default\": \"\", \"type\": \"string\"}, \"InternalApiIp\": {\"default\": \"\", \"type\": \"string\"}, \"TenantIp\": {\"default\": \"\", \"type\": \"string\"}, \"StorageMgmtIp\": {\"default\": \"\", \"type\": \"string\"}}}", "file:///tmp/tmpVtTjeI/hieradata/common.yaml": "# Common Hiera data gets applied to all nodes\nssh::server::storeconfigs_enabled: false\n\n# ceilometer settings used by compute and controller ceilo auth settings\nceilometer::agent::auth::auth_region: 'regionOne'\n# FIXME: Might be better to use 'service' tenant here but this requires\n# changes in the tripleo-incubator keystone role setup\nceilometer::agent::auth::auth_tenant_name: 'admin'\n\nnova::network::neutron::neutron_admin_tenant_name: 'service'\nnova::network::neutron::neutron_admin_username: 'neutron'\nnova::network::neutron::vif_plugging_is_fatal: false\nnova::network::neutron::vif_plugging_timeout: 30\nnova::network::neutron::dhcp_domain: ''\n\nneutron::allow_overlapping_ips: true\nneutron::plugins::ml2::type_drivers:\n - flat\n - gre\n - vxlan\n - vlan\n\nsysctl_settings:\n net.ipv4.tcp_keepalive_intvl:\n value: 1\n net.ipv4.tcp_keepalive_probes:\n value: 5\n net.ipv4.tcp_keepalive_time:\n value: 5\n", "file:///tmp/tmpVtTjeI/hieradata/compute.yaml": "# Hiera data here applies to all compute nodes\n\nnova::notify_on_state_change: 'vm_and_task_state'\n\nnova::compute::enabled: true\nnova::compute::instance_usage_audit: true\nnova::compute::instance_usage_audit_period: 'hour'\nnova::compute::vnc_enabled: true\n\nnova::compute::libvirt::vncserver_listen: '0.0.0.0'\nnova::compute::libvirt::migration_support: true\n\nnova::compute::rbd::libvirt_rbd_user: 'openstack'\nnova::compute::rbd::rbd_keyring: 'client.openstack'\nnova::compute::rbd::libvirt_images_rbd_pool: 'vms'\nnova::compute::rbd::libvirt_rbd_secret_uuid: \"%{hiera('ceph::profile::params::fsid')}\"\n\nnova::config::nova_config:\n cinder/catalog_info:\n value: 'volumev2:cinderv2:internalURL'\n\nceilometer::agent::auth::auth_tenant_name: 'service'\n", "file:///tmp/tmpVtTjeI/puppet/hieradata/ceph.yaml": "ceph::profile::params::osd_journal_size: 1024\nceph::profile::params::osd_pool_default_pg_num: 128\nceph::profile::params::osd_pool_default_pgp_num: 128\nceph::profile::params::osd_pool_default_size: 3\nceph::profile::params::osd_pool_default_min_size: 1\nceph::profile::params::osds: {/srv/data: {}}\nceph::profile::params::manage_repo: false\nceph::profile::params::authentication_type: cephx\n\nceph_pools:\n - volumes\n - vms\n - images\n\nceph_osd_selinux_permissive: true\n", "file:///usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the internal API network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"VipPort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"VipPort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"VipPort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"Virtual IP network IP\", \"value\": {\"get_attr\": [\"VipPort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port for a VIP on the isolated network NetworkName.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"NetworkName\": {\"default\": \"internal_api\", \"type\": \"string\", \"description\": \"Name of the network where the VIP will be created\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}, \"ControlPlaneNetwork\": {\"default\": \"ctlplane\", \"type\": \"string\", \"description\": \"The name of the undercloud Neutron control plane\"}}, \"resources\": {\"VipPort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"NetworkName\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml": "{\"outputs\": {\"ip_subnet\": {\"description\": \"IP/Subnet CIDR for the storage_mgmt network IP\", \"value\": {\"list_join\": [\"\", [{\"get_attr\": [\"StorageMgmtPort\", \"fixed_ips\", 0, \"ip_address\"]}, \"/\", {\"get_attr\": [\"StorageMgmtPort\", \"subnets\", 0, \"cidr\", -2]}, {\"get_attr\": [\"StorageMgmtPort\", \"subnets\", 0, \"cidr\", -1]}]]}}, \"ip_address\": {\"description\": \"storage_mgmt network IP\", \"value\": {\"get_attr\": [\"StorageMgmtPort\", \"fixed_ips\", 0, \"ip_address\"]}}}, \"heat_template_version\": \"2015-04-30\", \"description\": \"Creates a port on the storage_mgmt API network.\\n\", \"parameters\": {\"PortName\": {\"default\": \"\", \"type\": \"string\", \"description\": \"Name of the port\"}, \"StorageMgmtNetName\": {\"default\": \"storage_mgmt\", \"type\": \"string\", \"description\": \"Name of the storage_mgmt API neutron network\"}, \"ControlPlaneIP\": {\"type\": \"string\", \"description\": \"IP address on the control plane\"}}, \"resources\": {\"StorageMgmtPort\": {\"type\": \"OS::Neutron::Port\", \"properties\": {\"replacement_policy\": \"AUTO\", \"network\": {\"get_param\": \"StorageMgmtNetName\"}, \"name\": {\"get_param\": \"PortName\"}}}}}", "file:///tmp/tmpVtTjeI/puppet/manifests/overcloud_compute.pp": "# Copyright 2014 Red Hat, Inc.\n# All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file except in compliance with the License. You may obtain\n# a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n# License for the specific language governing permissions and limitations\n# under the License.\n\nif !str2bool(hiera('enable_package_install', 'false')) {\n case $::osfamily {\n 'RedHat': {\n Package { provider => 'norpm' } # provided by tripleo-puppet\n }\n default: {\n warning('enable_package_install option not supported.')\n }\n }\n}\n\ncreate_resources(sysctl::value, hiera('sysctl_settings'), {})\n\nif count(hiera('ntp::servers')) > 0 {\n include ::ntp\n}\n\nfile { ['/etc/libvirt/qemu/networks/autostart/default.xml',\n '/etc/libvirt/qemu/networks/default.xml']:\n ensure => absent,\n before => Service['libvirt']\n}\n# in case libvirt has been already running before the Puppet run, make\n# sure the default network is destroyed\nexec { 'libvirt-default-net-destroy':\n command => '/usr/bin/virsh net-destroy default',\n onlyif => '/usr/bin/virsh net-info default | /bin/grep -i \"^active:\\s*yes\"',\n before => Service['libvirt'],\n}\n\ninclude ::nova\ninclude ::nova::config\ninclude ::nova::compute\n\nnova_config {\n 'DEFAULT/my_ip': value => $ipaddress;\n 'DEFAULT/linuxnet_interface_driver': value => 'nova.network.linux_net.LinuxOVSInterfaceDriver';\n}\n\n$nova_enable_rbd_backend = hiera('nova_enable_rbd_backend', false)\nif $nova_enable_rbd_backend {\n include ::ceph::profile::client\n\n $client_keys = hiera('ceph::profile::params::client_keys')\n class { '::nova::compute::rbd':\n libvirt_rbd_secret_key => $client_keys['client.openstack']['secret'],\n }\n}\n\nif hiera('cinder_enable_nfs_backend', false) {\n if ($::selinux != \"false\") {\n selboolean { 'virt_use_nfs':\n value => on,\n persistent => true,\n } -> Package['nfs-utils']\n }\n\n package {'nfs-utils': } -> Service['nova-compute']\n}\n\ninclude ::nova::compute::libvirt\ninclude ::nova::network::neutron\ninclude ::neutron\n\nclass { 'neutron::plugins::ml2':\n flat_networks => split(hiera('neutron_flat_networks'), ','),\n tenant_network_types => [hiera('neutron_tenant_network_type')],\n}\n\nclass { 'neutron::agents::ml2::ovs':\n bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),\n tunnel_types => split(hiera('neutron_tunnel_types'), ','),\n}\n\ninclude ::ceilometer\ninclude ::ceilometer::agent::compute\ninclude ::ceilometer::agent::auth\n\n$snmpd_user = hiera('snmpd_readonly_user_name')\nsnmp::snmpv3_user { $snmpd_user:\n authtype => 'MD5',\n authpass => hiera('snmpd_readonly_user_password'),\n}\nclass { 'snmp':\n agentaddress => ['udp:161','udp6:[::1]:161'],\n snmpd_config => [ join(['rouser ', hiera('snmpd_readonly_user_name')]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],\n}\n", "file:///tmp/tmpVtTjeI/puppet/controller-post-puppet.yaml": "{\"heat_template_version\": \"2015-04-30\", \"description\": \"OpenStack controller node post deployment for Puppet.\\n\", \"parameters\": {\"servers\": {\"type\": \"json\"}, \"NodeConfigIdentifiers\": {\"type\": \"json\", \"description\": \"Value which changes if the node configuration may need to be re-applied\"}}, \"resources\": {\"ControllerLoadBalancerDeployment_Step1\": {\"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"step\": 1, \"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerPuppetConfig\"}, \"actions\": [\"CREATE\"], \"servers\": {\"get_param\": \"servers\"}}}, \"ControllerRingbuilderPuppetConfig\": {\"type\": \"OS::Heat::SoftwareConfig\", \"properties\": {\"inputs\": null, \"config\": {\"get_file\": \"file:///tmp/tmpVtTjeI/puppet/manifests/ringbuilder.pp\"}, \"options\": {\"enable_hiera\": true, \"enable_facter\": false}, \"outputs\": [{\"name\": \"result\"}], \"group\": \"puppet\"}}, \"ExtraConfig\": {\"depends_on\": \"ControllerOvercloudServicesDeployment_Step7\", \"type\": \"OS::TripleO::NodeExtraConfigPost\", \"properties\": {\"servers\": {\"get_param\": \"servers\"}}}, \"ControllerPuppetConfig\": {\"type\": \"OS::TripleO::ControllerConfig\"}, \"ControllerRingbuilderDeployment_Step3\": {\"depends_on\": \"ControllerServicesBaseDeployment_Step2\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerRingbuilderPuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ControllerOvercloudServicesDeployment_Step4\": {\"depends_on\": \"ControllerRingbuilderDeployment_Step3\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"step\": 3, \"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerPuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ControllerOvercloudServicesDeployment_Step5\": {\"depends_on\": \"ControllerOvercloudServicesDeployment_Step4\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"step\": 4, \"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerPuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ControllerOvercloudServicesDeployment_Step6\": {\"depends_on\": \"ControllerOvercloudServicesDeployment_Step5\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"step\": 5, \"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerPuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ControllerOvercloudServicesDeployment_Step7\": {\"depends_on\": \"ControllerOvercloudServicesDeployment_Step6\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"step\": 6, \"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerPuppetConfig\"}, \"servers\": {\"get_param\": \"servers\"}}}, \"ControllerServicesBaseDeployment_Step2\": {\"depends_on\": \"ControllerLoadBalancerDeployment_Step1\", \"type\": \"OS::Heat::StructuredDeployments\", \"properties\": {\"input_values\": {\"step\": 2, \"update_identifier\": {\"get_param\": \"NodeConfigIdentifiers\"}}, \"config\": {\"get_resource\": \"ControllerPuppetConfig\"}, \"actions\": [\"CREATE\"], \"servers\": {\"get_param\": \"servers\"}}}}}"}, "parameters": {"Controller-1::HeatPassword": "cfcbdaad23f6e0a1254362ff98af7a25a0e020b7", "Swift-Storage-1::count": 0, "Ceph-Storage-1::Flavor": "baremetal", "Compute-1::NeutronNetworkType": "vxlan", "Compute-1::NovaPassword": "6d4902377e52457c4ac489cdecde28f721a0c706", "Controller-1::HeatStackDomainAdminPassword": "3dedde9d20bc16d50a912e92a96c0c71a8fcaee8", "Controller-1::NeutronPassword": "1f8708a64263833ac657891fa114956d0f22d4b1", "Controller-1::KeystoneSigningCertificate": "-----BEGIN CERTIFICATE-----\nMIIDJDCCAgygAwIBAgIBAjANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJYWDEO\nMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVuc2V0MQ4wDAYDVQQKEwVVbnNldDEU\nMBIGA1UEAxMLS2V5c3RvbmUgQ0EwHhcNMTUwODExMDAzMTEzWhcNMjUwODA4MDAz\nMTEzWjBYMQswCQYDVQQGEwJYWDEOMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVu\nc2V0MQ4wDAYDVQQKEwVVbnNldDEZMBcGA1UEAxMQS2V5c3RvbmUgU2lnbmluZzCC\nASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALlg6lFdFrfg7TIY1mLh29+J\nkd4zYcWHbR97K3NrPn/z/e72ltI57431EFcDigs8ZGvWl+GkD+vl+xwhOR9Q5MYq\nUD5FgSr2jmc/FjTYz4lRJXowDN9+u7II1SKLwMEj+1wOpwt9K5ZbIoQBFD46QYsv\nHFgScWsRu1KxoyQ5es23E2ZCz+/WwSgoHLf1Hg5yCWxhJjboWMhyJ5MjA08cmFKS\niNUupPy22r/jXzlO0tzxX/2qCgXbgBmCcEgbHM+uU2M5vtkh+uuVMekwGoRS+Sav\nzAVmKrzpo9uqVsSRVyp8SVEw8OgU2xcWcvLy0e0NPKYoeuBfLgou9kcrMGJNPpsC\nAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAcsT0Y52iartax1VbwUnLnX5voHSAxd9W\na/+s7f4FDaMG1PNgOIsUSV5qx3/Kdv8Cu8c6qyiqvZNaxb5digqBx3zrqckGtVb0\n4TkxkCoFQaDWuimcS6gPOExeMViSCAVpLqUTZzwe+GPT/Fbq1g8tXCfKiGeKXPn/\nBHhNCCKH/4VuQDbkV73+ZhxbPWNjsCeXIbkqEj7UVAgBrsItXbUwuPXlB24tbYIj\nwIBPPqxhZKfGnYVsyP3ZpkLdI6RaJVh0gs7TeYCRJ31qwtwvwOfB9sqkn/6D4a4i\newipCS3QgvQktFLYd9IVrB/JM31RDcgA5UgYSGDxV47gLDnMjikINA==\n-----END CERTIFICATE-----\n", "Controller-1::NeutronTunnelIdRanges": "1:1000", "Compute-1::AdminPassword": "5c33116fd616ae4de825ae41db39e61f3e4ee9c7", "Cinder-Storage-1::SnmpdReadonlyUserPassword": "d28719fd7350b583588db15b28612614bd936f3d", "Controller-1::SwiftPassword": "b0ceb5ee5f60d2a6e210a2d1324121f0e9f21075", "Controller-1::NovaPassword": "6d4902377e52457c4ac489cdecde28f721a0c706", "Controller-1::count": 3, "Compute-1::NeutronAllowL3AgentFailover": false, "Compute-1::NeutronVniRanges": "1:1000", "Controller-1::NeutronL3HA": true, "Controller-1::KeystoneCACertificate": "-----BEGIN CERTIFICATE-----\nMIIDNzCCAh+gAwIBAgIBATANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJYWDEO\nMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVuc2V0MQ4wDAYDVQQKEwVVbnNldDEU\nMBIGA1UEAxMLS2V5c3RvbmUgQ0EwHhcNMTUwODExMDAzMTEzWhcNMjUwODA4MDAz\nMTEzWjBTMQswCQYDVQQGEwJYWDEOMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVu\nc2V0MQ4wDAYDVQQKEwVVbnNldDEUMBIGA1UEAxMLS2V5c3RvbmUgQ0EwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBgwQQFbvL5kZ5sP4JZqzDWfLroazR\nEVuINoaqrcw6DnUERSgBxOQARLYkuF+aB35pSkZfuW25EXoaVEpORa1b5crW3ORh\nYcnXNg9Wjnrzaxtkfxsby5phRSX/qMUgomGxKtY92sxfLtDt/6ZQ2aIN+YXIfSCa\nkaS+96EvSkZTO2GjXhjQBKEslxgYY8UVGuEXkRTOzO+THhgyxVyZGTiAkLNYXxYw\nI3FzILYc3dTwkwU0cmPyZze0+c/NFA5git11fdsqaehonNhLVyDXMPvYrHVNM3MR\ns0AzA3nAf3Cj/lpYdXWtQ8pTVnQEkwQN4axq+4pcQ8lYEAPmY2S3Dp0xAgMBAAGj\nFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQEFBQADggEBABCdwuEV\nSmHkiHAujD9aIQKhlhjymn2r9uPxCW78hArVvvOd7bUMWyM5xi4N7OTtKEKuS0s/\nGnD4HbwxIAUF+BfgEC9acuCjdpuofYolxxGNDG6gSt0LHSi+ewvaoV553gZ616bJ\n44rM992kCpqfYAWuIIOCuw5idolqNvOCxEL5TXn+KwkZdGLSHlcW/mfpvxnIa0tD\nwsIPtFGjrV51UkZ8cRoDUvaJompZh3K17G4CPxaNlNfWyCj0TbWAU2W/XstI6WGR\nCuv33dNMNOhoHRlH/SO2IWmi6idTfNGUhogckJBbZk3oEUXcokNB6Pya8/Mfu/HX\naAPZAEV4euR4HsQ=\n-----END CERTIFICATE-----\n", "Controller-1::SwiftHashSuffix": "1068777dbd948ad45cc41aa791debef7b08acb3b", "Controller-1::NtpServer": "10.5.26.10", "Controller-1::GlanceBackend": "swift", "CephAdminKey": "''", "Controller-1::Flavor": "baremetal", "Controller-1::CinderEnableRbdBackend": false, "Controller-1::CeilometerPassword": "b563ff14811dfc5b37ab087f31b1f257790877ef", "Controller-1::NeutronDhcpAgentsPerNetwork": 3, "Ceph-Storage-1::count": 0, "Compute-1::NeutronPassword": "1f8708a64263833ac657891fa114956d0f22d4b1", "NeutronControlPlaneID": "3ceab9a2-4cc2-4a0e-82d6-16454778849a", "Cinder-Storage-1::count": 0, "Compute-1::CeilometerPassword": "b563ff14811dfc5b37ab087f31b1f257790877ef", "Compute-1::Flavor": "baremetal", "Compute-1::NeutronTunnelIdRanges": "1:1000", "Controller-1::AdminPassword": "5c33116fd616ae4de825ae41db39e61f3e4ee9c7", "Controller-1::CeilometerMeteringSecret": "6f19ae044430e0de4ced598dd5653958c35741c9", "Controller-1::NeutronVniRanges": "1:1000", "Controller-1::NeutronTunnelTypes": "vxlan", "Compute-1::NovaEnableRbdBackend": false, "Compute-1::NeutronTunnelTypes": "vxlan", "Compute-1::NovaComputeLibvirtType": "kvm", "Controller-1::SnmpdReadonlyUserPassword": "d28719fd7350b583588db15b28612614bd936f3d", "Compute-1::NeutronPublicInterface": "nic1", "Controller-1::GlancePassword": "62c246411c7af70401f155579390bfbcfe4bd14f", "Controller-1::CinderPassword": "64260247a2c78ab55dee07431e30c8a430e11519", "Controller-1::NeutronPublicInterface": "nic1", "Controller-1::CinderEnableIscsiBackend": true, "Compute-1::CeilometerMeteringSecret": "6f19ae044430e0de4ced598dd5653958c35741c9", "Controller-1::NeutronAllowL3AgentFailover": false, "Controller-1::AdminToken": "4ad57aa82d4714b5b5b435c79c405bf9e9efe3d3", "Controller-1::KeystoneSigningKey": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5YOpRXRa34O0y\nGNZi4dvfiZHeM2HFh20feytzaz5/8/3u9pbSOe+N9RBXA4oLPGRr1pfhpA/r5fsc\nITkfUOTGKlA+RYEq9o5nPxY02M+JUSV6MAzffruyCNUii8DBI/tcDqcLfSuWWyKE\nARQ+OkGLLxxYEnFrEbtSsaMkOXrNtxNmQs/v1sEoKBy39R4OcglsYSY26FjIcieT\nIwNPHJhSkojVLqT8ttq/4185TtLc8V/9qgoF24AZgnBIGxzPrlNjOb7ZIfrrlTHp\nMBqEUvkmr8wFZiq86aPbqlbEkVcqfElRMPDoFNsXFnLy8tHtDTymKHrgXy4KLvZH\nKzBiTT6bAgMBAAECggEAIbygiDQvyUEXCdH5Wj+Oe00XDeA9/+vYkS0iSDwRQMoP\nwaiA5DuE/EnIMn3DZq4T/IguVfM8rorJO2JUef2H1QSoW9zcWAxM+D9D9FQs2Om6\nr1UFUrtGv2zaFRJn/v5kZWmJPw8FmrR1QJ7Np1GE0ia9us2IdJrig3cuoI4RalSC\ncoLIOK6U5PviNipF0nUgUA97SwG2UKUlpMGvSFr1GiqkAuoNfLq0a9pK1uDiJ0VP\nsSlFUdjB2GJkj2eDf6YiFdHNWRzDOq0qX47zmAv9CZNyQsaoMqgg7Ha1lkwkgRV6\nIGGitNiqLEFXz+S1uzhsCaokhUNKLspmo65/yPbzmQKBgQDw68v/oiGu83qj530z\n9EHsACnvn3nk+JQ7ZrIEOkzXSXx5TuQuMSujjFTH4DcGvjBS//Sg0BwroTny5UKj\nDUBfmgeYEMcdpdNH7eOwSC9BETeOSWj2ypiWUHG5R9VI35AXRZd3IBTebcer0YH5\n5jlqp+0bKL2P+Lew6Tw5jtFa/QKBgQDE+y2gpMpk1GUy4kXnYdXoNa4om6jkRnHu\nc2pc/CpzYF0qr5uGS/VO+LAJ4DFWtZIso+ILqvBLtaSzLdQDYe+JHH/u3vm7m4/L\nccW0SRHb+xoEorTTwpLpxbJbfE+lWcwqtStirP2KJzQ0P4AiW5BKD3EuEAYUlxZw\nJIk3Gb2vdwKBgQCdnPXB0NUOetWCA0Diy2qRNe45iPCa/pEjZ2UQ5P8+XSIkzprz\nKVHuVjFk7eex7pz4v+DPkDbNyFV79capm1LA+Kj9MATD/aeCyDwMKL1ZaSUaXiZg\nRlybAhfUag079p5yyyFzWrasac+WNaM91QM9Jo01FmsllEbAY2X2FdwbFQKBgEaA\n5K7n7K00PFh/Fqgfo3FurTxJoqS59hNz6fEILKWJKy+ZFSB3VYEDj/ao8N/pMz2Z\nFtI4R7PBewbK82SWjCbWNZAo7NfScSBPQ4Uo1iSXdpOMLQ7SSMU1hoYqM1OqlWH/\n4Fx8MG9fYtcEl3c0sKthZZAoGhUKkvRmj1pSc0s3AoGAXDdW08upVXOhhrqAmB42\nGKsDzoeSZOiuxX9Kp0bMx+HdTaFPBESIvJSpwnflG808DyPGAZMl0l6VQLaXC1vB\n6FYwXQxFnPe6VeOAcP3s+R9JonNkL3hT8OrNnyGoZrenzkOKvZxcKupBFMHNO7Xd\nnQKdMrDO2GX7qh7QbzPaGZQ=\n-----END PRIVATE KEY-----\n", "Cinder-Storage-1::Flavor": "baremetal", "CephClusterFSID": "''", "Swift-Storage-1::Flavor": "baremetal", "CephMonKey": "''", "Compute-1::NtpServer": "10.5.26.10", "Compute-1::SnmpdReadonlyUserPassword": "d28719fd7350b583588db15b28612614bd936f3d", "Controller-1::NeutronNetworkType": "vxlan", "Compute-1::count": 1, "Compute-1::NeutronL3HA": true, "Swift-Storage-1::SnmpdReadonlyUserPassword": "d28719fd7350b583588db15b28612614bd936f3d"}, "stack_name": "overcloud", "environment": {"parameter_defaults": {"TenantNetworkVlanID": 237, "StorageNetworkVlanID": 236, "StorageAllocationPools": [{"start": "172.21.36.10", "end": "172.21.36.200"}], "StorageMgmtAllocationPools": [{"start": "172.21.35.10", "end": "172.21.35.200"}], "NeutronExternalNetworkBridge": "''", "InternalApiNetCidr": "172.21.33.0/24", "ExternalAllocationPools": [{"start": "10.16.159.150", "end": "10.16.159.160"}], "StorageNetCidr": "172.21.36.0/24", "StorageMgmtNetCidr": "172.21.35.0/24", "TenantAllocationPools": [{"start": "172.16.0.10", "end": "172.16.0.200"}], "InternalApiAllocationPools": [{"start": "172.21.33.10", "end": "172.21.33.200"}], "TenantNetCidr": "172.16.0.0/24", "InternalApiNetworkVlanID": 233, "ExternalInterfaceDefaultRoute": "10.16.159.254", "ExternalNetCidr": "10.16.152.0/21", "BondInterfaceOvsOptions": "bond_mode=balance-tcp lacp=active other-config:lacp-fallback-ab=true other-config:lacp-time=fast", "StorageMgmtNetworkVlanID": 235}, "parameters": {"Controller-1::SSLKey": "", "Compute-1::RabbitClientUseSSL": false, "Controller-1::KeystoneSSLCertificate": "", "Controller-1::NeutronDhcpAgentsPerNetwork": 3, "Controller-1::CinderLVMLoopDeviceSize": 5000, "Controller-1::NeutronTunnelIdRanges": "1:1000", "Compute-1::AdminPassword": "unset", "Controller-1::removal_policies": [], "Controller-1::NovaPassword": "unset", "NeutronTunnelIdRanges": "1:1000", "Controller-1::count": "1", "Compute-1::GlancePort": "9292", "NeutronPublicInterfaceTag": "", "ControllerHostnameFormat": "%stackname%-controller-%index%", "Controller-1::SnmpdReadonlyUserName": "ro_snmp_user", "CephStorageHostnameFormat": "%stackname%-cephstorage-%index%", "Compute-1::NeutronMechanismDrivers": "openvswitch", "Ceph-Storage-1::NtpServer": "", "Ceph-Storage-1::EnablePackageInstall": "false", "Ceph-Storage-1::count": "0", "Cinder-Storage-1::KeyName": "default", "Controller-1::ImageUpdatePolicy": "REBUILD_PRESERVE_EPHEMERAL", "Cinder-Storage-1::CinderEnableIscsiBackend": true, "Swift-Storage-1::UpdateIdentifier": "", "Compute-1::NovaComputeLibvirtType": "qemu", "Controller-1::SwiftMinPartHours": 1, "Controller-1::ControllerExtraConfig": {}, "Controller-1::RabbitClientPort": 5672, "Swift-Storage-1::NtpServer": "", "Swift-Storage-1::KeyName": "default", "Compute-1::ServiceNetMap": {"GlanceRegistryNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "NovaMetadataNetwork": "internal_api", "RedisNetwork": "internal_api", "NeutronApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystonePublicApiNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "MysqlNetwork": "internal_api", "BlockStorageHostnameResolveNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "CinderIscsiNetwork": "storage"}, "Controller-1::NeutronAllowL3AgentFailover": "True", "Compute-1::NovaComputeDriver": "libvirt.LibvirtDriver", "Cinder-Storage-1::Flavor": "baremetal", "Controller-1::NeutronVniRanges": "1:1000", "Controller-1::KeystoneSigningKey": "", "Cinder-Storage-1::GlancePort": "9292", "Controller-1::RabbitPassword": "guest", "Compute-1::count": "1", "Controller-1::SSLCACertificate": "", "Compute-1::EnablePackageInstall": "false", "Swift-Storage-1::MinPartHours": 1, "Controller-1::CinderNfsMountOptions": "", "Controller-1::HeatPassword": "unset", "Swift-Storage-1::count": "0", "Controller-1::NeutronPublicInterfaceDefaultRoute": "", "Swift-Storage-1::Replicas": 3, "Compute-1::NeutronNetworkType": "gre", "Controller-1::NeutronPassword": "unset", "Swift-Storage-1::removal_policies": [], "Cinder-Storage-1::SnmpdReadonlyUserPassword": "unset", "Controller-1::SwiftPassword": "unset", "Controller-1::NeutronEnableTunnelling": "True", "Controller-1::GlanceLogFile": "", "Compute-1::NeutronVniRanges": "1:1000", "Swift-Storage-1::SnmpdReadonlyUserName": "ro_snmp_user", "Cinder-Storage-1::removal_policies": [], "Compute-1::NeutronMetadataProxySharedSecret": "unset", "Compute-1::ExtraConfig": {}, "Controller-1::GlanceFilePcmkManage": false, "Controller-1::SwiftHashSuffix": "unset", "Controller-1::NtpServer": "", "Controller-1::RabbitUserName": "guest", "Controller-1::CeilometerPassword": "unset", "CephAdminKey": "", "Controller-1::EnablePackageInstall": "false", "Cinder-Storage-1::count": "0", "Controller-1::NeutronBridgeMappings": "datacentre:br-ex", "Controller-1::PublicVirtualInterface": "br-ex", "Compute-1::Flavor": "baremetal", "Controller-1::RabbitClientUseSSL": false, "Controller-1::SwiftReplicas": 3, "ComputeHostnameFormat": "%stackname%-compute-%index%", "Compute-1::GlanceProtocol": "http", "Controller-1::NeutronTunnelTypes": "gre", "Compute-1::NeutronTunnelTypes": "gre", "Controller-1::SnmpdReadonlyUserPassword": "unset", "Controller-1::GlanceNotifierStrategy": "noop", "Compute-1::NeutronPublicInterfaceRawDevice": "", "Cinder-Storage-1::Debug": "", "Controller-1::CinderPassword": "unset", "Ceph-Storage-1::ServiceNetMap": {"GlanceRegistryNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "NovaMetadataNetwork": "internal_api", "RedisNetwork": "internal_api", "NeutronApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystonePublicApiNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "MysqlNetwork": "internal_api", "BlockStorageHostnameResolveNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "CinderIscsiNetwork": "storage"}, "Compute-1::CinderEnableNfsBackend": false, "Controller-1::NeutronPublicInterfaceTag": "", "Cinder-Storage-1::SnmpdReadonlyUserName": "ro_snmp_user", "Controller-1::SwiftPartPower": 10, "Swift-Storage-1::Flavor": "baremetal", "BlockStorageHostnameFormat": "%stackname%-blockstorage-%index%", "RabbitCookieSalt": "unset", "Compute-1::RabbitUserName": "guest", "Ceph-Storage-1::Image": "overcloud-full", "CephClusterFSID": "", "Controller-1::KeystoneSigningCertificate": "", "Compute-1::KeyName": "default", "Cinder-Storage-1::RabbitClientPort": 5672, "Compute-1::SnmpdReadonlyUserPassword": "unset", "Controller-1::GlanceProtocol": "http", "Compute-1::NeutronNetworkVLANRanges": "datacentre:1:1000", "Controller-1::NeutronAgentMode": "dvr_snat", "Compute-1::NeutronFlatNetworks": "datacentre", "Cinder-Storage-1::EnablePackageInstall": "false", "Compute-1::ImageUpdatePolicy": "REBUILD_PRESERVE_EPHEMERAL", "Controller-1::NeutronNetworkType": "gre", "Controller-1::NeutronMetadataProxySharedSecret": "unset", "Ceph-Storage-1::Flavor": "baremetal", "Controller-1::NeutronDnsmasqOptions": "dhcp-option-force=26,1400", "PublicVirtualFixedIPs": [], "ServiceNetMap": {"GlanceRegistryNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "NovaMetadataNetwork": "internal_api", "RedisNetwork": "internal_api", "NeutronApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystonePublicApiNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "MysqlNetwork": "internal_api", "BlockStorageHostnameResolveNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "CinderIscsiNetwork": "storage"}, "Compute-1::NeutronPassword": "unset", "Compute-1::NeutronAllowL3AgentFailover": "True", "NeutronVniRanges": "1:1000", "Controller-1::GlanceFilePcmkFstype": "nfs", "Swift-Storage-1::ServiceNetMap": {"GlanceRegistryNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "NovaMetadataNetwork": "internal_api", "RedisNetwork": "internal_api", "NeutronApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystonePublicApiNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "MysqlNetwork": "internal_api", "BlockStorageHostnameResolveNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "CinderIscsiNetwork": "storage"}, "Ceph-Storage-1::ImageUpdatePolicy": "REBUILD_PRESERVE_EPHEMERAL", "PublicVirtualNetwork": "ctlplane", "Cinder-Storage-1::UpdateIdentifier": "", "Controller-1::Debug": "", "Controller-1::CeilometerBackend": "mongodb", "Cinder-Storage-1::ExtraConfig": {}, "Ceph-Storage-1::KeyName": "default", "Compute-1::NeutronAgentMode": "dvr_snat", "Compute-1::CeilometerPassword": "unset", "NeutronControlPlaneID": "", "Controller-1::GlanceFilePcmkOptions": "", "Swift-Storage-1::PartPower": 10, "Controller-1::ServiceNetMap": {"GlanceRegistryNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "NovaMetadataNetwork": "internal_api", "RedisNetwork": "internal_api", "NeutronApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystonePublicApiNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "MysqlNetwork": "internal_api", "BlockStorageHostnameResolveNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "CinderIscsiNetwork": "storage"}, "Controller-1::NeutronFlatNetworks": "datacentre", "Controller-1::CinderEnableIscsiBackend": true, "Compute-1::CeilometerMeteringSecret": "unset", "Compute-1::NeutronTunnelIdRanges": "1:1000", "ControlFixedIPs": [], "Controller-1::NeutronPublicInterfaceIP": "", "Controller-1::GlancePassword": "unset", "Controller-1::KeyName": "default", "Cinder-Storage-1::RabbitUserName": "guest", "Controller-1::EnableSwiftStorage": true, "Swift-Storage-1::MountCheck": "false", "Compute-1::NtpServer": "", "Controller-1::SSLCertificate": "", "Compute-1::removal_policies": [], "Cinder-Storage-1::CinderLVMLoopDeviceSize": 5000, "Compute-1::Image": "overcloud-full", "Compute-1::UpdateIdentifier": "", "Controller-1::NeutronDVR": "False", "Controller-1::GlanceFilePcmkDevice": "", "Swift-Storage-1::SnmpdReadonlyUserPassword": "unset", "Controller-1::GlancePort": "9292", "Controller-1::Flavor": "baremetal", "Controller-1::NeutronMechanismDrivers": "openvswitch", "Controller-1::CloudName": "overcloud", "Controller-1::KeystoneSSLCertificateKey": "", "Controller-1::EnablePacemaker": false, "Controller-1::HeatStackDomainAdminPassword": "unset", "Controller-1::NeutronExternalNetworkBridge": "''", "Controller-1::MysqlInnodbBufferPoolSize": 0, "Controller-1::CinderISCSIHelper": "lioadm", "Swift-Storage-1::Image": "overcloud-full", "Cinder-Storage-1::CinderISCSIHelper": "lioadm", "Compute-1::NovaPassword": "unset", "Controller-1::ControlVirtualInterface": "br-ex", "Swift-Storage-1::EnablePackageInstall": "false", "Compute-1::NovaEnableRbdBackend": false, "Controller-1::NeutronL3HA": "False", "Controller-1::Image": "overcloud-full", "Swift-Storage-1::HashSuffix": "unset", "CephMonKey": "", "Compute-1::NeutronDVR": "False", "Compute-1::NeutronL3HA": "False", "Cinder-Storage-1::Image": "overcloud-full", "Controller-1::KeystoneCACertificate": "", "Ceph-Storage-1::removal_policies": [], "Cinder-Storage-1::ServiceNetMap": {"GlanceRegistryNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "NovaMetadataNetwork": "internal_api", "RedisNetwork": "internal_api", "NeutronApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystonePublicApiNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "MysqlNetwork": "internal_api", "BlockStorageHostnameResolveNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "CinderIscsiNetwork": "storage"}, "Controller-1::NeutronPublicInterfaceRawDevice": "", "Controller-1::AdminPassword": "unset", "Controller-1::CeilometerMeteringSecret": "unset", "Cinder-Storage-1::RabbitPassword": "guest", "Controller-1::EnableCephStorage": false, "Cinder-Storage-1::CinderPassword": "unset", "Controller-1::CinderBackendConfig": {}, "Compute-1::SnmpdReadonlyUserName": "ro_snmp_user", "Controller-1::CinderNfsServers": "", "Compute-1::NeutronPublicInterface": "nic1", "Controller-1::NeutronPublicInterface": "nic1", "Compute-1::Debug": "", "Cinder-Storage-1::NtpServer": "", "Controller-1::CinderEnableNfsBackend": false, "Ceph-Storage-1::UpdateIdentifier": "", "Compute-1::CeilometerComputeAgent": "", "Compute-1::NeutronBridgeMappings": "datacentre:br-ex", "Cinder-Storage-1::GlanceProtocol": "http", "Controller-1::EnableGalera": true, "ObjectStorageHostnameFormat": "%stackname%-objectstorage-%index%", "Controller-1::AdminToken": "unset", "Controller-1::SwiftMountCheck": "false", "Controller-1::MysqlMaxConnections": 1024, "Controller-1::UpdateIdentifier": "", "Controller-1::NeutronNetworkVLANRanges": "datacentre:1:1000", "Controller-1::GlanceBackend": "swift", "Compute-1::RabbitClientPort": 5672, "Controller-1::ExtraConfig": {}, "Controller-1::CinderEnableRbdBackend": false, "Cinder-Storage-1::RabbitClientUseSSL": false, "Compute-1::NeutronPhysicalBridge": "br-ex", "Compute-1::NeutronEnableTunnelling": "True", "Compute-1::NovaComputeExtraConfig": {}, "Compute-1::RabbitPassword": "guest"}, "resource_registry": {"OS::TripleO::SwiftStorage::Ports::InternalApiPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml", "OS::TripleO::ControllerConfig": "file:///tmp/tmpVtTjeI/puppet/controller-config-pacemaker.yaml", "OS::TripleO::Controller::Net::SoftwareConfig": "file:///home/stack/nic-configs/controller.yaml", "OS::TripleO::Network::External": "file:///usr/share/openstack-tripleo-heat-templates/network/external.yaml", "OS::TripleO::BlockStorage::Ports::StorageMgmtPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml", "OS::TripleO::CephClusterConfig::SoftwareConfig": "file:///tmp/tmpVtTjeI/puppet/ceph-cluster-config.yaml", "OS::TripleO::SwiftStorage::Ports::StorageMgmtPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml", "OS::TripleO::VipConfig": "file:///tmp/tmpVtTjeI/puppet/vip-config.yaml", "OS::TripleO::Network::Ports::NetIpListMap": "file:///tmp/tmpVtTjeI/network/ports/net_ip_list_map.yaml", "OS::TripleO::Compute::Ports::TenantPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml", "OS::TripleO::ObjectStorage": "file:///tmp/tmpVtTjeI/puppet/swift-storage-puppet.yaml", "Tuskar::Compute-1": "file:///tmp/tmpVtTjeI/provider-Compute-1.yaml", "OS::TripleO::Compute::Ports::InternalApiPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml", "OS::TripleO::NodeExtraConfigPost": "file:///tmp/tmpVtTjeI/extraconfig/post_deploy/default.yaml", "OS::TripleO::CephStorage::Ports::StoragePort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml", "OS::TripleO::NodeUserData": "file:///tmp/tmpVtTjeI/firstboot/userdata_default.yaml", "OS::TripleO::BootstrapNode::SoftwareConfig": "file:///tmp/tmpVtTjeI/puppet/bootstrap-config.yaml", "OS::TripleO::CephStorage": "file:///tmp/tmpVtTjeI/puppet/ceph-storage-puppet.yaml", "OS::TripleO::CephStoragePostDeployment": "file:///tmp/tmpVtTjeI/puppet/ceph-storage-post-puppet.yaml", "OS::TripleO::Controller::Ports::InternalApiPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml", "OS::TripleO::Network::Tenant": "file:///usr/share/openstack-tripleo-heat-templates/network/tenant.yaml", "Tuskar::Ceph-Storage-1": "file:///tmp/tmpVtTjeI/provider-Ceph-Storage-1.yaml", "OS::TripleO::BlockStorage::Ports::InternalApiPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml", "OS::TripleO::Compute": "file:///tmp/tmpVtTjeI/puppet/compute-puppet.yaml", "OS::TripleO::ObjectStorage::Net::SoftwareConfig": "file:///home/stack/nic-configs/swift-storage.yaml", "OS::TripleO::Controller::Ports::ExternalPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml", "OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig": "file:///tmp/tmpVtTjeI/puppet/swift-devices-and-proxy-config.yaml", "OS::TripleO::ObjectStoragePostDeployment": "file:///tmp/tmpVtTjeI/puppet/swift-storage-post.yaml", "OS::TripleO::AllNodes::SoftwareConfig": "file:///tmp/tmpVtTjeI/puppet/all-nodes-config.yaml", "OS::TripleO::CephStorage::Net::SoftwareConfig": "file:///home/stack/nic-configs/ceph-storage.yaml", "OS::TripleO::Compute::Net::SoftwareConfig": "file:///home/stack/nic-configs/compute.yaml", "OS::TripleO::Network::InternalApi": "file:///usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml", "OS::TripleO::BlockStoragePostDeployment": "file:///tmp/tmpVtTjeI/puppet/cinder-storage-post.yaml", "OS::TripleO::BlockStorage::Ports::StoragePort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml", "Tuskar::Controller-1": "file:///tmp/tmpVtTjeI/provider-Controller-1.yaml", "Tuskar::Cinder-Storage-1": "file:///tmp/tmpVtTjeI/provider-Cinder-Storage-1.yaml", "OS::TripleO::CephStorage::Ports::StorageMgmtPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml", "OS::TripleO::ControllerExtraConfigPre": "file:///tmp/tmpVtTjeI/puppet/extraconfig/pre_deploy/default.yaml", "OS::TripleO::ComputePostDeployment": "file:///tmp/tmpVtTjeI/puppet/compute-post-puppet.yaml", "OS::TripleO::BlockStorage": "file:///tmp/tmpVtTjeI/puppet/cinder-storage-puppet.yaml", "OS::TripleO::Controller::Ports::RedisVipPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml", "OS::TripleO::Network::StorageMgmt": "file:///usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml", "OS::TripleO::Controller": "file:///tmp/tmpVtTjeI/puppet/controller-puppet.yaml", "OS::TripleO::Network": "file:///tmp/tmpVtTjeI/network/networks.yaml", "OS::TripleO::Tasks::PackageUpdate": "file:///tmp/tmpVtTjeI/extraconfig/tasks/yum_update.yaml", "OS::TripleO::Controller::Ports::TenantPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml", "OS::TripleO::Controller::Ports::StoragePort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml", "Tuskar::Swift-Storage-1": "file:///tmp/tmpVtTjeI/provider-Swift-Storage-1.yaml", "OS::TripleO::BlockStorage::Net::SoftwareConfig": "file:///home/stack/nic-configs/cinder-storage.yaml", "OS::TripleO::Network::Ports::NetIpMap": "file:///tmp/tmpVtTjeI/network/ports/net_ip_map.yaml", "OS::TripleO::Network::Storage": "file:///usr/share/openstack-tripleo-heat-templates/network/storage.yaml", "OS::TripleO::SoftwareDeployment": "OS::Heat::StructuredDeployment", "OS::TripleO::Controller::Ports::StorageMgmtPort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml", "OS::TripleO::SwiftStorage::Ports::StoragePort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml", "OS::TripleO::Compute::Ports::StoragePort": "file:///usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml", "OS::TripleO::ControllerPostDeployment": "file:///tmp/tmpVtTjeI/puppet/controller-post-puppet.yaml"}}, "template": {"outputs": {"HeatInternalVip": {"description": "VIP for Heat API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HeatApiNetwork"]}]}}, "CeilometerInternalVip": {"description": "VIP for Ceilometer API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CeilometerApiNetwork"]}]}}, "GlanceInternalVip": {"description": "VIP for Glance API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}}, "KeystoneInternalVip": {"description": "VIP for Keystone API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}}, "PublicVip": {"description": "Controller VIP for public API endpoints", "value": {"get_attr": ["PublicVirtualIP", "ip_address"]}}, "KeystoneURL": {"description": "URL for the Overcloud Keystone service", "value": {"list_join": ["", ["http://", {"get_attr": ["PublicVirtualIP", "ip_address"]}, ":5000/v2.0/"]]}}, "NeutronInternalVip": {"description": "VIP for Neutron API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}}, "SwiftInternalVip": {"description": "VIP for Swift Proxy internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftProxyNetwork"]}]}}, "CinderInternalVip": {"description": "VIP for Cinder API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderApiNetwork"]}]}}, "NovaInternalVip": {"description": "VIP for Nova API internal endpoint", "value": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaApiNetwork"]}]}}}, "heat_template_version": "2014-10-16", "parameters": {"Controller-1::SSLKey": {"default": "", "hidden": true, "type": "string", "description": "If set, the contents of an SSL certificate .key file for encrypting SSL endpoints."}, "Compute-1::RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\n"}, "Controller-1::KeystoneSSLCertificate": {"default": "", "type": "string", "description": "Keystone certificate for verifying token validity."}, "Controller-1::NeutronDhcpAgentsPerNetwork": {"default": 3, "type": "number", "description": "The number of neutron dhcp agents to schedule per network"}, "Controller-1::CinderBackendConfig": {"default": {}, "type": "json", "description": "Contains parameters to configure Cinder backends. Typically set via parameter_defaults in the resource registry."}, "Controller-1::CinderLVMLoopDeviceSize": {"default": 5000, "type": "number", "description": "The size of the loopback file used by the cinder LVM driver."}, "Controller-1::NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\nof GRE tunnel IDs that are available for tenant network allocation\n"}, "Compute-1::AdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the keystone admin account, used for monitoring, querying neutron etc."}, "Cinder-Storage-1::CinderEnableIscsiBackend": {"default": true, "type": "boolean", "description": "Whether to enable or not the Iscsi backend for Cinder"}, "Controller-1::removal_policies": {"default": [], "type": "json"}, "Controller-1::NovaPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the nova service and db account, used by nova-api."}, "Compute-1::NeutronMetadataProxySharedSecret": {"default": "unset", "type": "string", "description": "Shared secret to prevent spoofing"}, "Controller-1::count": {"type": "number", "constraints": [{"range": {"min": "0"}}]}, "Compute-1::GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "NeutronPublicInterfaceTag": {"default": "", "type": "string", "description": "VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\n"}, "ControllerHostnameFormat": {"default": "%stackname%-controller-%index%", "type": "string", "description": "Format for Controller node hostnames"}, "Controller-1::SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "Compute-1::NeutronMechanismDrivers": {"default": "openvswitch", "type": "string", "description": "The mechanism drivers for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\n"}, "Ceph-Storage-1::NtpServer": {"default": "", "type": "string"}, "Ceph-Storage-1::EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Ceph-Storage-1::count": {"type": "number", "constraints": [{"range": {"min": "0"}}]}, "Cinder-Storage-1::KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "Controller-1::ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "Compute-1::NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\nof GRE tunnel IDs that are available for tenant network allocation\n"}, "Swift-Storage-1::UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\n"}, "Compute-1::NovaComputeLibvirtType": {"default": "", "type": "string"}, "Controller-1::AdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the keystone admin account, used for monitoring, querying neutron etc."}, "Controller-1::SwiftMinPartHours": {"default": 1, "type": "number", "description": "The minimum time (in hours) before a partition in a ring can be moved following a rebalance."}, "Controller-1::ControllerExtraConfig": {"default": {}, "type": "json", "description": "Controller specific configuration to inject into the cluster. Same\nstructure as ExtraConfig.\n"}, "Controller-1::RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "Swift-Storage-1::NtpServer": {"default": "", "type": "string"}, "Swift-Storage-1::KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances"}, "Compute-1::ServiceNetMap": {"default": {"NeutronApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "GlanceRegistryNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "BlockStorageHostnameResolveNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "KeystonePublicApiNetwork": "internal_api", "MysqlNetwork": "internal_api", "RedisNetwork": "internal_api", "NovaMetadataNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CinderIscsiNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage"}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "Controller-1::NeutronAllowL3AgentFailover": {"default": "True", "type": "string", "description": "Allow automatic l3-agent failover"}, "Compute-1::NovaComputeDriver": {"default": "libvirt.LibvirtDriver", "type": "string"}, "Cinder-Storage-1::Flavor": {"type": "string", "description": "Flavor for block storage nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Controller-1::NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\nof VXLAN VNI IDs that are available for tenant network allocation\n"}, "Controller-1::KeystoneSigningKey": {"default": "", "hidden": true, "type": "string", "description": "Keystone key for signing tokens."}, "Cinder-Storage-1::RabbitUserName": {"default": "guest", "type": "string"}, "Compute-1::count": {"type": "number", "constraints": [{"range": {"min": "0"}}]}, "Controller-1::SSLCACertificate": {"default": "", "type": "string", "description": "If set, the contents of an SSL certificate authority file."}, "Compute-1::EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Controller-1::CinderNfsMountOptions": {"default": "", "type": "string", "description": "Mount options for NFS mounts used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\n"}, "Controller-1::HeatPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the Heat service and db account, used by the Heat services."}, "Swift-Storage-1::count": {"type": "number", "constraints": [{"range": {"min": "0"}}]}, "Controller-1::EnableSwiftStorage": {"default": true, "type": "boolean", "description": "Whether to enable Swift Storage on the Controller"}, "Swift-Storage-1::Replicas": {"default": 3, "type": "number", "description": "How many replicas to use in the swift rings."}, "Compute-1::NeutronNetworkType": {"default": "gre", "type": "string", "description": "The tenant network type for Neutron, either gre or vxlan."}, "Controller-1::NeutronPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the neutron service and db account, used by neutron agents."}, "Swift-Storage-1::removal_policies": {"default": [], "type": "json"}, "Cinder-Storage-1::SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "Controller-1::SwiftPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the swift service account, used by the swift proxy services."}, "Controller-1::NeutronEnableTunnelling": {"default": "True", "type": "string"}, "Controller-1::GlanceLogFile": {"default": "", "type": "string", "description": "The filepath of the file to use for logging messages from Glance."}, "Compute-1::NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\nof VXLAN VNI IDs that are available for tenant network allocation\n"}, "Compute-1::SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "NeutronTunnelIdRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges\nof GRE tunnel IDs that are available for tenant network allocation\n"}, "Compute-1::ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\nthe following structure:\n {\"FILEKEY\":\n {\"config\":\n [{\"section\": \"SECTIONNAME\",\n \"values\":\n [{\"option\": \"OPTIONNAME\",\n \"value\": \"VALUENAME\"\n }\n ]\n }\n ]\n }\n }\nFor instance:\n {\"nova\":\n {\"config\":\n [{\"section\": \"default\",\n \"values\":\n [{\"option\": \"force_config_drive\",\n \"value\": \"always\"\n }\n ]\n },\n {\"section\": \"cells\",\n \"values\":\n [{\"option\": \"driver\",\n \"value\": \"nova.cells.rpc_driver.CellsRPCDriver\"\n }\n ]\n }\n ]\n }\n }\n"}, "Controller-1::GlanceFilePcmkManage": {"default": false, "type": "boolean", "description": "Whether to make Glance file backend a mount managed by Pacemaker. Effective when GlanceBackend is 'file'.\n"}, "Controller-1::SwiftHashSuffix": {"default": "unset", "hidden": true, "type": "string", "description": "A random string to be used as a salt when hashing to determine mappings in the ring."}, "Controller-1::NtpServer": {"default": "", "type": "string"}, "Swift-Storage-1::MinPartHours": {"default": 1, "type": "number", "description": "The minimum time (in hours) before a partition in a ring can be moved following a rebalance."}, "Controller-1::CeilometerPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the ceilometer service and db account."}, "CephAdminKey": {"default": "", "type": "string", "description": "The Ceph admin client key. Can be created with ceph-authtool --gen-print-key."}, "Cinder-Storage-1::CinderLVMLoopDeviceSize": {"default": 5000, "type": "number", "description": "The size of the loopback file used by the cinder LVM driver."}, "Controller-1::EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Cinder-Storage-1::count": {"type": "number", "constraints": [{"range": {"min": "0"}}]}, "Controller-1::NeutronBridgeMappings": {"default": "datacentre:br-ex", "type": "string", "description": "The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\n"}, "Controller-1::PublicVirtualInterface": {"default": "br-ex", "type": "string", "description": "Specifies the interface where the public-facing virtual ip will be assigned. This should be int_public when a VLAN is being used.\n"}, "Compute-1::Flavor": {"type": "string", "description": "Flavor for the nova compute node", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Controller-1::RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\n"}, "Controller-1::SwiftReplicas": {"default": 3, "type": "number", "description": "How many replicas to use in the swift rings."}, "ComputeHostnameFormat": {"default": "%stackname%-compute-%index%", "type": "string", "description": "Format for Compute node hostnames"}, "Compute-1::GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "Compute-1::NeutronPublicInterface": {"default": "nic1", "type": "string", "description": "A port to add to the NeutronPhysicalBridge."}, "Controller-1::NeutronTunnelTypes": {"default": "gre", "type": "string", "description": "The tunnel types for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'gre,vxlan'\n"}, "Compute-1::NeutronTunnelTypes": {"default": "gre", "type": "string", "description": "The tunnel types for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'gre,vxlan'\n"}, "Controller-1::SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "Controller-1::GlanceNotifierStrategy": {"default": "noop", "type": "string", "description": "Strategy to use for Glance notification queue"}, "Compute-1::NeutronPublicInterfaceRawDevice": {"default": "", "type": "string"}, "Cinder-Storage-1::Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "Controller-1::CinderPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the cinder service and db account, used by cinder-api."}, "Controller-1::RabbitUserName": {"default": "guest", "type": "string", "description": "The username for RabbitMQ"}, "Compute-1::CinderEnableNfsBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the NFS backend for Cinder"}, "Cinder-Storage-1::SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "Ceph-Storage-1::ServiceNetMap": {"default": {"NeutronApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "GlanceRegistryNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "BlockStorageHostnameResolveNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "KeystonePublicApiNetwork": "internal_api", "MysqlNetwork": "internal_api", "RedisNetwork": "internal_api", "NovaMetadataNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CinderIscsiNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage"}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "BlockStorageHostnameFormat": {"default": "%stackname%-blockstorage-%index%", "type": "string", "description": "Format for BlockStorage node hostnames"}, "RabbitCookieSalt": {"default": "unset", "type": "string", "description": "Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change."}, "Compute-1::RabbitUserName": {"default": "guest", "type": "string", "description": "The username for RabbitMQ"}, "Compute-1::UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\n"}, "CephClusterFSID": {"default": "", "type": "string", "description": "The Ceph cluster FSID. Must be a UUID."}, "Controller-1::KeystoneSigningCertificate": {"default": "", "type": "string", "description": "Keystone certificate for verifying token validity."}, "Compute-1::KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "Cinder-Storage-1::RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "Compute-1::SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "Controller-1::GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "Compute-1::NeutronNetworkVLANRanges": {"default": "datacentre", "type": "comma_delimited_list", "description": "The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\n"}, "Controller-1::NeutronAgentMode": {"default": "dvr_snat", "type": "string", "description": "Agent mode for the neutron-l3-agent on the controller hosts"}, "Compute-1::NeutronFlatNetworks": {"default": "datacentre", "type": "string", "description": "If set, flat networks to configure in neutron plugins.\n"}, "Cinder-Storage-1::EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Compute-1::ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "Controller-1::NeutronMetadataProxySharedSecret": {"default": "unset", "type": "string", "description": "Shared secret to prevent spoofing"}, "Ceph-Storage-1::Flavor": {"type": "string", "description": "Flavor for the Ceph Storage node.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Controller-1::GlanceBackend": {"default": "swift", "type": "string", "description": "The short name of the Glance backend to use. Should be one of swift, rbd, or file", "constraints": [{"allowed_values": ["swift", "file", "rbd"]}]}, "Cinder-Storage-1::NtpServer": {"default": "", "type": "string"}, "PublicVirtualFixedIPs": {"default": [], "type": "json", "description": "Control the IP allocation for the PublicVirtualInterface port. E.g. [{'ip_address':'1.2.3.4'}]\n"}, "ServiceNetMap": {"default": {"NeutronApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "GlanceRegistryNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "BlockStorageHostnameResolveNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "KeystonePublicApiNetwork": "internal_api", "MysqlNetwork": "internal_api", "RedisNetwork": "internal_api", "NovaMetadataNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CinderIscsiNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage"}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "Compute-1::NeutronAllowL3AgentFailover": {"default": "True", "type": "string", "description": "Allow automatic l3-agent failover"}, "NeutronVniRanges": {"default": "1:1000", "type": "comma_delimited_list", "description": "Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges\nof VXLAN VNI IDs that are available for tenant network allocation\n"}, "Controller-1::Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "Swift-Storage-1::ServiceNetMap": {"default": {"NeutronApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "GlanceRegistryNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "BlockStorageHostnameResolveNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "KeystonePublicApiNetwork": "internal_api", "MysqlNetwork": "internal_api", "RedisNetwork": "internal_api", "NovaMetadataNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CinderIscsiNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage"}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "Ceph-Storage-1::ImageUpdatePolicy": {"default": "REBUILD_PRESERVE_EPHEMERAL", "type": "string", "description": "What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt."}, "PublicVirtualNetwork": {"default": "ctlplane", "type": "string", "description": "Neutron network to allocate public virtual IP port on.\n"}, "Cinder-Storage-1::UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\n"}, "Controller-1::GlanceFilePcmkFstype": {"default": "nfs", "type": "string", "description": "Filesystem type for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\n"}, "Controller-1::CeilometerBackend": {"default": "mongodb", "type": "string", "description": "The ceilometer backend type."}, "Cinder-Storage-1::ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\nthe following structure:\n {\"FILEKEY\":\n {\"config\":\n [{\"section\": \"SECTIONNAME\",\n \"values\":\n [{\"option\": \"OPTIONNAME\",\n \"value\": \"VALUENAME\"\n }\n ]\n }\n ]\n }\n }\nFor instance:\n {\"nova\":\n {\"config\":\n [{\"section\": \"default\",\n \"values\":\n [{\"option\": \"force_config_drive\",\n \"value\": \"always\"\n }\n ]\n },\n {\"section\": \"cells\",\n \"values\":\n [{\"option\": \"driver\",\n \"value\": \"nova.cells.rpc_driver.CellsRPCDriver\"\n }\n ]\n }\n ]\n }\n }\n"}, "Controller-1::KeystoneSSLCertificateKey": {"default": "", "hidden": true, "type": "string", "description": "Keystone key for signing tokens."}, "Ceph-Storage-1::KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "Compute-1::NeutronAgentMode": {"default": "dvr_snat", "type": "string", "description": "Agent mode for the neutron-l3-agent on the controller hosts"}, "Compute-1::CeilometerPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the ceilometer service account."}, "Controller-1::GlanceFilePcmkOptions": {"default": "", "type": "string", "description": "Mount options for Pacemaker mount used as Glance storage. Effective when GlanceFilePcmkManage is true.\n"}, "Swift-Storage-1::PartPower": {"default": 10, "type": "number", "description": "Partition Power to use when building Swift rings"}, "Controller-1::ServiceNetMap": {"default": {"NeutronApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "GlanceRegistryNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "BlockStorageHostnameResolveNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "KeystonePublicApiNetwork": "internal_api", "MysqlNetwork": "internal_api", "RedisNetwork": "internal_api", "NovaMetadataNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CinderIscsiNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage"}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "Controller-1::NeutronFlatNetworks": {"default": "datacentre", "type": "string", "description": "If set, flat networks to configure in neutron plugins."}, "Controller-1::CinderEnableIscsiBackend": {"default": true, "type": "boolean", "description": "Whether to enable or not the Iscsi backend for Cinder"}, "Compute-1::CeilometerMeteringSecret": {"default": "unset", "hidden": true, "type": "string", "description": "Secret shared by the ceilometer services."}, "ControlFixedIPs": {"default": [], "type": "json", "description": "Should be used for arbitrary ips."}, "Controller-1::NeutronPublicInterfaceIP": {"default": "", "type": "string", "description": "A custom IP address to put onto the NeutronPublicInterface."}, "Controller-1::AdminToken": {"default": "unset", "hidden": true, "type": "string", "description": "The keystone auth secret and db password."}, "Controller-1::KeyName": {"default": "default", "type": "string", "description": "Name of an existing EC2 KeyPair to enable SSH access to the instances", "constraints": [{"custom_constraint": "nova.keypair"}]}, "Controller-1::RabbitPassword": {"default": "guest", "hidden": true, "type": "string", "description": "The password for RabbitMQ"}, "Controller-1::NeutronPublicInterfaceDefaultRoute": {"default": "", "type": "string", "description": "A custom default route for the NeutronPublicInterface."}, "Swift-Storage-1::MountCheck": {"default": "false", "type": "boolean", "description": "Value of mount_check in Swift account/container/object -server.conf"}, "Compute-1::NtpServer": {"default": "", "type": "string"}, "Controller-1::SSLCertificate": {"default": "", "hidden": true, "type": "string", "description": "If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints."}, "Compute-1::removal_policies": {"default": [], "type": "json"}, "Controller-1::NeutronNetworkType": {"default": "gre", "type": "string", "description": "The tenant network type for Neutron, either gre or vxlan."}, "Compute-1::Image": {"default": "overcloud-compute", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "Cinder-Storage-1::ServiceNetMap": {"default": {"NeutronApiNetwork": "internal_api", "SwiftProxyNetwork": "storage", "GlanceRegistryNetwork": "internal_api", "HeatApiNetwork": "internal_api", "NeutronTenantNetwork": "tenant", "NovaApiNetwork": "internal_api", "CeilometerApiNetwork": "internal_api", "CephStorageHostnameResolveNetwork": "storage", "SwiftMgmtNetwork": "storage_mgmt", "MemcachedNetwork": "internal_api", "RabbitMqNetwork": "internal_api", "ObjectStorageHostnameResolveNetwork": "internal_api", "KeystoneAdminApiNetwork": "internal_api", "GlanceApiNetwork": "storage", "BlockStorageHostnameResolveNetwork": "internal_api", "NovaVncProxyNetwork": "internal_api", "CinderApiNetwork": "internal_api", "CephClusterNetwork": "storage_mgmt", "KeystonePublicApiNetwork": "internal_api", "MysqlNetwork": "internal_api", "RedisNetwork": "internal_api", "NovaMetadataNetwork": "internal_api", "ComputeHostnameResolveNetwork": "internal_api", "CinderIscsiNetwork": "storage", "MongoDbNetwork": "internal_api", "HorizonNetwork": "internal_api", "ControllerHostnameResolveNetwork": "internal_api", "CephPublicNetwork": "storage"}, "type": "json", "description": "Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry."}, "Ceph-Storage-1::Image": {"default": "overcloud-ceph-storage", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "Controller-1::NeutronDVR": {"default": "False", "type": "string", "description": "Whether to configure Neutron Distributed Virtual Routers"}, "Swift-Storage-1::SnmpdReadonlyUserPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The user password for SNMPd with readonly rights running on all Overcloud nodes"}, "Controller-1::GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "Controller-1::Flavor": {"type": "string", "description": "Flavor for control nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Controller-1::NeutronMechanismDrivers": {"default": "openvswitch", "type": "string", "description": "The mechanism drivers for the Neutron tenant network. To specify multiple\nvalues, use a comma separated string, like so: 'openvswitch,l2_population'\n"}, "Controller-1::CloudName": {"default": "", "type": "string", "description": "The DNS name of this cloud. E.g. ci-overcloud.tripleo.org"}, "CephStorageHostnameFormat": {"default": "%stackname%-cephstorage-%index%", "type": "string", "description": "Format for CephStorage node hostnames"}, "Compute-1::NovaPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the nova service account, used by nova-api."}, "Controller-1::HeatStackDomainAdminPassword": {"default": "unset", "hidden": true, "type": "string", "description": "Password for heat_stack_domain_admin user."}, "Controller-1::NeutronExternalNetworkBridge": {"default": "br-ex", "type": "string", "description": "Name of bridge used for external network traffic."}, "Controller-1::MysqlInnodbBufferPoolSize": {"default": 0, "type": "number", "description": "Specifies the size of the buffer pool in megabytes. Setting to zero should be interpreted as \"no value\" and will defer to the lower level default.\n"}, "Controller-1::CinderISCSIHelper": {"default": "tgtadm", "type": "string", "description": "The iSCSI helper to use with cinder."}, "Swift-Storage-1::Image": {"default": "overcloud-swift-storage", "type": "string"}, "Compute-1::RabbitClientPort": {"default": 5672, "type": "number", "description": "Set rabbit subscriber port, change this if using SSL"}, "Cinder-Storage-1::CinderISCSIHelper": {"default": "tgtadm", "type": "string", "description": "The iSCSI helper to use with cinder."}, "Controller-1::EnablePacemaker": {"default": false, "type": "boolean", "description": "If enabled services will be monitored by Pacemaker; it will manage VIPs as well, in place of Keepalived."}, "Controller-1::ControlVirtualInterface": {"default": "br-ex", "type": "string", "description": "Interface where virtual ip will be assigned."}, "Swift-Storage-1::EnablePackageInstall": {"default": "false", "type": "boolean", "description": "Set to true to enable package installation via Puppet"}, "Compute-1::NovaEnableRbdBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the Rbd backend for Nova"}, "Controller-1::NeutronL3HA": {"default": "False", "type": "string", "description": "Whether to enable l3-agent HA"}, "Controller-1::Image": {"default": "overcloud-control", "type": "string", "constraints": [{"custom_constraint": "glance.image"}]}, "Swift-Storage-1::HashSuffix": {"default": "unset", "hidden": true, "type": "string", "description": "A random string to be used as a salt when hashing to determine mappings in the ring."}, "CephMonKey": {"default": "", "type": "string", "description": "The Ceph monitors key. Can be created with ceph-authtool --gen-print-key."}, "Compute-1::NeutronDVR": {"default": "False", "type": "string"}, "Compute-1::NeutronL3HA": {"default": "False", "type": "string", "description": "Whether to enable l3-agent HA"}, "Cinder-Storage-1::Image": {"default": "overcloud-cinder-volume", "type": "string"}, "Controller-1::NeutronNetworkVLANRanges": {"default": "datacentre", "type": "comma_delimited_list", "description": "The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the Neutron documentation for permitted values. Defaults to permitting any VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).\n"}, "Controller-1::KeystoneCACertificate": {"default": "", "type": "string", "description": "Keystone self-signed certificate authority certificate."}, "Ceph-Storage-1::removal_policies": {"default": [], "type": "json"}, "NeutronControlPlaneID": {"default": "", "type": "string", "description": "Neutron ID for ctlplane network."}, "Controller-1::NeutronPublicInterfaceRawDevice": {"default": "", "type": "string", "description": "If set, the public interface is a vlan with this device as the raw device."}, "Controller-1::GlanceFilePcmkDevice": {"default": "", "type": "string", "description": "An exported storage device that should be mounted by Pacemaker as Glance storage. Effective when GlanceFilePcmkManage is true.\n"}, "Controller-1::CeilometerMeteringSecret": {"default": "unset", "hidden": true, "type": "string", "description": "Secret shared by the ceilometer services."}, "Cinder-Storage-1::RabbitPassword": {"default": "guest", "type": "string"}, "Cinder-Storage-1::RabbitClientUseSSL": {"default": false, "type": "string", "description": "Rabbit client subscriber parameter to specify an SSL connection to the RabbitMQ host.\n"}, "Cinder-Storage-1::CinderPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the cinder service and db account, used by cinder-api."}, "Controller-1::NeutronPublicInterfaceTag": {"default": "", "type": "string", "description": "VLAN tag for creating a public VLAN. The tag will be used to create an access port on the exterior bridge for each control plane node, and that port will be given the IP address returned by neutron from the public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling overcloud.yaml to include the deployment of VLAN ports to the control plane.\n"}, "Swift-Storage-1::SnmpdReadonlyUserName": {"default": "ro_snmp_user", "type": "string", "description": "The user name for SNMPd with readonly rights running on all Overcloud nodes"}, "Controller-1::NeutronPublicInterface": {"default": "nic1", "type": "string", "description": "What interface to bridge onto br-ex for network nodes."}, "Controller-1::CinderNfsServers": {"default": "", "type": "comma_delimited_list", "description": "NFS servers used by Cinder NFS backend. Effective when CinderEnableNfsBackend is true.\n"}, "Cinder-Storage-1::GlancePort": {"default": "9292", "type": "string", "description": "Glance port."}, "Controller-1::GlancePassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the glance service and db account, used by the glance services."}, "Compute-1::Debug": {"default": "", "type": "string", "description": "Set to True to enable debugging on all services."}, "Controller-1::NeutronDnsmasqOptions": {"default": "dhcp-option-force=26,1400", "type": "string", "description": "Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead."}, "Controller-1::CinderEnableNfsBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the NFS backend for Cinder"}, "Ceph-Storage-1::UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\n"}, "Compute-1::CeilometerComputeAgent": {"default": "", "type": "string", "description": "Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly", "constraints": [{"allowed_values": ["", "Present"]}]}, "Compute-1::NeutronBridgeMappings": {"default": "datacentre:br-ex", "type": "string", "description": "The OVS logical->physical bridge mappings to use. See the Neutron documentation for details. Defaults to mapping br-ex - the external bridge on hosts - to a physical name 'datacentre' which can be used to create provider networks (and we use this for the default floating network) - if changing this either use different post-install network scripts or be sure to keep 'datacentre' as a mapping network name.\n"}, "Cinder-Storage-1::GlanceProtocol": {"default": "http", "type": "string", "description": "Protocol to use when connecting to glance, set to https for SSL."}, "Compute-1::NovaComputeExtraConfig": {"default": {}, "type": "json", "description": "NovaCompute specific configuration to inject into the cluster. Same\nstructure as ExtraConfig.\n"}, "ObjectStorageHostnameFormat": {"default": "%stackname%-objectstorage-%index%", "type": "string", "description": "Format for SwiftStorage node hostnames"}, "Compute-1::NeutronPassword": {"default": "unset", "hidden": true, "type": "string", "description": "The password for the neutron service account, used by neutron agents."}, "Controller-1::SwiftMountCheck": {"default": "false", "type": "boolean", "description": "Value of mount_check in Swift account/container/object -server.conf"}, "Controller-1::MysqlMaxConnections": {"default": 1024, "type": "number", "description": "Configures MySQL max_connections config setting"}, "Controller-1::UpdateIdentifier": {"default": "", "type": "string", "description": "Setting to a previously unused value during stack-update will trigger package update on all nodes\n"}, "Swift-Storage-1::Flavor": {"type": "string", "description": "Flavor for Swift storage nodes to request when deploying.", "constraints": [{"custom_constraint": "nova.flavor"}]}, "Cinder-Storage-1::removal_policies": {"default": [], "type": "json"}, "Controller-1::SwiftPartPower": {"default": 10, "type": "number", "description": "Partition Power to use when building Swift rings"}, "Controller-1::ExtraConfig": {"default": {}, "type": "json", "description": "Additional configuration to inject into the cluster. The JSON should have\nthe following structure:\n {\"FILEKEY\":\n {\"config\":\n [{\"section\": \"SECTIONNAME\",\n \"values\":\n [{\"option\": \"OPTIONNAME\",\n \"value\": \"VALUENAME\"\n }\n ]\n }\n ]\n }\n }\nFor instance:\n {\"nova\":\n {\"config\":\n [{\"section\": \"default\",\n \"values\":\n [{\"option\": \"compute_manager\",\n \"value\": \"ironic.nova.compute.manager.ClusterComputeManager\"\n }\n ]\n },\n {\"section\": \"cells\",\n \"values\":\n [{\"option\": \"driver\",\n \"value\": \"nova.cells.rpc_driver.CellsRPCDriver\"\n }\n ]\n }\n ]\n }\n }\n"}, "Controller-1::CinderEnableRbdBackend": {"default": false, "type": "boolean", "description": "Whether to enable or not the Rbd backend for Cinder"}, "Controller-1::EnableCephStorage": {"default": false, "type": "boolean", "description": "Whether to deploy Ceph Storage (OSD) on the Controller"}, "Compute-1::NeutronPhysicalBridge": {"default": "br-ex", "type": "string", "description": "An OVS bridge to create for accessing external networks."}, "Compute-1::NeutronEnableTunnelling": {"default": "True", "type": "string"}, "Controller-1::EnableGalera": {"default": true, "type": "boolean", "description": "Whether to use Galera instead of regular MariaDB."}, "Compute-1::RabbitPassword": {"default": "guest", "hidden": true, "type": "string", "description": "The password for RabbitMQ"}}, "resources": {"SwiftDevicesAndProxyConfig": {"type": "OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig", "properties": {"controller_swift_devices": {"get_attr": ["Controller", "swift_device"]}, "object_store_swift_devices": {"get_attr": ["Swift-Storage", "swift_device"]}, "controller_swift_proxy_memcaches": {"get_attr": ["Controller", "swift_proxy_memcache"]}}}, "InternalApiVirtualIP": {"depends_on": "Networks", "type": "OS::TripleO::Controller::Ports::InternalApiPort", "properties": {"PortName": "internal_api_virtual_ip", "ControlPlaneIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}}}, "CephStorageAllNodesDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["allNodesConfig", "config_id"]}, "servers": {"get_attr": ["Ceph-Storage", "attributes", "nova_server_resource"]}}}, "ObjectStorageSwiftDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["SwiftDevicesAndProxyConfig", "config_id"]}, "servers": {"get_attr": ["Swift-Storage", "attributes", "nova_server_resource"]}}}, "ControllerSwiftDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["SwiftDevicesAndProxyConfig", "config_id"]}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "BlockStorageNodesPostDeployment": {"depends_on": ["ControllerNodesPostDeployment", "BlockStorageAllNodesDeployment"], "type": "OS::TripleO::BlockStoragePostDeployment", "properties": {"NodeConfigIdentifiers": {"get_attr": ["Cinder-Storage", "attributes", "config_identifier"]}, "servers": {"get_attr": ["Cinder-Storage", "attributes", "nova_server_resource"]}}}, "VipConfig": {"type": "OS::TripleO::VipConfig"}, "CephStorageCephDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["CephClusterConfig", "config_id"]}, "servers": {"get_attr": ["Ceph-Storage", "attributes", "nova_server_resource"]}}}, "allNodesConfig": {"type": "OS::TripleO::AllNodes::SoftwareConfig", "properties": {"redis_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RedisNetwork"]}]}, "glance_registry_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceRegistryNetwork"]}]}, "rabbit_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RabbitMqNetwork"]}]}, "ceilometer_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CeilometerApiNetwork"]}]}, "keystone_admin_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystoneAdminApiNetwork"]}]}, "glance_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "keystone_public_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}, "compute_hosts": {"get_attr": ["Compute", "hosts_entry"]}, "nova_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaApiNetwork"]}]}, "mongo_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MongoDbNetwork"]}]}, "neutron_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}, "memcache_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MemcachedNetwork"]}]}, "object_storage_hosts": {"get_attr": ["Swift-Storage", "hosts_entry"]}, "controller_hosts": {"get_attr": ["Controller", "hosts_entry"]}, "nova_metadata_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaMetadataNetwork"]}]}, "controller_ips": {"get_attr": ["Controller", "ip_address"]}, "mysql_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MysqlNetwork"]}]}, "controller_names": {"get_attr": ["Controller", "hostname"]}, "horizon_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HorizonNetwork"]}]}, "swift_proxy_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftProxyNetwork"]}]}, "heat_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HeatApiNetwork"]}]}, "ceph_storage_hosts": {"get_attr": ["Ceph-Storage", "hosts_entry"]}, "block_storage_hosts": {"get_attr": ["Cinder-Storage", "hosts_entry"]}, "cinder_api_node_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderApiNetwork"]}]}}}, "ControllerIpListMap": {"type": "OS::TripleO::Network::Ports::NetIpListMap", "properties": {"ExternalIpList": {"get_attr": ["Controller", "external_ip_address"]}, "TenantIpList": {"get_attr": ["Controller", "tenant_ip_address"]}, "StorageIpList": {"get_attr": ["Controller", "storage_ip_address"]}, "StorageMgmtIpList": {"get_attr": ["Controller", "storage_mgmt_ip_address"]}, "InternalApiIpList": {"get_attr": ["Controller", "internal_api_ip_address"]}}}, "StorageVirtualIP": {"depends_on": "Networks", "type": "OS::TripleO::Controller::Ports::StoragePort", "properties": {"PortName": "storage_virtual_ip", "ControlPlaneIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}}}, "CephClusterConfig": {"type": "OS::TripleO::CephClusterConfig::SoftwareConfig", "properties": {"ceph_mon_ips": {"get_attr": ["ControllerIpListMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CephPublicNetwork"]}]}, "ceph_mon_names": {"get_attr": ["Controller", "hostname"]}, "ceph_admin_key": {"get_param": "CephAdminKey"}, "ceph_mon_key": {"get_param": "CephMonKey"}, "ceph_fsid": {"get_param": "CephClusterFSID"}}}, "RedisVirtualIP": {"depends_on": "Networks", "type": "OS::TripleO::Controller::Ports::RedisVipPort", "properties": {"PortName": "redis_virtual_ip", "ControlPlaneNetwork": {"get_param": "NeutronControlPlaneID"}, "ControlPlaneIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}, "NetworkName": {"get_param": ["ServiceNetMap", "RedisNetwork"]}}}, "CephStorageNodesPostDeployment": {"depends_on": ["ControllerNodesPostDeployment", "CephStorageCephDeployment", "CephStorageAllNodesDeployment"], "type": "OS::TripleO::CephStoragePostDeployment", "properties": {"NodeConfigIdentifiers": {"get_attr": ["Ceph-Storage", "attributes", "config_identifier"]}, "servers": {"get_attr": ["Ceph-Storage", "attributes", "nova_server_resource"]}}}, "PcsdPassword": {"type": "OS::Heat::RandomString", "properties": {"length": 16}}, "RabbitCookie": {"type": "OS::Heat::RandomString", "properties": {"length": 20, "salt": {"get_param": "RabbitCookieSalt"}}}, "ControlVirtualIP": {"depends_on": "Networks", "type": "OS::Neutron::Port", "properties": {"network_id": {"get_param": "NeutronControlPlaneID"}, "replacement_policy": "AUTO", "fixed_ips": {"get_param": "ControlFixedIPs"}, "name": "control_virtual_ip"}}, "Swift-Storage": {"type": "OS::Heat::ResourceGroup", "properties": {"count": {"get_param": ["Swift-Storage-1::count"]}, "resource_def": {"type": "Tuskar::Swift-Storage-1", "properties": {"Hostname": {"str_replace": {"params": {"%stackname%": {"get_param": "OS::stack_name"}}, "template": {"get_param": "ObjectStorageHostnameFormat"}}}, "Replicas": {"get_param": ["Swift-Storage-1::Replicas"]}, "HashSuffix": {"get_param": ["Swift-Storage-1::HashSuffix"]}, "Image": {"get_param": ["Swift-Storage-1::Image"]}, "PartPower": {"get_param": ["Swift-Storage-1::PartPower"]}, "MinPartHours": {"get_param": ["Swift-Storage-1::MinPartHours"]}, "ServiceNetMap": {"get_param": ["Swift-Storage-1::ServiceNetMap"]}, "SnmpdReadonlyUserName": {"get_param": ["Swift-Storage-1::SnmpdReadonlyUserName"]}, "KeyName": {"get_param": ["Swift-Storage-1::KeyName"]}, "EnablePackageInstall": {"get_param": ["Swift-Storage-1::EnablePackageInstall"]}, "SnmpdReadonlyUserPassword": {"get_param": ["Swift-Storage-1::SnmpdReadonlyUserPassword"]}, "Flavor": {"get_param": ["Swift-Storage-1::Flavor"]}, "NtpServer": {"get_param": ["Swift-Storage-1::NtpServer"]}, "UpdateIdentifier": {"get_param": ["Swift-Storage-1::UpdateIdentifier"]}, "MountCheck": {"get_param": ["Swift-Storage-1::MountCheck"]}}}, "removal_policies": {"get_param": ["Swift-Storage-1::removal_policies"]}}}, "Controller": {"type": "OS::Heat::ResourceGroup", "properties": {"count": {"get_param": ["Controller-1::count"]}, "resource_def": {"type": "Tuskar::Controller-1", "properties": {"MysqlMaxConnections": {"get_param": ["Controller-1::MysqlMaxConnections"]}, "EnableCephStorage": {"get_param": ["Controller-1::EnableCephStorage"]}, "NeutronPublicInterfaceRawDevice": {"get_param": ["Controller-1::NeutronPublicInterfaceRawDevice"]}, "KeystoneSigningKey": {"get_param": ["Controller-1::KeystoneSigningKey"]}, "SSLCACertificate": {"get_param": ["Controller-1::SSLCACertificate"]}, "NtpServer": {"get_param": ["Controller-1::NtpServer"]}, "Hostname": {"str_replace": {"params": {"%stackname%": {"get_param": "OS::stack_name"}}, "template": {"get_param": "ControllerHostnameFormat"}}}, "GlanceFilePcmkManage": {"get_param": ["Controller-1::GlanceFilePcmkManage"]}, "KeystoneSSLCertificateKey": {"get_param": ["Controller-1::KeystoneSSLCertificateKey"]}, "NeutronDhcpAgentsPerNetwork": {"get_param": ["Controller-1::NeutronDhcpAgentsPerNetwork"]}, "NeutronPassword": {"get_param": ["Controller-1::NeutronPassword"]}, "NeutronFlatNetworks": {"get_param": ["Controller-1::NeutronFlatNetworks"]}, "EnablePackageInstall": {"get_param": ["Controller-1::EnablePackageInstall"]}, "NeutronPublicInterface": {"get_param": ["Controller-1::NeutronPublicInterface"]}, "SnmpdReadonlyUserPassword": {"get_param": ["Controller-1::SnmpdReadonlyUserPassword"]}, "GlancePassword": {"get_param": ["Controller-1::GlancePassword"]}, "NeutronTunnelIdRanges": {"get_param": ["Controller-1::NeutronTunnelIdRanges"]}, "CinderEnableRbdBackend": {"get_param": ["Controller-1::CinderEnableRbdBackend"]}, "SwiftReplicas": {"get_param": ["Controller-1::SwiftReplicas"]}, "NeutronPublicInterfaceTag": {"get_param": ["Controller-1::NeutronPublicInterfaceTag"]}, "NeutronNetworkVLANRanges": {"get_param": ["Controller-1::NeutronNetworkVLANRanges"]}, "KeystoneSigningCertificate": {"get_param": ["Controller-1::KeystoneSigningCertificate"]}, "SSLKey": {"get_param": ["Controller-1::SSLKey"]}, "GlanceFilePcmkFstype": {"get_param": ["Controller-1::GlanceFilePcmkFstype"]}, "ServiceNetMap": {"get_param": ["Controller-1::ServiceNetMap"]}, "RabbitCookie": {"get_attr": ["RabbitCookie", "value"]}, "SnmpdReadonlyUserName": {"get_param": ["Controller-1::SnmpdReadonlyUserName"]}, "KeyName": {"get_param": ["Controller-1::KeyName"]}, "MysqlRootPassword": {"get_attr": ["MysqlRootPassword", "value"]}, "GlanceProtocol": {"get_param": ["Controller-1::GlanceProtocol"]}, "CinderISCSIHelper": {"get_param": ["Controller-1::CinderISCSIHelper"]}, "MysqlClusterUniquePart": {"get_attr": ["MysqlClusterUniquePart", "value"]}, "CinderPassword": {"get_param": ["Controller-1::CinderPassword"]}, "CloudName": {"get_param": ["Controller-1::CloudName"]}, "CinderLVMLoopDeviceSize": {"get_param": ["Controller-1::CinderLVMLoopDeviceSize"]}, "RabbitPassword": {"get_param": ["Controller-1::RabbitPassword"]}, "CinderNfsServers": {"get_param": ["Controller-1::CinderNfsServers"]}, "NeutronApiVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}, "ImageUpdatePolicy": {"get_param": ["Controller-1::ImageUpdatePolicy"]}, "MysqlInnodbBufferPoolSize": {"get_param": ["Controller-1::MysqlInnodbBufferPoolSize"]}, "PublicVirtualInterface": {"get_param": ["Controller-1::PublicVirtualInterface"]}, "Debug": {"get_param": ["Controller-1::Debug"]}, "NeutronAgentMode": {"get_param": ["Controller-1::NeutronAgentMode"]}, "GlanceFilePcmkDevice": {"get_param": ["Controller-1::GlanceFilePcmkDevice"]}, "AdminToken": {"get_param": ["Controller-1::AdminToken"]}, "SwiftMinPartHours": {"get_param": ["Controller-1::SwiftMinPartHours"]}, "KeystoneSSLCertificate": {"get_param": ["Controller-1::KeystoneSSLCertificate"]}, "NeutronL3HA": {"get_param": ["Controller-1::NeutronL3HA"]}, "EnableGalera": {"get_param": ["Controller-1::EnableGalera"]}, "HorizonSecret": {"get_resource": "HorizonSecret"}, "NeutronBridgeMappings": {"get_param": ["Controller-1::NeutronBridgeMappings"]}, "VirtualIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}, "CinderEnableIscsiBackend": {"get_param": ["Controller-1::CinderEnableIscsiBackend"]}, "CeilometerMeteringSecret": {"get_param": ["Controller-1::CeilometerMeteringSecret"]}, "NeutronMetadataProxySharedSecret": {"get_param": ["Controller-1::NeutronMetadataProxySharedSecret"]}, "PublicVirtualIP": {"get_attr": ["PublicVirtualIP", "ip_address"]}, "Flavor": {"get_param": ["Controller-1::Flavor"]}, "CinderEnableNfsBackend": {"get_param": ["Controller-1::CinderEnableNfsBackend"]}, "NovaPassword": {"get_param": ["Controller-1::NovaPassword"]}, "KeystonePublicApiVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}, "GlancePort": {"get_param": ["Controller-1::GlancePort"]}, "SwiftPartPower": {"get_param": ["Controller-1::SwiftPartPower"]}, "HeatApiVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HeatApiNetwork"]}]}, "NeutronPublicInterfaceDefaultRoute": {"get_param": ["Controller-1::NeutronPublicInterfaceDefaultRoute"]}, "HeatPassword": {"get_param": ["Controller-1::HeatPassword"]}, "MysqlVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MysqlNetwork"]}]}, "RedisVirtualIP": {"get_attr": ["RedisVirtualIP", "ip_address"]}, "ControllerExtraConfig": {"get_param": ["Controller-1::ControllerExtraConfig"]}, "ControlVirtualInterface": {"get_param": ["Controller-1::ControlVirtualInterface"]}, "SwiftMountCheck": {"get_param": ["Controller-1::SwiftMountCheck"]}, "HeatStackDomainAdminPassword": {"get_param": ["Controller-1::HeatStackDomainAdminPassword"]}, "RabbitClientPort": {"get_param": ["Controller-1::RabbitClientPort"]}, "PcsdPassword": {"get_resource": "PcsdPassword"}, "GlanceApiVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "SwiftPassword": {"get_param": ["Controller-1::SwiftPassword"]}, "EnableSwiftStorage": {"get_param": ["Controller-1::EnableSwiftStorage"]}, "EnablePacemaker": {"get_param": ["Controller-1::EnablePacemaker"]}, "NeutronNetworkType": {"get_param": ["Controller-1::NeutronNetworkType"]}, "CeilometerPassword": {"get_param": ["Controller-1::CeilometerPassword"]}, "SSLCertificate": {"get_param": ["Controller-1::SSLCertificate"]}, "NeutronVniRanges": {"get_param": ["Controller-1::NeutronVniRanges"]}, "GlanceNotifierStrategy": {"get_param": ["Controller-1::GlanceNotifierStrategy"]}, "CinderBackendConfig": {"get_param": ["Controller-1::CinderBackendConfig"]}, "NeutronMechanismDrivers": {"get_param": ["Controller-1::NeutronMechanismDrivers"]}, "GlanceBackend": {"get_param": ["Controller-1::GlanceBackend"]}, "RabbitClientUseSSL": {"get_param": ["Controller-1::RabbitClientUseSSL"]}, "NeutronAllowL3AgentFailover": {"get_param": ["Controller-1::NeutronAllowL3AgentFailover"]}, "HeatAuthEncryptionKey": {"get_resource": "HeatAuthEncryptionKey"}, "GlanceFilePcmkOptions": {"get_param": ["Controller-1::GlanceFilePcmkOptions"]}, "RabbitUserName": {"get_param": ["Controller-1::RabbitUserName"]}, "GlanceLogFile": {"get_param": ["Controller-1::GlanceLogFile"]}, "CinderNfsMountOptions": {"get_param": ["Controller-1::CinderNfsMountOptions"]}, "NeutronExternalNetworkBridge": {"get_param": ["Controller-1::NeutronExternalNetworkBridge"]}, "CeilometerBackend": {"get_param": ["Controller-1::CeilometerBackend"]}, "NeutronPublicInterfaceIP": {"get_param": ["Controller-1::NeutronPublicInterfaceIP"]}, "SwiftHashSuffix": {"get_param": ["Controller-1::SwiftHashSuffix"]}, "AdminPassword": {"get_param": ["Controller-1::AdminPassword"]}, "NeutronDVR": {"get_param": ["Controller-1::NeutronDVR"]}, "Image": {"get_param": ["Controller-1::Image"]}, "ExtraConfig": {"get_param": ["Controller-1::ExtraConfig"]}, "NeutronTunnelTypes": {"get_param": ["Controller-1::NeutronTunnelTypes"]}, "NeutronEnableTunnelling": {"get_param": ["Controller-1::NeutronEnableTunnelling"]}, "KeystoneCACertificate": {"get_param": ["Controller-1::KeystoneCACertificate"]}, "UpdateIdentifier": {"get_param": ["Controller-1::UpdateIdentifier"]}, "NeutronDnsmasqOptions": {"get_param": ["Controller-1::NeutronDnsmasqOptions"]}}}, "removal_policies": {"get_param": ["Controller-1::removal_policies"]}}}, "MysqlRootPassword": {"type": "OS::Heat::RandomString", "properties": {"length": 10}}, "Cinder-Storage": {"type": "OS::Heat::ResourceGroup", "properties": {"count": {"get_param": ["Cinder-Storage-1::count"]}, "resource_def": {"type": "Tuskar::Cinder-Storage-1", "properties": {"CinderEnableIscsiBackend": {"get_param": ["Cinder-Storage-1::CinderEnableIscsiBackend"]}, "RabbitClientUseSSL": {"get_param": ["Cinder-Storage-1::RabbitClientUseSSL"]}, "NtpServer": {"get_param": ["Cinder-Storage-1::NtpServer"]}, "Hostname": {"str_replace": {"params": {"%stackname%": {"get_param": "OS::stack_name"}}, "template": {"get_param": "BlockStorageHostnameFormat"}}}, "RabbitPassword": {"get_param": ["Cinder-Storage-1::RabbitPassword"]}, "GlancePort": {"get_param": ["Cinder-Storage-1::GlancePort"]}, "EnablePackageInstall": {"get_param": ["Cinder-Storage-1::EnablePackageInstall"]}, "RabbitUserName": {"get_param": ["Cinder-Storage-1::RabbitUserName"]}, "Debug": {"get_param": ["Cinder-Storage-1::Debug"]}, "SnmpdReadonlyUserPassword": {"get_param": ["Cinder-Storage-1::SnmpdReadonlyUserPassword"]}, "MysqlVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MysqlNetwork"]}]}, "VirtualIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}, "GlanceProtocol": {"get_param": ["Cinder-Storage-1::GlanceProtocol"]}, "RabbitClientPort": {"get_param": ["Cinder-Storage-1::RabbitClientPort"]}, "Image": {"get_param": ["Cinder-Storage-1::Image"]}, "ExtraConfig": {"get_param": ["Cinder-Storage-1::ExtraConfig"]}, "ServiceNetMap": {"get_param": ["Cinder-Storage-1::ServiceNetMap"]}, "SnmpdReadonlyUserName": {"get_param": ["Cinder-Storage-1::SnmpdReadonlyUserName"]}, "GlanceApiVirtualIP": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "KeyName": {"get_param": ["Cinder-Storage-1::KeyName"]}, "UpdateIdentifier": {"get_param": ["Cinder-Storage-1::UpdateIdentifier"]}, "CinderISCSIHelper": {"get_param": ["Cinder-Storage-1::CinderISCSIHelper"]}, "Flavor": {"get_param": ["Cinder-Storage-1::Flavor"]}, "CinderLVMLoopDeviceSize": {"get_param": ["Cinder-Storage-1::CinderLVMLoopDeviceSize"]}, "CinderPassword": {"get_param": ["Cinder-Storage-1::CinderPassword"]}}}, "removal_policies": {"get_param": ["Cinder-Storage-1::removal_policies"]}}}, "MysqlClusterUniquePart": {"type": "OS::Heat::RandomString", "properties": {"length": 10}}, "BlockStorageAllNodesDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["allNodesConfig", "config_id"]}, "servers": {"get_attr": ["Cinder-Storage", "attributes", "nova_server_resource"]}}}, "ControllerNodesPostDeployment": {"depends_on": ["ControllerBootstrapNodeDeployment", "ControllerAllNodesDeployment", "ControllerSwiftDeployment", "ControllerCephDeployment"], "type": "OS::TripleO::ControllerPostDeployment", "properties": {"NodeConfigIdentifiers": {"get_attr": ["Controller", "attributes", "config_identifier"]}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "ComputeAllNodesDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["allNodesConfig", "config_id"]}, "servers": {"get_attr": ["Compute", "attributes", "nova_server_resource"]}}}, "ControllerCephDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["CephClusterConfig", "config_id"]}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "Compute": {"type": "OS::Heat::ResourceGroup", "properties": {"count": {"get_param": ["Compute-1::count"]}, "resource_def": {"type": "Tuskar::Compute-1", "properties": {"NeutronPublicInterfaceRawDevice": {"get_param": ["Compute-1::NeutronPublicInterfaceRawDevice"]}, "NeutronNetworkVLANRanges": {"get_param": ["Compute-1::NeutronNetworkVLANRanges"]}, "NovaComputeDriver": {"get_param": ["Compute-1::NovaComputeDriver"]}, "Hostname": {"str_replace": {"params": {"%stackname%": {"get_param": "OS::stack_name"}}, "template": {"get_param": "ComputeHostnameFormat"}}}, "GlancePort": {"get_param": ["Compute-1::GlancePort"]}, "NeutronPassword": {"get_param": ["Compute-1::NeutronPassword"]}, "NeutronBridgeMappings": {"get_param": ["Compute-1::NeutronBridgeMappings"]}, "EnablePackageInstall": {"get_param": ["Compute-1::EnablePackageInstall"]}, "NovaEnableRbdBackend": {"get_param": ["Compute-1::NovaEnableRbdBackend"]}, "GlanceHost": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "NeutronTunnelTypes": {"get_param": ["Compute-1::NeutronTunnelTypes"]}, "NeutronTunnelIdRanges": {"get_param": ["Compute-1::NeutronTunnelIdRanges"]}, "NeutronVniRanges": {"get_param": ["Compute-1::NeutronVniRanges"]}, "Flavor": {"get_param": ["Compute-1::Flavor"]}, "NeutronAgentMode": {"get_param": ["Compute-1::NeutronAgentMode"]}, "NovaApiHost": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaApiNetwork"]}]}, "RabbitClientPort": {"get_param": ["Compute-1::RabbitClientPort"]}, "NovaComputeExtraConfig": {"get_param": ["Compute-1::NovaComputeExtraConfig"]}, "ServiceNetMap": {"get_param": ["Compute-1::ServiceNetMap"]}, "SnmpdReadonlyUserName": {"get_param": ["Compute-1::SnmpdReadonlyUserName"]}, "KeyName": {"get_param": ["Compute-1::KeyName"]}, "NovaPublicIP": {"get_attr": ["PublicVirtualIP", "ip_address"]}, "NeutronNetworkType": {"get_param": ["Compute-1::NeutronNetworkType"]}, "CeilometerPassword": {"get_param": ["Compute-1::CeilometerPassword"]}, "NtpServer": {"get_param": ["Compute-1::NtpServer"]}, "CinderEnableNfsBackend": {"get_param": ["Compute-1::CinderEnableNfsBackend"]}, "KeystoneHost": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}, "NeutronMechanismDrivers": {"get_param": ["Compute-1::NeutronMechanismDrivers"]}, "RabbitClientUseSSL": {"get_param": ["Compute-1::RabbitClientUseSSL"]}, "NeutronAllowL3AgentFailover": {"get_param": ["Compute-1::NeutronAllowL3AgentFailover"]}, "RabbitPassword": {"get_param": ["Compute-1::RabbitPassword"]}, "ImageUpdatePolicy": {"get_param": ["Compute-1::ImageUpdatePolicy"]}, "RabbitUserName": {"get_param": ["Compute-1::RabbitUserName"]}, "Debug": {"get_param": ["Compute-1::Debug"]}, "NeutronPublicInterface": {"get_param": ["Compute-1::NeutronPublicInterface"]}, "NovaPassword": {"get_param": ["Compute-1::NovaPassword"]}, "GlanceProtocol": {"get_param": ["Compute-1::GlanceProtocol"]}, "NeutronDVR": {"get_param": ["Compute-1::NeutronDVR"]}, "NeutronL3HA": {"get_param": ["Compute-1::NeutronL3HA"]}, "NovaComputeLibvirtType": {"get_param": ["Compute-1::NovaComputeLibvirtType"]}, "AdminPassword": {"get_param": ["Compute-1::AdminPassword"]}, "NeutronPhysicalBridge": {"get_param": ["Compute-1::NeutronPhysicalBridge"]}, "CeilometerComputeAgent": {"get_param": ["Compute-1::CeilometerComputeAgent"]}, "Image": {"get_param": ["Compute-1::Image"]}, "ExtraConfig": {"get_param": ["Compute-1::ExtraConfig"]}, "RabbitHost": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RabbitMqNetwork"]}]}, "NeutronFlatNetworks": {"get_param": ["Compute-1::NeutronFlatNetworks"]}, "CeilometerMeteringSecret": {"get_param": ["Compute-1::CeilometerMeteringSecret"]}, "NeutronMetadataProxySharedSecret": {"get_param": ["Compute-1::NeutronMetadataProxySharedSecret"]}, "NeutronEnableTunnelling": {"get_param": ["Compute-1::NeutronEnableTunnelling"]}, "SnmpdReadonlyUserPassword": {"get_param": ["Compute-1::SnmpdReadonlyUserPassword"]}, "NeutronHost": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}, "UpdateIdentifier": {"get_param": ["Compute-1::UpdateIdentifier"]}}}, "removal_policies": {"get_param": ["Compute-1::removal_policies"]}}}, "VipMap": {"type": "OS::TripleO::Network::Ports::NetIpMap", "properties": {"ExternalIp": {"get_attr": ["PublicVirtualIP", "ip_address"]}, "StorageIp": {"get_attr": ["StorageVirtualIP", "ip_address"]}, "InternalApiIp": {"get_attr": ["InternalApiVirtualIP", "ip_address"]}, "StorageMgmtIp": {"get_attr": ["StorageMgmtVirtualIP", "ip_address"]}}}, "Networks": {"type": "OS::TripleO::Network"}, "HeatAuthEncryptionKey": {"type": "OS::Heat::RandomString"}, "ComputeNodesPostDeployment": {"depends_on": ["ComputeAllNodesDeployment", "ComputeCephDeployment"], "type": "OS::TripleO::ComputePostDeployment", "properties": {"NodeConfigIdentifiers": {"get_attr": ["Compute", "attributes", "config_identifier"]}, "servers": {"get_attr": ["Compute", "attributes", "nova_server_resource"]}}}, "ControllerClusterDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"signal_transport": "NO_SIGNAL", "config": {"get_resource": "ControllerClusterConfig"}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "ControllerBootstrapNodeConfig": {"type": "OS::TripleO::BootstrapNode::SoftwareConfig", "properties": {"bootstrap_nodeid": {"get_attr": ["Controller", "resource.0.hostname"]}, "bootstrap_nodeid_ip": {"get_attr": ["Controller", "resource.0.ip_address"]}}}, "VipDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"input_values": {"internal_api_virtual_ip": {"get_attr": ["InternalApiVirtualIP", "ip_address"]}, "nova_metadata_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaMetadataNetwork"]}]}, "redis_vip": {"get_attr": ["RedisVirtualIP", "ip_address"]}, "mysql_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "MysqlNetwork"]}]}, "heat_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HeatApiNetwork"]}]}, "public_virtual_ip": {"get_attr": ["PublicVirtualIP", "ip_address"]}, "keystone_public_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystonePublicApiNetwork"]}]}, "nova_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NovaApiNetwork"]}]}, "neutron_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "NeutronApiNetwork"]}]}, "horizon_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "HorizonNetwork"]}]}, "keystone_admin_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "KeystoneAdminApiNetwork"]}]}, "storage_mgmt_virtual_ip": {"get_attr": ["StorageMgmtVirtualIP", "ip_address"]}, "storage_virtual_ip": {"get_attr": ["StorageVirtualIP", "ip_address"]}, "control_virtual_ip": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}, "cinder_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CinderApiNetwork"]}]}, "rabbit_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "RabbitMqNetwork"]}]}, "swift_proxy_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "SwiftProxyNetwork"]}]}, "ceilometer_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "CeilometerApiNetwork"]}]}, "glance_api_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceApiNetwork"]}]}, "glance_registry_vip": {"get_attr": ["VipMap", "net_ip_map", {"get_param": ["ServiceNetMap", "GlanceRegistryNetwork"]}]}}, "config": {"get_resource": "VipConfig"}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "ControllerClusterConfig": {"type": "OS::Heat::StructuredConfig", "properties": {"config": {"haproxy": {"nodes": {"get_attr": ["Controller", "corosync_node"]}}, "corosync": {"nodes": {"get_attr": ["Controller", "corosync_node"]}}, "horizon": {"caches": {"memcached": {"nodes": {"get_attr": ["Controller", "hostname"]}}}}, "mysql": {"nodes": {"get_attr": ["Controller", "corosync_node"]}}}}}, "StorageMgmtVirtualIP": {"depends_on": "Networks", "type": "OS::TripleO::Controller::Ports::StorageMgmtPort", "properties": {"PortName": "storage_management_virtual_ip", "ControlPlaneIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}}}, "HorizonSecret": {"type": "OS::Heat::RandomString", "properties": {"length": 10}}, "ObjectStorageNodesPostDeployment": {"depends_on": ["ObjectStorageSwiftDeployment", "ObjectStorageAllNodesDeployment"], "type": "OS::TripleO::ObjectStoragePostDeployment", "properties": {"NodeConfigIdentifiers": {"get_attr": ["Swift-Storage", "attributes", "config_identifier"]}, "servers": {"get_attr": ["Swift-Storage", "attributes", "nova_server_resource"]}}}, "ControllerAllNodesDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["allNodesConfig", "config_id"]}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "ObjectStorageAllNodesDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["allNodesConfig", "config_id"]}, "servers": {"get_attr": ["Swift-Storage", "attributes", "nova_server_resource"]}}}, "PublicVirtualIP": {"depends_on": "Networks", "type": "OS::TripleO::Controller::Ports::ExternalPort", "properties": {"PortName": "public_virtual_ip", "ControlPlaneIP": {"get_attr": ["ControlVirtualIP", "fixed_ips", 0, "ip_address"]}}}, "Ceph-Storage": {"type": "OS::Heat::ResourceGroup", "properties": {"count": {"get_param": ["Ceph-Storage-1::count"]}, "resource_def": {"type": "Tuskar::Ceph-Storage-1", "properties": {"ImageUpdatePolicy": {"get_param": ["Ceph-Storage-1::ImageUpdatePolicy"]}, "NtpServer": {"get_param": ["Ceph-Storage-1::NtpServer"]}, "Hostname": {"str_replace": {"params": {"%stackname%": {"get_param": "OS::stack_name"}}, "template": {"get_param": "CephStorageHostnameFormat"}}}, "ServiceNetMap": {"get_param": ["Ceph-Storage-1::ServiceNetMap"]}, "KeyName": {"get_param": ["Ceph-Storage-1::KeyName"]}, "EnablePackageInstall": {"get_param": ["Ceph-Storage-1::EnablePackageInstall"]}, "Flavor": {"get_param": ["Ceph-Storage-1::Flavor"]}, "Image": {"get_param": ["Ceph-Storage-1::Image"]}, "UpdateIdentifier": {"get_param": ["Ceph-Storage-1::UpdateIdentifier"]}}}, "removal_policies": {"get_param": ["Ceph-Storage-1::removal_policies"]}}}, "ControllerBootstrapNodeDeployment": {"type": "OS::Heat::StructuredDeployments", "properties": {"config": {"get_attr": ["ControllerBootstrapNodeConfig", "config_id"]}, "servers": {"get_attr": ["Controller", "attributes", "nova_server_resource"]}}}, "ComputeCephDeployment":
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment