Merge "Bump virtlet to v1.1.2"
diff --git a/debmirror/mirror_mirantis_com/glusterfs-3.8/xenial.yml b/debmirror/mirror_mirantis_com/glusterfs-3.8/xenial.yml
new file mode 100644
index 0000000..7c93811
--- /dev/null
+++ b/debmirror/mirror_mirantis_com/glusterfs-3.8/xenial.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    apt_mk_version: 'stable'
+    mirror_mirantis_com_glusterfs_3_8_xenial_force: False
+    debmirror_mirrors_base_target_dir: "/srv/volumes/aptly/public/${_param:apt_mk_version}/"
+  debmirror:
+    client:
+      enabled: true
+      mirrors:
+        mirror_mirantis_com_glusterfs_3_8_xenial:
+          force: ${_param:mirror_mirantis_com_glusterfs_3_8_xenial_force}
+          lock_target: True
+          extra_flags: [ '--verbose', '--progress', '--nosource', '--no-check-gpg', '--rsync-extra=none' ]
+          method: "rsync"
+          arch: [ 'amd64' ]
+          mirror_host: "mirror.mirantis.com"
+          mirror_root: ":mirror/${_param:apt_mk_version}/glusterfs-3.8/xenial/"
+          target_dir: "${_param:debmirror_mirrors_base_target_dir}/glusterfs-3.8/xenial/"
+          log_file: "/var/log/debmirror/mirror_mirantis_com_glusterfs_3_8_xenial.log"
+          dist: [ xenial ]
+          section: [ main ]
+          filter:
+            001: "--exclude='-dbg_'"
diff --git a/debmirror/mirror_mirantis_com/saltstack/salt_2016_3.yml b/debmirror/mirror_mirantis_com/saltstack-2016.3/xenial.yml
similarity index 100%
rename from debmirror/mirror_mirantis_com/saltstack/salt_2016_3.yml
rename to debmirror/mirror_mirantis_com/saltstack-2016.3/xenial.yml
diff --git a/debmirror/mirror_mirantis_com/saltstack-2017.7/xenial.yml b/debmirror/mirror_mirantis_com/saltstack-2017.7/xenial.yml
new file mode 100644
index 0000000..542afea
--- /dev/null
+++ b/debmirror/mirror_mirantis_com/saltstack-2017.7/xenial.yml
@@ -0,0 +1,21 @@
+parameters:
+  _param:
+    apt_mk_version: 'stable'
+    mirror_mirantis_com_saltstack_2017_7_xenial_force: False
+    debmirror_mirrors_base_target_dir: "/srv/volumes/aptly/public/${_param:apt_mk_version}/"
+  debmirror:
+    client:
+      enabled: true
+      mirrors:
+        mirror_mirantis_com_saltstack_2017_7_xenial:
+          force: ${_param:mirror_mirantis_com_saltstack_2017_7_xenial_force}
+          lock_target: True
+          extra_flags: [ '--verbose', '--progress', '--nosource', '--no-check-gpg', '--rsync-extra=none' ]
+          method: "rsync"
+          arch: [ 'amd64' ]
+          mirror_host: "mirror.mirantis.com"
+          mirror_root: ":mirror/${_param:apt_mk_version}/saltstack-2017.7/xenial/"
+          target_dir: "${_param:debmirror_mirrors_base_target_dir}/saltstack-2017.7/xenial/"
+          log_file: "/var/log/debmirror/mirror_mirantis_com_saltstack_2017_7_xenial.log"
+          dist: [ xenial ]
+          section: [ main ]
diff --git a/docker/swarm/network/keycloak_backend.yml b/docker/swarm/network/keycloak_backend.yml
new file mode 100644
index 0000000..5b1c625
--- /dev/null
+++ b/docker/swarm/network/keycloak_backend.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    docker_keycloak_network_subnet: 10.70.0.0/24
+  docker:
+    client:
+      network:
+        keycloak_backend:
+          subnet: ${_param:docker_keycloak_network_subnet}
+          driver: overlay
+          attachable: true
+
diff --git a/docker/swarm/stack/keycloak.yml b/docker/swarm/stack/keycloak.yml
new file mode 100644
index 0000000..0187a08
--- /dev/null
+++ b/docker/swarm/stack/keycloak.yml
@@ -0,0 +1,38 @@
+parameters:
+  _param:
+    docker_keycloak_server_replicas: 3
+    docker_keycloak_proxy_replicas: 1
+    docker_image_keycloak_server: jboss/keycloak:3.4.2.Final
+    docker_image_keycloak_proxy: jboss/keycloak-proxy:3.4.2.h
+    keycloak_bind_port: ${_param:haproxy_keycloak_bind_port}
+    keycloak_proxy_bind_port: ${_param:haproxy_keycloak_proxy_bind_port}
+  docker:
+    client:
+      stack:
+        keycloak:
+          service:
+            keycloak-server:
+              image: ${_param:docker_image_keycloak_server}
+              deploy:
+                replicas: ${_param:docker_keycloak_server_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_keycloak_exposed_port}:${_param:keycloak_bind_port}
+              volumes:
+                - /srv/volumes/keycloak/server/:/app
+            keycloak-proxy:
+              image: ${_param:docker_image_keycloak_proxy}
+              deploy:
+                replicas: ${_param:docker_keycloak_proxy_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_keycloak_proxy_exposed_port}:${_param:keycloak_proxy_bind_port}
+              volumes:
+                - /srv/volumes/keycloak/proxy/proxy.json:/opt/jboss/conf/proxy.json
+          network:
+            default:
+              external:
+                name: keycloak_backend
+
diff --git a/glusterfs/client/volume/keycloak.yml b/glusterfs/client/volume/keycloak.yml
new file mode 100644
index 0000000..06d6134
--- /dev/null
+++ b/glusterfs/client/volume/keycloak.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    keycloak_glusterfs_service_host: ${_param:glusterfs_service_host}
+    glusterfs_node01_address: ${_param:cluster_node01_address}
+    glusterfs_node02_address: ${_param:cluster_node02_address}
+    glusterfs_node03_address: ${_param:cluster_node03_address}
+  glusterfs:
+    client:
+      volumes:
+        keycloak:
+          path: /srv/volumes/keycloak
+          server: ${_param:keycloak_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
+          user: 1000
+          group: 1000
+
diff --git a/glusterfs/server/volume/keycloak.yml b/glusterfs/server/volume/keycloak.yml
new file mode 100644
index 0000000..c8c71f0
--- /dev/null
+++ b/glusterfs/server/volume/keycloak.yml
@@ -0,0 +1,20 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        keycloak:
+          storage: /srv/glusterfs/keycloak
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/keycloak
+            - ${_param:cluster_node02_address}:/srv/glusterfs/keycloak
+            - ${_param:cluster_node03_address}:/srv/glusterfs/keycloak
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
+            cluster.favorite-child-policy: mtime
+
+
diff --git a/haproxy/proxy/listen/keycloak.yml b/haproxy/proxy/listen/keycloak.yml
new file mode 100644
index 0000000..73697a3
--- /dev/null
+++ b/haproxy/proxy/listen/keycloak.yml
@@ -0,0 +1,71 @@
+parameters:
+  _param:
+    haproxy_keycloak_bind_host: ${_param:haproxy_bind_address}
+    haproxy_keycloak_bind_port: 8086
+    haproxy_keycloak_exposed_port: 18086
+    haproxy_keycloak_ssl:
+      enabled: false
+    haproxy_keycloak_proxy_bind_host: ${_param:haproxy_bind_address}
+    haproxy_keycloak_proxy_bind_port: 8180
+    haproxy_keycloak_proxy_exposed_port: 18180
+    haproxy_keycloak_proxy_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        keycloak:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          binds:
+            - address: ${_param:haproxy_keycloak_bind_host}
+              port: ${_param:haproxy_keycloak_bind_port}
+              ssl: ${_param:haproxy_keycloak_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_keycloak_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_keycloak_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_keycloak_exposed_port}
+              params: backup check
+        keycloak_proxy:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          binds:
+            - address: ${_param:haproxy_keycloak_proxy_bind_host}
+              port: ${_param:haproxy_keycloak_proxy_bind_port}
+              ssl: ${_param:haproxy_keycloak_proxy_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_keycloak_proxy_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_keycloak_proxy_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_keycloak_proxy_exposed_port}
+              params: backup check
diff --git a/keycloak/proxy/application/devops_portal.yml b/keycloak/proxy/application/devops_portal.yml
new file mode 100644
index 0000000..bf09f69
--- /dev/null
+++ b/keycloak/proxy/application/devops_portal.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    keycloak_proxy_devops_portal_base_path: "/"
+  keycloak:
+    proxy:
+      applications:
+        devops_portal:
+          base_path: "${_param:keycloak_proxy_devops_portal_base_path}"
+          adapter_config:
+            realm: "jaeger"
+            auth_server_url: "http://keycloak/auth"
+            resource: "proxy-jaeger"
+
diff --git a/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml b/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml
index f9c8c50..c2e6db5 100644
--- a/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml
+++ b/linux/system/repo_local/mcp/apt_mirantis/saltstack.yml
@@ -1,3 +1,5 @@
+# DEPRECATED since 2018.7+ release.
+# Please use system/repo/mcp/apt_mirantis
 parameters:
   _param:
     apt_mk_version: stable
diff --git a/openssh/client/root.yml b/openssh/client/root.yml
index 145f5da..66f8f88 100644
--- a/openssh/client/root.yml
+++ b/openssh/client/root.yml
@@ -36,7 +36,9 @@
       user:
         root:
           enabled: true
-          private_key:
-            type: rsa
-            key: ${_param:root_private_key}
           user: ${linux:system:user:root}
+          private_key: ${private_keys:root}
+  private_keys:
+    root:
+      type: rsa
+      key: ${_param:root_private_key}
diff --git a/salt/control/placement/cicd/compact.yml b/salt/control/placement/cicd/compact.yml
index 4d9ecbe..9bdf4a4 100644
--- a/salt/control/placement/cicd/compact.yml
+++ b/salt/control/placement/cicd/compact.yml
@@ -11,15 +11,18 @@
       cluster:
         internal:
           node:
-            ${_param:cicd_control_node01_hostname}:
+            cid01:
+              name: ${_param:cicd_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node02_hostname}:
+            cid02:
+              name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node03_hostname}:
+            cid03:
+              name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
\ No newline at end of file
diff --git a/salt/control/placement/cicd/large.yml b/salt/control/placement/cicd/large.yml
index 4d9ecbe..9bdf4a4 100644
--- a/salt/control/placement/cicd/large.yml
+++ b/salt/control/placement/cicd/large.yml
@@ -11,15 +11,18 @@
       cluster:
         internal:
           node:
-            ${_param:cicd_control_node01_hostname}:
+            cid01:
+              name: ${_param:cicd_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node02_hostname}:
+            cid02:
+              name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node03_hostname}:
+            cid03:
+              name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
\ No newline at end of file
diff --git a/salt/control/placement/cicd/medium.yml b/salt/control/placement/cicd/medium.yml
index 4d9ecbe..9bdf4a4 100644
--- a/salt/control/placement/cicd/medium.yml
+++ b/salt/control/placement/cicd/medium.yml
@@ -11,15 +11,18 @@
       cluster:
         internal:
           node:
-            ${_param:cicd_control_node01_hostname}:
+            cid01:
+              name: ${_param:cicd_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node02_hostname}:
+            cid02:
+              name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node03_hostname}:
+            cid03:
+              name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
\ No newline at end of file
diff --git a/salt/control/placement/cicd/minimal.yml b/salt/control/placement/cicd/minimal.yml
index 4d9ecbe..9bdf4a4 100644
--- a/salt/control/placement/cicd/minimal.yml
+++ b/salt/control/placement/cicd/minimal.yml
@@ -11,15 +11,18 @@
       cluster:
         internal:
           node:
-            ${_param:cicd_control_node01_hostname}:
+            cid01:
+              name: ${_param:cicd_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node02_hostname}:
+            cid02:
+              name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node03_hostname}:
+            cid03:
+              name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
\ No newline at end of file
diff --git a/salt/control/placement/cicd/small.yml b/salt/control/placement/cicd/small.yml
index 4d9ecbe..9bdf4a4 100644
--- a/salt/control/placement/cicd/small.yml
+++ b/salt/control/placement/cicd/small.yml
@@ -11,15 +11,18 @@
       cluster:
         internal:
           node:
-            ${_param:cicd_control_node01_hostname}:
+            cid01:
+              name: ${_param:cicd_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node02_hostname}:
+            cid02:
+              name: ${_param:cicd_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: cicd.control
-            ${_param:cicd_control_node03_hostname}:
+            cid03:
+              name: ${_param:cicd_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: cicd.control
\ No newline at end of file
diff --git a/salt/control/placement/opencontrail/compact.yml b/salt/control/placement/opencontrail/compact.yml
index 544537d..a619956 100644
--- a/salt/control/placement/opencontrail/compact.yml
+++ b/salt/control/placement/opencontrail/compact.yml
@@ -14,27 +14,33 @@
       cluster:
         internal:
           node:
-            ${_param:opencontrail_control_node01_hostname}:
+            ntw01:
+              name: ${_param:opencontrail_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node02_hostname}:
+            ntw02:
+              name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node03_hostname}:
+            ntw03:
+              name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_analytics_node01_hostname}:
+            nal01:
+              name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node02_hostname}:
+            nal02:
+              name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node03_hostname}:
+            nal03:
+              name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
\ No newline at end of file
diff --git a/salt/control/placement/opencontrail/large.yml b/salt/control/placement/opencontrail/large.yml
index e3d9c8d..1aabd0d 100644
--- a/salt/control/placement/opencontrail/large.yml
+++ b/salt/control/placement/opencontrail/large.yml
@@ -14,27 +14,33 @@
       cluster:
         internal:
           node:
-            ${_param:opencontrail_control_node01_hostname}:
+            ntw01:
+              name: ${_param:opencontrail_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node02_hostname}:
+            ntw02:
+              name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node03_hostname}:
+            ntw03:
+              name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_analytics_node01_hostname}:
+            nal01:
+              name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node02_hostname}:
+            nal02:
+              name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node03_hostname}:
+            nal03:
+              name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
\ No newline at end of file
diff --git a/salt/control/placement/opencontrail/medium.yml b/salt/control/placement/opencontrail/medium.yml
index ff2952d..dfc32f3 100644
--- a/salt/control/placement/opencontrail/medium.yml
+++ b/salt/control/placement/opencontrail/medium.yml
@@ -14,27 +14,33 @@
       cluster:
         internal:
           node:
-            ${_param:opencontrail_control_node01_hostname}:
+            ntw01:
+              name: ${_param:opencontrail_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node02_hostname}:
+            ntw02:
+              name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node03_hostname}:
+            ntw03:
+              name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node09_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_analytics_node01_hostname}:
+            nal01:
+              name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node02_hostname}:
+            nal02:
+              name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node03_hostname}:
+            nal03:
+              name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node09_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
\ No newline at end of file
diff --git a/salt/control/placement/opencontrail/minimal.yml b/salt/control/placement/opencontrail/minimal.yml
index 544537d..a619956 100644
--- a/salt/control/placement/opencontrail/minimal.yml
+++ b/salt/control/placement/opencontrail/minimal.yml
@@ -14,27 +14,33 @@
       cluster:
         internal:
           node:
-            ${_param:opencontrail_control_node01_hostname}:
+            ntw01:
+              name: ${_param:opencontrail_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node02_hostname}:
+            ntw02:
+              name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node03_hostname}:
+            ntw03:
+              name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_analytics_node01_hostname}:
+            nal01:
+              name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node02_hostname}:
+            nal02:
+              name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node03_hostname}:
+            nal03:
+              name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
\ No newline at end of file
diff --git a/salt/control/placement/opencontrail/small.yml b/salt/control/placement/opencontrail/small.yml
index 544537d..a619956 100644
--- a/salt/control/placement/opencontrail/small.yml
+++ b/salt/control/placement/opencontrail/small.yml
@@ -14,27 +14,33 @@
       cluster:
         internal:
           node:
-            ${_param:opencontrail_control_node01_hostname}:
+            ntw01:
+              name: ${_param:opencontrail_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node02_hostname}:
+            ntw02:
+              name: ${_param:opencontrail_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_control_node03_hostname}:
+            ntw03:
+              name: ${_param:opencontrail_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.control
-            ${_param:opencontrail_analytics_node01_hostname}:
+            nal01:
+              name: ${_param:opencontrail_analytics_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node02_hostname}:
+            nal02:
+              name: ${_param:opencontrail_analytics_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
-            ${_param:opencontrail_analytics_node03_hostname}:
+            nal03:
+              name: ${_param:opencontrail_analytics_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: opencontrail.analytics
\ No newline at end of file
diff --git a/salt/control/placement/openstack/compact.yml b/salt/control/placement/openstack/compact.yml
index f2ec373..8c62e28 100644
--- a/salt/control/placement/openstack/compact.yml
+++ b/salt/control/placement/openstack/compact.yml
@@ -19,47 +19,58 @@
       cluster:
         internal:
           node:
-            ${_param:openstack_control_node01_hostname}:
+            ctl01:
+              name: ${_param:openstack_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node02_hostname}:
+            ctl02:
+              name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node03_hostname}:
+            ctl03:
+              name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_database_node01_hostname}:
+            dbs01:
+              name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node02_hostname}:
+            dbs02:
+              name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node03_hostname}:
+            dbs03:
+              name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_message_queue_node01_hostname}:
+            msg01:
+              name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node02_hostname}:
+            msg02:
+              name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node03_hostname}:
+            msg03:
+              name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_proxy_node01_hostname}:
+            prx01:
+              name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.proxy
-            ${_param:openstack_proxy_node02_hostname}:
+            prx02:
+              name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.proxy
diff --git a/salt/control/placement/openstack/large.yml b/salt/control/placement/openstack/large.yml
index 650d4d9..cb056dd 100644
--- a/salt/control/placement/openstack/large.yml
+++ b/salt/control/placement/openstack/large.yml
@@ -26,55 +26,68 @@
       cluster:
         internal:
           node:
-            ${_param:openstack_control_node01_hostname}:
+            ctl01:
+              name: ${_param:openstack_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node02_hostname}:
+            ctl02:
+              name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node03_hostname}:
+            ctl03:
+              name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node04_hostname}:
+            ctl04:
+              name: ${_param:openstack_control_node04_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node05_hostname}:
+            ctl05:
+              name: ${_param:openstack_control_node05_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_database_node01_hostname}:
+            dbs01:
+              name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node02_hostname}:
+            dbs02:
+              name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node03_hostname}:
+            dbs03:
+              name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_message_queue_node01_hostname}:
+            msg01:
+              name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node02_hostname}:
+            msg02:
+              name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node03_hostname}:
+            msg03:
+              name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node09_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_proxy_node01_hostname}:
+            prx01:
+              name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node07_hostname}.${_param:cluster_domain}
               size: openstack.proxy
-            ${_param:openstack_proxy_node02_hostname}:
+            prx02:
+              name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node08_hostname}.${_param:cluster_domain}
               size: openstack.proxy
diff --git a/salt/control/placement/openstack/medium.yml b/salt/control/placement/openstack/medium.yml
index de9c010..7d0e166 100644
--- a/salt/control/placement/openstack/medium.yml
+++ b/salt/control/placement/openstack/medium.yml
@@ -22,47 +22,58 @@
       cluster:
         internal:
           node:
-            ${_param:openstack_control_node01_hostname}:
+            ctl01:
+              name: ${_param:openstack_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node02_hostname}:
+            ctl02:
+              name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node03_hostname}:
+            ctl03:
+              name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_database_node01_hostname}:
+            dbs01:
+              name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node02_hostname}:
+            dbs02:
+              name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node03_hostname}:
+            dbs03:
+              name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_message_queue_node01_hostname}:
+            msg01:
+              name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node02_hostname}:
+            msg02:
+              name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node03_hostname}:
+            msg03:
+              name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_proxy_node01_hostname}:
+            prx01:
+              name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: openstack.proxy
-            ${_param:openstack_proxy_node02_hostname}:
+            prx02:
+              name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: openstack.proxy
diff --git a/salt/control/placement/openstack/minimal.yml b/salt/control/placement/openstack/minimal.yml
index f2ec373..8c62e28 100644
--- a/salt/control/placement/openstack/minimal.yml
+++ b/salt/control/placement/openstack/minimal.yml
@@ -19,47 +19,58 @@
       cluster:
         internal:
           node:
-            ${_param:openstack_control_node01_hostname}:
+            ctl01:
+              name: ${_param:openstack_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node02_hostname}:
+            ctl02:
+              name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node03_hostname}:
+            ctl03:
+              name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_database_node01_hostname}:
+            dbs01:
+              name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node02_hostname}:
+            dbs02:
+              name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node03_hostname}:
+            dbs03:
+              name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_message_queue_node01_hostname}:
+            msg01:
+              name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node02_hostname}:
+            msg02:
+              name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node03_hostname}:
+            msg03:
+              name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_proxy_node01_hostname}:
+            prx01:
+              name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.proxy
-            ${_param:openstack_proxy_node02_hostname}:
+            prx02:
+              name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.proxy
diff --git a/salt/control/placement/openstack/small.yml b/salt/control/placement/openstack/small.yml
index f2ec373..8c62e28 100644
--- a/salt/control/placement/openstack/small.yml
+++ b/salt/control/placement/openstack/small.yml
@@ -19,47 +19,58 @@
       cluster:
         internal:
           node:
-            ${_param:openstack_control_node01_hostname}:
+            ctl01:
+              name: ${_param:openstack_control_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node02_hostname}:
+            ctl02:
+              name: ${_param:openstack_control_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_control_node03_hostname}:
+            ctl03:
+              name: ${_param:openstack_control_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.control
-            ${_param:openstack_database_node01_hostname}:
+            dbs01:
+              name: ${_param:openstack_database_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node02_hostname}:
+            dbs02:
+              name: ${_param:openstack_database_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_database_node03_hostname}:
+            dbs03:
+              name: ${_param:openstack_database_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.database
-            ${_param:openstack_message_queue_node01_hostname}:
+            msg01:
+              name: ${_param:openstack_message_queue_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node02_hostname}:
+            msg02:
+              name: ${_param:openstack_message_queue_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_message_queue_node03_hostname}:
+            msg03:
+              name: ${_param:openstack_message_queue_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.message_queue
-            ${_param:openstack_proxy_node01_hostname}:
+            prx01:
+              name: ${_param:openstack_proxy_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: openstack.proxy
-            ${_param:openstack_proxy_node02_hostname}:
+            prx02:
+              name: ${_param:openstack_proxy_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: openstack.proxy
diff --git a/salt/control/placement/stacklight/compact.yml b/salt/control/placement/stacklight/compact.yml
index a84443d..2cde570 100644
--- a/salt/control/placement/stacklight/compact.yml
+++ b/salt/control/placement/stacklight/compact.yml
@@ -17,39 +17,48 @@
       cluster:
         internal:
           node:
-            ${_param:stacklight_telemetry_node01_hostname}:
+            mtr01:
+              name: ${_param:stacklight_telemetry_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node02_hostname}:
+            mtr02:
+              name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node03_hostname}:
+            mtr03:
+              name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_log_node01_hostname}:
+            log01:
+              name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node02_hostname}:
+            log02:
+              name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node03_hostname}:
+            log03:
+              name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_monitor_node01_hostname}:
+            mon01:
+              name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node02_hostname}:
+            mon02:
+              name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node03_hostname}:
+            mon03:
+              name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.server
\ No newline at end of file
diff --git a/salt/control/placement/stacklight/large.yml b/salt/control/placement/stacklight/large.yml
index 46c2890..7b380d8 100644
--- a/salt/control/placement/stacklight/large.yml
+++ b/salt/control/placement/stacklight/large.yml
@@ -17,39 +17,48 @@
       cluster:
         internal:
           node:
-            ${_param:stacklight_telemetry_node01_hostname}:
+            mtr01:
+              name: ${_param:stacklight_telemetry_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node13_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node02_hostname}:
+            mtr02:
+              name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node14_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node03_hostname}:
+            mtr03:
+              name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node15_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_log_node01_hostname}:
+            log01:
+              name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node13_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node02_hostname}:
+            log02:
+              name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node14_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node03_hostname}:
+            log03:
+              name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node15_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_monitor_node01_hostname}:
+            mon01:
+              name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node13_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node02_hostname}:
+            mon02:
+              name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node14_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node03_hostname}:
+            mon03:
+              name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node15_hostname}.${_param:cluster_domain}
               size: stacklight.server
\ No newline at end of file
diff --git a/salt/control/placement/stacklight/medium.yml b/salt/control/placement/stacklight/medium.yml
index 117b2f5..7f54f4d 100644
--- a/salt/control/placement/stacklight/medium.yml
+++ b/salt/control/placement/stacklight/medium.yml
@@ -17,39 +17,48 @@
       cluster:
         internal:
           node:
-            ${_param:stacklight_telemetry_node01_hostname}:
+            mtr01:
+              name: ${_param:stacklight_telemetry_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node02_hostname}:
+            mtr02:
+              name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node03_hostname}:
+            mtr03:
+              name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_log_node01_hostname}:
+            log01:
+              name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node02_hostname}:
+            lop02:
+              name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node03_hostname}:
+            log03:
+              name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_monitor_node01_hostname}:
+            mon01:
+              name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node10_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node02_hostname}:
+            mon02:
+              name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node11_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node03_hostname}:
+            mon03:
+              name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node12_hostname}.${_param:cluster_domain}
               size: stacklight.server
\ No newline at end of file
diff --git a/salt/control/placement/stacklight/minimal.yml b/salt/control/placement/stacklight/minimal.yml
index a84443d..2cde570 100644
--- a/salt/control/placement/stacklight/minimal.yml
+++ b/salt/control/placement/stacklight/minimal.yml
@@ -17,39 +17,48 @@
       cluster:
         internal:
           node:
-            ${_param:stacklight_telemetry_node01_hostname}:
+            mtr01:
+              name: ${_param:stacklight_telemetry_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node02_hostname}:
+            mtr02:
+              name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node03_hostname}:
+            mtr03:
+              name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_log_node01_hostname}:
+            log01:
+              name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node02_hostname}:
+            log02:
+              name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node03_hostname}:
+            log03:
+              name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_monitor_node01_hostname}:
+            mon01:
+              name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node02_hostname}:
+            mon02:
+              name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node03_hostname}:
+            mon03:
+              name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               size: stacklight.server
\ No newline at end of file
diff --git a/salt/control/placement/stacklight/small.yml b/salt/control/placement/stacklight/small.yml
index 2e039ff..e16a7cb 100644
--- a/salt/control/placement/stacklight/small.yml
+++ b/salt/control/placement/stacklight/small.yml
@@ -17,39 +17,48 @@
       cluster:
         internal:
           node:
-            ${_param:stacklight_telemetry_node01_hostname}:
+            mtr01:
+              name: ${_param:stacklight_telemetry_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node02_hostname}:
+            mtr02:
+              name: ${_param:stacklight_telemetry_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_telemetry_node03_hostname}:
+            mtr03:
+              name: ${_param:stacklight_telemetry_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: stacklight.telemetry
-            ${_param:stacklight_log_node01_hostname}:
+            log01:
+              name: ${_param:stacklight_log_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node02_hostname}:
+            log02:
+              name: ${_param:stacklight_log_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_log_node03_hostname}:
+            log03:
+              name: ${_param:stacklight_log_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: stacklight.log
-            ${_param:stacklight_monitor_node01_hostname}:
+            mon01:
+              name: ${_param:stacklight_monitor_node01_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node04_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node02_hostname}:
+            mon02:
+              name: ${_param:stacklight_monitor_node02_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node05_hostname}.${_param:cluster_domain}
               size: stacklight.server
-            ${_param:stacklight_monitor_node03_hostname}:
+            mon03:
+              name: ${_param:stacklight_monitor_node03_hostname}
               image: ${_param:salt_control_xenial_image}
               provider: ${_param:infra_kvm_node06_hostname}.${_param:cluster_domain}
               size: stacklight.server
\ No newline at end of file