Prepare for LVM based VCP

This patch adds metadata needed to setup partitions on
VCP with LVM.

The new param 'image_layout' is added to salt:control:size:<size_name>
This is metadata that describes partition layout of VCP.

For now VCP has predefined list of partitions see
https://gerrit.mcp.mirantis.com/#/c/30862/

image_layout defines sizes for each of partitions that should be
applied after VCP is provisioned. The resizing will be done by
growlvmp.py script placed on VCP
https://gerrit.mcp.mirantis.com/#/c/31052/

The default layout:

  image_layout:
    root:
      size: '30%VG'     # 30% of VG total size
    home:
      size: '1G'        # fixed size 1G
    var_log:
      size: '11%VG'     # 11% of VG total size
    var_log_audit:
      size: '5G'        # fixed size 5G
    var_tmp:
      size: '11%VG'     # 11% of VG total size
    tmp:
      size: '5G'        # fixed size 5G

Related-Prod: PROD-24537

Change-Id: I18205dfa8478be2ae092a87ced833c8ab0cc01ea
diff --git a/salt/control/cluster/ceph_mon_cluster.yml b/salt/control/cluster/ceph_mon_cluster.yml
index c94adaf..669dc30 100644
--- a/salt/control/cluster/ceph_mon_cluster.yml
+++ b/salt/control/cluster/ceph_mon_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     ceph_mon_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_ceph_mon:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:ceph.mon:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 32768
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_ceph_mon}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:ceph_mon_backend_image}
               size: ceph.mon
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_ceph_mon}
             cmn02:
               name: ${_param:ceph_mon_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:ceph_mon_backend_image}
               size: ceph.mon
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_ceph_mon}
             cmn03:
               name: ${_param:ceph_mon_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:ceph_mon_backend_image}
               size: ceph.mon
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_ceph_mon}
diff --git a/salt/control/cluster/ceph_rgw_cluster.yml b/salt/control/cluster/ceph_rgw_cluster.yml
index fe1e734..20dd3ed 100644
--- a/salt/control/cluster/ceph_rgw_cluster.yml
+++ b/salt/control/cluster/ceph_rgw_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     ceph_rgw_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_ceph_rgw:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:ceph.rgw:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 32768
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_ceph_rgw}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:ceph_rgw_backend_image}
               size: ceph.rgw
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_ceph_rgw}
             rgw02:
               name: ${_param:ceph_rgw_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:ceph_rgw_backend_image}
               size: ceph.rgw
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_ceph_rgw}
             rgw03:
               name: ${_param:ceph_rgw_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:ceph_rgw_backend_image}
               size: ceph.rgw
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_ceph_rgw}
diff --git a/salt/control/cluster/cicd_control_cluster.yml b/salt/control/cluster/cicd_control_cluster.yml
index a1bb8fe..df061e9 100644
--- a/salt/control/cluster/cicd_control_cluster.yml
+++ b/salt/control/cluster/cicd_control_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     cicd_control_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_cicd_control:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:cicd.control:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 32768
           disk_profile: large
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid02:
               name: ${_param:cicd_control_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid03:
               name: ${_param:cicd_control_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
diff --git a/salt/control/cluster/infra_idm_cluster.yml b/salt/control/cluster/infra_idm_cluster.yml
index f322910..7e9b481 100644
--- a/salt/control/cluster/infra_idm_cluster.yml
+++ b/salt/control/cluster/infra_idm_cluster.yml
@@ -2,6 +2,13 @@
   _param:
     salt_control_centos7_image_backend: /var/lib/libvirt/images/backends/centos7.qcow2
     infra_idm_backend_image: ${_param:salt_control_centos7_image_backend}
+    salt_control_cluster_node_cloud_init_infra_idm:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.idm:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -10,6 +17,7 @@
           ram: 8192
           disk_profile: large
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_idm}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -21,15 +29,18 @@
               image: ${_param:salt_control_centos7_image}
               backend: ${_param:infra_idm_backend_image}
               size: infra.idm
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_idm}
             idm02:
               name: ${_param:infra_idm_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               backend: ${_param:infra_idm_backend_image}
               size: infra.idm
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_idm}
             idm03:
               name: ${_param:infra_idm_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               backend: ${_param:infra_idm_backend_image}
               size: infra.idm
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_idm}
diff --git a/salt/control/cluster/infra_integration_single.yml b/salt/control/cluster/infra_integration_single.yml
index 9b7be90..0003441 100644
--- a/salt/control/cluster/infra_integration_single.yml
+++ b/salt/control/cluster/infra_integration_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     infra_integration_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_infra_integration:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.intergration:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_integration}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:infra_integration_backend_image}
               size: infra.integration
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_integration}
diff --git a/salt/control/cluster/infra_maas_single.yml b/salt/control/cluster/infra_maas_single.yml
index 012d18c..4654670 100644
--- a/salt/control/cluster/infra_maas_single.yml
+++ b/salt/control/cluster/infra_maas_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     infra_maas_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_infra_maas:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.maas:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_maas}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,4 +28,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:infra_maas_backend_image}
               size: infra.maas
-
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_maas}
diff --git a/salt/control/cluster/infra_proxy_cluster.yml b/salt/control/cluster/infra_proxy_cluster.yml
index 16c77f9..6d4b25b 100644
--- a/salt/control/cluster/infra_proxy_cluster.yml
+++ b/salt/control/cluster/infra_proxy_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     infra_proxy_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_infra_proxy:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.proxy:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_proxy}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,9 +28,11 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:infra_proxy_backend_image}
               size: infra.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_proxy}
             prx02:
               name: ${_param:openstack_proxy_node01_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:infra_proxy_backend_image}
               size: infra.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_proxy}
diff --git a/salt/control/cluster/infra_proxy_single.yml b/salt/control/cluster/infra_proxy_single.yml
index 1b6f4d7..fe6c710 100644
--- a/salt/control/cluster/infra_proxy_single.yml
+++ b/salt/control/cluster/infra_proxy_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     infra_proxy_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_infra_proxy:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.proxy:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_proxy}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:infra_proxy_backend_image}
               size: infra.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_proxy}
diff --git a/salt/control/cluster/infra_storage_single.yml b/salt/control/cluster/infra_storage_single.yml
index e2d863d..b119b26 100644
--- a/salt/control/cluster/infra_storage_single.yml
+++ b/salt/control/cluster/infra_storage_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     infra_storage_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_infra_storage:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.storage:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: xxxlarge
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_storage}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -19,3 +27,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:infra_storage_backend_image}
               size: infra.storage
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_storage}
diff --git a/salt/control/cluster/infra_version_control_single.yml b/salt/control/cluster/infra_version_control_single.yml
index 0b1dbee..a77f959 100644
--- a/salt/control/cluster/infra_version_control_single.yml
+++ b/salt/control/cluster/infra_version_control_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     infra_version_control_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_infra_version_control:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.version_control:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_version_control}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -19,3 +27,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:infra_version_control_backend_image}
               size: infra.version_control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_version_control}
diff --git a/salt/control/cluster/kubernetes_control_cluster.yml b/salt/control/cluster/kubernetes_control_cluster.yml
index f37160e..4ea65b5 100644
--- a/salt/control/cluster/kubernetes_control_cluster.yml
+++ b/salt/control/cluster/kubernetes_control_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     kubernetes_control_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_kubernetes_control:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:kubernetes.control:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_kubernetes_control}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:kubernetes_control_backend_image}
               size: kubernetes.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_kubernetes_control}
             ctl02:
               name: ${_param:kubernetes_control_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:kubernetes_control_backend_image}
               size: kubernetes.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_kubernetes_control}
             ctl03:
               name: ${_param:kubernetes_control_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:kubernetes_control_backend_image}
               size: kubernetes.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_kubernetes_control}
diff --git a/salt/control/cluster/kubernetes_proxy_cluster.yml b/salt/control/cluster/kubernetes_proxy_cluster.yml
index 17dc02c..35e559c 100644
--- a/salt/control/cluster/kubernetes_proxy_cluster.yml
+++ b/salt/control/cluster/kubernetes_proxy_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     kubernetes_proxy_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_kubernetes_proxy:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:kubernetes.proxy:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 4096
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_kubernetes_proxy}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,10 +28,12 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:kubernetes_proxy_backend_image}
               size: kubernetes.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_kubernetes_proxy}
             prx02:
               name: ${_param:kubernetes_proxy_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:kubernetes_proxy_backend_image}
               size: kubernetes.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_kubernetes_proxy}
 
