Move nodes' fqdns to a map to remove clutter
authorJuan Antonio Osorio Robles <jaosorior@redhat.com>
Fri, 2 Dec 2016 08:33:16 +0000 (10:33 +0200)
committerJuan Antonio Osorio Robles <jaosorior@redhat.com>
Fri, 2 Dec 2016 10:45:27 +0000 (10:45 +0000)
There were several instances where the short-names/FQDNs where being
gotten in the same way in the role's templates. So this introduces a
mapping to get these values in order to reduce clutter.

Change-Id: Ie7df360bb69d56655f3e0fcbbf4d297db39b7a26

puppet/blockstorage-role.yaml
puppet/cephstorage-role.yaml
puppet/compute-role.yaml
puppet/controller-role.yaml
puppet/objectstorage-role.yaml
puppet/role.role.j2.yaml

index c9bf894..36587a4 100644 (file)
@@ -217,6 +217,96 @@ resources:
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
+  NetHostMap:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        external:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - external
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - external
+        internal_api:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - internalapi
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - internalapi
+        storage:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - storage
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - storage
+        storage_mgmt:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - storagemgmt
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - storagemgmt
+        tenant:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - tenant
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - tenant
+        management:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - management
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - management
+        ctlplane:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - ctlplane
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [BlockStorage, name]}
+              - ctlplane
+
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
@@ -266,42 +356,12 @@ resources:
           extraconfig: {get_param: ExtraConfig}
           volume:
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
-            fqdn_internal_api:
-              list_join:
-              - '.'
-              - - {get_attr: [BlockStorage, name]}
-                - internalapi
-                - {get_param: CloudDomain}
-            fqdn_storage:
-              list_join:
-              - '.'
-              - - {get_attr: [BlockStorage, name]}
-                - storage
-                - {get_param: CloudDomain}
-            fqdn_storage_mgmt:
-              list_join:
-              - '.'
-              - - {get_attr: [BlockStorage, name]}
-                - storagemgmt
-                - {get_param: CloudDomain}
-            fqdn_tenant:
-              list_join:
-              - '.'
-              - - {get_attr: [BlockStorage, name]}
-                - tenant
-                - {get_param: CloudDomain}
-            fqdn_management:
-              list_join:
-              - '.'
-              - - {get_attr: [BlockStorage, name]}
-                - management
-                - {get_param: CloudDomain}
-            fqdn_ctlplane:
-              list_join:
-              - '.'
-              - - {get_attr: [BlockStorage, name]}
-                - ctlplane
-                - {get_param: CloudDomain}
+            fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+            fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+            fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+            fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+            fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
+            fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
 
   # Resource for site-specific injection of root certificate
   NodeTLSCAData:
@@ -341,48 +401,13 @@ outputs:
   hostname_map:
     description: Mapping of network names to hostnames
     value:
-      external:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - external
-          - {get_param: CloudDomain}
-      internal_api:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - internalapi
-          - {get_param: CloudDomain}
-      storage:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - storage
-          - {get_param: CloudDomain}
-      storage_mgmt:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - storagemgmt
-          - {get_param: CloudDomain}
-      tenant:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - tenant
-          - {get_param: CloudDomain}
-      management:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - management
-          - {get_param: CloudDomain}
-      ctlplane:
-        list_join:
-        - '.'
-        - - {get_attr: [BlockStorage, name]}
-          - ctlplane
-          - {get_param: CloudDomain}
+      external: {get_attr: [NetHostMap, value, external, fqdn]}
+      internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+      storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+      storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+      tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+      management: {get_attr: [NetHostMap, value, management, fqdn]}
+      ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
   hosts_entry:
     value:
       str_replace:
@@ -400,47 +425,19 @@ outputs:
           DOMAIN: {get_param: CloudDomain}
           PRIMARYHOST: {get_attr: [BlockStorage, name]}
           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
-          EXTERNALHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - external
+          EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
-          INTERNAL_APIHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - internalapi
+          INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
           STORAGEIP: {get_attr: [StoragePort, ip_address]}
-          STORAGEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - storage
+          STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
-          STORAGE_MGMTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - storagemgmt
+          STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
           TENANTIP: {get_attr: [TenantPort, ip_address]}
-          TENANTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - tenant
+          TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
-          MANAGEMENTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - management
+          MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
           CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
-          CTLPLANEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [BlockStorage, name]}
-              - ctlplane
+          CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
   nova_server_resource:
     description: Heat resource handle for the block storage server
     value:
