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}
diff --git a/salt/control/placement/cicd/compact.yml b/salt/control/placement/cicd/compact.yml
index 82e935c..0ee7d63 100644
--- a/salt/control/placement/cicd/compact.yml
+++ b/salt/control/placement/cicd/compact.yml
@@ -7,6 +7,13 @@
     cicd_control_node02_hostname: cid02
     cicd_control_node03_hostname: cid03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid02:
               name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid03:
               name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
diff --git a/salt/control/placement/cicd/large.yml b/salt/control/placement/cicd/large.yml
index 82e935c..0ee7d63 100644
--- a/salt/control/placement/cicd/large.yml
+++ b/salt/control/placement/cicd/large.yml
@@ -7,6 +7,13 @@
     cicd_control_node02_hostname: cid02
     cicd_control_node03_hostname: cid03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid02:
               name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid03:
               name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
diff --git a/salt/control/placement/cicd/medium.yml b/salt/control/placement/cicd/medium.yml
index 82e935c..0ee7d63 100644
--- a/salt/control/placement/cicd/medium.yml
+++ b/salt/control/placement/cicd/medium.yml
@@ -7,6 +7,13 @@
     cicd_control_node02_hostname: cid02
     cicd_control_node03_hostname: cid03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid02:
               name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid03:
               name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
diff --git a/salt/control/placement/cicd/minimal.yml b/salt/control/placement/cicd/minimal.yml
index 82e935c..0ee7d63 100644
--- a/salt/control/placement/cicd/minimal.yml
+++ b/salt/control/placement/cicd/minimal.yml
@@ -7,6 +7,13 @@
     cicd_control_node02_hostname: cid02
     cicd_control_node03_hostname: cid03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid02:
               name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid03:
               name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
diff --git a/salt/control/placement/cicd/small.yml b/salt/control/placement/cicd/small.yml
index 82e935c..0ee7d63 100644
--- a/salt/control/placement/cicd/small.yml
+++ b/salt/control/placement/cicd/small.yml
@@ -7,6 +7,13 @@
     cicd_control_node02_hostname: cid02
     cicd_control_node03_hostname: cid03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid02:
               name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
             cid03:
               name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:cicd_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_cicd_control}
