Merge "Add init queries for integration between Pushkin and Security Monkey"
diff --git a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
index b83c49f..4d27bf6 100644
--- a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
@@ -1,9 +1,11 @@
 parameters:
+  _param:
+    glusterfs_version: 3.8
   aptly:
     server:
       mirror:
         glusterfs_upstream_trusty:
-          source: http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu
+          source: http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu
           distribution: trusty
           components: main
           architectures: amd64
diff --git a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
index da48431..f8177a0 100644
--- a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
@@ -1,9 +1,11 @@
 parameters:
+  _param:
+    glusterfs_version: 3.8
   aptly:
     server:
       mirror:
         glusterfs_upstream_xenial:
-          source: http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu
+          source: http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu
           distribution: xenial
           components: main
           architectures: amd64
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
similarity index 100%
rename from aptly/server/mirror/ubuntu/xenial/mcp/apt_mk.yml
rename to aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/stable.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/stable.yml
new file mode 100644
index 0000000..56f8b08
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/stable.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk
+parameters:
+  _param:
+    apt_mk_version: stable
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/testing.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/testing.yml
new file mode 100644
index 0000000..e5b0bd2
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/testing.yml
@@ -0,0 +1,5 @@
+classes:
+- system.aptly.server.mirror.ubuntu.xenial.mcp.apt_mk
+parameters:
+  _param:
+    apt_mk_version: testing
diff --git a/docker/swarm/service/monitoring/prometheus_alertmanager.yml b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
index 5d5f237..942fa42 100644
--- a/docker/swarm/service/monitoring/prometheus_alertmanager.yml
+++ b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
@@ -1,4 +1,4 @@
-include:
+classes:
 - service.prometheus.alertmanager.container
 parameters:
   docker:
diff --git a/docker/swarm/service/monitoring/prometheus_pushgateway.yml b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
index ad159b6..850f66e 100644
--- a/docker/swarm/service/monitoring/prometheus_pushgateway.yml
+++ b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
@@ -1,3 +1,5 @@
+classes:
+- service.prometheus.pushgateway.container
 parameters:
   docker:
     client:
@@ -5,8 +7,11 @@
         prometheus_pushgateway:
           network: monitoring
           replicas: 2
+          environment:
+            bind_port: ${prometheus:pushgateway:bind:port}
+            bind_address: ${prometheus:pushgateway:bind:address}
           restart:
             condition: any
           image: ${_param:docker_image_pushgateway}
           ports:
-            - 15012:9091
+            - 15012:${prometheus:pushgateway:bind:port}
diff --git a/docker/swarm/service/monitoring/prometheus_server.yml b/docker/swarm/service/monitoring/prometheus_server.yml
index 37bb6d3..5c0a480 100644
--- a/docker/swarm/service/monitoring/prometheus_server.yml
+++ b/docker/swarm/service/monitoring/prometheus_server.yml
@@ -1,4 +1,4 @@
-include:
+classes:
 - service.prometheus.server.container
 parameters:
   docker:
diff --git a/docker/swarm/service/phpldapadmin.yml b/docker/swarm/service/phpldapadmin.yml
index 25332c7..72b109f 100644
--- a/docker/swarm/service/phpldapadmin.yml
+++ b/docker/swarm/service/phpldapadmin.yml
@@ -13,7 +13,7 @@
               name: ldap.${_param:openldap_domain}
               address: ${_param:cluster_vip_address}
           environment:
-            PHPLDAPADMIN_LDAP_HOSTS: "#PYTHON2BASH:[{'ldap.${_param:openldap_domain}': [{'server': [{'tls': False}]},{'login': [{'bind_id': 'cn=admin,${_param:openldap_dn}'},{'bind_pass': '${_param:openldap_admin_password}'}]}]}]"
+            PHPLDAPADMIN_LDAP_HOSTS: "#PYTHON2BASH:[{'${_param:cluster_public_host}': [{'server': [{'tls': False}]},{'login': [{'bind_id': 'cn=admin,${_param:openldap_dn}'},{'bind_pass': '${_param:openldap_admin_password}'}]}]}]"
             PHPLDAPADMIN_HTTPS: false
             PHPLDAPADMIN_TRUST_PROXY_SSL: true
             PHPLDAPADMIN_SERVER_ADMIN: ${_param:admin_email}
diff --git a/docker/swarm/stack/gerrit.yml b/docker/swarm/stack/gerrit.yml
index 48466ef..b59172a 100644
--- a/docker/swarm/stack/gerrit.yml
+++ b/docker/swarm/stack/gerrit.yml
@@ -39,7 +39,7 @@
                 LDAP_GROUPBASE: ${_param:gerrit_ldap_group_base}
                 LDAP_USERNAME: ${_param:gerrit_ldap_bind_user}
                 LDAP_PASSWORD: ${_param:gerrit_ldap_bind_password}
-                WEBURL: http://${_param:gerrit_public_host}:8080
+                WEBURL: ${_param:gerrit_public_host}
                 GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
                 GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
                 GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
diff --git a/docker/swarm/stack/monitoring.yml b/docker/swarm/stack/monitoring.yml
index 46a2845..bbc2d24 100644
--- a/docker/swarm/stack/monitoring.yml
+++ b/docker/swarm/stack/monitoring.yml
@@ -37,9 +37,12 @@
                 replicas: 2
                 restart_policy:
                   condition: any
+              environment:
+                bind_port: ${prometheus:pushgateway:bind:port}
+                bind_address: ${prometheus:pushgateway:bind:address}
               image: ${_param:docker_image_pushgateway}
               ports:
-                - 15012:9091
+                - 15012:${prometheus:pushgateway:bind:port}
             server:
               networks:
                 - monitoring
diff --git a/gerrit/client/project/ci.yml b/gerrit/client/project/ci.yml
index f1fdcd1..86ff699 100644
--- a/gerrit/client/project/ci.yml
+++ b/gerrit/client/project/ci.yml
@@ -18,3 +18,11 @@
           require_change_id: true
           require_agreement: false
           merge_content: true