diff --git a/salt/control/cluster/opencontrail_analytics_cluster.yml b/salt/control/cluster/opencontrail_analytics_cluster.yml
index 67056b9..4652ce2 100644
--- a/salt/control/cluster/opencontrail_analytics_cluster.yml
+++ b/salt/control/cluster/opencontrail_analytics_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     opencontrail_analytics_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_opencontrail_analytics:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:opencontrail.analytics:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal02:
               name: ${_param:opencontrail_analytics_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal03:
               name: ${_param:opencontrail_analytics_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
diff --git a/salt/control/cluster/opencontrail_control_cluster.yml b/salt/control/cluster/opencontrail_control_cluster.yml
index b3a5c63..2f73d1f 100644
--- a/salt/control/cluster/opencontrail_control_cluster.yml
+++ b/salt/control/cluster/opencontrail_control_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     opencontrail_control_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_opencontrail_control:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:opencontrail.control:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:opencontrail_control_backend_image}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw02:
               name: ${_param:opencontrail_control_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:opencontrail_control_backend_image}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw03:
               name: ${_param:opencontrail_control_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:opencontrail_control_backend_image}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
diff --git a/salt/control/cluster/openstack_barbican_cluster.yml b/salt/control/cluster/openstack_barbican_cluster.yml
index 1e1f5c7..ed82bd4 100644
--- a/salt/control/cluster/openstack_barbican_cluster.yml
+++ b/salt/control/cluster/openstack_barbican_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_barbican_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_barbican:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.barbican:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: large
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_barbican}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_barbican_backend_image}
               size: openstack.barbican
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_barbican}
             kmn02:
               name: ${_param:openstack_barbican_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_barbican_backend_image}
               size: openstack.barbican
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_barbican}
             kmn03:
               name: ${_param:openstack_barbican_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_barbican_backend_image}
               size: openstack.barbican
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_barbican}
diff --git a/salt/control/cluster/openstack_baremetal_cluster.yml b/salt/control/cluster/openstack_baremetal_cluster.yml
index 591a4db..faad1e9 100644
--- a/salt/control/cluster/openstack_baremetal_cluster.yml
+++ b/salt/control/cluster/openstack_baremetal_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_baremetal_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_baremetal:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.baremetal:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_baremetal_backend_image}
               size: openstack.baremetal
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_baremetal}
             bmt02:
               name: ${_param:openstack_baremetal_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_baremetal_backend_image}
               size: openstack.baremetal
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_baremetal}
             bmt03:
               name: ${_param:openstack_baremetal_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_baremetal_backend_image}
               size: openstack.baremetal
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_baremetal}
diff --git a/salt/control/cluster/openstack_baremetal_single.yml b/salt/control/cluster/openstack_baremetal_single.yml
index eb30d2e..59d2c51 100644
--- a/salt/control/cluster/openstack_baremetal_single.yml
+++ b/salt/control/cluster/openstack_baremetal_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_baremetal_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_baremetal:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.baremetal:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_baremetal_backend_image}
               size: openstack.baremetal
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_baremetal}
diff --git a/salt/control/cluster/openstack_benchmark_single.yml b/salt/control/cluster/openstack_benchmark_single.yml
index 43ea18f..c8223cc 100644
--- a/salt/control/cluster/openstack_benchmark_single.yml
+++ b/salt/control/cluster/openstack_benchmark_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_benchmark_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_benchmark:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.benchmark:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 4096
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_cluster_node_image_layout_openstack_benchmark}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_benchmark_backend_image}
               size: openstack.benchmark
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_benchmark}
diff --git a/salt/control/cluster/openstack_billing_single.yml b/salt/control/cluster/openstack_billing_single.yml
index 33ef104..9853725 100644
--- a/salt/control/cluster/openstack_billing_single.yml
+++ b/salt/control/cluster/openstack_billing_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_billing_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_billing:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.billing:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: large
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_billing}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -18,4 +26,5 @@
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_billing_backend_image}
-              size: openstack.control
+              size: openstack.billing
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_billing}
diff --git a/salt/control/cluster/openstack_control_cluster.yml b/salt/control/cluster/openstack_control_cluster.yml
index f1c872e..367041a 100644
--- a/salt/control/cluster/openstack_control_cluster.yml
+++ b/salt/control/cluster/openstack_control_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_control_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_control:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.control:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_control_backend_image}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl02:
               name: ${_param:openstack_control_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_control_backend_image}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl03:
               name: ${_param:openstack_control_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_control_backend_image}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
diff --git a/salt/control/cluster/openstack_database_cluster.yml b/salt/control/cluster/openstack_database_cluster.yml
index c509f18..cee9ff8 100644
--- a/salt/control/cluster/openstack_database_cluster.yml
+++ b/salt/control/cluster/openstack_database_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_database_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_database:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.database:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_database_backend_image}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs02:
               name: ${_param:openstack_database_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_database_backend_image}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs03:
               name: ${_param:openstack_database_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_database_backend_image}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
diff --git a/salt/control/cluster/openstack_dns_cluster.yml b/salt/control/cluster/openstack_dns_cluster.yml
index dd73b75..62120d0 100644
--- a/salt/control/cluster/openstack_dns_cluster.yml
+++ b/salt/control/cluster/openstack_dns_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_dns_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_dns:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.dns:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 4096
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_dns}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,9 +28,11 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_dns_backend_image}
               size: openstack.dns
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_dns}
             dns02:
               name: ${_param:openstack_dns_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_dns_backend_image}
               size: openstack.dns
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_dns}
diff --git a/salt/control/cluster/openstack_gateway_cluster.yml b/salt/control/cluster/openstack_gateway_cluster.yml
index 1bc35c2..dd64751 100644
--- a/salt/control/cluster/openstack_gateway_cluster.yml
+++ b/salt/control/cluster/openstack_gateway_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_gateway_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_gateway:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.gateway:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_gateway}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw02:
               name: ${_param:openstack_gateway_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw03:
               name: ${_param:openstack_gateway_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
diff --git a/salt/control/cluster/openstack_gateway_single.yml b/salt/control/cluster/openstack_gateway_single.yml
index 4454e0b..285385c 100644
--- a/salt/control/cluster/openstack_gateway_single.yml
+++ b/salt/control/cluster/openstack_gateway_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_gateway_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_gateway:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.gateway:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_gateway}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
diff --git a/salt/control/cluster/openstack_manila_cluster.yml b/salt/control/cluster/openstack_manila_cluster.yml
index c670840..25f959b 100644
--- a/salt/control/cluster/openstack_manila_cluster.yml
+++ b/salt/control/cluster/openstack_manila_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_manila_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_manila:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.manila:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 2048
           disk_profile: large
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_manila}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_manila_backend_image}
               size: openstack.manila
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_manila}
             share02:
               name: ${_param:openstack_share_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_manila_backend_image}
               size: openstack.manila
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_manila}
             share03:
               name: ${_param:openstack_share_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_manila_backend_image}
               size: openstack.manila
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_manila}
diff --git a/salt/control/cluster/openstack_message_queue_cluster.yml b/salt/control/cluster/openstack_message_queue_cluster.yml
index ce81888..7a59a52 100644
--- a/salt/control/cluster/openstack_message_queue_cluster.yml
+++ b/salt/control/cluster/openstack_message_queue_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_message_queue_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_message_queue:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.message_queue:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_message_queue_backend_image}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg02:
               name: ${_param:openstack_message_queue_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_message_queue_backend_image}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg03:
               name: ${_param:openstack_message_queue_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_message_queue_backend_image}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
diff --git a/salt/control/cluster/openstack_proxy_cluster.yml b/salt/control/cluster/openstack_proxy_cluster.yml
index 309563f..1f3f134 100644
--- a/salt/control/cluster/openstack_proxy_cluster.yml
+++ b/salt/control/cluster/openstack_proxy_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_proxy_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_proxy:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.proxy:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,10 +28,11 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_proxy_backend_image}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
             prx02:
               name: ${_param:openstack_proxy_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_proxy_backend_image}
               size: openstack.proxy