index 18787a2..558f97d 100644 (file)
@@ -223,6 +223,96 @@ resources:
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
+  NetHostMap:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        external:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - external
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - external
+        internal_api:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - internalapi
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - internalapi
+        storage:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - storage
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - storage
+        storage_mgmt:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - storagemgmt
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - storagemgmt
+        tenant:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - tenant
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - tenant
+        management:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - management
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - management
+        ctlplane:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - ctlplane
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [CephStorage, name]}
+              - ctlplane
+
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
@@ -271,42 +361,12 @@ resources:
           extraconfig: {get_param: ExtraConfig}
           ceph:
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
-            fqdn_internal_api:
-              list_join:
-              - '.'
-              - - {get_attr: [CephStorage, name]}
-                - internalapi
-                - {get_param: CloudDomain}
-            fqdn_storage:
-              list_join:
-              - '.'
-              - - {get_attr: [CephStorage, name]}
-                - storage
-                - {get_param: CloudDomain}
-            fqdn_storage_mgmt:
-              list_join:
-              - '.'
-              - - {get_attr: [CephStorage, name]}
-                - storagemgmt
-                - {get_param: CloudDomain}
-            fqdn_tenant:
-              list_join:
-              - '.'
-              - - {get_attr: [CephStorage, name]}
-                - tenant
-                - {get_param: CloudDomain}
-            fqdn_management:
-              list_join:
-              - '.'
-              - - {get_attr: [CephStorage, name]}
-                - management
-                - {get_param: CloudDomain}
-            fqdn_ctlplane:
-              list_join:
-              - '.'
-              - - {get_attr: [CephStorage, name]}
-                - ctlplane
-                - {get_param: CloudDomain}
+            fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+            fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+            fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+            fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+            fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
+            fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
 
   # Resource for site-specific injection of root certificate
   NodeTLSCAData:
@@ -352,48 +412,13 @@ outputs:
   hostname_map:
     description: Mapping of network names to hostnames
     value:
-      external:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - external
-          - {get_param: CloudDomain}
-      internal_api:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - internalapi
-          - {get_param: CloudDomain}
-      storage:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - storage
-          - {get_param: CloudDomain}
-      storage_mgmt:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - storagemgmt
-          - {get_param: CloudDomain}
-      tenant:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - tenant
-          - {get_param: CloudDomain}
-      management:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - management
-          - {get_param: CloudDomain}
-      ctlplane:
-        list_join:
-        - '.'
-        - - {get_attr: [CephStorage, name]}
-          - ctlplane
-          - {get_param: CloudDomain}
+      external: {get_attr: [NetHostMap, value, external, fqdn]}
+      internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+      storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+      storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+      tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+      management: {get_attr: [NetHostMap, value, management, fqdn]}
+      ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
   hosts_entry:
     value:
       str_replace:
@@ -411,47 +436,19 @@ outputs:
           DOMAIN: {get_param: CloudDomain}
           PRIMARYHOST: {get_attr: [CephStorage, name]}
           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
-          EXTERNALHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - external
+          EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
-          INTERNAL_APIHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - internalapi
+          INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
           STORAGEIP: {get_attr: [StoragePort, ip_address]}
-          STORAGEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - storage
+          STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
-          STORAGE_MGMTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - storagemgmt
+          STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
           TENANTIP: {get_attr: [TenantPort, ip_address]}
-          TENANTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - tenant
+          TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
-          MANAGEMENTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - management
+          MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
           CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
-          CTLPLANEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [CephStorage, name]}
-              - ctlplane
+          CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
   nova_server_resource:
     description: Heat resource handle for the ceph storage server
     value:
index f359bf7..818f18c 100644 (file)
@@ -226,6 +226,96 @@ resources:
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
+  NetHostMap:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        external:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - external
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - external
+        internal_api:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - internalapi
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - internalapi
+        storage:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - storage
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - storage
+        storage_mgmt:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - storagemgmt
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - storagemgmt
+        tenant:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - tenant
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - tenant
+        management:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - management
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - management
+        ctlplane:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - ctlplane
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - ctlplane
+
   NetworkConfig:
     type: OS::TripleO::Compute::Net::SoftwareConfig
     properties:
@@ -284,42 +374,12 @@ resources:
           extraconfig: {get_param: ExtraConfig}
           compute:
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
-            fqdn_internal_api:
-              list_join:
-              - '.'
-              - - {get_attr: [NovaCompute, name]}
-                - internalapi
-                - {get_param: CloudDomain}
-            fqdn_storage:
-              list_join:
-              - '.'
-              - - {get_attr: [NovaCompute, name]}
-                - storage
-                - {get_param: CloudDomain}
-            fqdn_storage_mgmt:
-              list_join:
-              - '.'
-              - - {get_attr: [NovaCompute, name]}
-                - storagemgmt
-                - {get_param: CloudDomain}
-            fqdn_tenant:
-              list_join:
-              - '.'
-              - - {get_attr: [NovaCompute, name]}
-                - tenant
-                - {get_param: CloudDomain}
-            fqdn_management:
-              list_join:
-              - '.'
-              - - {get_attr: [NovaCompute, name]}
-                - management
-                - {get_param: CloudDomain}
-            fqdn_ctlplane:
-              list_join:
-              - '.'
-              - - {get_attr: [NovaCompute, name]}
-                - ctlplane
-                - {get_param: CloudDomain}
+            fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+            fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+            fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+            fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+            fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
+            fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
 
   NovaComputeDeployment:
     type: OS::TripleO::SoftwareDeployment
@@ -394,48 +454,13 @@ outputs:
   hostname_map:
     description: Mapping of network names to hostnames
     value:
-      external:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - external
-          - {get_param: CloudDomain}
-      internal_api:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - internalapi
-          - {get_param: CloudDomain}
-      storage:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - storage
-          - {get_param: CloudDomain}
-      storage_mgmt:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - storagemgmt
-          - {get_param: CloudDomain}
-      tenant:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - tenant
-          - {get_param: CloudDomain}
-      management:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - management
-          - {get_param: CloudDomain}
-      ctlplane:
-        list_join:
-        - '.'
-        - - {get_attr: [NovaCompute, name]}
-          - ctlplane
-          - {get_param: CloudDomain}
+      external: {get_attr: [NetHostMap, value, external, fqdn]}
+      internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+      storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+      storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+      tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+      management: {get_attr: [NetHostMap, value, management, fqdn]}
+      ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
   hosts_entry:
     description: >
       Server's IP address and hostname in the /etc/hosts format
@@ -455,47 +480,19 @@ outputs:
           DOMAIN: {get_param: CloudDomain}
           PRIMARYHOST: {get_attr: [NovaCompute, name]}
           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
-          EXTERNALHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - external
+          EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
-          INTERNAL_APIHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - internalapi
+          INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
           STORAGEIP: {get_attr: [StoragePort, ip_address]}
-          STORAGEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - storage
+          STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
-          STORAGE_MGMTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - storagemgmt
+          STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
           TENANTIP: {get_attr: [TenantPort, ip_address]}
-          TENANTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - tenant
+          TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
-          MANAGEMENTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - management
+          MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
           CTLPLANEIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
-          CTLPLANEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [NovaCompute, name]}
-              - ctlplane
+          CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
   nova_server_resource:
     description: Heat resource handle for the Nova compute server
     value:
index 77b54ff..2781daa 100644 (file)
@@ -245,6 +245,96 @@ resources:
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
+  NetHostMap:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        external:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - external
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - external
+        internal_api:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - internalapi
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - internalapi
+        storage:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - storage
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - storage
+        storage_mgmt:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - storagemgmt
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - storagemgmt
+        tenant:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - tenant
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - tenant
+        management:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - management
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - management
+        ctlplane:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - ctlplane
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Controller, name]}
+              - ctlplane
+
   NetworkConfig:
     type: OS::TripleO::Controller::Net::SoftwareConfig
     properties:
@@ -344,42 +434,12 @@ resources:
             # Misc
             tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
-            fqdn_internal_api:
-              list_join:
-              - '.'
-              - - {get_attr: [Controller, name]}
-                - internalapi
-                - {get_param: CloudDomain}
-            fqdn_storage:
-              list_join:
-              - '.'
-              - - {get_attr: [Controller, name]}
-                - storage
-                - {get_param: CloudDomain}
-            fqdn_storage_mgmt:
-              list_join:
-              - '.'
-              - - {get_attr: [Controller, name]}
-                - storagemgmt
-                - {get_param: CloudDomain}
-            fqdn_tenant:
-              list_join:
-              - '.'
-              - - {get_attr: [Controller, name]}
-                - tenant
-                - {get_param: CloudDomain}
-            fqdn_management:
-              list_join:
-              - '.'
-              - - {get_attr: [Controller, name]}
-                - management
-                - {get_param: CloudDomain}
-            fqdn_ctlplane:
-              list_join:
-              - '.'
-              - - {get_attr: [Controller, name]}
-                - ctlplane
-                - {get_param: CloudDomain}
+            fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+            fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+            fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+            fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+            fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
+            fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
 
   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
   ControllerExtraConfigPre:
@@ -437,48 +497,13 @@ outputs:
   hostname_map:
     description: Mapping of network names to hostnames
     value:
-      external:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - external
-          - {get_param: CloudDomain}
-      internal_api:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - internalapi
-          - {get_param: CloudDomain}
-      storage:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - storage
-          - {get_param: CloudDomain}
-      storage_mgmt:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - storagemgmt
-          - {get_param: CloudDomain}
-      tenant:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - tenant
-          - {get_param: CloudDomain}
-      management:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - management
-          - {get_param: CloudDomain}
-      ctlplane:
-        list_join:
-        - '.'
-        - - {get_attr: [Controller, name]}
-          - ctlplane
-          - {get_param: CloudDomain}
+      external: {get_attr: [NetHostMap, value, external, fqdn]}
+      internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+      storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+      storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+      tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+      management: {get_attr: [NetHostMap, value, management, fqdn]}
+      ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
   hosts_entry:
     description: >
       Server's IP address and hostname in the /etc/hosts format
@@ -498,47 +523,19 @@ outputs:
           DOMAIN: {get_param: CloudDomain}
           PRIMARYHOST: {get_attr: [Controller, name]}
           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
-          EXTERNALHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - external
+          EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
-          INTERNAL_APIHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - internalapi
+          INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
           STORAGEIP: {get_attr: [StoragePort, ip_address]}
-          STORAGEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - storage
+          STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
-          STORAGE_MGMTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - storagemgmt
+          STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
           TENANTIP: {get_attr: [TenantPort, ip_address]}
-          TENANTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - tenant
+          TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
-          MANAGEMENTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - management
+          MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
           CTLPLANEIP: {get_attr: [Controller, networks, ctlplane, 0]}
-          CTLPLANEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [Controller, name]}
-              - ctlplane
+          CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
   nova_server_resource:
     description: Heat resource handle for the Nova compute server
     value:
index 60c12c3..40cd757 100644 (file)
@@ -217,6 +217,96 @@ resources:
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
+  NetHostMap:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        external:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [Swiftexternal, name]}
+              - external
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [Swiftexternal, name]}
+              - external
+        internal_api:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - internalapi
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - internalapi
+        storage:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - storage
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - storage
+        storage_mgmt:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - storagemgmt
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - storagemgmt
+        tenant:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - tenant
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - tenant
+        management:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - management
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - management
+        ctlplane:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - ctlplane
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [SwiftStorage, name]}
+              - ctlplane
+
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
@@ -255,43 +345,12 @@ resources:
           extraconfig: {get_param: ExtraConfig}
           object:
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
-            fqdn_internal_api:
-              list_join:
-              - '.'
-              - - {get_attr: [SwiftStorage, name]}
-                - internalapi
-                - {get_param: CloudDomain}
-            fqdn_storage:
-              list_join:
-              - '.'
-              - - {get_attr: [SwiftStorage, name]}
-                - storage
-                - {get_param: CloudDomain}
-            fqdn_storage_mgmt:
-              list_join:
-              - '.'
-              - - {get_attr: [SwiftStorage, name]}
-                - storagemgmt
-                - {get_param: CloudDomain}
-            fqdn_tenant:
-              list_join:
-              - '.'
-              - - {get_attr: [SwiftStorage, name]}
-                - tenant
-                - {get_param: CloudDomain}
-            fqdn_management:
-              list_join:
-              - '.'
-              - - {get_attr: [SwiftStorage, name]}
-                - management
-                - {get_param: CloudDomain}
-            fqdn_ctlplane:
-              list_join:
-              - '.'
-              - - {get_attr: [SwiftStorage, name]}
-                - ctlplane
-                - {get_param: CloudDomain}
-
+            fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+            fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+            fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+            fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+            fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
+            fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
 
   SwiftStorageHieraDeploy:
     type: OS::Heat::StructuredDeployment
@@ -340,48 +399,13 @@ outputs:
   hostname_map:
     description: Mapping of network names to hostnames
     value:
-      external:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - external
-          - {get_param: CloudDomain}
-      internal_api:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - internalapi
-          - {get_param: CloudDomain}
-      storage:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - storage
-          - {get_param: CloudDomain}
-      storage_mgmt:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - storagemgmt
-          - {get_param: CloudDomain}
-      tenant:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - tenant
-          - {get_param: CloudDomain}
-      management:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - management
-          - {get_param: CloudDomain}
-      ctlplane:
-        list_join:
-        - '.'
-        - - {get_attr: [SwiftStorage, name]}
-          - ctlplane
-          - {get_param: CloudDomain}
+      external: {get_attr: [NetHostMap, value, external, fqdn]}
+      internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+      storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+      storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+      tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+      management: {get_attr: [NetHostMap, value, management, fqdn]}
+      ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
   hosts_entry:
     value:
       str_replace:
@@ -399,47 +423,19 @@ outputs:
           DOMAIN: {get_param: CloudDomain}
           PRIMARYHOST: {get_attr: [SwiftStorage, name]}
           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
-          EXTERNALHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - external
+          EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
-          INTERNAL_APIHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - internalapi
+          INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
           STORAGEIP: {get_attr: [StoragePort, ip_address]}
-          STORAGEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - storage
+          STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
-          STORAGE_MGMTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - storagemgmt
+          STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
           TENANTIP: {get_attr: [TenantPort, ip_address]}
-          TENANTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - tenant
+          TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
-          MANAGEMENTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - management
+          MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
           CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
-          CTLPLANEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [SwiftStorage, name]}
-              - ctlplane
+          CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
   nova_server_resource:
     description: Heat resource handle for the swift storage server
     value:
index 587ff58..9726d97 100644 (file)
@@ -235,6 +235,96 @@ resources:
       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
+  NetHostMap:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        external:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - external
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - external
+        internal_api:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - internalapi
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - internalapi
+        storage:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - storage
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - storage
+        storage_mgmt:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - storagemgmt
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - storagemgmt
+        tenant:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - tenant
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - tenant
+        management:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - management
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - management
+        ctlplane:
+          fqdn:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - ctlplane
+              - {get_param: CloudDomain}
+          short:
+            list_join:
+            - '.'
+            - - {get_attr: [{{role}}, name]}
+              - ctlplane
+
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
@@ -285,42 +375,12 @@ resources:
             tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
             tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
             tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
-            fqdn_internal_api:
-              list_join:
-              - '.'
-              - - {get_attr: [{{role}}, name]}
-                - internalapi
-                - {get_param: CloudDomain}
-            fqdn_storage:
-              list_join:
-              - '.'
-              - - {get_attr: [{{role}}, name]}
-                - storage
-                - {get_param: CloudDomain}
-            fqdn_storage_mgmt:
-              list_join:
-              - '.'
-              - - {get_attr: [{{role}}, name]}
-                - storagemgmt
-                - {get_param: CloudDomain}
-            fqdn_tenant:
-              list_join:
-              - '.'
-              - - {get_attr: [{{role}}, name]}
-                - tenant
-                - {get_param: CloudDomain}
-            fqdn_management:
-              list_join:
-              - '.'
-              - - {get_attr: [{{role}}, name]}
-                - management
-                - {get_param: CloudDomain}
-            fqdn_ctlplane:
-              list_join:
-              - '.'
-              - - {get_attr: [{{role}}, name]}
-                - ctlplane
-                - {get_param: CloudDomain}
+            fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+            fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+            fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+            fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+            fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
+            fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
 
   # Resource for site-specific injection of root certificate
   NodeTLSCAData:
@@ -366,48 +426,13 @@ outputs:
   hostname_map:
     description: Mapping of network names to hostnames
     value:
-      external:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - external
-          - {get_param: CloudDomain}
-      internal_api:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - internalapi
-          - {get_param: CloudDomain}
-      storage:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - storage
-          - {get_param: CloudDomain}
-      storage_mgmt:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - storagemgmt
-          - {get_param: CloudDomain}
-      tenant:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - tenant
-          - {get_param: CloudDomain}
-      management:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - management
-          - {get_param: CloudDomain}
-      ctlplane:
-        list_join:
-        - '.'
-        - - {get_attr: [{{role}}, name]}
-          - ctlplane
-          - {get_param: CloudDomain}
+      external: {get_attr: [NetHostMap, value, external, fqdn]}
+      internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
+      storage: {get_attr: [NetHostMap, value, storage, fqdn]}
+      storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
+      tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
+      management: {get_attr: [NetHostMap, value, management, fqdn]}
+      ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
   hosts_entry:
     value:
       str_replace:
@@ -425,47 +450,19 @@ outputs:
           DOMAIN: {get_param: CloudDomain}
           PRIMARYHOST: {get_attr: [{{role}}, name]}
           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
-          EXTERNALHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - external
+          EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
-          INTERNAL_APIHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - internalapi
+          INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
           STORAGEIP: {get_attr: [StoragePort, ip_address]}
-          STORAGEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - storage
+          STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
-          STORAGE_MGMTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - storagemgmt
+          STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
           TENANTIP: {get_attr: [TenantPort, ip_address]}
-          TENANTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - tenant
+          TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
-          MANAGEMENTHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - management
+          MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
           CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
-          CTLPLANEHOST:
-            list_join:
-            - '.'
-            - - {get_attr: [{{role}}, name]}
-              - ctlplane
+          CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
   nova_server_resource:
     description: Heat resource handle for {{role}} server
     value: