Merge "Stop using puppet to configure VIPs in /etc/hosts"
[apex-tripleo-heat-templates.git] / overcloud.j2.yaml
index 64bed27..ba1c6b3 100644 (file)
@@ -170,9 +170,50 @@ parameters:
     description: >
       Setting this to a unique value will re-run any deployment tasks which
       perform configuration on a Heat stack-update.
+  AddVipsToEtcHosts:
+    default: True
+    type: boolean
+    description: >
+      Set to true to append per network Vips to /etc/hosts on each node.
+
+conditions:
+  add_vips_to_etc_hosts: {equals : [{get_param: AddVipsToEtcHosts}, True]}
 
 resources:
 
+  VipHosts:
+    type: OS::Heat::Value
+    properties:
+      type: string
+      value:
+        list_join:
+        - '\n'
+        - - str_replace:
+              template: IP  HOST
+              params:
+                IP: {get_attr: [VipMap, net_ip_map, external]}
+                HOST: {get_param: CloudName}
+          - str_replace:
+              template: IP  HOST
+              params:
+                IP: {get_attr: [VipMap, net_ip_map, ctlplane]}
+                HOST: {get_param: CloudNameCtlplane}
+          - str_replace:
+              template: IP  HOST
+              params:
+                IP: {get_attr: [VipMap, net_ip_map, internal_api]}
+                HOST: {get_param: CloudNameInternal}
+          - str_replace:
+              template: IP  HOST
+              params:
+                IP: {get_attr: [VipMap, net_ip_map, storage]}
+                HOST: {get_param: CloudNameStorage}
+          - str_replace:
+              template: IP  HOST
+              params:
+                IP: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
+                HOST: {get_param: CloudNameStorageManagement}
+
   HeatAuthEncryptionKey:
     type: OS::Heat::RandomString
 
@@ -310,7 +351,7 @@ resources:
               # - The outer one filters the map based on the services enabled for the role
               #   then merges the result into one map.
               - yaql:
-                  expression: let(root => $) -> $.data.map.items().where($[0] in $root.data.services).select($[1]).reduce($1.mergeWith($2), {})
+                  expression: let(root => $) -> $.data.map.items().where($[0] in coalesce($root.data.services, [])).select($[1]).reduce($1.mergeWith($2), {})
                   data:
                     map:
                       yaql:
@@ -328,8 +369,15 @@ resources:
     type: OS::TripleO::Hosts::SoftwareConfig
     properties:
       hosts:
+        list_join:
+        - '\n'
+        - - if:
+            - add_vips_to_etc_hosts
+            - {get_attr: [VipHosts, value]}
+            - ''
+        -
 {% for role in roles %}
-        - list_join:
+          - list_join:
             - '\n'
             - {get_attr: [{{role.name}}, hosts_entry]}
 {% endfor %}
@@ -542,8 +590,8 @@ resources:
   # Post deployment steps for all roles
   AllNodesDeploySteps:
     type: OS::TripleO::PostDeploySteps
-{% for role in roles %}
     depends_on:
+{% for role in roles %}
       - {{role.name}}AllNodesDeployment
 {% endfor %}
     properties:
@@ -581,32 +629,7 @@ outputs:
       list_join:
       - "\n"
       - - {get_attr: [hostsConfig, hosts_entries]}
-      -
-        - str_replace:
-            template: IP  HOST
-            params:
-              IP: {get_attr: [VipMap, net_ip_map, external]}
-              HOST: {get_param: CloudName}
-        - str_replace:
-            template: IP  HOST
-            params:
-              IP: {get_attr: [VipMap, net_ip_map, ctlplane]}
-              HOST: {get_param: CloudNameCtlplane}
-        - str_replace:
-            template: IP  HOST
-            params:
-              IP: {get_attr: [VipMap, net_ip_map, internal_api]}
-              HOST: {get_param: CloudNameInternal}
-        - str_replace:
-            template: IP  HOST
-            params:
-              IP: {get_attr: [VipMap, net_ip_map, storage]}
-              HOST: {get_param: CloudNameStorage}
-        - str_replace:
-            template: IP  HOST
-            params:
-              IP: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
-              HOST: {get_param: CloudNameStorageManagement}
+      - - {get_attr: [VipHosts, value]}
   EnabledServices:
     description: The services enabled on each role
     value: