diff options
-rw-r--r-- | environments/enable-tls.yaml | 3 | ||||
-rw-r--r-- | extraconfig/tasks/noop.yaml | 26 | ||||
-rw-r--r-- | network/endpoints/endpoint_data.yaml | 23 | ||||
-rw-r--r-- | network/endpoints/endpoint_map.yaml | 57 | ||||
-rw-r--r-- | overcloud-resource-registry-puppet.yaml | 6 | ||||
-rw-r--r-- | overcloud.yaml | 6 | ||||
-rw-r--r-- | puppet/ceph-storage.yaml | 24 | ||||
-rw-r--r-- | puppet/cinder-storage.yaml | 24 | ||||
-rw-r--r-- | puppet/compute.yaml | 24 | ||||
-rw-r--r-- | puppet/controller.yaml | 24 | ||||
-rw-r--r-- | puppet/swift-storage.yaml | 24 |
11 files changed, 101 insertions, 140 deletions
diff --git a/environments/enable-tls.yaml b/environments/enable-tls.yaml index 70181278..6edb8ac7 100644 --- a/environments/enable-tls.yaml +++ b/environments/enable-tls.yaml @@ -24,9 +24,6 @@ parameter_defaults: KeystoneAdmin: {protocol: 'http', port: '35357', host: 'IP_ADDRESS'} KeystoneInternal: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'} KeystonePublic: {protocol: 'https', port: '13000', host: 'CLOUDNAME'} - KeystoneV3Admin: {protocol: 'http', port: '35357', host: 'IP_ADDRESS'} - KeystoneV3Internal: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'} - KeystoneV3Public: {protocol: 'https', port: '13000', host: 'CLOUDNAME'} NeutronAdmin: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'} NeutronInternal: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'} NeutronPublic: {protocol: 'https', port: '13696', host: 'CLOUDNAME'} diff --git a/extraconfig/tasks/noop.yaml b/extraconfig/tasks/noop.yaml deleted file mode 100644 index dbb863be..00000000 --- a/extraconfig/tasks/noop.yaml +++ /dev/null @@ -1,26 +0,0 @@ -heat_template_version: 2014-10-16 -description: 'No-op task' - -parameters: - servers: - type: json - default: [] - controller_servers: - type: json - default: [] - compute_servers: - type: json - default: [] - blockstorage_servers: - type: json - default: [] - objectstorage_servers: - type: json - default: [] - cephstorage_servers: - type: json - default: [] - input_values: - type: json - default: {} - description: input values for the software deployments diff --git a/network/endpoints/endpoint_data.yaml b/network/endpoints/endpoint_data.yaml index edcfaca1..38d684eb 100644 --- a/network/endpoints/endpoint_data.yaml +++ b/network/endpoints/endpoint_data.yaml @@ -72,40 +72,27 @@ Horizon: '': /dashboard port: 80 +# TODO(ayoung): V3 is a temporary fix. Endpoints should be versionless. +# Required for https://bugs.launchpad.net/puppet-nova/+bug/1542486 Keystone: Internal: vip_param: KeystonePublicApi uri_suffixes: '': /v2.0 EC2: /v2.0/ec2tokens + V3: /v3 names: EC2: KeystoneEC2 Public: vip_param: Public uri_suffixes: '': /v2.0 + V3: /v3 Admin: vip_param: KeystoneAdminApi uri_suffixes: '': /v2.0 - port: 35357 - port: 5000 - -# TODO(ayoung): V3 is a temporary fix. Endpoints should be versionless. -# Required for https://bugs.launchpad.net/puppet-nova/+bug/1542486 -KeystoneV3: - Internal: - vip_param: KeystonePublicApi - uri_suffixes: - '': /v3 - Public: - vip_param: Public - uri_suffixes: - '': /v3 - Admin: - vip_param: KeystoneAdminApi - uri_suffixes: - '': /v3 + V3: /v3 port: 35357 port: 5000 diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml index 07266f98..acd6b958 100644 --- a/network/endpoints/endpoint_map.yaml +++ b/network/endpoints/endpoint_map.yaml @@ -43,9 +43,6 @@ parameters: KeystoneAdmin: {protocol: http, port: '35357', host: IP_ADDRESS} KeystoneInternal: {protocol: http, port: '5000', host: IP_ADDRESS} KeystonePublic: {protocol: http, port: '5000', host: IP_ADDRESS} - KeystoneV3Admin: {protocol: http, port: '35357', host: IP_ADDRESS} - KeystoneV3Internal: {protocol: http, port: '5000', host: IP_ADDRESS} - KeystoneV3Public: {protocol: http, port: '5000', host: IP_ADDRESS} NeutronAdmin: {protocol: http, port: '9696', host: IP_ADDRESS} NeutronInternal: {protocol: http, port: '9696', host: IP_ADDRESS} NeutronPublic: {protocol: http, port: '9696', host: IP_ADDRESS} @@ -963,119 +960,119 @@ outputs: host: str_replace: template: - get_param: [EndpointMap, KeystoneV3Admin, host] + get_param: [EndpointMap, KeystoneAdmin, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: KeystoneAdminApiVirtualIP} port: - get_param: [EndpointMap, KeystoneV3Admin, port] + get_param: [EndpointMap, KeystoneAdmin, port] protocol: - get_param: [EndpointMap, KeystoneV3Admin, protocol] + get_param: [EndpointMap, KeystoneAdmin, protocol] uri: list_join: - '' - - - get_param: [EndpointMap, KeystoneV3Admin, protocol] + - - get_param: [EndpointMap, KeystoneAdmin, protocol] - :// - str_replace: template: - get_param: [EndpointMap, KeystoneV3Admin, host] + get_param: [EndpointMap, KeystoneAdmin, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: KeystoneAdminApiVirtualIP} - ':' - - get_param: [EndpointMap, KeystoneV3Admin, port] + - get_param: [EndpointMap, KeystoneAdmin, port] - /v3 uri_no_suffix: list_join: - '' - - - get_param: [EndpointMap, KeystoneV3Admin, protocol] + - - get_param: [EndpointMap, KeystoneAdmin, protocol] - :// - str_replace: template: - get_param: [EndpointMap, KeystoneV3Admin, host] + get_param: [EndpointMap, KeystoneAdmin, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: KeystoneAdminApiVirtualIP} - ':' - - get_param: [EndpointMap, KeystoneV3Admin, port] + - get_param: [EndpointMap, KeystoneAdmin, port] KeystoneV3Internal: host: str_replace: template: - get_param: [EndpointMap, KeystoneV3Internal, host] + get_param: [EndpointMap, KeystoneInternal, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: KeystonePublicApiVirtualIP} port: - get_param: [EndpointMap, KeystoneV3Internal, port] + get_param: [EndpointMap, KeystoneInternal, port] protocol: - get_param: [EndpointMap, KeystoneV3Internal, protocol] + get_param: [EndpointMap, KeystoneInternal, protocol] uri: list_join: - '' - - - get_param: [EndpointMap, KeystoneV3Internal, protocol] + - - get_param: [EndpointMap, KeystoneInternal, protocol] - :// - str_replace: template: - get_param: [EndpointMap, KeystoneV3Internal, host] + get_param: [EndpointMap, KeystoneInternal, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: KeystonePublicApiVirtualIP} - ':' - - get_param: [EndpointMap, KeystoneV3Internal, port] + - get_param: [EndpointMap, KeystoneInternal, port] - /v3 uri_no_suffix: list_join: - '' - - - get_param: [EndpointMap, KeystoneV3Internal, protocol] + - - get_param: [EndpointMap, KeystoneInternal, protocol] - :// - str_replace: template: - get_param: [EndpointMap, KeystoneV3Internal, host] + get_param: [EndpointMap, KeystoneInternal, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: KeystonePublicApiVirtualIP} - ':' - - get_param: [EndpointMap, KeystoneV3Internal, port] + - get_param: [EndpointMap, KeystoneInternal, port] KeystoneV3Public: host: str_replace: template: - get_param: [EndpointMap, KeystoneV3Public, host] + get_param: [EndpointMap, KeystonePublic, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: PublicVirtualIP} port: - get_param: [EndpointMap, KeystoneV3Public, port] + get_param: [EndpointMap, KeystonePublic, port] protocol: - get_param: [EndpointMap, KeystoneV3Public, protocol] + get_param: [EndpointMap, KeystonePublic, protocol] uri: list_join: - '' - - - get_param: [EndpointMap, KeystoneV3Public, protocol] + - - get_param: [EndpointMap, KeystonePublic, protocol] - :// - str_replace: template: - get_param: [EndpointMap, KeystoneV3Public, host] + get_param: [EndpointMap, KeystonePublic, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: PublicVirtualIP} - ':' - - get_param: [EndpointMap, KeystoneV3Public, port] + - get_param: [EndpointMap, KeystonePublic, port] - /v3 uri_no_suffix: list_join: - '' - - - get_param: [EndpointMap, KeystoneV3Public, protocol] + - - get_param: [EndpointMap, KeystonePublic, protocol] - :// - str_replace: template: - get_param: [EndpointMap, KeystoneV3Public, host] + get_param: [EndpointMap, KeystonePublic, host] params: CLOUDNAME: {get_param: CloudName} IP_ADDRESS: {get_param: PublicVirtualIP} - ':' - - get_param: [EndpointMap, KeystoneV3Public, port] + - get_param: [EndpointMap, KeystonePublic, port] NeutronAdmin: host: str_replace: diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml index 7b8d96f2..55cefc76 100644 --- a/overcloud-resource-registry-puppet.yaml +++ b/overcloud-resource-registry-puppet.yaml @@ -23,10 +23,10 @@ resource_registry: OS::TripleO::BootstrapNode::SoftwareConfig: puppet/bootstrap-config.yaml # Tasks (for internal TripleO usage) - OS::TripleO::Tasks::UpdateWorkflow: extraconfig/tasks/noop.yaml + OS::TripleO::Tasks::UpdateWorkflow: OS::Heat::None OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml - OS::TripleO::Tasks::ControllerPrePuppet: extraconfig/tasks/noop.yaml - OS::TripleO::Tasks::ControllerPostPuppet: extraconfig/tasks/noop.yaml + OS::TripleO::Tasks::ControllerPrePuppet: OS::Heat::None + OS::TripleO::Tasks::ControllerPostPuppet: OS::Heat::None # This creates the "heat-admin" user for all OS images by default # To disable, replace with firstboot/userdata_default.yaml diff --git a/overcloud.yaml b/overcloud.yaml index 3c2420c3..1d720cc6 100644 --- a/overcloud.yaml +++ b/overcloud.yaml @@ -1663,6 +1663,12 @@ outputs: SwiftInternalVip: description: VIP for Swift Proxy internal endpoint value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]} + EndpointMap: + description: | + Mapping of the resources with the needed info for their endpoints. + This includes the protocol used, the IP, port and also a full + representation of the URI. + value: {get_attr: [EndpointMap, endpoint_map]} HostsEntry: description: | The content that should be appended to your /etc/hosts if you want to get diff --git a/puppet/ceph-storage.yaml b/puppet/ceph-storage.yaml index d2988926..f26d07f7 100644 --- a/puppet/ceph-storage.yaml +++ b/puppet/ceph-storage.yaml @@ -313,12 +313,12 @@ outputs: str_replace: template: | PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST - EXTERNALIP EXTERNALHOST - INTERNAL_APIIP INTERNAL_APIHOST - STORAGEIP STORAGEHOST - STORAGE_MGMTIP STORAGE_MGMTHOST - TENANTIP TENANTHOST - MANAGEMENTIP MANAGEMENTHOST + EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST + INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST + STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST + STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST + TENANTIP TENANTHOST.DOMAIN TENANTHOST + MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST params: PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]} DOMAIN: {get_param: CloudDomain} @@ -326,37 +326,37 @@ outputs: EXTERNALIP: {get_attr: [ExternalPort, ip_address]} EXTERNALHOST: list_join: - - '-' + - '.' - - {get_attr: [CephStorage, name]} - external INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]} INTERNAL_APIHOST: list_join: - - '-' + - '.' - - {get_attr: [CephStorage, name]} - internalapi STORAGEIP: {get_attr: [StoragePort, ip_address]} STORAGEHOST: list_join: - - '-' + - '.' - - {get_attr: [CephStorage, name]} - storage STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]} STORAGE_MGMTHOST: list_join: - - '-' + - '.' - - {get_attr: [CephStorage, name]} - storagemgmt TENANTIP: {get_attr: [TenantPort, ip_address]} TENANTHOST: list_join: - - '-' + - '.' - - {get_attr: [CephStorage, name]} - tenant MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]} MANAGEMENTHOST: list_join: - - '-' + - '.' - - {get_attr: [CephStorage, name]} - management nova_server_resource: diff --git a/puppet/cinder-storage.yaml b/puppet/cinder-storage.yaml index b5694802..5b61e0b6 100644 --- a/puppet/cinder-storage.yaml +++ b/puppet/cinder-storage.yaml @@ -379,12 +379,12 @@ outputs: str_replace: template: | PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST - EXTERNALIP EXTERNALHOST - INTERNAL_APIIP INTERNAL_APIHOST - STORAGEIP STORAGEHOST - STORAGE_MGMTIP STORAGE_MGMTHOST - TENANTIP TENANTHOST - MANAGEMENTIP MANAGEMENTHOST + EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST + INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST + STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST + STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST + TENANTIP TENANTHOST.DOMAIN TENANTHOST + MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST params: PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]} DOMAIN: {get_param: CloudDomain} @@ -392,37 +392,37 @@ outputs: EXTERNALIP: {get_attr: [ExternalPort, ip_address]} EXTERNALHOST: list_join: - - '-' + - '.' - - {get_attr: [BlockStorage, name]} - external INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]} INTERNAL_APIHOST: list_join: - - '-' + - '.' - - {get_attr: [BlockStorage, name]} - internalapi STORAGEIP: {get_attr: [StoragePort, ip_address]} STORAGEHOST: list_join: - - '-' + - '.' - - {get_attr: [BlockStorage, name]} - storage STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]} STORAGE_MGMTHOST: list_join: - - '-' + - '.' - - {get_attr: [BlockStorage, name]} - storagemgmt TENANTIP: {get_attr: [TenantPort, ip_address]} TENANTHOST: list_join: - - '-' + - '.' - - {get_attr: [BlockStorage, name]} - tenant MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]} MANAGEMENTHOST: list_join: - - '-' + - '.' - - {get_attr: [BlockStorage, name]} - management nova_server_resource: diff --git a/puppet/compute.yaml b/puppet/compute.yaml index f5c848c8..6759d3b9 100644 --- a/puppet/compute.yaml +++ b/puppet/compute.yaml @@ -760,12 +760,12 @@ outputs: str_replace: template: | PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST - EXTERNALIP EXTERNALHOST - INTERNAL_APIIP INTERNAL_APIHOST - STORAGEIP STORAGEHOST - STORAGE_MGMTIP STORAGE_MGMTHOST - TENANTIP TENANTHOST - MANAGEMENTIP MANAGEMENTHOST + EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST + INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST + STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST + STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST + TENANTIP TENANTHOST.DOMAIN TENANTHOST + MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST params: PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]} DOMAIN: {get_param: CloudDomain} @@ -773,37 +773,37 @@ outputs: EXTERNALIP: {get_attr: [ExternalPort, ip_address]} EXTERNALHOST: list_join: - - '-' + - '.' - - {get_attr: [NovaCompute, name]} - external INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]} INTERNAL_APIHOST: list_join: - - '-' + - '.' - - {get_attr: [NovaCompute, name]} - internalapi STORAGEIP: {get_attr: [StoragePort, ip_address]} STORAGEHOST: list_join: - - '-' + - '.' - - {get_attr: [NovaCompute, name]} - storage STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]} STORAGE_MGMTHOST: list_join: - - '-' + - '.' - - {get_attr: [NovaCompute, name]} - storagemgmt TENANTIP: {get_attr: [TenantPort, ip_address]} TENANTHOST: list_join: - - '-' + - '.' - - {get_attr: [NovaCompute, name]} - tenant MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]} MANAGEMENTHOST: list_join: - - '-' + - '.' - - {get_attr: [NovaCompute, name]} - management nova_server_resource: diff --git a/puppet/controller.yaml b/puppet/controller.yaml index 5b0976ed..dca561fc 100644 --- a/puppet/controller.yaml +++ b/puppet/controller.yaml @@ -1654,12 +1654,12 @@ outputs: str_replace: template: | PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST - EXTERNALIP EXTERNALHOST - INTERNAL_APIIP INTERNAL_APIHOST - STORAGEIP STORAGEHOST - STORAGE_MGMTIP STORAGE_MGMTHOST - TENANTIP TENANTHOST - MANAGEMENTIP MANAGEMENTHOST + EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST + INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST + STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST + STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST + TENANTIP TENANTHOST.DOMAIN TENANTHOST + MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST params: PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]} DOMAIN: {get_param: CloudDomain} @@ -1667,37 +1667,37 @@ outputs: EXTERNALIP: {get_attr: [ExternalPort, ip_address]} EXTERNALHOST: list_join: - - '-' + - '.' - - {get_attr: [Controller, name]} - external INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]} INTERNAL_APIHOST: list_join: - - '-' + - '.' - - {get_attr: [Controller, name]} - internalapi STORAGEIP: {get_attr: [StoragePort, ip_address]} STORAGEHOST: list_join: - - '-' + - '.' - - {get_attr: [Controller, name]} - storage STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]} STORAGE_MGMTHOST: list_join: - - '-' + - '.' - - {get_attr: [Controller, name]} - storagemgmt TENANTIP: {get_attr: [TenantPort, ip_address]} TENANTHOST: list_join: - - '-' + - '.' - - {get_attr: [Controller, name]} - tenant MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]} MANAGEMENTHOST: list_join: - - '-' + - '.' - - {get_attr: [Controller, name]} - management nova_server_resource: diff --git a/puppet/swift-storage.yaml b/puppet/swift-storage.yaml index 8a4ea21f..ea226263 100644 --- a/puppet/swift-storage.yaml +++ b/puppet/swift-storage.yaml @@ -337,12 +337,12 @@ outputs: str_replace: template: | PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST - EXTERNALIP EXTERNALHOST - INTERNAL_APIIP INTERNAL_APIHOST - STORAGEIP STORAGEHOST - STORAGE_MGMTIP STORAGE_MGMTHOST - TENANTIP TENANTHOST - MANAGEMENTIP MANAGEMENTHOST + EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST + INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST + STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST + STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST + TENANTIP TENANTHOST.DOMAIN TENANTHOST + MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST params: PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]} DOMAIN: {get_param: CloudDomain} @@ -350,37 +350,37 @@ outputs: EXTERNALIP: {get_attr: [ExternalPort, ip_address]} EXTERNALHOST: list_join: - - '-' + - '.' - - {get_attr: [SwiftStorage, name]} - external INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]} INTERNAL_APIHOST: list_join: - - '-' + - '.' - - {get_attr: [SwiftStorage, name]} - internalapi STORAGEIP: {get_attr: [StoragePort, ip_address]} STORAGEHOST: list_join: - - '-' + - '.' - - {get_attr: [SwiftStorage, name]} - storage STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]} STORAGE_MGMTHOST: list_join: - - '-' + - '.' - - {get_attr: [SwiftStorage, name]} - storagemgmt TENANTIP: {get_attr: [TenantPort, ip_address]} TENANTHOST: list_join: - - '-' + - '.' - - {get_attr: [SwiftStorage, name]} - tenant MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]} MANAGEMENTHOST: list_join: - - '-' + - '.' - - {get_attr: [SwiftStorage, name]} - management nova_server_resource: |