1 heat_template_version: 2014-10-16
4 OpenStack controller node configured by Puppet.
9 description: The password for the keystone admin account, used for monitoring, querying neutron etc.
14 description: The keystone auth secret.
17 CeilometerMeteringSecret:
19 description: Secret shared by the ceilometer services.
24 description: The password for the ceilometer service account.
27 CinderEnableIscsiBackend:
29 description: Whether to enable or not the Iscsi backend for Cinder
33 description: The iSCSI helper to use with cinder.
35 CinderLVMLoopDeviceSize:
37 description: The size of the loopback file used by the cinder LVM driver.
41 description: The password for the cinder service account, used by cinder-api.
46 description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
48 ControllerExtraConfig:
51 Controller specific configuration to inject into the cluster. Same
52 structure as ExtraConfig.
54 ControlVirtualInterface:
56 description: Interface where virtual ip will be assigned.
60 description: Set to True to enable debugging on all services.
65 Additional configuration to inject into the cluster. The JSON should have
66 the following structure:
69 [{"section": "SECTIONNAME",
71 [{"option": "OPTIONNAME",
82 [{"section": "default",
84 [{"option": "compute_manager",
85 "value": "ironic.nova.compute.manager.ClusterComputeManager"
92 "value": "nova.cells.rpc_driver.CellsRPCDriver"
101 description: Flavor for control nodes to request when deploying.
104 - custom_constraint: nova.flavor
105 GlanceNotifierStrategy:
106 description: Strategy to use for Glance notification queue
110 description: The filepath of the file to use for logging messages from Glance.
115 description: The password for the glance service account, used by the glance services.
120 description: Glance port.
124 description: Protocol to use when connecting to glance, set to https for SSL.
128 description: The password for the Heat service account, used by the Heat services.
131 HeatStackDomainAdminPassword:
132 description: Password for heat_domain_admin user.
138 default: overcloud-control
140 - custom_constraint: glance.image
142 default: 'REBUILD_PRESERVE_EPHEMERAL'
143 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
147 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
150 - custom_constraint: nova.keypair
151 KeystoneCACertificate:
153 description: Keystone self-signed certificate authority certificate.
155 KeystoneSigningCertificate:
157 description: Keystone certificate for verifying token validity.
161 description: Keystone key for signing tokens.
164 KeystoneSSLCertificate:
166 description: Keystone certificate for verifying token validity.
168 KeystoneSSLCertificateKey:
170 description: Keystone key for signing tokens.
173 MysqlClusterUniquePart:
174 description: A unique identifier of the MySQL cluster the controller is in.
176 default: 'unset' # Has to be here because of the ignored empty value bug
177 # Drop the validation: https://bugs.launchpad.net/tripleo/+bug/1405446
179 # - length: {min: 4, max: 10}
180 MysqlInnodbBufferPoolSize:
182 Specifies the size of the buffer pool in megabytes. Setting to
183 zero should be interpreted as "no value" and will defer to the
190 default: '' # Has to be here because of the ignored empty value bug
191 NeutronBridgeMappings:
193 The OVS logical->physical bridge mappings to use. See the Neutron
194 documentation for details. Defaults to mapping br-ex - the external
195 bridge on hosts - to a physical name 'datacentre' which can be used
196 to create provider networks (and we use this for the default floating
197 network) - if changing this either use different post-install network
198 scripts or be sure to keep 'datacentre' as a mapping network name.
201 NeutronDnsmasqOptions:
202 default: 'dhcp-option-force=26,1400'
203 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.
207 description: Agent mode for the neutron-l3-agent on the controller hosts
209 NeutronL3HA: #FIXME this isn't wired in
211 description: Whether to enable l3-agent HA
215 description: Whether to configure Neutron Distributed Virtual Routers
217 NeutronMetadataProxySharedSecret:
219 description: Shared secret to prevent spoofing
221 NeutronMechanismDrivers:
222 default: 'openvswitch'
224 The mechanism drivers for the Neutron tenant network. To specify multiple
225 values, use a comma separated string, like so: 'openvswitch,l2_population'
227 NeutronAllowL3AgentFailover:
229 description: Allow automatic l3-agent failover
231 NeutronEnableTunnelling:
237 description: If set, flat networks to configure in neutron plugins.
240 description: The tenant network type for Neutron, either gre or vxlan.
242 NeutronNetworkVLANRanges:
243 default: 'datacentre'
245 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
246 Neutron documentation for permitted values. Defaults to permitting any
247 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
251 description: The password for the neutron service account, used by neutron agents.
254 NeutronPublicInterface:
256 description: What interface to bridge onto br-ex for network nodes.
258 NeutronPublicInterfaceTag:
261 VLAN tag for creating a public VLAN. The tag will be used to
262 create an access port on the exterior bridge for each control plane node,
263 and that port will be given the IP address returned by neutron from the
264 public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
265 overcloud.yaml to include the deployment of VLAN ports to the control
268 NeutronPublicInterfaceDefaultRoute:
270 description: A custom default route for the NeutronPublicInterface.
272 NeutronPublicInterfaceIP:
274 description: A custom IP address to put onto the NeutronPublicInterface.
276 NeutronPublicInterfaceRawDevice:
278 description: If set, the public interface is a vlan with this device as the raw device.
283 The tunnel types for the Neutron tenant network. To specify multiple
284 values, use a comma separated string, like so: 'gre,vxlan'
288 description: The password for the nova service account, used by nova-api.
294 PublicVirtualInterface:
297 Specifies the interface where the public-facing virtual ip will be assigned.
298 This should be int_public when a VLAN is being used.
302 default: '' # Has to be here because of the ignored empty value bug
305 default: '' # Has to be here because of the ignored empty value bug
309 description: The password for RabbitMQ
314 description: The username for RabbitMQ
319 Rabbit client subscriber parameter to specify
320 an SSL connection to the RabbitMQ host.
324 description: Set rabbit subscriber port, change this if using SSL
326 SnmpdReadonlyUserName:
327 default: ro_snmp_user
328 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
330 SnmpdReadonlyUserPassword:
332 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
337 description: If set, the contents of an SSL certificate authority file.
341 description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
346 description: If set, the contents of an SSL certificate .key file for encrypting SSL endpoints.
351 description: A random string to be used as a salt when hashing to determine mappings
357 description: Value of mount_check in Swift account/container/object -server.conf
362 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
365 description: Partition Power to use when building Swift rings
369 description: The password for the swift service account, used by the swift proxy
376 description: How many replicas to use in the swift rings.
379 default: '' # Has to be here because of the ignored empty value bug
380 EnablePackageInstall:
382 description: Set to true to enable package installation via Puppet
388 type: OS::Nova::Server
390 image: {get_param: Image}
391 image_update_policy: {get_param: ImageUpdatePolicy}
392 flavor: {get_param: Flavor}
393 key_name: {get_param: KeyName}
396 user_data_format: SOFTWARE_CONFIG
399 type: OS::TripleO::Net::SoftwareConfig
402 type: OS::TripleO::SoftwareDeployment
404 signal_transport: NO_SIGNAL
405 config: {get_attr: [NetworkConfig, config_id]}
406 server: {get_resource: Controller}
409 interface_name: {get_param: NeutronPublicInterface}
411 ControllerDeployment:
412 type: OS::TripleO::SoftwareDeployment
414 signal_transport: NO_SIGNAL
415 config: {get_resource: ControllerConfig}
416 server: {get_resource: Controller}
418 bootstack_nodeid: {get_attr: [Controller, name]}
419 controller_host: {get_attr: [Controller, networks, ctlplane, 0]}
420 controller_virtual_ip: {get_param: VirtualIP}
421 neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
422 heat.watch_server_url:
426 - {get_param: VirtualIP}
428 heat.metadata_server_url:
432 - {get_param: VirtualIP}
434 heat.waitcondition_server_url:
438 - {get_param: VirtualIP}
439 - ':8000/v1/waitcondition'
440 admin_password: {get_param: AdminPassword}
441 admin_token: {get_param: AdminToken}
442 neutron_public_interface_ip: {get_param: NeutronPublicInterfaceIP}
443 debug: {get_param: Debug}
444 cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
445 cinder_password: {get_param: CinderPassword}
446 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
447 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
451 - - 'mysql://cinder:unset@'
452 - {get_param: VirtualIP}
454 glance_port: {get_param: GlancePort}
455 glance_protocol: {get_param: GlanceProtocol}
456 glance_password: {get_param: GlancePassword}
457 glance_swift_store_auth_address: {list_join: ['', ['http://', {get_param: VirtualIP} , ':5000/v2.0']]}
458 glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
459 glance_log_file: {get_param: GlanceLogFile}
463 - - 'mysql://glance:unset@'
464 - {get_param: VirtualIP}
466 heat_password: {get_param: HeatPassword}
467 heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
471 - - 'mysql://heat:unset@'
472 - {get_param: VirtualIP}
474 keystone_ca_certificate: {get_param: KeystoneCACertificate}
475 keystone_signing_key: {get_param: KeystoneSigningKey}
476 keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
477 keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
478 keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
482 - - 'mysql://keystone:unset@'
483 - {get_param: VirtualIP}
485 mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
486 mysql_root_password: {get_param: MysqlRootPassword}
489 template: tripleo-CLUSTER
491 CLUSTER: {get_param: MysqlClusterUniquePart}
492 neutron_flat_networks: {get_param: NeutronFlatNetworks}
493 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
494 neutron_agent_mode: {get_param: NeutronAgentMode}
495 neutron_router_distributed: {get_param: NeutronDVR}
496 neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
497 neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
498 neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
499 neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
500 neutron_public_interface: {get_param: NeutronPublicInterface}
501 neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
502 neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
503 neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
504 neutron_tenant_network_type: {get_param: NeutronNetworkType}
505 neutron_tunnel_types: {get_param: NeutronTunnelTypes}
506 neutron_password: {get_param: NeutronPassword}
507 neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
511 - - 'mysql://neutron:unset@'
512 - {get_param: VirtualIP}
513 - '/ovs_neutron?charset=utf8'
518 - {get_param: VirtualIP}
520 neutron_admin_auth_url:
524 - {get_param: VirtualIP}
526 ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
527 ceilometer_password: {get_param: CeilometerPassword}
531 - - 'mysql://ceilometer:unset@'
532 - {get_param: VirtualIP}
534 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
535 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
536 nova_password: {get_param: NovaPassword}
540 - - 'mysql://nova:unset@'
541 - {get_param: VirtualIP}
543 rabbit_username: {get_param: RabbitUserName}
544 rabbit_password: {get_param: RabbitPassword}
545 rabbit_cookie: {get_param: RabbitCookie}
546 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
547 rabbit_client_port: {get_param: RabbitClientPort}
550 template: '["server"]'
552 server: {get_param: NtpServer}
553 control_virtual_interface: {get_param: ControlVirtualInterface}
554 public_virtual_interface: {get_param: PublicVirtualInterface}
555 public_virtual_ip: {get_param: PublicVirtualIP}
556 swift_hash_suffix: {get_param: SwiftHashSuffix}
557 swift_password: {get_param: SwiftPassword}
558 swift_part_power: {get_param: SwiftPartPower}
559 swift_replicas: {get_param: SwiftReplicas}
560 swift_min_part_hours: {get_param: SwiftMinPartHours}
561 swift_mount_check: {get_param: SwiftMountCheck}
562 enable_package_install: {get_param: EnablePackageInstall}
564 # Map heat metadata into hiera datafiles
566 type: OS::Heat::StructuredConfig
568 group: os-apply-config
572 - heat_config_%{::deploy_config_name}
575 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
576 - rabbit # provided by allNodesConfig
577 - ceph_cluster # provided by CephClusterConfig
579 - bootstrap_node # provided by BootstrapNodeConfig
583 raw_data: {get_file: hieradata/common.yaml}
585 raw_data: {get_file: hieradata/ceph.yaml}
587 raw_data: {get_file: hieradata/object.yaml}
589 raw_data: {get_file: hieradata/controller.yaml}
590 mapped_data: # data supplied directly to this deployment configuration, etc
591 debug: {get_input: debug}
592 bootstack_nodeid: {get_input: bootstack_nodeid}
593 controller_host: {get_input: controller_host} #local-ipv4
595 swift::proxy::proxy_local_net_ip: {get_input: controller_host}
596 swift::proxy::authtoken::auth_host: {get_input: controller_virtual_ip}
597 swift::storage::all::storage_local_net_ip: {get_input: controller_host}
598 swift::swift_hash_suffix: {get_input: swift_hash_suffix}
599 swift::proxy::authtoken::admin_password: {get_input: swift_password}
600 tripleo::ringbuilder::part_power: {get_input: swift_part_power}
601 tripleo::ringbuilder::replicas: {get_input: swift_replicas}
602 tripleo::ringbuilder::min_part_hours: {get_input: swift_min_part_hours}
603 swift_mount_check: {get_input: swift_mount_check}
605 # NOTE(dprince): build_ring support is currently not wired in.
606 # See: https://review.openstack.org/#/c/109225/
607 tripleo::ringbuilder::build_ring: True
609 cinder_lvm_loop_device_size: {get_input: cinder_lvm_loop_device_size}
610 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
611 cinder_iscsi_ip_address: {get_input: controller_host}
612 cinder::database_connection: {get_input: cinder_dsn}
613 cinder::api::keystone_password: {get_input: cinder_password}
614 cinder::api::keystone_auth_host: {get_input: controller_virtual_ip}
615 cinder::api::bind_host: {get_input: controller_host}
616 cinder::rabbit_userid: {get_input: rabbit_username}
617 cinder::rabbit_password: {get_input: rabbit_password}
618 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
619 #cinder::debug: {get_input: debug}
621 glance::api::bind_port: {get_input: glance_port}
622 glance::api::bind_host: {get_input: controller_host}
623 glance::api::auth_host: {get_input: controller_virtual_ip}
624 glance::api::registry_host: {get_input: controller_host}
625 glance::api::keystone_password: {get_input: glance_password}
626 # used to construct glance_api_servers
627 glance_port: {get_input: glance_port}
628 glance_protocol: {get_input: glance_protocol}
629 glance_notifier_strategy: {get_input: glance_notifier_strategy}
630 glance_log_file: {get_input: glance_log_file}
631 glance_log_file: {get_input: glance_log_file}
632 glance::api::database_connection: {get_input: glance_dsn}
633 glance::registry::keystone_password: {get_input: glance_password}
634 glance::registry::database_connection: {get_input: glance_dsn}
635 glance::registry::bind_host: {get_input: controller_host}
636 glance::registry::auth_host: {get_input: controller_virtual_ip}
637 glance::backend::swift::swift_store_auth_address: {get_input: glance_swift_store_auth_address}
638 glance::backend::swift::swift_store_user: service:glance
639 glance::backend::swift::swift_store_key: {get_input: glance_password}
641 heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
642 heat::engine::heat_watch_server_url: {get_input: heat.watch_server_url}
643 heat::engine::heat_metadata_server_url: {get_input: heat.metadata_server_url}
644 heat::engine::heat_waitcondition_server_url: {get_input: heat.waitcondition_server_url}
645 heat::engine::auth_encryption_key: unset___________
646 heat::rabbit_userid: {get_input: rabbit_username}
647 heat::rabbit_password: {get_input: rabbit_password}
648 heat::rabbit_host: {get_input: controller_virtual_ip}
649 heat::keystone_host: {get_input: controller_virtual_ip}
650 heat::keystone_password: {get_input: heat_password}
651 heat::api::bind_host: {get_input: controller_host}
652 heat::api_cloudwatch::bind_host: {get_input: controller_host}
653 heat::api_cfn::bind_host: {get_input: controller_host}
654 heat::database_connection: {get_input: heat_dsn}
655 heat::instance_user: heat-admin
658 keystone::admin_token: {get_input: admin_token}
659 keystone_ca_certificate: {get_input: keystone_ca_certificate}
660 keystone_signing_key: {get_input: keystone_signing_key}
661 keystone_signing_certificate: {get_input: keystone_signing_certificate}
662 keystone_ssl_certificate: {get_input: keystone_ssl_certificate}
663 keystone_ssl_certificate_key: {get_input: keystone_ssl_certificate_key}
664 keystone::database_connection: {get_input: keystone_dsn}
665 keystone::public_bind_host: {get_input: controller_host}
666 keystone::admin_bind_host: {get_input: controller_host}
667 #keystone::debug: {get_input: debug}
669 admin_password: {get_input: admin_password}
670 mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
671 mysql_root_password: {get_input: mysql_root_password}
672 mysql_cluster_name: {get_input: mysql_cluster_name}
674 neutron::bind_host: {get_input: controller_host}
675 neutron::rabbit_password: {get_input: rabbit_password}
676 neutron::rabbit_user: {get_input: rabbit_user}
677 #neutron::debug: {get_input: debug}
678 neutron::server::auth_host: {get_input: controller_virtual_ip}
679 neutron::server::database_connection: {get_input: neutron_dsn}
680 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
681 neutron::agents::ml2::ovs::local_ip: {get_input: controller_host}
682 neutron_flat_networks: {get_input: neutron_flat_networks}
683 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
684 neutron::agents::metadata::metadata_ip: {get_input: controller_virtual_ip}
685 neutron_agent_mode: {get_input: neutron_agent_mode}
686 neutron_router_distributed: {get_input: neutron_router_distributed}
687 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
688 neutron_allow_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
689 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
690 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
691 neutron_public_interface: {get_input: neutron_public_interface}
692 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
693 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
694 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
695 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
696 neutron_tunnel_types: {get_input: neutron_tunnel_types}
697 neutron::server::auth_password: {get_input: neutron_password}
698 neutron::agents::metadata::auth_password: {get_input: neutron_password}
699 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
700 neutron_dsn: {get_input: neutron_dsn}
702 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
703 ceilometer::rabbit_userid: {get_input: rabbit_username}
704 ceilometer::rabbit_password: {get_input: rabbit_password}
705 ceilometer::rabbit_host: {get_input: controller_virtual_ip}
706 ceilometer::api::host: {get_input: controller_host}
707 ceilometer::api::keystone_password: {get_input: ceilometer_password}
708 ceilometer::api::keystone_host: {get_input: controller_virtual_ip}
709 ceilometer::db::database_connection: {get_input: ceilometer_dsn}
710 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
711 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
712 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
714 nova::rabbit_userid: {get_input: rabbit_username}
715 nova::rabbit_password: {get_input: rabbit_password}
716 nova::api::auth_host: {get_input: controller_virtual_ip}
717 nova::api::api_bind_address: {get_input: controller_host}
718 nova::api::metadata_listen: {get_input: controller_host}
719 nova::api::admin_password: {get_input: nova_password}
720 nova::database_connection: {get_input: nova_dsn}
721 nova::api::neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
722 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
723 nova::network::neutron::neutron_url: {get_input: neutron_url}
724 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
727 rabbit_username: {get_input: rabbit_username}
728 rabbit_password: {get_input: rabbit_password}
729 rabbit_client_use_ssl: {get_input: rabbit_client_use_ssl}
730 rabbit_client_port: {get_input: rabbit_client_port}
731 rabbitmq::erlang_cookie: {get_input: rabbit_cookie}
733 neutron_public_interface_ip: {get_input: neutron_public_interface_ip}
734 ntp::servers: {get_input: ntp_servers}
735 control_virtual_interface: {get_input: control_virtual_interface}
736 controller_virtual_ip: {get_input: controller_virtual_ip}
737 public_virtual_interface: {get_input: public_virtual_interface}
738 public_virtual_ip: {get_input: public_virtual_ip}
739 enable_package_install: {get_input: enable_package_install}
743 description: IP address of the server in the ctlplane network
744 value: {get_attr: [Controller, networks, ctlplane, 0]}
746 description: Hostname of the server
747 value: {get_attr: [Controller, name]}
750 Node object in the format {ip: ..., name: ...} format that the corosync
753 ip: {get_attr: [Controller, networks, ctlplane, 0]}
754 name: {get_attr: [Controller, name]}
757 Server's IP address and hostname in the /etc/hosts format
760 template: IP HOST HOST.novalocal CLOUDNAME
762 IP: {get_attr: [Controller, networks, ctlplane, 0]}
763 HOST: {get_attr: [Controller, name]}
764 CLOUDNAME: {get_param: CloudName}
765 nova_server_resource:
766 description: Heat resource handle for the Nova compute server
768 {get_resource: Controller}
770 description: Swift device formatted for swift-ring-builder
773 template: 'r1z1-IP:%PORT%/d1'
775 IP: {get_attr: [Controller, networks, ctlplane, 0]}
776 swift_proxy_memcache:
777 description: Swift proxy-memcache value
782 IP: {get_attr: [Controller, networks, ctlplane, 0]}