diff --git a/salt/control/placement/opencontrail/compact.yml b/salt/control/placement/opencontrail/compact.yml
index 684ffa6..0929aa6 100644
--- a/salt/control/placement/opencontrail/compact.yml
+++ b/salt/control/placement/opencontrail/compact.yml
@@ -11,6 +11,20 @@
     opencontrail_analytics_node03_hostname: nal03
     opencontrail_control_backend_image: ${_param:salt_control_xenial_image_backend}
     opencontrail_analytics_backend_image: ${_param:salt_control_xenial_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_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:
       cluster:
@@ -22,33 +36,39 @@
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw02:
               name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw03:
               name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             nal01:
               name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal02:
               name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal03:
               name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
diff --git a/salt/control/placement/opencontrail/large.yml b/salt/control/placement/opencontrail/large.yml
index d4c062e..b7d87e2 100644
--- a/salt/control/placement/opencontrail/large.yml
+++ b/salt/control/placement/opencontrail/large.yml
@@ -11,6 +11,20 @@
     opencontrail_analytics_node03_hostname: nal03
     opencontrail_control_backend_image: ${_param:salt_control_xenial_image_backend}
     opencontrail_analytics_backend_image: ${_param:salt_control_xenial_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_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:
       cluster:
@@ -22,33 +36,39 @@
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw02:
               name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw03:
               name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             nal01:
               name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal02:
               name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal03:
               name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
diff --git a/salt/control/placement/opencontrail/medium.yml b/salt/control/placement/opencontrail/medium.yml
index 8fc9565..e596bcb 100644
--- a/salt/control/placement/opencontrail/medium.yml
+++ b/salt/control/placement/opencontrail/medium.yml
@@ -11,6 +11,20 @@
     opencontrail_analytics_node03_hostname: nal03
     opencontrail_control_backend_image: ${_param:salt_control_xenial_image_backend}
     opencontrail_analytics_backend_image: ${_param:salt_control_xenial_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_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:
       cluster:
@@ -22,33 +36,39 @@
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw02:
               name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw03:
               name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node09_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             nal01:
               name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal02:
               name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal03:
               name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node09_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
diff --git a/salt/control/placement/opencontrail/minimal.yml b/salt/control/placement/opencontrail/minimal.yml
index 684ffa6..0929aa6 100644
--- a/salt/control/placement/opencontrail/minimal.yml
+++ b/salt/control/placement/opencontrail/minimal.yml
@@ -11,6 +11,20 @@
     opencontrail_analytics_node03_hostname: nal03
     opencontrail_control_backend_image: ${_param:salt_control_xenial_image_backend}
     opencontrail_analytics_backend_image: ${_param:salt_control_xenial_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_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:
       cluster:
@@ -22,33 +36,39 @@
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw02:
               name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw03:
               name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             nal01:
               name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal02:
               name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal03:
               name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
diff --git a/salt/control/placement/opencontrail/small.yml b/salt/control/placement/opencontrail/small.yml
index 684ffa6..ad73241 100644
--- a/salt/control/placement/opencontrail/small.yml
+++ b/salt/control/placement/opencontrail/small.yml
@@ -11,6 +11,20 @@
     opencontrail_analytics_node03_hostname: nal03
     opencontrail_control_backend_image: ${_param:salt_control_xenial_image_backend}
     opencontrail_analytics_backend_image: ${_param:salt_control_xenial_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_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:
       cluster:
@@ -22,33 +36,39 @@
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw02:
               name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             ntw03:
               name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_control}
             nal01:
               name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal02:
               name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
             nal03:
               name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:opencontrail_analytics_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_opencontrail_analytics}
diff --git a/salt/control/placement/openstack/compact.yml b/salt/control/placement/openstack/compact.yml
index 6842f91..ec05991 100644
--- a/salt/control/placement/openstack/compact.yml
+++ b/salt/control/placement/openstack/compact.yml
@@ -18,6 +18,34 @@
     openstack_database_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_message_queue_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_proxy_backend_image: ${_param:salt_control_xenial_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_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_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_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:
       cluster:
@@ -29,63 +57,74 @@
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl02:
               name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl03:
               name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             dbs01:
               name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs02:
               name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs03:
               name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             msg01:
               name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg02:
               name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg03:
               name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             prx01:
               name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
             prx02:
               name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/placement/openstack/large.yml b/salt/control/placement/openstack/large.yml
index 24bacb3..4bfa5c2 100644
--- a/salt/control/placement/openstack/large.yml
+++ b/salt/control/placement/openstack/large.yml
@@ -25,6 +25,34 @@
     openstack_database_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_message_queue_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_proxy_backend_image: ${_param:salt_control_xenial_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_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_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_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:
       cluster:
@@ -36,75 +64,88 @@
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl02:
               name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl03:
               name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl04:
               name: ${_param:openstack_control_node04_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl05:
               name: ${_param:openstack_control_node05_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             dbs01:
               name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs02:
               name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs03:
               name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             msg01:
               name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg02:
               name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg03:
               name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node09_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             prx01:
               name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
             prx02:
               name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/placement/openstack/medium.yml b/salt/control/placement/openstack/medium.yml
index 113b095..6867e3a 100644
--- a/salt/control/placement/openstack/medium.yml
+++ b/salt/control/placement/openstack/medium.yml
@@ -21,6 +21,34 @@
     openstack_database_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_message_queue_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_proxy_backend_image: ${_param:salt_control_xenial_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_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_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_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:
       cluster:
@@ -32,63 +60,74 @@
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl02:
               name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl03:
               name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             dbs01:
               name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs02:
               name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs03:
               name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             msg01:
               name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg02:
               name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg03:
               name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             prx01:
               name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
             prx02:
               name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/placement/openstack/minimal.yml b/salt/control/placement/openstack/minimal.yml
index 6842f91..ec05991 100644
--- a/salt/control/placement/openstack/minimal.yml
+++ b/salt/control/placement/openstack/minimal.yml
@@ -18,6 +18,34 @@
     openstack_database_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_message_queue_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_proxy_backend_image: ${_param:salt_control_xenial_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_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_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_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:
       cluster:
@@ -29,63 +57,74 @@
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl02:
               name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl03:
               name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             dbs01:
               name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs02:
               name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs03:
               name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             msg01:
               name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg02:
               name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg03:
               name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             prx01:
               name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
             prx02:
               name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/placement/openstack/small.yml b/salt/control/placement/openstack/small.yml
index 6842f91..ec05991 100644
--- a/salt/control/placement/openstack/small.yml
+++ b/salt/control/placement/openstack/small.yml
@@ -18,6 +18,34 @@
     openstack_database_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_message_queue_backend_image: ${_param:salt_control_xenial_image_backend}
     openstack_proxy_backend_image: ${_param:salt_control_xenial_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_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_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_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:
       cluster:
@@ -29,63 +57,74 @@
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl02:
               name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             ctl03:
               name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_control_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_control}
             dbs01:
               name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs02:
               name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             dbs03:
               name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_database_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_database}
             msg01:
               name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg02:
               name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             msg03:
               name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_message_queue_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_message_queue}
             prx01:
               name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
             prx02:
               name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_proxy_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.proxy
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_proxy}
diff --git a/salt/control/placement/ovs/compact.yml b/salt/control/placement/ovs/compact.yml
index 88865f0..78ee267 100644
--- a/salt/control/placement/ovs/compact.yml
+++ b/salt/control/placement/ovs/compact.yml
@@ -7,6 +7,13 @@
     openstack_gateway_node02_hostname: gtw02
     openstack_gateway_node03_hostname: gtw03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw02:
               name: ${_param:openstack_gateway_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw03:
               name: ${_param:openstack_gateway_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
diff --git a/salt/control/placement/ovs/minimal.yml b/salt/control/placement/ovs/minimal.yml
index 88865f0..78ee267 100644
--- a/salt/control/placement/ovs/minimal.yml
+++ b/salt/control/placement/ovs/minimal.yml
@@ -7,6 +7,13 @@
     openstack_gateway_node02_hostname: gtw02
     openstack_gateway_node03_hostname: gtw03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw02:
               name: ${_param:openstack_gateway_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw03:
               name: ${_param:openstack_gateway_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
diff --git a/salt/control/placement/ovs/small.yml b/salt/control/placement/ovs/small.yml
index 88865f0..78ee267 100644
--- a/salt/control/placement/ovs/small.yml
+++ b/salt/control/placement/ovs/small.yml
@@ -7,6 +7,13 @@
     openstack_gateway_node02_hostname: gtw02
     openstack_gateway_node03_hostname: gtw03
     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:
       cluster:
@@ -18,15 +25,18 @@
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw02:
               name: ${_param:openstack_gateway_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
             gtw03:
               name: ${_param:openstack_gateway_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:openstack_gateway_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.gateway
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_openstack_gateway}
diff --git a/salt/control/placement/stacklight/compact.yml b/salt/control/placement/stacklight/compact.yml
index bed471a..ef33638 100644
--- a/salt/control/placement/stacklight/compact.yml
+++ b/salt/control/placement/stacklight/compact.yml
@@ -15,6 +15,27 @@
     stacklight_log_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_monitor_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_telemetry_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_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_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:
       cluster:
@@ -26,51 +47,60 @@
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr02:
               name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr03:
               name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             log01:
               name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log02:
               name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log03:
               name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             mon01:
               name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon02:
               name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon03:
               name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
diff --git a/salt/control/placement/stacklight/large.yml b/salt/control/placement/stacklight/large.yml
index a3535b9..6c36f8a 100644
--- a/salt/control/placement/stacklight/large.yml
+++ b/salt/control/placement/stacklight/large.yml
@@ -15,6 +15,27 @@
     stacklight_log_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_monitor_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_telemetry_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_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_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:
       cluster:
@@ -26,51 +47,60 @@
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node13_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr02:
               name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node14_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr03:
               name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node15_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             log01:
               name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node13_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log02:
               name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node14_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log03:
               name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node15_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             mon01:
               name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node13_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon02:
               name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node14_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon03:
               name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node15_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
diff --git a/salt/control/placement/stacklight/medium.yml b/salt/control/placement/stacklight/medium.yml
index 41429c8..d8279c6 100644
--- a/salt/control/placement/stacklight/medium.yml
+++ b/salt/control/placement/stacklight/medium.yml
@@ -15,6 +15,27 @@
     stacklight_log_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_monitor_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_telemetry_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_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_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:
       cluster:
@@ -26,51 +47,60 @@
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr02:
               name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr03:
               name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             log01:
               name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log02:
               name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log03:
               name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             mon01:
               name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon02:
               name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon03:
               name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
diff --git a/salt/control/placement/stacklight/minimal.yml b/salt/control/placement/stacklight/minimal.yml
index bed471a..ef33638 100644
--- a/salt/control/placement/stacklight/minimal.yml
+++ b/salt/control/placement/stacklight/minimal.yml
@@ -15,6 +15,27 @@
     stacklight_log_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_monitor_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_telemetry_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_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_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:
       cluster:
@@ -26,51 +47,60 @@
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr02:
               name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr03:
               name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             log01:
               name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log02:
               name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log03:
               name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             mon01:
               name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon02:
               name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon03:
               name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
diff --git a/salt/control/placement/stacklight/small.yml b/salt/control/placement/stacklight/small.yml
index 9223340..4bfd44c 100644
--- a/salt/control/placement/stacklight/small.yml
+++ b/salt/control/placement/stacklight/small.yml
@@ -15,6 +15,27 @@
     stacklight_log_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_monitor_backend_image: ${_param:salt_control_xenial_image_backend}
     stacklight_telemetry_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_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_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:
       cluster:
@@ -26,51 +47,60 @@
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr02:
               name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             mtr03:
               name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_telemetry_backend_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_telemetry}
             log01:
               name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log02:
               name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             log03:
               name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_log_backend_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: stacklight.log
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_log}
             mon01:
               name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon02:
               name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
             mon03:
               name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               backend: ${_param:stacklight_monitor_backend_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: stacklight.server
+              cloud_init: ${_param:salt_control_cluster_node_cloud_init_stacklight_server}
diff --git a/salt/control/sizes/ceph.yml b/salt/control/sizes/ceph.yml
index a4be9c9..c475296 100644
--- a/salt/control/sizes/ceph.yml
+++ b/salt/control/sizes/ceph.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_ceph_mon}
           disk_profile: ${_param:salt_control_size_disk_profile_ceph_mon}
           net_profile: ${_param:salt_control_size_net_profile_ceph_mon}
+          image_layout: ${_param:salt_control_size_image_layout_ceph_mon}
         ceph.rgw:
           cpu: ${_param:salt_control_size_cpu_ceph_rgw}
           ram: ${_param:salt_control_size_ram_ceph_rgw}
           disk_profile: ${_param:salt_control_size_disk_profile_ceph_rgw}
           net_profile: ${_param:salt_control_size_net_profile_ceph_rgw}
+          image_layout: ${_param:salt_control_size_image_layout_ceph_rgw}
diff --git a/salt/control/sizes/cicd.yml b/salt/control/sizes/cicd.yml
index a2ada77..ac99b1c 100644
--- a/salt/control/sizes/cicd.yml
+++ b/salt/control/sizes/cicd.yml
@@ -12,3 +12,4 @@
           ram: ${_param:salt_control_size_ram_cicd_control}
           disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
           net_profile: ${_param:salt_control_size_net_profile_cicd_control}
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
diff --git a/salt/control/sizes/cicd/compact.yml b/salt/control/sizes/cicd/compact.yml
index 78cb384..09d5a95 100644
--- a/salt/control/sizes/cicd/compact.yml
+++ b/salt/control/sizes/cicd/compact.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_cicd_control}
           ram: ${_param:salt_control_size_ram_cicd_control}
           disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
-          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
diff --git a/salt/control/sizes/cicd/large.yml b/salt/control/sizes/cicd/large.yml
index 3250dc0..990c3d4 100644
--- a/salt/control/sizes/cicd/large.yml
+++ b/salt/control/sizes/cicd/large.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_cicd_control}
           ram: ${_param:salt_control_size_ram_cicd_control}
           disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
-          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
diff --git a/salt/control/sizes/cicd/medium.yml b/salt/control/sizes/cicd/medium.yml
index 8735537..1b5d7e1 100644
--- a/salt/control/sizes/cicd/medium.yml
+++ b/salt/control/sizes/cicd/medium.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_cicd_control}
           ram: ${_param:salt_control_size_ram_cicd_control}
           disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
-          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
diff --git a/salt/control/sizes/cicd/minimal.yml b/salt/control/sizes/cicd/minimal.yml
index 6e61013..f420bb9 100644
--- a/salt/control/sizes/cicd/minimal.yml
+++ b/salt/control/sizes/cicd/minimal.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_cicd_control}
           ram: ${_param:salt_control_size_ram_cicd_control}
           disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
-          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
diff --git a/salt/control/sizes/cicd/small.yml b/salt/control/sizes/cicd/small.yml
index 8735537..1b5d7e1 100644
--- a/salt/control/sizes/cicd/small.yml
+++ b/salt/control/sizes/cicd/small.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_cicd_control}
           ram: ${_param:salt_control_size_ram_cicd_control}
           disk_profile: ${_param:salt_control_size_disk_profile_cicd_control}
-          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_cicd_control}
+          image_layout: ${_param:salt_control_size_image_layout_cicd_control}
diff --git a/salt/control/sizes/opencontrail.yml b/salt/control/sizes/opencontrail.yml
index 41b858d..bf4810e 100644
--- a/salt/control/sizes/opencontrail.yml
+++ b/salt/control/sizes/opencontrail.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_opencontrail_control}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
         opencontrail.analytics:
           cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
           ram: ${_param:salt_control_size_ram_opencontrail_analytics}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
diff --git a/salt/control/sizes/opencontrail/compact.yml b/salt/control/sizes/opencontrail/compact.yml
index e650d86..38b4f35 100644
--- a/salt/control/sizes/opencontrail/compact.yml
+++ b/salt/control/sizes/opencontrail/compact.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_opencontrail_control}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
         opencontrail.analytics:
           cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
           ram: ${_param:salt_control_size_ram_opencontrail_analytics}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
-          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
diff --git a/salt/control/sizes/opencontrail/large.yml b/salt/control/sizes/opencontrail/large.yml
index 0b0ed56..0affca2 100644
--- a/salt/control/sizes/opencontrail/large.yml
+++ b/salt/control/sizes/opencontrail/large.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_opencontrail_control}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
         opencontrail.analytics:
           cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
           ram: ${_param:salt_control_size_ram_opencontrail_analytics}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
-          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
diff --git a/salt/control/sizes/opencontrail/medium.yml b/salt/control/sizes/opencontrail/medium.yml
index 48f62c3..3690a11 100644
--- a/salt/control/sizes/opencontrail/medium.yml
+++ b/salt/control/sizes/opencontrail/medium.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_opencontrail_control}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
         opencontrail.analytics:
           cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
           ram: ${_param:salt_control_size_ram_opencontrail_analytics}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
-          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
diff --git a/salt/control/sizes/opencontrail/minimal.yml b/salt/control/sizes/opencontrail/minimal.yml
index b6f893f..de7fa6d 100644
--- a/salt/control/sizes/opencontrail/minimal.yml
+++ b/salt/control/sizes/opencontrail/minimal.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_opencontrail_control}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
         opencontrail.analytics:
           cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
           ram: ${_param:salt_control_size_ram_opencontrail_analytics}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
-          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
diff --git a/salt/control/sizes/opencontrail/small.yml b/salt/control/sizes/opencontrail/small.yml
index e650d86..38b4f35 100644
--- a/salt/control/sizes/opencontrail/small.yml
+++ b/salt/control/sizes/opencontrail/small.yml
@@ -16,8 +16,10 @@
           ram: ${_param:salt_control_size_ram_opencontrail_control}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_control}
           net_profile: ${_param:salt_control_size_net_profile_opencontrail_control}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_control}
         opencontrail.analytics:
           cpu: ${_param:salt_control_size_cpu_opencontrail_analytics}
           ram: ${_param:salt_control_size_ram_opencontrail_analytics}
           disk_profile: ${_param:salt_control_size_disk_profile_opencontrail_analytics}
-          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_opencontrail_analytics}
+          image_layout: ${_param:salt_control_size_image_layout_opencontrail_analytics}
diff --git a/salt/control/sizes/openstack.yml b/salt/control/sizes/openstack.yml
index b75161b..96ab008 100644
--- a/salt/control/sizes/openstack.yml
+++ b/salt/control/sizes/openstack.yml
@@ -28,23 +28,28 @@
           ram: ${_param:salt_control_size_ram_openstack_control}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
           net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
         openstack.database:
           cpu: ${_param:salt_control_size_cpu_openstack_database}
           ram: ${_param:salt_control_size_ram_openstack_database}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
           net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
         openstack.message_queue:
           cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
           ram: ${_param:salt_control_size_ram_openstack_message_queue}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
           net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
         openstack.proxy:
           cpu: ${_param:salt_control_size_cpu_openstack_proxy}
           ram: ${_param:salt_control_size_ram_openstack_proxy}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
           net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
         openstack.upgrade:
           cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
           ram: ${_param:salt_control_size_ram_openstack_upgrade}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
           net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
diff --git a/salt/control/sizes/openstack/compact.yml b/salt/control/sizes/openstack/compact.yml
index 4955911..70e4ff2 100644
--- a/salt/control/sizes/openstack/compact.yml
+++ b/salt/control/sizes/openstack/compact.yml
@@ -48,48 +48,58 @@
           ram: ${_param:salt_control_size_ram_openstack_control}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
           net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
         openstack.database:
           cpu: ${_param:salt_control_size_cpu_openstack_database}
           ram: ${_param:salt_control_size_ram_openstack_database}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
           net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
         openstack.message_queue:
           cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
           ram: ${_param:salt_control_size_ram_openstack_message_queue}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
           net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
         openstack.proxy:
           cpu: ${_param:salt_control_size_cpu_openstack_proxy}
           ram: ${_param:salt_control_size_ram_openstack_proxy}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
           net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
         openstack.upgrade:
           cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
           ram: ${_param:salt_control_size_ram_openstack_upgrade}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
           net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
         openstack.share:
           cpu: ${_param:salt_control_size_cpu_openstack_share}
           ram: ${_param:salt_control_size_ram_openstack_share}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_share}
           net_profile: ${_param:salt_control_size_net_profile_openstack_share}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_share}
         openstack.dns:
           cpu: ${_param:salt_control_size_cpu_openstack_dns}
           ram: ${_param:salt_control_size_ram_openstack_dns}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_dns}
           net_profile: ${_param:salt_control_size_net_profile_openstack_dns}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_dns}
         openstack.telemetry:
           cpu: ${_param:salt_control_size_cpu_openstack_telemetry}
           ram: ${_param:salt_control_size_ram_openstack_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_telemetry}
           net_profile: ${_param:salt_control_size_net_profile_openstack_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_telemetry}
         openstack.barbican:
           cpu: ${_param:salt_control_size_cpu_openstack_barbican}
           ram: ${_param:salt_control_size_ram_openstack_barbican}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_barbican}
           net_profile: ${_param:salt_control_size_net_profile_openstack_barbican}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_barbican}
         openstack.baremetal:
           cpu: ${_param:salt_control_size_cpu_openstack_baremetal}
           ram: ${_param:salt_control_size_ram_openstack_baremetal}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_baremetal}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