+        mk/decapod-pipelines:
+          enabled: true
+          description: Decapod jenkins pipelines
+          upstream: https://github.com/mateuszlos/decapod-pipelines
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
diff --git a/haproxy/proxy/listen/radosgw.yml b/haproxy/proxy/listen/radosgw.yml
new file mode 100644
index 0000000..369306b
--- /dev/null
+++ b/haproxy/proxy/listen/radosgw.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    haproxy_radosgw_bind_port: 8080
+    haproxy_radosgw_source_port: 8080
+  haproxy:
+    proxy:
+      listen:
+        radosgw:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:haproxy_radosgw_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_radosgw_source_port}
+              params: check
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_radosgw_source_port}
+              params: backup check
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_radosgw_source_port}
+              params: backup check
diff --git a/heka/remote_collector/init.yml b/heka/remote_collector/init.yml
new file mode 100644
index 0000000..8446af5
--- /dev/null
+++ b/heka/remote_collector/init.yml
@@ -0,0 +1,15 @@
+classes:
+- service.heka.remote_collector.cluster
+- system.heka.server
+parameters:
+  keepalived:
+    cluster:
+      instance:
+        prometheus_server_vip:
+          notify_action:
+            master:
+              - service remote_collector start
+            backup:
+              - service remote_collector stop
+            fault:
+              - service remote_collector stop
diff --git a/heka/remote_collector/output/aggregator.yml b/heka/remote_collector/output/aggregator.yml
new file mode 100644
index 0000000..2a7444f
--- /dev/null
+++ b/heka/remote_collector/output/aggregator.yml
@@ -0,0 +1,7 @@
+parameters:
+  _param:
+    aggregator_port: 5565
+  heka:
+    remote_collector:
+      aggregator_host: ${_param:heka_aggregator_host}
+      aggregator_port: ${_param:aggregator_port}
diff --git a/heka/remote_collector/output/elasticsearch.yml b/heka/remote_collector/output/elasticsearch.yml
new file mode 100644
index 0000000..25f87cb
--- /dev/null
+++ b/heka/remote_collector/output/elasticsearch.yml
@@ -0,0 +1,7 @@
+parameters:
+  _param:
+    elasticsearch_port: 9200
+  heka:
+    remote_collector:
+      elasticsearch_host: ${_param:heka_elasticsearch_host}
+      elasticsearch_port: ${_param:elasticsearch_port}
diff --git a/heka/remote_collector/output/influxdb.yml b/heka/remote_collector/output/influxdb.yml
new file mode 100644
index 0000000..5383b66
--- /dev/null
+++ b/heka/remote_collector/output/influxdb.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    influxdb_port: 8086
+  heka:
+    remote_collector:
+      influxdb_host: ${_param:heka_influxdb_host}
+      influxdb_port: ${_param:influxdb_port}
+      influxdb_database: lma
+      influxdb_username: lma
+      influxdb_password: ${_param:influxdb_stacklight_password}
diff --git a/heka/remote_collector/output/sensu.yml b/heka/remote_collector/output/sensu.yml
index c7c66e9..087a7c2 100644
--- a/heka/remote_collector/output/sensu.yml
+++ b/heka/remote_collector/output/sensu.yml
@@ -1,3 +1,2 @@
 classes:
 - service.heka.remote_collector.output.sensu
-
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index d65fecd..d3a5291 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -95,3 +95,12 @@
         - method hudson.model.Run getId
         - method java.util.regex.MatchResult groupCount
         - method java.lang.Throwable printStackTrace
+        - method hudson.model.Run getNumber
+        - staticMethod java.lang.String valueOf int
+        - method jenkins.model.Jenkins getItemByFullName java.lang.String
+        - new java.util.ArrayList
+        - new java.util.HashMap
+        - staticMethod java.lang.Math min int int
+        - method hudson.model.Job getBuildByNumber int
+        - new java.io.IOException java.lang.String
+        - method org.jenkinsci.plugins.workflow.job.WorkflowRun finish hudson.model.Result java.lang.Throwable
\ No newline at end of file
diff --git a/jenkins/client/job/debian/packages/heat/resources.yml b/jenkins/client/job/debian/packages/heat/resources.yml
index 01033ad..73cceb5 100644
--- a/jenkins/client/job/debian/packages/heat/resources.yml
+++ b/jenkins/client/job/debian/packages/heat/resources.yml
@@ -83,3 +83,8 @@
                 default: 'true'
               PRE_BUILD_SCRIPT:
                 type: text
+                default: |
+                  echo "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0 main restricted" >> /etc/apt/sources.list.d/extra.list
+                  curl --insecure -ss -f "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key" | apt-key add -
+                  apt-get update
+
diff --git a/jenkins/client/job/decapod/cluster.yml b/jenkins/client/job/decapod/cluster.yml
new file mode 100644
index 0000000..cb353a6
--- /dev/null
+++ b/jenkins/client/job/decapod/cluster.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy_decapod:
+          type: workflow-scm
+          name: deploy-decapod
+          display_name: "Deploy - Decapod"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: decapod-pipeline.groovy
+          param:
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_IP:
+              type: string
+              default: "${_param:infra_config_address}"
+            SALT_MASTER_PORT:
+              type: string
+              default: "${_param:salt_master_api_port}"
+            ASK_ON_ERROR:
+                type: boolean
+                default: 'false'
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
index 35b8de6..337d93d 100644
--- a/jenkins/client/job/deploy/lab/mk/virtual.yml
+++ b/jenkins/client/job/deploy/lab/mk/virtual.yml
@@ -19,6 +19,7 @@
         install: core,openstack
         stack_type: heat
         test: openstack
+        timer: ""
       - lab: virtual_mk22_basic
         install: core,openstack
         stack_type: heat
@@ -29,6 +30,7 @@
         install: core,openstack,dvr
         stack_type: heat
         test: openstack
+        timer: ""
       - lab: virtual_mcp05_ovs
         install: core,openstack,ovs
         stack_type: heat
diff --git a/jenkins/client/job/deploy/update/saltenv.yml b/jenkins/client/job/deploy/update/saltenv.yml
index 0303aea..397e3f3 100644
--- a/jenkins/client/job/deploy/update/saltenv.yml
+++ b/jenkins/client/job/deploy/update/saltenv.yml
@@ -30,3 +30,6 @@
               SALT_MASTER_CREDENTIALS:
                 type: string
                 default: "{{salt_credentials}}"
+              UPDATE_FORMULAS:
+                type: boolean
+                default: "true"
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/devops-portal.yml
index 14735b6..7af37eb 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/devops-portal.yml
@@ -32,16 +32,18 @@
                   - created:
                       excludeDrafts: false
                       excludeNoCodeChange: false
+                change:
+                  - merged
                 comment:
                   - addedContains:
                       commentAddedCommentContains: 'rebuild'
           param:
             IMAGE_NAME:
               type: string
-              default: "devops-portal"
+              default: "devops_portal"
             IMAGE_TAGS:
               type: string
-              default: "latest"
+              default: ""
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 111cc6a..69a0f9b 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -93,6 +93,7 @@
             - name: roundcube
             - name: rsync
             - name: rsyslog
+            - name: rundeck
             - name: sahara
             - name: salt
             - name: sensu
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index 1545eff..e491da4 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -50,6 +50,9 @@
               CREDENTIALS_ID:
                 type: string
                 default: "gerrit"
+              PARALLEL_NODE_GROUP_SIZE:
+                type: string
+                default: "3"
         test_system_reclass:
           name: test-salt-model-{{name}}
           jobs:
diff --git a/jenkins/client/job/test_devops_portal.yml b/jenkins/client/job/test_devops_portal.yml
index 711f42a..aae2d67 100644
--- a/jenkins/client/job/test_devops_portal.yml
+++ b/jenkins/client/job/test_devops_portal.yml
@@ -32,6 +32,9 @@
                   - addedContains:
                       commentAddedCommentContains: '(recheck|reverify)'
           param:
+            COMPOSE_PATH:
+              type: string
+              default: "docker/stack/docker-compose.yml"
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
diff --git a/jenkins/master/config.yml b/jenkins/master/config.yml
index 795b748..41e3ffb 100644
--- a/jenkins/master/config.yml
+++ b/jenkins/master/config.yml
@@ -8,11 +8,4 @@
           pillar:
             jenkins:
               master:
-                home: /srv/volumes/jenkins
-      sudo:
-        users:
-          jenkins:
-            hosts:
-            - ALL
-            commands:
-            - docker
\ No newline at end of file
+                home: /srv/volumes/jenkins
\ No newline at end of file
diff --git a/jenkins/slave/docker.yml b/jenkins/slave/docker.yml
index b134225..ea3639b 100644
--- a/jenkins/slave/docker.yml
+++ b/jenkins/slave/docker.yml
@@ -7,3 +7,12 @@
         jenkins:
           groups:
             - docker
+      sudo:
+        enabled: true
+        users:
+          jenkins:
+            setenv: true
+            hosts:
+            - ALL
+            commands:
+            - /usr/bin/docker
\ No newline at end of file
diff --git a/linux/system/repo/glusterfs.yml b/linux/system/repo/glusterfs.yml
index 3dfa9f9..fb331f0 100644
--- a/linux/system/repo/glusterfs.yml
+++ b/linux/system/repo/glusterfs.yml
@@ -1,9 +1,11 @@
 parameters:
+  _param:
+    glusterfs_version: 3.8
   linux:
     system:
       repo:
         glusterfs-ppa:
-          source: "deb http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu ${_param:linux_system_codename} main"
+          source: "deb http://ppa.launchpad.net/gluster/glusterfs-${_param:glusterfs_version}/ubuntu ${_param:linux_system_codename} main"
           architectures: amd64
           key_id: 3FE869A9
-          key_server: keyserver.ubuntu.com
\ No newline at end of file
+          key_server: keyserver.ubuntu.com
diff --git a/linux/system/sudo.yml b/linux/system/sudo.yml
index 1668c12..8f03f7d 100644
--- a/linux/system/sudo.yml
+++ b/linux/system/sudo.yml
@@ -23,7 +23,21 @@
     - /usr/sbin/visudo
     sudo_coreutils_safe:
     - /usr/bin/less
+    - /usr/bin/grep
+    - /usr/bin/fgrep
+    - /usr/bin/egrep
+    - /usr/bin/zgrep
+    - /usr/bin/tail
+    - /usr/bin/socat
+    - /usr/bin/top
+    - /usr/bin/tail
+    - /usr/bin/lsof
+    - /usr/bin/virsh
+    - /bin/ls
+    - /bin/cp
+    - /bin/netstat
     sudo_rabbitmq_safe:
+    - /usr/sbin/rabbitmqctl
     - /usr/sbin/rabbitmqctl status
     - /usr/sbin/rabbitmqctl cluster_status
     - /usr/sbin/rabbitmqctl list_queues*
@@ -41,3 +55,42 @@
     - /usr/bin/salt-call saltutil*
     sudo_salt_trusted:
     - /usr/bin/salt*
+    sudo_networking:
+    - /sbin/ip
+    - /sbin/ss
+    - /sbin/ifconfig
+    - /sbin/route
+    - /sbin/ethtool
+    - /sbin/tcpdump
+    sudo_contrail_utilities:
+    - /usr/bin/contrail*
+    - /bin/contrail*
+    - /usr/bin/vif
+    - /usr/bin/flow
+    - /usr/bin/vrfstats
+    - /usr/bin/rt
+    - /usr/bin/dropstats
+    - /usr/bin/mpls
+    - /usr/bin/mirror
+    - /usr/bin/vxlan
+    - /usr/bin/nh
+    sudo_storage_utilities:
+    - /usr/bin/ceph*
+    - /usr/bin/rados*
+    - /usr/bin/rbd
+    - /usr/sbin/gluster
+    sudo_openstack_clients:
+    - /usr/bin/openstack
+    - /usr/bin/heat*
+    - /usr/bin/nova*
+    - /usr/bin/neutron*
+    - /usr/bin/keystone*
+    - /usr/bin/glance*
+    - /usr/bin/cinder*
+    - /usr/bin/swift*
+    - /usr/bin/ironic*
+    - /usr/bin/manila*
+    - /usr/bin/barbican*
+    - /usr/bin/ceilometer*
+    - /usr/bin/trove*
+    
diff --git a/nginx/server/proxy/stacklight/grafana.yml b/nginx/server/proxy/stacklight/grafana.yml
index a1c7c49..24219ee 100644
--- a/nginx/server/proxy/stacklight/grafana.yml
+++ b/nginx/server/proxy/stacklight/grafana.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    nginx_proxy_grafana_port: 3000
   nginx:
     server:
       enabled: true
@@ -9,7 +11,7 @@
           name: grafana
           proxy:
             host: ${_param:stacklight_monitor_address}
-            port: 3000
+            port: ${_param:nginx_proxy_grafana_port}
             protocol: http
           host:
             name: ${_param:cluster_public_host}
diff --git a/openssh/server/team/k8s_team.yml b/openssh/server/team/k8s_team.yml
index ed85ae0..36f3252 100644
--- a/openssh/server/team/k8s_team.yml
+++ b/openssh/server/team/k8s_team.yml
@@ -9,6 +9,76 @@
           full_name: Dmitry Shulyak
           home: /home/dshulyak
           email: dshulyak@mirantis.com
+        pskamruk:
+          enabled: true
+          sudo: true
+          name: pskamruk
+          full_name: Piotr Skamruk
+          home: /home/pskamruk
+          email: pskamruk@mirantis.com
+        ishvedunov:
+          enabled: true
+          sudo: true
+          name: ishvedunov
+          full_name: Ivan Shvedunov
+          home: /home/ishvedunov
+          email: ishvedunov@mirantis.com
+        jnowak:
+          enabled: true
+          sudo: true
+          name: jnowak
+          full_name: Jedrzej Nowak
+          home: /home/jnowak
+          email: jnowak@mirantis.com
+        vefimova:
+          enabled: true
+          sudo: true
+          name: vefimova
+          full_name: Victoria Efimova
+          home: /home/vefimova
+          email: vefimova@mirantis.com
+        sgolovatiuk:
+          enabled: true
+          sudo: true
+          name: sgolovatiuk
+          full_name: Sergii Golovatiuk
+          home: /home/sgolovatiuk
+          email: sgolovatiuk@mirantis.com
+        loles:
+          enabled: true
+          sudo: true
+          name: loles
+          full_name: Lukasz Oles
+          home: /home/loles
+          email: loles@mirantis.com
+        mkwiek:
+          enabled: true
+          sudo: true
+          name: mkwiek
+          full_name: Maciej Kwiek
+          home: /home/mkwiek
+          email: mkwiek@mirantis.com
+        mattymo:
+          enabled: true
+          sudo: true
+          name: mattymo
+          full_name: Matthew Mosesohn
+          home: /home/mattymo
+          email: mattymo@mirantis.com
+        slagun:
+          enabled: true
+          sudo: true
+          name: slagun
+          full_name: Stan Lagun
+          home: /home/slagun
+          email: slagun@mirantis.com
+        psiwczak:
+          enabled: true
+          sudo: true
+          name: psiwczak
+          full_name: Piotr Siwczak
+          home: /home/psiwczak
+          email: psiwczak@mirantis.com
   openssh:
     server:
       enabled: true
@@ -18,6 +88,71 @@
           public_keys:
           - ${public_keys:dshulyak}
           user: ${linux:system:user:dshulyak}
+        pskamruk:
+          enabled: true
+          public_keys:
+          - ${public_keys:pskamruk}
+          user: ${linux:system:user:pskamruk}
+        ishvedunov:
+          enabled: true
+          public_keys:
+          - ${public_keys:ishvedunov}
+          user: ${linux:system:user:ishvedunov}
+        jnowak:
+          enabled: true
+          public_keys:
+          - ${public_keys:jnowak}
+          user: ${linux:system:user:jnowak}
+        vefimova:
+          enabled: true
+          public_keys:
+          - ${public_keys:vefimova}
+          user: ${linux:system:user:vefimova}
+        sgolovatiuk:
+          enabled: true
+          public_keys:
+            - ${public_keys:sgolovatiuk}
+          user: ${linux:system:user:sgolovatiuk}
+        loles:
+          enabled: true
+          public_keys:
+          - ${public_keys:loles}
+          user: ${linux:system:user:loles}
+        mkwiek:
+          enabled: true
+          public_keys:
+          - ${public_keys:mkwiek}
+          user: ${linux:system:user:mkwiek}
+        slagun:
+          enabled: true
+          public_keys:
+          - ${public_keys:slagun}
+          user: ${linux:system:user:slagun}
+        mattymo:
+          enabled: true
+          public_keys:
+          - ${public_keys:mattymo}
+          user: ${linux:system:user:mattymo}
   public_keys:
-    kproskurin:
+    dshulyak:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCvkecSoZQDlJ3rfnxzYYkKVOwZG/oGVNYykey07pJXzcc4RDnP+OSPSD57Ovc3f9DgGpDqi5EaSTK9wPT3Z4Xlq/0IN9mJjSqkMKahlQutozNeathqghM3mkiBrqV8Y9H+L+5V743ttWMxp+oEpYMVz6QlP152mDwhRESEoU6dm1UjPDOPmiqIBrjkc0glqrBGkvj6Rd7cyVrbVG//mOoemT0S+l9KHjVzIDF3sd9m1MWCtslO0ixCrIXh90wRYTUVJLe4g95Bo3f3k2/DIeqyLns2zjYaYBc54+VMwPllbc4KTNQnW+oZLGmh7fJRouJvNRmL9JrmVFBZ79tMKpLKq55U9RxAbtkO4wPUQxVXQRairYT6XVOis7eOQzojSyT8+jW1HK1ftexITn1nZnAgivzJYg9YugE5brS1pchJeptGQJDQSNeoAGR5rRc0A4uJIc9EzUjURVpa13ZWWKeenhQ3sfRUrP4+rCe4c0yeZS03jk54bNf3hqD7EEGH96L1ojAXyoVV/TgGgFJC3a3T7qciOMIJpWJVyKBVEgU9mSgWUL0lzEp/IrtEObNQQKwTb7LBM6wrSJd/57ePlTzXzSAZEed+7QV0LW+SBD7rwQyKM93i1P+do+4dmGO0fGr9AhMp2J4gsaFuAtCYZXV/b2zmuGnYGhbq3vacLIJYqQ== ds@ds-X10SAE
+    pskamruk:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTsdLa6F59A7ggGr1kXT5Hsg0sKXRA2zw2DApFU/DinDZ95d82hY5r26HRoPvEebslXUtpYei1T1w6XKSV6x9U0y/4+Wmdxnl+SADWqFWH8k7CJv3kONK7GhTT4fMpwt88ZHiVUwoTf5CdzhzNL1vd6NWpjt9qIq0G/4n0Ds/5paUFLJ5OIm7ealekMCmiOCQac/FgZYcQAdXr0nalhZkQzV4OOf9cxxftGTTq4ppLEF0I7aswWadN60qdmM2muRMpiaFZweyIH8f8wlqcYYFgd8N1RQmBqKcP6i6ukJLuvzqGb0aeCcv0h9i6ijZzC8s7DTYATn6TpD2XN4E4Adup jell@Piotrs-MacBook-Pro.local
+    ishvedunov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpw4sk2sO6RxkgAa3yTLWrLhke7mRccOHQ9LQFnhCuYxF8q8W0/FOw9imEMC/GQjLMUn0a3qDDflGq/Ze76/wygZQr04fupyD94XIMw1QC80FS/LbdSDq2RYIpS46Gw9tTiWzUegHZuD1YCb7nqqpmAELm1DKZybA85+oOaZidFrIgWNf07bvu2LdH6zVM5EQHyXvuUlBL4WA4aW2kB6dyklln1SH+J+UyMDeU9m4ygHzeZ1tf9c+8d9uBzWxEZ9//e0pDYnuvViDK/rgyNvDqpdrAtikmk2tlKAJLsZYhkQc60PR58yH0e4UAH0P6Ga/JrvUR72sY/H7HsUzUnWRD
+    jnowak:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2W27dcnqDu+wHpxy0c69czDihhDirm3FgQm4CuNKuuYwS0iJtITj5C7TWD1oP3Ym9yKvLqI71kpREH9BNB3qPw1ypfs/BY8Rv7CJTPk4N+lwUGlfIWPJ+PhS3bQMdDjOfpy7lBaVpVl6WpfBXN9RkNvqX0MYU7173Nm2EsBZVZ3Lcz/sYnpZxuRhbe+XMmnnOXmPJIO579Gawfx/yGMemjv/M4KxUpEIfCEdVhsUc5NRhIaWbk80VFxPJ/k8i6WJVootN0wtHgS1pk5Li0G66Y4A+epdmsyCaMJ5REJRzp9IyV70Dev7eBAYLSo0PGG2cG3AnLUnkMvyp6/vaWXBj pigmej@lap
+    vefimova:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr7JWFM1GAEtsTKF3UfYnZRJJzCGM/Bp0QUdTa0ZPvcG1Vn01utIJvd8/STYHhG4Ifvreo7J76lF3gZ63nndr5kcB+StrSx604Rx12aD1yjLRNuJqiWa9JOgGq7zJaDECN0PIdRDiRH9tepdmrCeq+hrqZzeJLPYo8xIaTXukcI5g5IueciWEU37lerV86X4qycJp7weLYocT7IttNTq8Gln3K8fLfjYDO4JqVX32SOT4d/Y/BpxEMVwEMgFp7lVc75SfwdVFiTvYLrEqexvcL89Cefg12O/kEMAvGQ+s5UZp+4uwKE6meLkkYXTdN91yYq2gZ3Qvf2l9z9UY+jefH vyatta@vyatta
+    sgolovatiuk:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDRO3Q3yFST6biBh9aMbDROK8dDsknJCRSD9at3Bpac0dDHRuaM+Bq+bTmf/BtgTn3oKnL/cCDEmQYWIUY8aja8FcEE28rte6E0bBBQHXXLW0GyaD23wGOE5L20Qp+l9p0mcO9LtdZ0KVNGX28lx0z+qhE71l/PzMWHN+YxxwoOTBsI+3ByOefKKJYQsDvhvW4tGyKNATinA1ZSJBPPrnrTjac6zeYZZFE1evgBjxWawFm5Pebe95irLKuMr4tBWHqf7frP4VqfXlIWuRvhMi1OQDLMJeodhtZPKvX2FRfRST8XXwX4c8tfl1w3TD5nkGapTxPdUI/0BdTfyxPlf0sW3MQQTycCILxHSWQCTvP/O7hcckCYXpY5THTXRjkSat0nYNcERiiIbM0uubUdH+Pe7KTQ73OOrE92yWc8bDpnNTSgcMI41/YdKvX+dZtPVMFu8yT7Q/9aBvmQY4BzBt5zjI7ZQyGaOY/SmalYj50tCMFMbk+7Ey1WEDbNSsTMq/YH7l7ywxpcN6un9WVpUYvVSFdNjuS96LSeMYZA4126HwxQwLGDJ7xFUoSjwlkxgWBta6hajJEsXg43azinpGfcQLrlsTD3s9IlRhTeiWysmmM/OllqHCwMTE6xJi7HIoHu2WIvZNW58XRKNHY4AN8frvAsN7L+17UZ+huNweaLzQ==
+    loles:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDdbj2Li0TXK+U4jnLlfuQO8eyPdPjuqCHbHSWRokEmXwcjZVdRC/yLvI9W0tGFwNtPrf2Cyc14YJmnnPDUxvHklWX7vaOdLuTVvDRrnMrXK0INTVvFmytgLVzONvbAnFnMsh1HlpbkGwIfc12N+ZxUVtFEiwtVtT1Uf/drzZXENhTM2q7+l2/u9SlKrFWQkX5udw3L+Gi84D2RWqXhFG/0O0x/edZ5DDvKvLvolhyk+yXoo4wv5DJM+fRKI7tZC1whyL3jpDA9pe5TOxbKDsa/sHXx+2XIRQgQ1Z0vcUkde4j1LFZd032ZPMY4s8O1N0nKWOqGi/in1sOCxE6ofM1xtD/HJUYe8tp5qlWD1U2eofBxwtvw/qLUPjh00rUjW3S+Bla40M6rOmOoQdVID8qLsSXH/s/eAMNxoOL+go07EtfxL5uOOZp+3c+1kxFvyMfeu25Pb/xa8CHkTUgIri8eG4D0aGrBf6S24lb0/lRmhg0yZ6Zdk8pdlhIHXIOTvgPCkEY2O1Y8rHoWy4UtJAxxRvw8ssWsPexsvtDlFae1l3k7lh3ls9osebpo7xnfUevk5Lar4vCsoWkz0X2uNXxoiDHsINn1gUI17u2wH2nG7fvf6P/NvISIUKGN3vD0fLgjeQWYsXPX6x3bgO7DhJmibvVzhcAnq5Eb8qb5H3W5gQ== salmon@lmo
+    mkwiek:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDd/y9KPuy12K3hY+JE51rRm9Tbyl3FM2FK6+mi6Nbop/G03mDVSR8pbmsk+PiQwGRySMQtjVaLk3LoIkgn8MTNw9+Z1AqOdlBN7XJgaZ3PWvix3M4fV56uGzgjFtOTcWH9UfXPmGGKkqpwAfBEK1YK3lrW8dYWcnJcTH1juKCRsvbkWaxt1bzdTdkzH6LT3Bjr9S1imF4GpzXDecPve7eGmqxKjtq3jOupOrTb80BLo4AYBjrn1zdIWpEm0sBSz0acWlfhDd7+6eCaq5rSLAbWRHmBu+4shefh9oSyh/tLfGW68ILCNtpJWYKiKAWfFP5u1UqJyOLqzF0L9J9+fo5 mkwiek@mirantis.com
+    mattymo:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0IKYIbf05K67En++os8mfi2XYTCHp5ex+KBy4Y7NqAXC3J+hnqgcMry9sHtqVJ+O6do7bCRY7sjgnWosm6TxEupxMCs+euViT3VFvQlszAvj4v/xrAu0IwUUiqA0Pn9TKCJrHtYKYixkGfNw8IdxShH2FRTh52ufBqlLP5qRhdMP/nOohbNwtk0FAX49UB4AXzcLLkHu+P3gjTkR345CH+iciBGL88rp8qpEEA6QdtEjcgk1tGY3uktJ1tTWBv4ozth6EF9A+kG4yd1Fhwv2JVPRNkcL/xKR7f4i67A9KyyNoFLv4rHfXXPOjyproNpz5CZ06V7lJ4jgU/AbyHhLgw== mmosesohn@mattymo1
+    slagun:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfQtpitSDDfwP1TruBs7Nlim1B2PC8NKu1lOifZGOgGaL4G6CTXJunSoU48ovg0AOks6OPb7DSU9ocLTj6q0qNuPvy4yrsKWS+ZsrywLW5qp3OGfE7wmAWj5AGxNUiUaLAFKhriVV541v57OVw322dDuxQ3YE0P5dkKKBc9Xy3Su7PoDkR029fbQFvSlIsUtrICNGKvMtrTIm8V0EQHZnV7Y44+MMJMRxCMrulHJFmtaKE5uPaRz+eVVsbEOl1jfUA/BQ1WyU52Ol3gvm34kwBStQcnqhKC2CP/5ILVhf+Omylw+mcs58vKbc0Tw6dwFEDaTQlkYHLFZij+Y24HGyr slagun@MacLagun2.local
+    psiwczak:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFSHwjVOBC3nVVytH3DAaWEcfrca/cnurIn9K2elf8wn2PSet7q1OddfVTAtYdiG8pai9BX3uHswEu+TinAfgPoEnvKR4wSgk4hVf/W9eCf7xOn1X0fdSnfogQEjdP54Qk+mOmrh1vChcOL/NdBNNxJC6LGHRslVfcGu5ULaasT7EGzItMjUl8hKbbsM8tFX1IW7uRm3fZu4/HiMMaMnm+cPwH9LUB+cOaLEain5WNo0j0OKtpF6Kp53fpqCS6v4z/+wMgx0V2BMMrSla6cq4mL7iLvtufkO467j2ksa9sG8/ADD6Wh89hxkKGqF3yDm+olywNEo+WwTRfZf6Py5Uv
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index f25149a..266bd15 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -38,11 +38,19 @@
             L1_SUPPORT_SALT_TRUSTED: ${_param:sudo_salt_trusted}
             L1_SUPPORT_RESTRICTED_SHELLS: ${_param:sudo_shells}
             L1_SUPPORT_RESTRICTED: ${_param:sudo_restricted_su}
+            L1_SUPPORT_NETWORKING: ${_param:sudo_networking}
+            L1_SUPPORT_CONTRAIL: ${_param:sudo_contrail_utilities}
+            L1_SUPPORT_STORAGE: ${_param:sudo_storage_utilities}
+            L1_SUPPORT_OPENSTACK_CLIENTS: ${_param:sudo_openstack_clients}
         groups:
           support:
             commands:
                 - L1_SUPPORT_SALT
                 - L1_SUPPORT_COREUTILS
                 - L1_SUPPORT_RABBITMQ
+                - L1_SUPPORT_NETWORKING
+                - L1_SUPPORT_CONTRAIL
+                - L1_SUPPORT_STORAGE
+                - L1_SUPPORT_OPENSTACK_CLIENTS
                 - '!L1_SUPPORT_RESTRICTED_SHELLS'
                 - '!L1_SUPPORT_RESTRICTED'
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index 118a16e..ac7fd25 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -65,6 +65,20 @@
           full_name: Martin Polreich
           home: /home/mpolreich
           email: mpolreich@mirantis.com
+        ityaptin:
+          enabled: true
+          name: ityaptin
+          sudo: true
+          full_name: Ilya Tyaptin
+          home: /home/ityaptin
+          email: ityaptin@mirantis.com
+        isvetlov:
+          enabled: true
+          name: isvetlov
+          sudo: true
+          full_name: Ildar Svetlov
+          home: /home/isvetlov
+          email: isvetlov@mirantis.com
   openssh:
     client:
       enabled: true
@@ -116,6 +130,16 @@
           public_keys:
           - ${public_keys:mpolreich}
           user: ${linux:system:user:mpolreich}
+        ityaptin:
+          enable: true
+          public_keys:
+          - ${public_keys:ityaptin}
+          user: ${linux:system:user:ityaptin}
+        isvetlov:
+          enable: true
+          public_keys:
+          - ${public_keys:isvetlov}
+          user: ${linux:system:user:isvetlov}
   public_keys:
     newt:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
@@ -135,3 +159,7 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrCyaZjs8hiwx38LfpeQ2z9n9ptwQ7gFrhq2z5sK9q/LQMCubbnp5xhyF0SMY1jmQUewBOKXhnq3QSX+DmtNsnhitnZBw2BE5PBXllCBWMMiWULfAYvB0of728Q3EEjrtyfHkt7o2E+CvreVJcVI4kBwjKh5WpVBZ8mmkW/sexLGMuYu0bUWjCddu6ZlhUa+y14VZKOKp44auemza1VL/UzqOVZkBAfR2gPV2pBG3Im+SlnOlDRxKPEXQbsn3u/sNeZq0wSY++khY86AU7jAKfL2NiNsoA7CyB0jTEKwYO3vOWOhECifZuHwY/TNWyRFWM2ImW3mT9aO7nE4w4jXXJ vgusev@vgusev
     mpolreich:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0N+ds8BGTR+ZQo9NSRGRbjv3T8AbPmtSw2nClXxetRdmHpM/mU7/5iD7qfkCXtNptKeCG/Qk44wlijnAtjztJK1qfvyphHe3etZxLnqhYMm73Yy++yKPE/ywFPFb+7kd0BDy2iZqohZpX3gUi5iDnvXUInHNqqtTv3xFe2kmn3lq5bSRuUMtr61nZ7z/fkX8kNfoGxKrm7bhSo5zq4sjTrj3lk1LKZc1HYji3RwrzBM0z4eyed1BaJyDNtG+eFN4nOnvVn59452AR8SmKJXRErk37rEoQn80xszypzybooFPN5dpdB6u9b4xquFCOD83usb8kEjKY9VIYGuXxEEts1KIF20J+xd8UnZU8d4JL50G8JY8zdNgurR3ZyMD2okuord4cpHF8SVecsAyRV6nuhDxVtF2Xn/RriY02jrLoRPsS+3nIrKt9H8vpQZMYJ+jgEpekZhhVfz4AP3pATzOrWENzNXj5G1bLJs1C9aTtwE27EnKW73XekX/GLsehCwsQ21JvDX8PMxJwLVfqvkRlrc5GILEIVgjZ82Cj6Eens1QobymRAEWuEpZxkPx6u0kGO62ri8zFx8+NYwYDz3mwhHDRT34T/Rvzy/9V9xVjkUQOj9cZ3eYBnC1MffJjx8heHDmSQmUd+99zKa9Hzr74z3AvR3AIgFqmu7kx5fIMew== ubuntu@thinkpad-x1
+    ityaptin:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDLTkl8X9HIJxruAHkmGNQTovy7DCr256pH68xh2DHWinPKUW4ccsCBbqJeF56aEA41OKJlEVOYzD3gQJkDAAbDdy9BlI14oEtzmk3yAtgBwwUzUNMq7oCPrbt4xNg5U26JSb26j69r5vQ4vXA2hf0bCQ68vb3VDqMMaMbneI3rP3qSaq7dauR8sEjx1XAtNen5SygLE46k0pCObJmahGkg39HisoJ/gkjoi/xvQn1JzrYSxWObrBfUbtQN3JbCRozSp/0Env0hMbXj7cS3J/uY68zAWc7GAEFKSmPAol4d/93sRknFUSQKqZjsDaLfiGLte/7oFwLquaz6AJw+mwP ityaptin@ityaptin.local
+    isvetlov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDflz5rJEC6+yKOteNG2uzObQCtV/c/Rnu9Aku1AJWLMMlouID7RaCUrP642xH2z11kZE+sZk/4c3515M5SPQFVKhjGceftbnI9I7DI1KF4OJwMCSfmACDHM3bJcld8eiKTRBxtk32i6YPdNi6m9unHvPultTIBJCxRP/KVyxOOnQparsSSBhBj2t3Kis+3dnDZNBUJJDWyo69FD0RvAOaWZdogwes0nCl+3JJSNWsATqyS+bi4ojqJimHFKiW2sz8qMX3cMzu9uTx1OWvJWJRgOV5/tPsuuNVt75zPAOsfJnIqQJtpkdZAb4SYK+0jLFcLvB6GBgXY3aHk9nHu9MHr isvetlov@ubuntu
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
index fd56d1d..14d5da3 100644
--- a/prometheus/server/target/dns.yml
+++ b/prometheus/server/target/dns.yml
@@ -1,3 +1,7 @@
+classes:
+- service.prometheus.server.container
+- service.prometheus.alertmanager.container
+- service.prometheus.pushgateway.container
 parameters:
   prometheus:
     server:
@@ -9,9 +13,14 @@
               domain:
               - 'tasks.monitoring_pushgateway'
               type: A
-              port: 9091
+              port: ${prometheus:pushgateway:bind:port}
             - name: 'prometheus'
               domain:
               - 'tasks.monitoring_server'
               type: A
-              port: 9090
+              port: ${prometheus:server:bind:port}
+            - name: 'alertmanager'
+              domain:
+              - 'tasks.monitoring_alertmanager'
+              type: A
+              port: ${prometheus:alertmanager:bind:port}
diff --git a/reclass/storage/system/stacklightv2_server_cluster.yml b/reclass/storage/system/stacklightv2_server_cluster.yml
new file mode 100644
index 0000000..c72ac2c
--- /dev/null
+++ b/reclass/storage/system/stacklightv2_server_cluster.yml
@@ -0,0 +1,42 @@
+parameters:
+  _param:
+    stacklight_monitor_node01_hostname: mon01
+    stacklight_monitor_node02_hostname: mon02
+    stacklight_monitor_node03_hostname: mon03
+  reclass:
+    storage:
+      node:
+        stacklight_server_node01:
+          name: ${_param:stacklight_monitor_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - system.docker.swarm.master
+          - cluster.${_param:cluster_name}.stacklight.server
+          - cluster.${_param:cluster_name}.stacklight.client
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:stacklight_monitor_node01_address}
+            keepalived_vip_priority: 103
+        stacklight_server_node02:
+          name: ${_param:stacklight_monitor_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - system.docker.swarm.manager
+          - cluster.${_param:cluster_name}.stacklight.server
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:stacklight_monitor_node02_address}
+            keepalived_vip_priority: 102
+        stacklight_server_node03:
+          name: ${_param:stacklight_monitor_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - system.docker.swarm.manager
+          - cluster.${_param:cluster_name}.stacklight.server
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:stacklight_monitor_node03_address}
+            keepalived_vip_priority: 101
diff --git a/salt/control/cluster/cicd_control_cluster.yml b/salt/control/cluster/cicd_control_cluster.yml
index eb6a8b1..82366a8 100644
--- a/salt/control/cluster/cicd_control_cluster.yml
+++ b/salt/control/cluster/cicd_control_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             cid01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:cicd_control_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: cicd.control
             cid02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:cicd_control_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: cicd.control
             cid03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:cicd_control_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: cicd.control
diff --git a/salt/control/cluster/infra_idm_cluster.yml b/salt/control/cluster/infra_idm_cluster.yml
index 98d580b..3db87a2 100644
--- a/salt/control/cluster/infra_idm_cluster.yml
+++ b/salt/control/cluster/infra_idm_cluster.yml
@@ -13,14 +13,14 @@
           engine: virt
           node:
             idm01:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               size: infra.idm
             idm02:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               size: infra.idm
             idm03:
-              provider: kvm03.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_centos7_image}
               size: infra.idm
diff --git a/salt/control/cluster/infra_integration_single.yml b/salt/control/cluster/infra_integration_single.yml
index d1ef4e0..66de895 100644
--- a/salt/control/cluster/infra_integration_single.yml
+++ b/salt/control/cluster/infra_integration_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             cid01:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:cicd_control_node01_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
-              size: infra.integration
\ No newline at end of file
+              size: infra.integration
diff --git a/salt/control/cluster/infra_proxy_cluster.yml b/salt/control/cluster/infra_proxy_cluster.yml
index c82a947..f3453ff 100644
--- a/salt/control/cluster/infra_proxy_cluster.yml
+++ b/salt/control/cluster/infra_proxy_cluster.yml
@@ -13,10 +13,12 @@
           engine: virt
           node:
             prx01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_proxy_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: infra.proxy
             prx02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:openstack_proxy_node01_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: infra.proxy
diff --git a/salt/control/cluster/infra_proxy_single.yml b/salt/control/cluster/infra_proxy_single.yml
index 0cfb741..7d092fa 100644
--- a/salt/control/cluster/infra_proxy_single.yml
+++ b/salt/control/cluster/infra_proxy_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             prx01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_proxy_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: infra.proxy
diff --git a/salt/control/cluster/infra_storage_single.yml b/salt/control/cluster/infra_storage_single.yml
index 5d21054..ca8ce26 100644
--- a/salt/control/cluster/infra_storage_single.yml
+++ b/salt/control/cluster/infra_storage_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             sto01:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
-              size: infra.storage
\ No newline at end of file
+              size: infra.storage
diff --git a/salt/control/cluster/infra_version_control_single.yml b/salt/control/cluster/infra_version_control_single.yml
index dd40496..10e01ab 100644
--- a/salt/control/cluster/infra_version_control_single.yml
+++ b/salt/control/cluster/infra_version_control_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             git01:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
-              size: infra.version_control
\ No newline at end of file
+              size: infra.version_control
diff --git a/salt/control/cluster/opencontrail_analytics_cluster.yml b/salt/control/cluster/opencontrail_analytics_cluster.yml
index 8fbe3ee..37fb60a 100644
--- a/salt/control/cluster/opencontrail_analytics_cluster.yml
+++ b/salt/control/cluster/opencontrail_analytics_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             nal01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:opencontrail_analytics_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: opencontrail.analytics
             nal02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:opencontrail_analytics_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: opencontrail.analytics
             nal03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:opencontrail_analytics_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: opencontrail.analytics
diff --git a/salt/control/cluster/opencontrail_control_cluster.yml b/salt/control/cluster/opencontrail_control_cluster.yml
index 2548fbd..10ddf5e 100644
--- a/salt/control/cluster/opencontrail_control_cluster.yml
+++ b/salt/control/cluster/opencontrail_control_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             ntw01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:opencontrail_control_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: opencontrail.control
             ntw02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:opencontrail_control_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: opencontrail.control
             ntw03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:opencontrail_control_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: opencontrail.control
diff --git a/salt/control/cluster/openstack_benchmark_single.yml b/salt/control/cluster/openstack_benchmark_single.yml
index 48971ef..0677320 100644
--- a/salt/control/cluster/openstack_benchmark_single.yml
+++ b/salt/control/cluster/openstack_benchmark_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             bmk01:
-              provider: kvm03.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
-              size: openstack.benchmark
\ No newline at end of file
+              size: openstack.benchmark
diff --git a/salt/control/cluster/openstack_billing_single.yml b/salt/control/cluster/openstack_billing_single.yml
index 1fb7a9b..f8dacf7 100644
--- a/salt/control/cluster/openstack_billing_single.yml
+++ b/salt/control/cluster/openstack_billing_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             bil01:
-              provider: kvm03.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
-              size: openstack.control
\ No newline at end of file
+              size: openstack.control
diff --git a/salt/control/cluster/openstack_control_cluster.yml b/salt/control/cluster/openstack_control_cluster.yml
index 6ee34a2..f28a7d0 100644
--- a/salt/control/cluster/openstack_control_cluster.yml
+++ b/salt/control/cluster/openstack_control_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             ctl01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_control_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.control
             ctl02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:openstack_control_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.control
             ctl03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:openstack_control_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.control
diff --git a/salt/control/cluster/openstack_database_cluster.yml b/salt/control/cluster/openstack_database_cluster.yml
index 2513eb4..2a00308 100644
--- a/salt/control/cluster/openstack_database_cluster.yml
+++ b/salt/control/cluster/openstack_database_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             dbs01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_database_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.database
             dbs02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:openstack_database_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.database
             dbs03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:openstack_database_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.database
diff --git a/salt/control/cluster/openstack_dns_cluster.yml b/salt/control/cluster/openstack_dns_cluster.yml
index 4ca0e00..71af5c1 100644
--- a/salt/control/cluster/openstack_dns_cluster.yml
+++ b/salt/control/cluster/openstack_dns_cluster.yml
@@ -13,10 +13,10 @@
           engine: virt
           node:
             dns01:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.dns
             dns02:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.dns
diff --git a/salt/control/cluster/openstack_gateway_single.yml b/salt/control/cluster/openstack_gateway_single.yml
index 1b30b6c..e10d1b2 100644
--- a/salt/control/cluster/openstack_gateway_single.yml
+++ b/salt/control/cluster/openstack_gateway_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             gtw01:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
diff --git a/salt/control/cluster/openstack_message_queue_cluster.yml b/salt/control/cluster/openstack_message_queue_cluster.yml
index 06252ac..cab5adb 100644
--- a/salt/control/cluster/openstack_message_queue_cluster.yml
+++ b/salt/control/cluster/openstack_message_queue_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             msg01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_message_queue_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.message_queue
             msg02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:openstack_message_queue_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.message_queue
             msg03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:openstack_message_queue_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.message_queue
diff --git a/salt/control/cluster/openstack_proxy_cluster.yml b/salt/control/cluster/openstack_proxy_cluster.yml
index 0f461c7..628dcd8 100644
--- a/salt/control/cluster/openstack_proxy_cluster.yml
+++ b/salt/control/cluster/openstack_proxy_cluster.yml
@@ -13,11 +13,13 @@
           engine: virt
           node:
             prx01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_proxy_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.proxy
             prx02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:openstack_proxy_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.proxy
 
diff --git a/salt/control/cluster/openstack_proxy_single.yml b/salt/control/cluster/openstack_proxy_single.yml
index a3650be..8ad0baf 100644
--- a/salt/control/cluster/openstack_proxy_single.yml
+++ b/salt/control/cluster/openstack_proxy_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             prx01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_proxy_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.proxy
diff --git a/salt/control/cluster/openstack_telemetry_cluster.yml b/salt/control/cluster/openstack_telemetry_cluster.yml
index 463a2ca..633b984 100644
--- a/salt/control/cluster/openstack_telemetry_cluster.yml
+++ b/salt/control/cluster/openstack_telemetry_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             mdb01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:openstack_telemetry_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.telemetry
             mdb02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:openstack_telemetry_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.telemetry
             mdb03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:openstack_telemetry_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_trusty_image}
               size: openstack.telemetry
diff --git a/salt/control/cluster/openstack_upgrade_single.yml b/salt/control/cluster/openstack_upgrade_single.yml
index fd6e4f0..3189f3e 100644
--- a/salt/control/cluster/openstack_upgrade_single.yml
+++ b/salt/control/cluster/openstack_upgrade_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             upg01:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
-              size: openstack.upgrade
\ No newline at end of file
+              size: openstack.upgrade
diff --git a/salt/control/cluster/rsyslog_single.yml b/salt/control/cluster/rsyslog_single.yml
index 4e53747..76cc77f 100644
--- a/salt/control/cluster/rsyslog_single.yml
+++ b/salt/control/cluster/rsyslog_single.yml
@@ -13,6 +13,6 @@
           engine: virt
           node:
             rsl01:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: infra.rsyslog
diff --git a/salt/control/cluster/stacklight_log_cluster.yml b/salt/control/cluster/stacklight_log_cluster.yml
index acac87f..330e301 100644
--- a/salt/control/cluster/stacklight_log_cluster.yml
+++ b/salt/control/cluster/stacklight_log_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             log01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:stacklight_log_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.log
             log02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:stacklight_log_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.log
             log03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:stacklight_log_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.log
diff --git a/salt/control/cluster/stacklight_server_cluster.yml b/salt/control/cluster/stacklight_server_cluster.yml
index 3cf8b08..0055d20 100644
--- a/salt/control/cluster/stacklight_server_cluster.yml
+++ b/salt/control/cluster/stacklight_server_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             mon01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:stacklight_monitor_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.server
             mon02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:stacklight_monitor_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.server
             mon03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:stacklight_monitor_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.server
diff --git a/salt/control/cluster/stacklight_telemetry_cluster.yml b/salt/control/cluster/stacklight_telemetry_cluster.yml
index 63c6029..bfd14b0 100644
--- a/salt/control/cluster/stacklight_telemetry_cluster.yml
+++ b/salt/control/cluster/stacklight_telemetry_cluster.yml
@@ -13,14 +13,17 @@
           engine: virt
           node:
             mtr01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:stacklight_telemetry_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.telemetry
             mtr02:
-              provider: kvm02.${_param:cluster_domain}
+              name: ${_param:stacklight_telemetry_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.telemetry
             mtr03:
-              provider: kvm03.${_param:cluster_domain}
+              name: ${_param:stacklight_telemetry_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: stacklight.telemetry
diff --git a/salt/control/cluster/stacklight_telemetry_single.yml b/salt/control/cluster/stacklight_telemetry_single.yml
index 4ab5ead..81fd6fb 100644
--- a/salt/control/cluster/stacklight_telemetry_single.yml
+++ b/salt/control/cluster/stacklight_telemetry_single.yml
@@ -13,6 +13,7 @@
           engine: virt
           node:
             mtr01:
-              provider: kvm01.${_param:cluster_domain}
+              name: ${_param:stacklight_telemetry_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
-              size: stacklight.telemetry
\ No newline at end of file
+              size: stacklight.telemetry
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index ebb2b00..3eed5e9 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -28,3 +28,6 @@
             openldap:
               source: pkg
               name: salt-formula-openldap
+            lldp:
+              source: pkg
+              name: salt-formula-lldp