-
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/cluster/openstack_proxy_single.yml b/salt/control/cluster/openstack_proxy_single.yml
index 1092394..11771b0 100644
--- a/salt/control/cluster/openstack_proxy_single.yml
+++ b/salt/control/cluster/openstack_proxy_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_proxy_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_proxy:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.proxy:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_proxy_backend_image}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/cluster/openstack_telemetry_cluster.yml b/salt/control/cluster/openstack_telemetry_cluster.yml
index cce2c36..dc4f1f1 100644
--- a/salt/control/cluster/openstack_telemetry_cluster.yml
+++ b/salt/control/cluster/openstack_telemetry_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_telemetry_backend_image: ${_param:salt_control_trusty_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_share:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.share:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: large
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_telemetry}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_telemetry_backend_image}
               size: openstack.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_telemetry}
             mdb02:
               name: ${_param:openstack_telemetry_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_telemetry_backend_image}
               size: openstack.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_telemetry}
             mdb03:
               name: ${_param:openstack_telemetry_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               backend: ${_param:openstack_telemetry_backend_image}
               size: openstack.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_telemetry}
diff --git a/salt/control/cluster/openstack_upgrade_single.yml b/salt/control/cluster/openstack_upgrade_single.yml
index e9ea0b8..6223867 100644
--- a/salt/control/cluster/openstack_upgrade_single.yml
+++ b/salt/control/cluster/openstack_upgrade_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     openstack_upgrade_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_openstack_upgrade:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:openstack.upgrade:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: medium
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -19,3 +27,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_upgrade_backend_image}
               size: openstack.upgrade
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_upgrade}
diff --git a/salt/control/cluster/rsyslog_single.yml b/salt/control/cluster/rsyslog_single.yml
index d79f439..57cef8e 100644
--- a/salt/control/cluster/rsyslog_single.yml
+++ b/salt/control/cluster/rsyslog_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     rsyslog_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_infra_rsyslog:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:infra.rsyslog:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 8192
           disk_profile: xxlarge
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_infra_rsyslog}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:rsyslog_backend_image}
               size: infra.rsyslog
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_infra_rsyslog}
diff --git a/salt/control/cluster/stacklight_log_cluster.yml b/salt/control/cluster/stacklight_log_cluster.yml
index ba60260..8e979ca 100644
--- a/salt/control/cluster/stacklight_log_cluster.yml
+++ b/salt/control/cluster/stacklight_log_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     stacklight_log_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_stacklight_log:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:stacklight.log:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: xxxxlarge
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log02:
               name: ${_param:stacklight_log_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log03:
               name: ${_param:stacklight_log_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
diff --git a/salt/control/cluster/stacklight_server_cluster.yml b/salt/control/cluster/stacklight_server_cluster.yml
index f0bd970..169f096 100644
--- a/salt/control/cluster/stacklight_server_cluster.yml
+++ b/salt/control/cluster/stacklight_server_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     stacklight_server_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_stacklight_server:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:stacklight.server:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: xxlarge
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_server_backend_image}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon02:
               name: ${_param:stacklight_monitor_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_server_backend_image}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon03:
               name: ${_param:stacklight_monitor_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_server_backend_image}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
diff --git a/salt/control/cluster/stacklight_telemetry_cluster.yml b/salt/control/cluster/stacklight_telemetry_cluster.yml
index 5eb6f94..c360b0e 100644
--- a/salt/control/cluster/stacklight_telemetry_cluster.yml
+++ b/salt/control/cluster/stacklight_telemetry_cluster.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     stacklight_telemetry_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_stacklight_telemetry:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:stacklight.telemetry:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: xxxlarge
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,15 +28,18 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr02:
               name: ${_param:stacklight_telemetry_node02_hostname}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr03:
               name: ${_param:stacklight_telemetry_node03_hostname}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
diff --git a/salt/control/cluster/stacklight_telemetry_single.yml b/salt/control/cluster/stacklight_telemetry_single.yml
index c6d6400..709dc95 100644
--- a/salt/control/cluster/stacklight_telemetry_single.yml
+++ b/salt/control/cluster/stacklight_telemetry_single.yml
@@ -1,6 +1,13 @@
 parameters:
   _param:
     stacklight_telemetry_backend_image: ${_param:salt_control_xenial_image_backend}
+    salt_control_cluster_node_cloud_init_stacklight_telemetry:
+      user_data:
+        write_files:
+        - content: |
+            ${salt:control:size:stacklight.telemetry:image_layout}
+          owner: root:root
+          path: /usr/share/growlvm/image-layout.yml
   salt:
     control:
       size:
@@ -9,6 +16,7 @@
           ram: 65536
           disk_profile: small
           net_profile: default
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
       cluster:
         internal:
           domain: ${_param:cluster_domain}
@@ -20,3 +28,4 @@
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}