diff --git a/salt/control/sizes/openstack/large.yml b/salt/control/sizes/openstack/large.yml
index cd7d71e..38dc313 100644
--- a/salt/control/sizes/openstack/large.yml
+++ b/salt/control/sizes/openstack/large.yml
@@ -48,48 +48,58 @@
           ram: ${_param:salt_control_size_ram_openstack_control}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
           net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
         openstack.database:
           cpu: ${_param:salt_control_size_cpu_openstack_database}
           ram: ${_param:salt_control_size_ram_openstack_database}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
           net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
         openstack.message_queue:
           cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
           ram: ${_param:salt_control_size_ram_openstack_message_queue}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
           net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
         openstack.proxy:
           cpu: ${_param:salt_control_size_cpu_openstack_proxy}
           ram: ${_param:salt_control_size_ram_openstack_proxy}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
           net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
         openstack.upgrade:
           cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
           ram: ${_param:salt_control_size_ram_openstack_upgrade}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
           net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
         openstack.share:
           cpu: ${_param:salt_control_size_cpu_openstack_share}
           ram: ${_param:salt_control_size_ram_openstack_share}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_share}
           net_profile: ${_param:salt_control_size_net_profile_openstack_share}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_share}
         openstack.dns:
           cpu: ${_param:salt_control_size_cpu_openstack_dns}
           ram: ${_param:salt_control_size_ram_openstack_dns}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_dns}
           net_profile: ${_param:salt_control_size_net_profile_openstack_dns}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_dns}
         openstack.telemetry:
           cpu: ${_param:salt_control_size_cpu_openstack_telemetry}
           ram: ${_param:salt_control_size_ram_openstack_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_telemetry}
           net_profile: ${_param:salt_control_size_net_profile_openstack_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_telemetry}
         openstack.barbican:
           cpu: ${_param:salt_control_size_cpu_openstack_barbican}
           ram: ${_param:salt_control_size_ram_openstack_barbican}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_barbican}
           net_profile: ${_param:salt_control_size_net_profile_openstack_barbican}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_barbican}
         openstack.baremetal:
           cpu: ${_param:salt_control_size_cpu_openstack_baremetal}
           ram: ${_param:salt_control_size_ram_openstack_baremetal}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_baremetal}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
diff --git a/salt/control/sizes/openstack/medium.yml b/salt/control/sizes/openstack/medium.yml
index 4ff4570..cadaa79 100644
--- a/salt/control/sizes/openstack/medium.yml
+++ b/salt/control/sizes/openstack/medium.yml
@@ -48,48 +48,58 @@
           ram: ${_param:salt_control_size_ram_openstack_control}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
           net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
         openstack.database:
           cpu: ${_param:salt_control_size_cpu_openstack_database}
           ram: ${_param:salt_control_size_ram_openstack_database}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
           net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
         openstack.message_queue:
           cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
           ram: ${_param:salt_control_size_ram_openstack_message_queue}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
           net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
         openstack.proxy:
           cpu: ${_param:salt_control_size_cpu_openstack_proxy}
           ram: ${_param:salt_control_size_ram_openstack_proxy}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
           net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
         openstack.upgrade:
           cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
           ram: ${_param:salt_control_size_ram_openstack_upgrade}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
           net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
         openstack.share:
           cpu: ${_param:salt_control_size_cpu_openstack_share}
           ram: ${_param:salt_control_size_ram_openstack_share}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_share}
           net_profile: ${_param:salt_control_size_net_profile_openstack_share}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_share}
         openstack.dns:
           cpu: ${_param:salt_control_size_cpu_openstack_dns}
           ram: ${_param:salt_control_size_ram_openstack_dns}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_dns}
           net_profile: ${_param:salt_control_size_net_profile_openstack_dns}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_dns}
         openstack.telemetry:
           cpu: ${_param:salt_control_size_cpu_openstack_telemetry}
           ram: ${_param:salt_control_size_ram_openstack_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_telemetry}
           net_profile: ${_param:salt_control_size_net_profile_openstack_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_telemetry}
         openstack.barbican:
           cpu: ${_param:salt_control_size_cpu_openstack_barbican}
           ram: ${_param:salt_control_size_ram_openstack_barbican}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_barbican}
           net_profile: ${_param:salt_control_size_net_profile_openstack_barbican}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_barbican}
         openstack.baremetal:
           cpu: ${_param:salt_control_size_cpu_openstack_baremetal}
           ram: ${_param:salt_control_size_ram_openstack_baremetal}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_baremetal}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
diff --git a/salt/control/sizes/openstack/minimal.yml b/salt/control/sizes/openstack/minimal.yml
index e24a597..b3b2a85 100644
--- a/salt/control/sizes/openstack/minimal.yml
+++ b/salt/control/sizes/openstack/minimal.yml
@@ -48,48 +48,58 @@
           ram: ${_param:salt_control_size_ram_openstack_control}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
           net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
         openstack.database:
           cpu: ${_param:salt_control_size_cpu_openstack_database}
           ram: ${_param:salt_control_size_ram_openstack_database}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
           net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
         openstack.message_queue:
           cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
           ram: ${_param:salt_control_size_ram_openstack_message_queue}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
           net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
         openstack.proxy:
           cpu: ${_param:salt_control_size_cpu_openstack_proxy}
           ram: ${_param:salt_control_size_ram_openstack_proxy}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
           net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
         openstack.upgrade:
           cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
           ram: ${_param:salt_control_size_ram_openstack_upgrade}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
           net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
         openstack.share:
           cpu: ${_param:salt_control_size_cpu_openstack_share}
           ram: ${_param:salt_control_size_ram_openstack_share}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_share}
           net_profile: ${_param:salt_control_size_net_profile_openstack_share}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_share}
         openstack.dns:
           cpu: ${_param:salt_control_size_cpu_openstack_dns}
           ram: ${_param:salt_control_size_ram_openstack_dns}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_dns}
           net_profile: ${_param:salt_control_size_net_profile_openstack_dns}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_dns}
         openstack.telemetry:
           cpu: ${_param:salt_control_size_cpu_openstack_telemetry}
           ram: ${_param:salt_control_size_ram_openstack_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_telemetry}
           net_profile: ${_param:salt_control_size_net_profile_openstack_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_telemetry}
         openstack.barbican:
           cpu: ${_param:salt_control_size_cpu_openstack_barbican}
           ram: ${_param:salt_control_size_ram_openstack_barbican}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_barbican}
           net_profile: ${_param:salt_control_size_net_profile_openstack_barbican}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_barbican}
         openstack.baremetal:
           cpu: ${_param:salt_control_size_cpu_openstack_baremetal}
           ram: ${_param:salt_control_size_ram_openstack_baremetal}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_baremetal}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
diff --git a/salt/control/sizes/openstack/small.yml b/salt/control/sizes/openstack/small.yml
index 32b2113..ab3700a 100644
--- a/salt/control/sizes/openstack/small.yml
+++ b/salt/control/sizes/openstack/small.yml
@@ -48,48 +48,58 @@
           ram: ${_param:salt_control_size_ram_openstack_control}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_control}
           net_profile: ${_param:salt_control_size_net_profile_openstack_control}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_control}
         openstack.database:
           cpu: ${_param:salt_control_size_cpu_openstack_database}
           ram: ${_param:salt_control_size_ram_openstack_database}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_database}
           net_profile: ${_param:salt_control_size_net_profile_openstack_database}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_database}
         openstack.message_queue:
           cpu: ${_param:salt_control_size_cpu_openstack_message_queue}
           ram: ${_param:salt_control_size_ram_openstack_message_queue}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_message_queue}
           net_profile: ${_param:salt_control_size_net_profile_openstack_message_queue}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_message_queue}
         openstack.proxy:
           cpu: ${_param:salt_control_size_cpu_openstack_proxy}
           ram: ${_param:salt_control_size_ram_openstack_proxy}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_proxy}
           net_profile: ${_param:salt_control_size_net_profile_openstack_proxy}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_proxy}
         openstack.upgrade:
           cpu: ${_param:salt_control_size_cpu_openstack_upgrade}
           ram: ${_param:salt_control_size_ram_openstack_upgrade}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_upgrade}
           net_profile: ${_param:salt_control_size_net_profile_openstack_upgrade}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_upgrade}
         openstack.share:
           cpu: ${_param:salt_control_size_cpu_openstack_share}
           ram: ${_param:salt_control_size_ram_openstack_share}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_share}
           net_profile: ${_param:salt_control_size_net_profile_openstack_share}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_share}
         openstack.dns:
           cpu: ${_param:salt_control_size_cpu_openstack_dns}
           ram: ${_param:salt_control_size_ram_openstack_dns}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_dns}
           net_profile: ${_param:salt_control_size_net_profile_openstack_dns}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_dns}
         openstack.telemetry:
           cpu: ${_param:salt_control_size_cpu_openstack_telemetry}
           ram: ${_param:salt_control_size_ram_openstack_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_telemetry}
           net_profile: ${_param:salt_control_size_net_profile_openstack_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_telemetry}
         openstack.barbican:
           cpu: ${_param:salt_control_size_cpu_openstack_barbican}
           ram: ${_param:salt_control_size_ram_openstack_barbican}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_barbican}
           net_profile: ${_param:salt_control_size_net_profile_openstack_barbican}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_barbican}
         openstack.baremetal:
           cpu: ${_param:salt_control_size_cpu_openstack_baremetal}
           ram: ${_param:salt_control_size_ram_openstack_baremetal}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_baremetal}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_baremetal}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_baremetal}
diff --git a/salt/control/sizes/ovs/compact.yml b/salt/control/sizes/ovs/compact.yml
index c5d69a0..0b822b4 100644
--- a/salt/control/sizes/ovs/compact.yml
+++ b/salt/control/sizes/ovs/compact.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_openstack_gateway}
           ram: ${_param:salt_control_size_ram_openstack_gateway}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_gateway}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_gateway}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_gateway}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_gateway}
diff --git a/salt/control/sizes/ovs/minimal.yml b/salt/control/sizes/ovs/minimal.yml
index c5d69a0..0b822b4 100644
--- a/salt/control/sizes/ovs/minimal.yml
+++ b/salt/control/sizes/ovs/minimal.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_openstack_gateway}
           ram: ${_param:salt_control_size_ram_openstack_gateway}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_gateway}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_gateway}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_gateway}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_gateway}
diff --git a/salt/control/sizes/ovs/small.yml b/salt/control/sizes/ovs/small.yml
index c5d69a0..0b822b4 100644
--- a/salt/control/sizes/ovs/small.yml
+++ b/salt/control/sizes/ovs/small.yml
@@ -11,4 +11,5 @@
           cpu: ${_param:salt_control_size_cpu_openstack_gateway}
           ram: ${_param:salt_control_size_ram_openstack_gateway}
           disk_profile: ${_param:salt_control_size_disk_profile_openstack_gateway}
-          net_profile: ${_param:salt_control_size_net_profile_openstack_gateway}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_openstack_gateway}
+          image_layout: ${_param:salt_control_size_image_layout_openstack_gateway}
diff --git a/salt/control/sizes/stacklight.yml b/salt/control/sizes/stacklight.yml
index c7b1875..acdc835 100644
--- a/salt/control/sizes/stacklight.yml
+++ b/salt/control/sizes/stacklight.yml
@@ -20,13 +20,16 @@
           ram: ${_param:salt_control_size_ram_stacklight_log}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
         stacklight.server:
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
         stacklight.telemetry:
           cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
           ram: ${_param:salt_control_size_ram_stacklight_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
diff --git a/salt/control/sizes/stacklight/compact.yml b/salt/control/sizes/stacklight/compact.yml
index d4533d7..0bc3a3a 100644
--- a/salt/control/sizes/stacklight/compact.yml
+++ b/salt/control/sizes/stacklight/compact.yml
@@ -20,13 +20,16 @@
           ram: ${_param:salt_control_size_ram_stacklight_log}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
         stacklight.server:
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
         stacklight.telemetry:
           cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
           ram: ${_param:salt_control_size_ram_stacklight_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
diff --git a/salt/control/sizes/stacklight/large.yml b/salt/control/sizes/stacklight/large.yml
index fc225fb..575e441 100644
--- a/salt/control/sizes/stacklight/large.yml
+++ b/salt/control/sizes/stacklight/large.yml
@@ -20,13 +20,16 @@
           ram: ${_param:salt_control_size_ram_stacklight_log}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
         stacklight.server:
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
         stacklight.telemetry:
           cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
           ram: ${_param:salt_control_size_ram_stacklight_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
diff --git a/salt/control/sizes/stacklight/medium.yml b/salt/control/sizes/stacklight/medium.yml
index f41ffd2..16a19e1 100644
--- a/salt/control/sizes/stacklight/medium.yml
+++ b/salt/control/sizes/stacklight/medium.yml
@@ -20,13 +20,16 @@
           ram: ${_param:salt_control_size_ram_stacklight_log}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
         stacklight.server:
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
         stacklight.telemetry:
           cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
           ram: ${_param:salt_control_size_ram_stacklight_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
diff --git a/salt/control/sizes/stacklight/minimal.yml b/salt/control/sizes/stacklight/minimal.yml
index 5013907..d6256cf 100644
--- a/salt/control/sizes/stacklight/minimal.yml
+++ b/salt/control/sizes/stacklight/minimal.yml
@@ -20,13 +20,16 @@
           ram: ${_param:salt_control_size_ram_stacklight_log}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
         stacklight.server:
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
         stacklight.telemetry:
           cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
           ram: ${_param:salt_control_size_ram_stacklight_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}
diff --git a/salt/control/sizes/stacklight/small.yml b/salt/control/sizes/stacklight/small.yml
index 204432a..4ade458 100644
--- a/salt/control/sizes/stacklight/small.yml
+++ b/salt/control/sizes/stacklight/small.yml
@@ -20,13 +20,16 @@
           ram: ${_param:salt_control_size_ram_stacklight_log}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_log}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_log}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_log}
         stacklight.server:
           cpu: ${_param:salt_control_size_cpu_stacklight_server}
           ram: ${_param:salt_control_size_ram_stacklight_server}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_server}
           net_profile: ${_param:salt_control_size_net_profile_stacklight_server}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_server}
         stacklight.telemetry:
           cpu: ${_param:salt_control_size_cpu_stacklight_telemetry}
           ram: ${_param:salt_control_size_ram_stacklight_telemetry}
           disk_profile: ${_param:salt_control_size_disk_profile_stacklight_telemetry}
-          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
\ No newline at end of file
+          net_profile: ${_param:salt_control_size_net_profile_stacklight_telemetry}
+          image_layout: ${_param:salt_control_size_image_layout_stacklight_telemetry}