Merge "Run keystone under apache"
diff --git a/.releasenotes/config.yaml b/.releasenotes/config.yaml
new file mode 100644
index 0000000..28db76e
--- /dev/null
+++ b/.releasenotes/config.yaml
@@ -0,0 +1,58 @@
+---
+# Usage:
+#
+# reno -qd .releasenotes list
+# reno -qd .releasenotes new slug-title --edit
+# reno -qd .releasenotes report --no-show-source
+
+# Change prelude_section_name to 'summary' from default value prelude
+prelude_section_name: summary
+show_source: False
+sections:
+  - [features, New Features]
+  - [upgrade, Upgrade Notes]
+  - [fixes, Bug Fixes]
+  - [other, Other Notes]
+template: |
+  ---
+  # Author the following sections or remove the section if it is not related.
+  # Use one release note per a feature.
+  #
+  # If you miss a section from the list below, please first submit a review
+  # adding it to .releasenotes/config.yaml.
+  #
+  summary: >
+    This section is not mandatory. Use it to highlight the change.
+
+  features:
+    - Use list to record summary of features.
+    - |
+      Provide detailed description with examples.
+      Format with reStructuredText.
+
+      .. code-block:: text
+
+         provide model/formula pillar snippets
+
+  upgrade:
+    - |
+      Document how to use a feature and related upgrade instructions.
+
+  fixes:
+    - Use list to record summary of fixes.
+      Quick and dirty `git log --oneline`.
+
+  other:
+    - Author additional notes for the release.
+    - Format with reStructuredText.
+    - |
+        Use this section if note is not related to one of the common sections:
+        features, issues, upgrade, deprecations, security, fixes, api, cli
+
+        * list item 1
+        * list item 2
+
+        .. code-block:: yaml
+
+          classes:
+          - system.class.to.load
diff --git a/.releasenotes/notes/add-releasenotes-20cce0cea873f011.yaml b/.releasenotes/notes/add-releasenotes-20cce0cea873f011.yaml
new file mode 100644
index 0000000..733776f
--- /dev/null
+++ b/.releasenotes/notes/add-releasenotes-20cce0cea873f011.yaml
@@ -0,0 +1,18 @@
+---
+summary: >
+  Use "reno", an releasenotes configuration tool to record release notes.
+  Documentation: https://docs.openstack.org/reno/latest
+
+  Example usage:
+
+  .. code-block:: shell
+
+    # to list/create/show release notes, run following commands
+    reno -qd .releasenotes list
+    reno -qd .releasenotes new releasenote-slug-title --edit
+    reno -qd .releasenotes report --no-show-source
+
+other:
+  - |
+    Added `reno <https://docs.openstack.org/reno/latest>_` configuration to track release notes
+    within the reclass-system git repository.
diff --git a/apache/server/site/ironic.yml b/apache/server/site/ironic.yml
new file mode 100644
index 0000000..74173a0
--- /dev/null
+++ b/apache/server/site/ironic.yml
@@ -0,0 +1,11 @@
+parameters:
+  apache:
+    server:
+      site:
+        ironic:
+          name: 'ironic'
+          enabled: true
+          type: 'static'
+          root: '/var/www/httproot'
+          host:
+            name: ${linux:system:name}.${linux:system:domain}
diff --git a/aptly/server/docker.yml b/aptly/server/docker.yml
index ee8f4a2..3fa0a8e1 100644
--- a/aptly/server/docker.yml
+++ b/aptly/server/docker.yml
@@ -20,7 +20,6 @@
       root_dir: /srv/volumes/aptly
       no_config: true
       gpg:
-        keyring: .gnupg/trustdb.gpg
         keypair_id: ${_param:aptly_gpg_keypair_id}
         public_key: ${_param:aptly_gpg_public_key}
         private_key: ${_param:aptly_gpg_private_key}
diff --git a/aptly/server/mirror/debian/cassandra.yml b/aptly/server/mirror/debian/cassandra.yml
index 3d32e6a..846df4e 100644
--- a/aptly/server/mirror/debian/cassandra.yml
+++ b/aptly/server/mirror/debian/cassandra.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -14,5 +16,5 @@
           publisher:
             component: extra
             distributions:
-              - trusty/nightly
-              - xenial/nightly
+              - ubuntu-trusty/${_param:apt_mk_version}
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/debian/elasticsearch.yml b/aptly/server/mirror/debian/elasticsearch.yml
index 942b70a..ece60af 100644
--- a/aptly/server/mirror/debian/elasticsearch.yml
+++ b/aptly/server/mirror/debian/elasticsearch.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,8 +14,8 @@
           publisher:
             component: elastic
             distributions:
-              - trusty/nightly
-              - xenial/nightly
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
         kibana:
           source: http://packages.elasticsearch.org/kibana/4.4/debian
           distribution: stable
@@ -24,8 +26,8 @@
           publisher:
             component: elastic
             distributions:
-              - trusty/nightly
-              - xenial/nightly
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
         kibana-46:
           source: http://packages.elasticsearch.org/kibana/4.6/debian
           distribution: stable
@@ -36,8 +38,8 @@
           publisher:
             component: elastic
             distributions:
-              - trusty/nightly
-              - xenial/nightly
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
         elasticsearch-curator:
           source: http://packages.elastic.co/curator/4/debian
           distribution: stable
@@ -48,5 +50,5 @@
           publisher:
             component: elastic
             distributions:
-              - trusty/nightly
-              - xenial/nightly
+              - trusty/${_param:apt_mk_version}
+              - xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/debian/sensu.yml b/aptly/server/mirror/debian/sensu.yml
index 10f3926..0361538 100644
--- a/aptly/server/mirror/debian/sensu.yml
+++ b/aptly/server/mirror/debian/sensu.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -10,7 +12,7 @@
           gpgkeys:
             - EB9C94BB
           publisher:
-            component: extra
+            component: sensu
             distributions:
-              - trusty/nightly
-              - xenial/nightly
+              - ubuntu-trusty/${_param:apt_mk_version}
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml
index 553e6dd..35ae854 100644
--- a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk/init.yml
@@ -41,18 +41,6 @@
             component: oc32
             distributions:
               - ubuntu-trusty/${_param:apt_mk_version}
-        mcp_opencontrail_trusty_oc303:
-          source: http://apt-mk.mirantis.com/trusty/
-          distribution: ${_param:apt_mk_version}
-          components: oc303
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc303
-            distributions:
-              - ubuntu-trusty/${_param:apt_mk_version}
         mirantis_openstack_trusty_extra:
           source: http://apt-mk.mirantis.com/trusty/
           distribution: ${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/trusty/salt.yml b/aptly/server/mirror/ubuntu/trusty/salt.yml
index bfc4168..4c243b8 100644
--- a/aptly/server/mirror/ubuntu/trusty/salt.yml
+++ b/aptly/server/mirror/ubuntu/trusty/salt.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,5 +14,5 @@
           publisher:
             component: salt
             distributions:
-              - ubuntu-trusty/nightly
+              - ubuntu-trusty/${_param:apt_mk_version}
 
diff --git a/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
index 3401a4e..eda0368 100644
--- a/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
@@ -1,9 +1,11 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
         ubuntu-xenial-ceph-mirantis:
-          source: http://eu.mirror.fuel-infra.org/decapod/ceph/apt
+          source: http://eu.mirror.fuel-infra.org/decapod/ceph/jewel-xenial
           distribution: jewel-xenial
           components: main
           architectures: amd64
@@ -12,15 +14,4 @@
           publisher:
             component: ceph-mirantis
             distributions:
-              - ubuntu-xenial/nightly
-        ubuntu-xenial-decapod-ceph-mirantis:
-          source: http://eu.mirror.fuel-infra.org/decapod/ceph/apt
-          distribution: jewel-xenial
-          components: main
-          architectures: amd64
-          gpgkeys:
-            - 460F3994
-          publisher:
-            component: main
-            distributions:
-              - ubuntu-xenial-decapod-ceph/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/docker.yml b/aptly/server/mirror/ubuntu/xenial/docker.yml
index 819de76..4334374 100644
--- a/aptly/server/mirror/ubuntu/xenial/docker.yml
+++ b/aptly/server/mirror/ubuntu/xenial/docker.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,4 +14,4 @@
           publisher:
             component: docker
             distributions:
-              - ubuntu-xenial/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
index f8177a0..248de32 100644
--- a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
+++ b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
@@ -1,5 +1,6 @@
 parameters:
   _param:
+    apt_mk_version: stable
     glusterfs_version: 3.8
   aptly:
     server:
@@ -14,4 +15,4 @@
           publisher:
             component: glusterfs
             distributions:
-              - ubuntu-xenial/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/grafana.yml b/aptly/server/mirror/ubuntu/xenial/grafana.yml
index 2db0586..8dbb6ea 100644
--- a/aptly/server/mirror/ubuntu/xenial/grafana.yml
+++ b/aptly/server/mirror/ubuntu/xenial/grafana.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,4 +14,4 @@
           publisher:
             component: grafana
             distributions:
-              - ubuntu-xenial/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/influxdb.yml b/aptly/server/mirror/ubuntu/xenial/influxdb.yml
index 87930b9..a2ac597 100644
--- a/aptly/server/mirror/ubuntu/xenial/influxdb.yml
+++ b/aptly/server/mirror/ubuntu/xenial/influxdb.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,4 +14,4 @@
           publisher:
             component: influxdb
             distributions:
-              - ubuntu-xenial/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/maas.yml b/aptly/server/mirror/ubuntu/xenial/maas.yml
index 1382a09..0e4a559 100644
--- a/aptly/server/mirror/ubuntu/xenial/maas.yml
+++ b/aptly/server/mirror/ubuntu/xenial/maas.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,4 +14,4 @@
           publisher:
             component: maas
             distributions:
-              - xenial/nightly
+              - xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
index 6272b69..a340a46 100644
--- a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk/init.yml
@@ -41,18 +41,6 @@
             component: oc32
             distributions:
               - ubuntu-xenial/${_param:apt_mk_version}
-        mcp_opencontrail_xenial_oc303:
-          source: http://apt-mk.mirantis.com/xenial/
-          distribution: ${_param:apt_mk_version}
-          components: oc303
-          architectures: amd64
-          key_url: "http://apt-mk.mirantis.com/public.gpg"
-          gpgkeys:
-            - A76882D3
-          publisher:
-            component: oc303
-            distributions:
-              - ubuntu-xenial/${_param:apt_mk_version}
         mirantis_openstack_xenial_extra:
           source: http://apt-mk.mirantis.com/xenial/
           distribution: ${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/salt.yml b/aptly/server/mirror/ubuntu/xenial/salt.yml
index 9a9b34c..a100bde 100644
--- a/aptly/server/mirror/ubuntu/xenial/salt.yml
+++ b/aptly/server/mirror/ubuntu/xenial/salt.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    apt_mk_version: stable
   aptly:
     server:
       mirror:
@@ -12,4 +14,4 @@
           publisher:
             component: salt
             distributions:
-              - ubuntu-xenial/nightly
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/repo/ubuntu/trusty/extra.yml b/aptly/server/repo/ubuntu/trusty/extra.yml
new file mode 100644
index 0000000..9a799b3
--- /dev/null
+++ b/aptly/server/repo/ubuntu/trusty/extra.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-trusty-extra:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Ubuntu Trusty"
+          publisher:
+            component: extra
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/trusty/opencontrail.yml b/aptly/server/repo/ubuntu/trusty/opencontrail.yml
new file mode 100644
index 0000000..5d98c42
--- /dev/null
+++ b/aptly/server/repo/ubuntu/trusty/opencontrail.yml
@@ -0,0 +1,136 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-trusty-oc302:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.0.2.x"
+          publisher:
+            component: oc302
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc303:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.0.3.x"
+          publisher:
+            component: oc303
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc31:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1"
+          publisher:
+            component: oc31
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc31-exp:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1 experimental"
+          publisher:
+            component: oc31
+            distributions:
+              - trusty-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc311:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1.1.x"
+          publisher:
+            component: oc311
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc311-exp:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1.1.x experimental"
+          publisher:
+            component: oc311
+            distributions:
+              - trusty-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc32:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.2"
+          publisher:
+            component: oc32
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc323:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.2.3.x"
+          publisher:
+            component: oc323
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc32-exp:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.2 experimental"
+          publisher:
+            component: oc32
+            distributions:
+              - trusty-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc40:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 4.0"
+          publisher:
+            component: oc40
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc40-exp:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 4.0 experimental"
+          publisher:
+            component: oc40
+            distributions:
+              - trusty-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-oc666:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Opencontrail master"
+          publisher:
+            component: oc666
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/trusty/openstack.yml b/aptly/server/repo/ubuntu/trusty/openstack.yml
new file mode 100644
index 0000000..09ace8f
--- /dev/null
+++ b/aptly/server/repo/ubuntu/trusty/openstack.yml
@@ -0,0 +1,37 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-trusty-kilo:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Kilo"
+          publisher:
+            component: kilo
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-liberty:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Liberty"
+          publisher:
+            component: liberty
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
+        ubuntu-trusty-mitaka:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Mitaka"
+          publisher:
+            component: mitaka
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/trusty/salt.yml b/aptly/server/repo/ubuntu/trusty/salt.yml
new file mode 100644
index 0000000..473c968
--- /dev/null
+++ b/aptly/server/repo/ubuntu/trusty/salt.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-trusty-salt:
+          distribution: trusty
+          component: main
+          architectures: amd64
+          comment: "Salt formulas for Ubuntu Trusty"
+          publisher:
+            component: salt
+            distributions:
+              - trusty/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/xenial/extra.yml b/aptly/server/repo/ubuntu/xenial/extra.yml
new file mode 100644
index 0000000..2af633f
--- /dev/null
+++ b/aptly/server/repo/ubuntu/xenial/extra.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-xenial-extra:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Ubuntu Xenial"
+          publisher:
+            component: extra
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/xenial/opencontrail.yml b/aptly/server/repo/ubuntu/xenial/opencontrail.yml
new file mode 100644
index 0000000..7f47577
--- /dev/null
+++ b/aptly/server/repo/ubuntu/xenial/opencontrail.yml
@@ -0,0 +1,136 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-xenial-oc302:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.0.2.x"
+          publisher:
+            component: oc302
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc303:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.0.3.x"
+          publisher:
+            component: oc303
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc31:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1"
+          publisher:
+            component: oc31
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc31-exp:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1 experimental"
+          publisher:
+            component: oc31
+            distributions:
+              - xenial-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc311:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1.1.x"
+          publisher:
+            component: oc311
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc311-exp:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.1.1.x experimental"
+          publisher:
+            component: oc311
+            distributions:
+              - xenial-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc32:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.2"
+          publisher:
+            component: oc32
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc323:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.2.3.x"
+          publisher:
+            component: oc323
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc32-exp:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 3.2 experimental"
+          publisher:
+            component: oc32
+            distributions:
+              - xenial-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc40:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 4.0"
+          publisher:
+            component: oc40
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc40-exp:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail 4.0 experimental"
+          publisher:
+            component: oc40
+            distributions:
+              - xenial-dev/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-oc666:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Opencontrail master"
+          publisher:
+            component: oc666
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/xenial/openstack.yml b/aptly/server/repo/ubuntu/xenial/openstack.yml
new file mode 100644
index 0000000..8639807
--- /dev/null
+++ b/aptly/server/repo/ubuntu/xenial/openstack.yml
@@ -0,0 +1,59 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-xenial-kilo:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Kilo"
+          publisher:
+            component: kilo
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-liberty:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Liberty"
+          publisher:
+            component: liberty
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-mitaka:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Mitaka"
+          publisher:
+            component: mitaka
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-newton:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Newton"
+          publisher:
+            component: newton
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
+        ubuntu-xenial-ocata:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Extra packages for Openstack Ocata"
+          publisher:
+            component: ocata
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
diff --git a/aptly/server/repo/ubuntu/xenial/salt.yml b/aptly/server/repo/ubuntu/xenial/salt.yml
new file mode 100644
index 0000000..df74fc2
--- /dev/null
+++ b/aptly/server/repo/ubuntu/xenial/salt.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      repo:
+        ubuntu-xenial-salt:
+          distribution: xenial
+          component: main
+          architectures: amd64
+          comment: "Salt formulas for Ubuntu Xenial"
+          publisher:
+            component: salt
+            distributions:
+              - xenial/nightly
+            architectures:
+              - amd64
diff --git a/artifactory/client/init.yml b/artifactory/client/init.yml
new file mode 100644
index 0000000..0148879
--- /dev/null
+++ b/artifactory/client/init.yml
@@ -0,0 +1,26 @@
+parameters:
+  artifactory:
+    client:
+        enabled: True
+        source:
+          engine: pip
+        server:
+          host: ${_param:artifactory_server_host}
+          port: ${_param:artifactory_server_port}
+          user: ${_param:artifactory_client_user}
+          password: ${_param:artifactory_client_password}
+          license_key: ${_param:artifactory_license_key}
+          ldap_server: ${_param:artifactory_security_ldap_server}
+          ldap_account_base: ${_param:artifactory_security_ldap_root_dn}
+          ldap_searchFilter: ${_param:artifactory_security_ldap_searchFilter}
+          ssl_verify: False
+        repo:
+          local_artifactory_repo:
+            name: local_artifactory_repo
+            package_type: generic
+            repo_type: local
+          remote_artifactory_repo:
+            name: remote_artifactory_repo
+            package_type: generic
+            repo_type: remote
+            url: "http://artifactory.mcp.mirantis.net/"
diff --git a/cassandra/backup/client/single.yml b/cassandra/backup/client/single.yml
new file mode 100644
index 0000000..90fdc5d
--- /dev/null
+++ b/cassandra/backup/client/single.yml
@@ -0,0 +1,13 @@
+classes:
+- system.openssh.client.root
+parameters:
+  _param:
+    cassandra_remote_backup_server: cfg01
+  cassandra:
+    backup:
+      client:
+        enabled: true
+        full_backups_to_keep: 3
+        hours_before_full: 24
+        target:
+          host: ${_param:cassandra_remote_backup_server}
diff --git a/cassandra/backup/server/single.yml b/cassandra/backup/server/single.yml
new file mode 100644
index 0000000..1762504
--- /dev/null
+++ b/cassandra/backup/server/single.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    cassandra_backup_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzLUiHKAjfFXiZ3fsgx35uXF6VivfC5WFafu4QMalxmj6W+s277oCfdWA8Du5f1wtQXM73VQ5nHkXhM2UIfUMarsyhXK+BxKVrcgEBNHdKlDytaecUPyuOxTDdGWhN/DPv5/vL8NYWweEYBbNbLgU0Td7Rvm52TUXKThIDjeF7XDxX4ShXWipBSwU4boOUBtR8KWfga8fsqeBN+eacuAQFR3MrrOfVvAuWW6Bsf047cmd+V6Qv0raoW73Nu4M/ZAdTsaR5k62a0cHsSRoi3hCmNRqw+CZaQi8prQU6t26eWPEtznjp5EkPF+LLh8LxUoCfWqWT+Lxe8QQwT1nx/LCN
+  cassandra:
+    backup:
+      server:
+        enabled: true
+        hours_before_full: 24
+        full_backups_to_keep: 5
+        key:
+          cassandra_pub_key:
+            enabled: true
+            key: ${_param:cassandra_backup_public_key}
diff --git a/ceph/client/container.yml b/ceph/client/container.yml
new file mode 100644
index 0000000..d200a1d
--- /dev/null
+++ b/ceph/client/container.yml
@@ -0,0 +1,5 @@
+classes:
+- service.ceph.client.container
+parameters:
+  _param:
+    ceph_client_prefix_dir: /srv/volumes/ceph
diff --git a/ceph/monitoring/cluster_stats.yml b/ceph/monitoring/cluster_stats.yml
new file mode 100644
index 0000000..8e2138c
--- /dev/null
+++ b/ceph/monitoring/cluster_stats.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.monitoring.cluster_stats
diff --git a/ceph/monitoring/node_stats.yml b/ceph/monitoring/node_stats.yml
new file mode 100644
index 0000000..7e00533
--- /dev/null
+++ b/ceph/monitoring/node_stats.yml
@@ -0,0 +1,2 @@
+classes:
+- service.ceph.monitoring.node_stats
diff --git a/cinder/control/backend/ceph.yml b/cinder/control/backend/ceph.yml
index 1026f68..3b036d4 100644
--- a/cinder/control/backend/ceph.yml
+++ b/cinder/control/backend/ceph.yml
@@ -11,3 +11,4 @@
           user: ${_param:cinder_storage_user}
           secret_uuid: ${_param:cinder_storage_secret_uuid}
           client_cinder_key: ${_param:cinder_storage_client_key}
+          host: ceph
diff --git a/cinder/control/backend/solidfire.yml b/cinder/control/backend/solidfire.yml
new file mode 100644
index 0000000..20d708c
--- /dev/null
+++ b/cinder/control/backend/solidfire.yml
@@ -0,0 +1,14 @@
+parameters:
+  cinder:
+    controller:
+      defaul_volume_type: normal-storage
+      backend: 
+        solidfire:
+          engine: solidfire
+          type_name: normal-storage
+          engine: solidfire
+          san_ip: ${_param:san_ip_address}
+          san_login: ${_param:san_login}
+          san_password: ${_param:san_password}
+          clustername: ${_param:san_cluster_name}
+          sf_emulate_512: true
\ No newline at end of file
diff --git a/cinder/volume/backend/ceph.yml b/cinder/volume/backend/ceph.yml
index 6560add..945f2f9 100644
--- a/cinder/volume/backend/ceph.yml
+++ b/cinder/volume/backend/ceph.yml
@@ -1,7 +1,7 @@
 parameters:
   cinder:
     volume:
-      message_queue: 
+      message_queue:
         ha_queues: true
       enabled: true
       notification: true
@@ -15,3 +15,4 @@
           user: ${_param:cinder_storage_user}
           secret_uuid: ${_param:cinder_storage_secret_uuid}
           client_cinder_key: ${_param:cinder_storage_client_key}
+          host: ceph
diff --git a/cinder/volume/backend/solidfire.yml b/cinder/volume/backend/solidfire.yml
new file mode 100644
index 0000000..3a38e03
--- /dev/null
+++ b/cinder/volume/backend/solidfire.yml
@@ -0,0 +1,15 @@
+parameters:
+  cinder:
+    volume:
+      enabled: true
+      default_volume_type: normal_storage
+      backend:
+        solidfire:
+          engine: solidfire
+          type_name: normal-storage
+          engine: solidfire
+          san_ip: ${_param:san_ip_address}
+          san_login: ${_param:san_login}
+          san_password: ${_param:san_password}
+          clustername: ${_param:san_cluster_name}
+          sf_emulate_512: true
diff --git a/designate/server/backend/bind.yml b/designate/server/backend/bind.yml
index 2b40424..4201f60 100644
--- a/designate/server/backend/bind.yml
+++ b/designate/server/backend/bind.yml
@@ -1,22 +1,27 @@
+classes:
+- service.bind.server.single
 parameters:
+  _param:
+    designate_bind9_rndc_algorithm: hmac-sha512
   designate:
     server:
       backend:
         bind9:
           rndc_key: "${_param:designate_bind9_rndc_key}"
+          rndc_algorithm: "${_param:designate_bind9_rndc_algorithm}"
   bind:
     server:
       key:
         designate:
           secret: "${_param:designate_bind9_rndc_key}"
-          algorithm: hmac-sha512
+          algorithm: "${_param:designate_bind9_rndc_algorithm}"
       allow_new_zones: true
       query: true
       control:
         local:
           enabled: true
           bind:
-            address: 127.0.0.1
+            address: ${_param:single_address}
             port: 953
           allow:
             - 127.0.0.1
@@ -27,10 +32,10 @@
       enabled: true
       option:
         default:
-          server: 127.0.0.1
+          server: ${_param:single_address}
           port: 953
           key: designate
       key:
         designate:
           secret: "${_param:designate_bind9_rndc_key}"
-          algorithm: hmac-sha512
+          algorithm: "${_param:designate_bind9_rndc_algorithm}"
diff --git a/designate/server/backend/pdns.yml b/designate/server/backend/pdns.yml
new file mode 100644
index 0000000..50ec3a2
--- /dev/null
+++ b/designate/server/backend/pdns.yml
@@ -0,0 +1,25 @@
+parameters:
+  designate:
+    server:
+      backend:
+        pdns4:
+          api_token: ${_param:designate_pdns_api_key}
+          api_endpoint: ${_param:designate_pdns_api_endpoint}
+  powerdns:
+    server:
+      enabled: true
+      bind:
+        address: ${_param:single_address}
+        port: 53
+      backend:
+        engine: sqlite
+        dbname: pdns.sqlite3
+        dbpath: /var/lib/powerdns
+      api:
+        enabled: true
+        key: ${_param:designate_pdns_api_key}
+      webserver:
+        enabled: true
+        address: ${_param:single_address}
+        port: ${_param:powerdns_webserver_port}
+        password: ${_param:powerdns_webserver_password}
diff --git a/designate/server/cluster.yml b/designate/server/cluster.yml
index 573ac66..33eb632 100644
--- a/designate/server/cluster.yml
+++ b/designate/server/cluster.yml
@@ -43,17 +43,14 @@
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
-      pool:
-        pool_id: ${_param:designate_pool_id}
-        nameservers:
-          - uuid: ${_param:designate_node1_uuid}
-            host: ${_param:cluster_node01_address}
-            port: 53
-          - uuid: ${_param:designate_node2_uuid}
-            host: ${_param:cluster_node02_address}
-            port: 53
-        targets:
-          uuid: ${_param:designate_target_uuid}
-          options: 'port: 53, host: 127.0.0.1'
-          masters: 127.0.0.1:5354
-          type:  ${_param:designate_target_type}
+      pools:
+        default:
+          description: 'default pool'
+          ns_records: ${_param:designate_pool_ns_records}
+          nameservers: ${_param:designate_pool_nameservers}
+          targets:
+            default:
+              type: ${_param:designate_pool_target_type}
+              description: 'default target'
+              masters: ${_param:designate_pool_target_masters}
+              options: ${_param:designate_pool_target_options}
diff --git a/designate/server/single.yml b/designate/server/single.yml
index bef6e4d..623c357 100644
--- a/designate/server/single.yml
+++ b/designate/server/single.yml
@@ -1,6 +1,5 @@
 classes:
 - service.designate.server.single
-- service.haproxy.proxy.single
 parameters:
   designate:
     server:
@@ -23,7 +22,7 @@
         password: ${_param:mysql_designate_password}
       identity:
         engine: keystone
-        host: ${_param:openstack_control_address}
+        host: ${_param:single_address}
         port: 35357
         tenant: service
         user: designate
@@ -35,3 +34,14 @@
         user: openstack
         password: ${_param:rabbitmq_openstack_password}
         virtual_host: '/openstack'
+      pools:
+        default:
+          description: 'default pool'
+          ns_records: ${_param:designate_pool_ns_records}
+          nameservers: ${_param:designate_pool_nameservers}
+          targets:
+            default:
+              type: ${_param:designate_pool_target_type}
+              description: 'default target'
+              masters: ${_param:designate_pool_target_masters}
+              options: ${_param:designate_pool_target_options}
diff --git a/devops_portal/service/elasticsearch.yml b/devops_portal/service/elasticsearch.yml
index b945af3..647c4ef 100644
--- a/devops_portal/service/elasticsearch.yml
+++ b/devops_portal/service/elasticsearch.yml
@@ -6,5 +6,5 @@
           configure_proxy: true
           endpoint:
             address: ${_param:haproxy_elasticsearch_bind_host}
-            port: ${_param:haproxy_elasticsearch_bind_port}
+            port: ${_param:haproxy_elasticsearch_http_bind_port}
             https: ${_param:haproxy_elasticsearch_ssl:enabled}
diff --git a/devops_portal/service/janitor_monkey.yml b/devops_portal/service/janitor_monkey.yml
new file mode 100644
index 0000000..73f2e7c
--- /dev/null
+++ b/devops_portal/service/janitor_monkey.yml
@@ -0,0 +1,10 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        janitormonkey:
+          configure_proxy: true
+          endpoint:
+            address: ${_param:haproxy_janitor_monkey_bind_host}
+            port: ${_param:haproxy_janitor_monkey_bind_port}
+            https: ${_param:haproxy_janitor_monkey_ssl:enabled}
diff --git a/docker/swarm/manager.yml b/docker/swarm/manager.yml
index 25a7fbe..4bbc22b 100644
--- a/docker/swarm/manager.yml
+++ b/docker/swarm/manager.yml
@@ -9,3 +9,4 @@
       advertise_addr: ${_param:single_address}
       master:
         host: ${_param:cluster_node01_address}
+        port: 2377
diff --git a/docker/swarm/network/runbook.yml b/docker/swarm/network/runbook.yml
new file mode 100644
index 0000000..557b852
--- /dev/null
+++ b/docker/swarm/network/runbook.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    docker_runbook_subnet: 10.40.0.0/24
+  docker:
+    client:
+      network:
+        runbook:
+          subnet: ${_param:docker_runbook_subnet}
+          driver: overlay
+          attachable: true
diff --git a/docker/swarm/service/dashboard/grafana_server.yml b/docker/swarm/service/dashboard/grafana_server.yml
deleted file mode 100644
index 9da7aa5..0000000
--- a/docker/swarm/service/dashboard/grafana_server.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-parameters:
-  _param:
-    docker_grafana_replicas: 1
-    grafana_database_type: sqlite3
-    grafana_database_host: localhost
-    grafana_database_port: 3306
-    grafana_database_password: password
-  docker:
-    client:
-      service:
-        grafana_server:
-          replicas: ${_param:docker_grafana_replicas}
-          environment:
-            GF_DATABASE_TYPE: ${_param:grafana_database_type}
-            GF_DATABASE_NAME: grafana
-            GF_DATABASE_USER: grafana
-            GF_DATABASE_PASSWORD: ${_param:grafana_database_password}
-            GF_DATABASE_HOST: "${_param:grafana_database_host}:${_param:grafana_database_port}"
-            GF_SECURITY_ADMIN_PASSWORD: ${_param:grafana_admin_password}
-          restart:
-            condition: any
-          image: ${_param:docker_image_grafana}
-          ports:
-            - 15013:3000
diff --git a/docker/swarm/service/jenkins.yml b/docker/swarm/service/jenkins.yml
index b2fdeb6..a39b7a4 100644
--- a/docker/swarm/service/jenkins.yml
+++ b/docker/swarm/service/jenkins.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.52
+    docker_image_jenkins: tcpcloud/jenkins:2.63
   docker:
     client:
       service:
diff --git a/docker/swarm/stack/artifactory.yml b/docker/swarm/stack/artifactory.yml
index cda48fe..411b22e 100644
--- a/docker/swarm/stack/artifactory.yml
+++ b/docker/swarm/stack/artifactory.yml
@@ -13,7 +13,7 @@
               deploy:
                 restart_policy:
                   condition: any
-              image: ${_param:docker_image_repository:cicd}/artifactory
+              image: ${_param:docker_image_repository:cicd}
               ports:
                 - 18082:8081
               volumes:
diff --git a/docker/swarm/stack/dashboard.yml b/docker/swarm/stack/dashboard.yml
index 2ee123b..62a3e14 100644
--- a/docker/swarm/stack/dashboard.yml
+++ b/docker/swarm/stack/dashboard.yml
@@ -1,3 +1,5 @@
+classes:
+- service.grafana.support
 parameters:
   _param:
     docker_grafana_replicas: 1
diff --git a/docker/swarm/stack/decapod.yml b/docker/swarm/stack/decapod.yml
new file mode 100644
index 0000000..bd86062
--- /dev/null
+++ b/docker/swarm/stack/decapod.yml
@@ -0,0 +1,65 @@
+parameters:
+  _param:
+    docker_decapod_fe_replicas: 3
+    decapod_version: latest
+    docker_image_admin: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/admin:${_param:decapod_version}
+    docker_image_db: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/db:${_param:decapod_version}
+    docker_image_api: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/api:${_param:decapod_version}
+    docker_image_controller: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/controller:latest
+    docker_image_frontend: docker-prod-local.artifactory.mirantis.com/mirantis/ceph/decapod/frontend:${_param:decapod_version}
+  docker:
+    client:
+      stack:
+        decapod:
+          service:
+            database:
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_db}
+              volumes:
+                - /srv/volumes/decapod/db:/data/db
+              ports:
+                - 37017:27017
+            api:
+              links:
+                - database
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_api}
+              volumes:
+                - /srv/volumes/decapod/config:/etc/decapod
+            controller:
+              links:
+                - database
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_controller}
+              volumes:
+                - /srv/volumes/decapod/key:/root/.ssh
+                - /srv/volumes/decapod/config:/etc/decapod
+            frontend:
+              links:
+                - api
+              ports:
+                - 19999:80
+                - 20000:443
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_frontend}
+            admin:
+              links:
+                - database
+              ports:
+                - 20001:8000
+                - 19998:8001
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_admin}
+              volumes:
+                - /srv/volumes/decapod/key:/root/.ssh
+                - /srv/volumes/decapod/config:/etc/decapod
diff --git a/docker/swarm/stack/devops_portal.yml b/docker/swarm/stack/devops_portal.yml
index 91bca12..f553114 100644
--- a/docker/swarm/stack/devops_portal.yml
+++ b/docker/swarm/stack/devops_portal.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     docker_devops_portal_replicas: 1
-    docker_image_devops_portal: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/devops-portal:latest
+    docker_image_devops_portal: docker-prod-local.artifactory.mirantis.com/mirantis/oss/devops-portal:latest
   docker:
     client:
       stack:
diff --git a/docker/swarm/stack/docker.yml b/docker/swarm/stack/docker.yml
index a680d4c..7f8c153 100644
--- a/docker/swarm/stack/docker.yml
+++ b/docker/swarm/stack/docker.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     docker_image_registry: registry:2
-    docker_image_visualizer: manomarks/visualizer
+    docker_image_visualizer: dockersamples/visualizer
   docker:
     client:
       stack:
diff --git a/docker/swarm/stack/elasticsearch.yml b/docker/swarm/stack/elasticsearch.yml
index 083388c..5ee295c 100644
--- a/docker/swarm/stack/elasticsearch.yml
+++ b/docker/swarm/stack/elasticsearch.yml
@@ -1,19 +1,29 @@
 parameters:
   _param:
     elasticsearch_replicas: 1
-    docker_image_oss_elasticsearch: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/elasticsearch:latest
+    docker_image_elasticsearch: docker.elastic.co/elasticsearch/elasticsearch:5.4.1
+    elasticsearch_cluster_name: oss-cluster
+    elasticsearch_xpack_security_enabled: 'false'
+    elasticsearch_discovery_zen_minimum_master_nodes: 1
+    elasticsearch_discovery_type: single-node
   docker:
     client:
       stack:
         elasticsearch:
+          environment:
+            cluster.name: ${_param:elasticsearch_cluster_name}
+            xpack.security.enabled: ${_param:elasticsearch_xpack_security_enabled}
+            discovery.zen.minimum_master_nodes: ${_param:elasticsearch_discovery_zen_minimum_master_nodes}
+            discovery.type: ${_param:elasticsearch_discovery_type}
           service:
             cluster:
-              image: ${_param:docker_image_oss_elasticsearch}
+              image: ${_param:docker_image_elasticsearch}
               deploy:
                 replicas: ${_param:elasticsearch_replicas}
                 restart_policy:
                   condition: any
               ports:
-                - ${_param:haproxy_elasticsearch_exposed_port}:${_param:haproxy_elasticsearch_bind_port}
+                - ${_param:haproxy_elasticsearch_http_exposed_port}:${_param:haproxy_elasticsearch_http_bind_port}
+                - ${_param:haproxy_elasticsearch_binary_exposed_port}:${_param:haproxy_elasticsearch_binary_bind_port}
               volumes:
                 - /srv/volumes/elasticsearch:/usr/share/elasticsearch/data
diff --git a/docker/swarm/stack/influxdb.yml b/docker/swarm/stack/influxdb.yml
new file mode 100644
index 0000000..f9b1f58
--- /dev/null
+++ b/docker/swarm/stack/influxdb.yml
@@ -0,0 +1,30 @@
+classes:
+- system.influxdb.server.container
+- system.influxdb.server.tmpfs_wal
+- system.telegraf.agent.remote.input.influxdb
+parameters:
+  _param:
+    docker_influxdb_replicas: 1
+    docker_influxdb_dir: /srv/volumes/influxdb
+  docker:
+    client:
+      stack:
+        influxdb:
+          service:
+            server:
+              deploy:
+                replicas: ${_param:docker_influxdb_replicas}
+                restart_policy:
+                  condition: any
+              environment:
+                INFLUXDB_CONFIG_PATH: /etc/influxdb/influxdb.conf
+                INFLUXDB_DATA_DIR: /var/lib/influxdb/data
+                INFLUXDB_META_DIR: /var/lib/influxdb/meta
+                INFLUXDB_DATA_WAL_DIR: /tmp/wal
+              image: ${_param:docker_influxdb_image}
+              ports:
+              - 15016:8086
+              volumes:
+              - ${influxdb:server:prefix_dir}/etc/influxdb:/etc/influxdb
+              - ${_param:docker_influxdb_dir}:/var/lib/influxdb
+              - ${influxdb:server:data:wal_dir}:/tmp/wal
diff --git a/docker/swarm/stack/janitor_monkey.yml b/docker/swarm/stack/janitor_monkey.yml
new file mode 100644
index 0000000..95095e4
--- /dev/null
+++ b/docker/swarm/stack/janitor_monkey.yml
@@ -0,0 +1,68 @@
+parameters:
+  _param:
+    docker_janitor_monkey_replicas: 1
+    docker_image_mongodb: library/mongo:3.4
+    docker_mongodb_admin_username: admin
+    docker_mongodb_admin_password: password
+    docker_image_janitor_monkey: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/janitor_monkey:6040
+    janitor_monkey_enabled: true
+    janitor_monkey_dryrun_mode: false
+    janitor_monkey_base_url: http://${_param:haproxy_janitor_monkey_bind_host}:${_param:haproxy_janitor_monkey_bind_port}
+    janitor_monkey_mongodb_host: ${_param:haproxy_mongodb_bind_host}
+    janitor_monkey_mongodb_port: ${_param:haproxy_mongodb_bind_port}
+    janitor_monkey_mongodb_db: mcp_cloud
+    janitor_monkey_mongodb_username: janitor
+    janitor_monkey_mongodb_password: password
+    janitor_monkey_elasticsearch: ${_param:haproxy_elasticsearch_bind_host}:${_param:haproxy_elasticsearch_binary_bind_port}
+    janitor_monkey_cloudfire_region: RegionOne
+    janitor_monkey_cis_clustername: ${_param:elasticsearch_cluster_name}
+    janitor_monkey_openstack:
+      project_domain_name: default
+      project_name: admin
+      username: ""
+      password: ""
+      auth_url: ""
+  docker:
+    client:
+      stack:
+        janitor_monkey:
+          environment:
+            MONGO_INITDB_ROOT_USERNAME: ${_param:docker_mongodb_admin_username}
+            MONGO_INITDB_ROOT_PASSWORD: ${_param:docker_mongodb_admin_password}
+            simianarmy.recorder.mongodb.host: ${_param:janitor_monkey_mongodb_host}
+            simianarmy.recorder.mongodb.port: ${_param:janitor_monkey_mongodb_port}
+            simianarmy.recorder.mongodb.database: ${_param:janitor_monkey_mongodb_db}
+            simianarmy.recorder.mongodb.user: ${_param:janitor_monkey_mongodb_username}
+            simianarmy.recorder.mongodb.password: ${_param:janitor_monkey_mongodb_password}
+            simianarmy.base.url: ${_param:janitor_monkey_base_url}
+            simianarmy.janitor.enabled: ${_param:janitor_monkey_enabled}
+            simianarmy.janitor.leashed: ${_param:janitor_monkey_dryrun_mode}
+            simianarmy.calendar.isMonkeyTime: true
+            simianarmy.janitor.resources.sdb.domain: ${_param:janitor_monkey_mongodb_db}
+            simianarmy.client.cloudfire.cis.hosts: ${_param:janitor_monkey_elasticsearch}
+            simianarmy.client.cloudfire.region: ${_param:janitor_monkey_cloudfire_region}
+            simianarmy.client.cloudfire.cis.clustername: ${_param:janitor_monkey_cis_clustername}
+            simianarmy.client.cloudfire.identityEndpoint: ${_param:janitor_monkey_openstack:auth_url}
+            simianarmy.client.cloudfire.accountKey: ${_param:janitor_monkey_openstack:username}
+            simianarmy.client.cloudfire.secretKey: ${_param:janitor_monkey_openstack:password}
+            simianarmy.client.cloudfire.domain: ${_param:janitor_monkey_openstack:project_domain_name}
+            simianarmy.client.cloudfire.project: ${_param:janitor_monkey_openstack:project_name}
+          service:
+            mongodb:
+              image: ${_param:docker_image_mongodb}
+              deploy:
+                replicas: ${_param:docker_janitor_monkey_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_mongodb_exposed_port}:${_param:haproxy_mongodb_bind_port}
+              volumes:
+                - /srv/volumes/mongodb:/data/db
+            api:
+              image: ${_param:docker_image_janitor_monkey}
+              deploy:
+                replicas: ${_param:docker_janitor_monkey_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_janitor_monkey_exposed_port}:8080
diff --git a/docker/swarm/stack/jenkins.yml b/docker/swarm/stack/jenkins.yml
deleted file mode 100644
index acea08b..0000000
--- a/docker/swarm/stack/jenkins.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-parameters:
-  _param:
-    docker_image_jenkins: tcpcloud/jenkins:2.52
-  docker:
-    client:
-      stack:
-        jenkins:
-          environment:
-            JAVA_OPTS: "-Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com"
-            JENKINS_NUM_EXECUTORS: 4
-          service:
-            master:
-              deploy:
-                restart_policy:
-                  condition: any
-              image: ${_param:docker_image_jenkins}
-              ports:
-                - 18081:8080
-                - 50001:50000
-              volumes:
-                - /srv/volumes/jenkins:/var/jenkins_home
-                - /etc/ssl/certs/java/cacerts:/etc/ssl/certs/java/cacerts:ro
diff --git a/docker/swarm/stack/jenkins/init.yml b/docker/swarm/stack/jenkins/init.yml
new file mode 100644
index 0000000..ab4f07e
--- /dev/null
+++ b/docker/swarm/stack/jenkins/init.yml
@@ -0,0 +1,3 @@
+classes:
+  - system.docker.swarm.stack.jenkins.master
+  - system.docker.swarm.stack.jenkins.slave
diff --git a/docker/swarm/stack/jenkins/master.yml b/docker/swarm/stack/jenkins/master.yml
new file mode 100644
index 0000000..bc01e92
--- /dev/null
+++ b/docker/swarm/stack/jenkins/master.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    docker_image_jenkins: tcpcloud/jenkins:2.71
+    jenkins_master_extra_opts: ""
+    jenkins_master_executors_num: 4
+  docker:
+    client:
+      stack:
+        jenkins:
+          service:
+            master:
+              environment:
+                JAVA_OPTS: " -server -XX:+AlwaysPreTouch -Xloggc:$JENKINS_HOME/gc-%t.log -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Dhudson.footerURL=https://www.mirantis.com ${_param:jenkins_master_extra_opts}"
+                JENKINS_NUM_EXECUTORS: ${_param:jenkins_master_executors_num}
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_jenkins}
+              ports:
+                - 18081:8080
+                - 50001:50000
+              volumes:
+                - /srv/volumes/jenkins:/var/jenkins_home
+                - /etc/ssl/certs/java/cacerts:/etc/ssl/certs/java/cacerts:ro
diff --git a/docker/swarm/stack/jenkins/slave.yml b/docker/swarm/stack/jenkins/slave.yml
new file mode 100644
index 0000000..fc281b7
--- /dev/null
+++ b/docker/swarm/stack/jenkins/slave.yml
@@ -0,0 +1,74 @@
+parameters:
+  _param:
+    docker_image_jenkins_slave: tcpcloud/jnlp-slave
+    jenkins_master_host: ${_param:control_vip_address}
+    jenkins_master_port: 8081
+    jenkins_secret: "7c40abc1a7df2d26dd6b2e4421af17218df75a16fcbd5e3aa6017d9f47eaeabe"
+    jenkins_master_url: http://${_param:jenkins_master_host}:${_param:jenkins_master_port}
+    jenkins_slave_user: ${_param:jenkins_client_user}
+    jenkins_slave_password: ${_param:jenkins_client_password}
+  docker:
+    client:
+      stack:
+        jenkins:
+          service:
+            slave01:
+              environment:
+                JENKINS_URL: ${_param:jenkins_master_url}
+                JENKINS_AGENT_NAME: slave01
+                JENKINS_UPDATE_SLAVE: 'true'
+                JENKINS_LOGIN: ${_param:jenkins_slave_user}
+                JENKINS_PASSWORD: ${_param:jenkins_slave_password}
+              deploy:
+                restart_policy:
+                  condition: any
+                placement:
+                  constraints:
+                    - "node.hostname == ${_param:cluster_node01_name}"
+              image: ${_param:docker_image_jenkins_slave}
+              volumes:
+                - /etc/ssl/certs/java/cacerts:/etc/ssl/certs/java/cacerts:ro
+                - /etc/aptly-publisher.yaml:/etc/aptly-publisher.yaml:ro
+                - /var/run/docker.sock:/var/run/docker.sock
+                - /usr/bin/docker:/usr/bin/docker:ro
+                - /var/lib/jenkins:/var/lib/jenkins
+            slave02:
+              environment:
+                JENKINS_URL: ${_param:jenkins_master_url}
+                JENKINS_AGENT_NAME: slave02
+                JENKINS_UPDATE_SLAVE: 'true'
+                JENKINS_LOGIN: ${_param:jenkins_slave_user}
+                JENKINS_PASSWORD: ${_param:jenkins_slave_password}
+              deploy:
+                restart_policy:
+                  condition: any
+                placement:
+                  constraints:
+                    - "node.hostname == ${_param:cluster_node02_name}"
+              image: ${_param:docker_image_jenkins_slave}
+              volumes:
+                - /etc/ssl/certs/java/cacerts:/etc/ssl/certs/java/cacerts:ro
+                - /etc/aptly-publisher.yaml:/etc/aptly-publisher.yaml:ro
+                - /var/run/docker.sock:/var/run/docker.sock
+                - /usr/bin/docker:/usr/bin/docker:ro
+                - /var/lib/jenkins:/var/lib/jenkins
+            slave03:
+              environment:
+                JENKINS_URL: ${_param:jenkins_master_url}
+                JENKINS_AGENT_NAME: slave03
+                JENKINS_UPDATE_SLAVE: 'true'
+                JENKINS_LOGIN: ${_param:jenkins_slave_user}
+                JENKINS_PASSWORD: ${_param:jenkins_slave_password}
+              deploy:
+                restart_policy:
+                  condition: any
+                placement:
+                  constraints:
+                    - "node.hostname == ${_param:cluster_node03_name}"
+              image: ${_param:docker_image_jenkins_slave}
+              volumes:
+                - /etc/ssl/certs/java/cacerts:/etc/ssl/certs/java/cacerts:ro
+                - /etc/aptly-publisher.yaml:/etc/aptly-publisher.yaml:ro
+                - /var/run/docker.sock:/var/run/docker.sock
+                - /usr/bin/docker:/usr/bin/docker:ro
+                - /var/lib/jenkins:/var/lib/jenkins
diff --git a/docker/swarm/stack/monitoring.yml b/docker/swarm/stack/monitoring/init.yml
similarity index 72%
rename from docker/swarm/stack/monitoring.yml
rename to docker/swarm/stack/monitoring/init.yml
index 4371367..97b9ac3 100644
--- a/docker/swarm/stack/monitoring.yml
+++ b/docker/swarm/stack/monitoring/init.yml
@@ -1,9 +1,9 @@
 classes:
-- service.prometheus.server.container
-- service.prometheus.alertmanager.container
-- service.prometheus.pushgateway.container
-- system.prometheus.server
-- system.prometheus.alertmanager
+- system.prometheus.alertmanager.container
+- system.prometheus.pushgateway.container
+- system.prometheus.remote_storage_adapter.container
+- system.prometheus.server.container
+- system.docker.swarm.stack.monitoring.remote_agent
 parameters:
   docker:
     client:
@@ -15,6 +15,27 @@
               driver_opts:
                 encrypted: 1
           service:
+            remote_storage_adapter:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 1
+                labels:
+                  com.mirantis.monitoring: "remote_storage_adapter"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "remote_storage_adapter"
+              image: ${_param:docker_image_remote_storage_adapter}
+              ports:
+                - 15015:${prometheus:remote_storage_adapter:bind:port}
+              environment:
+                bind_port: ${prometheus:remote_storage_adapter:bind:port}
+                bind_address: ${prometheus:remote_storage_adapter:bind:address}
+                influxdb_url: ${_param:prometheus_influxdb_url}
+                influxdb_db: ${_param:prometheus_influxdb_db}
+                influxdb_username: ${_param:prometheus_influxdb_username}
+                influxdb_password: ${_param:prometheus_influxdb_password}
             alertmanager:
               networks:
                 - monitoring
diff --git a/docker/swarm/stack/monitoring/remote_agent/ceph.yml b/docker/swarm/stack/monitoring/remote_agent/ceph.yml
new file mode 100644
index 0000000..6085eeb
--- /dev/null
+++ b/docker/swarm/stack/monitoring/remote_agent/ceph.yml
@@ -0,0 +1,12 @@
+classes:
+- system.ceph.client.container
+- system.ceph.monitoring.cluster_stats
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          service:
+            remote_agent:
+              volumes:
+                - ${ceph:client:prefix_dir}/etc/ceph:/etc/ceph
diff --git a/docker/swarm/stack/monitoring/remote_agent/init.yml b/docker/swarm/stack/monitoring/remote_agent/init.yml
new file mode 100644
index 0000000..9e9455e
--- /dev/null
+++ b/docker/swarm/stack/monitoring/remote_agent/init.yml
@@ -0,0 +1,25 @@
+classes:
+- system.telegraf.agent.remote
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          service:
+            remote_agent:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 1
+                labels:
+                  com.mirantis.monitoring: "remote_agent"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "remote_agent"
+              image: ${_param:docker_image_remote_agent}
+              ports:
+                - 15014:${telegraf:remote_agent:output:prometheus_client:bind:port}
+              volumes:
+                - ${telegraf:remote_agent:dir:config}:/etc/telegraf
+                - ${telegraf:remote_agent:dir:config_d}:/etc/telegraf/telegraf.d
diff --git a/docker/swarm/stack/monitoring/remote_collector.yml b/docker/swarm/stack/monitoring/remote_collector.yml
new file mode 100644
index 0000000..ff6af95
--- /dev/null
+++ b/docker/swarm/stack/monitoring/remote_collector.yml
@@ -0,0 +1,29 @@
+classes:
+- system.heka.remote_collector.container
+- system.heka.remote_collector.input.amqp
+- system.heka.remote_collector.output.elasticsearch
+- system.heka.remote_collector.output.telegraf
+- system.telegraf.agent.remote.input.http_listener
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          service:
+            remote_collector:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 1
+                labels:
+                  com.mirantis.monitoring: "remote_collector"
+                restart_policy:
+                  condition: any
+              labels:
+                com.mirantis.monitoring: "remote_collector"
+              image: ${_param:docker_image_remote_collector}
+              volumes:
+                - ${heka:remote_collector:prefix_dir}/etc/remote_collector:/etc/heka
+                - ${heka:remote_collector:prefix_dir}/usr/share/lma_collector:/usr/share/lma_collector
+              environment:
+                HEKA_CACHE_DIR: /var/cache/remote_collector
diff --git a/docker/swarm/stack/privatebin.yml b/docker/swarm/stack/privatebin.yml
new file mode 100644
index 0000000..fb1e9fc
--- /dev/null
+++ b/docker/swarm/stack/privatebin.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    docker_image_privatebin: jgeusebroek/privatebin
+
+  docker:
+    client:
+      stack:
+        privatebin:
+          service:
+            server:
+              image: ${_param:docker_image_privatebin}
+              ports:
+                - 8099:80
+              volumes:
+                - /srv/volumes/privatebin/data:/privatebin/data
+                - /srv/volumes/privatebin/cfg:/privatebin/cfg
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
index 3232301..dde8541 100644
--- a/docker/swarm/stack/pushkin.yml
+++ b/docker/swarm/stack/pushkin.yml
@@ -13,6 +13,11 @@
             POSTGRES_DB: ${_param:pushkin_db}
             PUSHKINDBHOST: ${_param:pushkin_db_host}
             PUSHKINELASTICHOST: ${_param:haproxy_elasticsearch_bind_host}
+            WEBHOOK_FROM: ${_param:webhook_from}
+            WEBHOOK_RECIPIENTS: ${_param:webhook_recipients}
+            WEBHOOK_LOGIN_ID: ${_param:webhook_login_id}
+            WEBHOOK_APPLICATION_ID: ${_param:webhook_application_id}
+            WEBHOOK_SFDC_USERNAME: ${_param:webhook_sfdc_username}
           service:
             api:
               image: ${_param:docker_image_pushkin}
diff --git a/docker/swarm/stack/rundeck.yml b/docker/swarm/stack/rundeck.yml
index a4ec24b..216415c 100644
--- a/docker/swarm/stack/rundeck.yml
+++ b/docker/swarm/stack/rundeck.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     docker_rundeck_replicas: 1
-    docker_image_rundeck: docker-sandbox.sandbox.mirantis.net/ikharin/oss/rundeck:2.7.3-1
+    docker_image_rundeck: docker-prod-local.artifactory.mirantis.com/mirantis/oss/rundeck:latest
   docker:
     client:
       stack:
diff --git a/docker/swarm/stack/security_monkey.yml b/docker/swarm/stack/security_monkey.yml
index b3b4074..a2249c6 100644
--- a/docker/swarm/stack/security_monkey.yml
+++ b/docker/swarm/stack/security_monkey.yml
@@ -2,13 +2,19 @@
   _param:
     docker_security_monkey_api_replicas: 1
     docker_security_monkey_scheduler_replicas: 1
-    docker_image_security_monkey_api: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-api:4435
-    docker_image_security_monkey_scheduler: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-scheduler:4435
+    docker_image_security_monkey_api: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-api:6700
+    docker_image_security_monkey_scheduler: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-scheduler:6700
     security_monkey_db: secmonkey
-    notification_service_url: ${_param:haproxy_pushkin_bind_host}:${_param:haproxy_pushkin_bind_port}/post_notification_json
+    notification_service_url: http://${_param:haproxy_pushkin_bind_host}:${_param:haproxy_pushkin_bind_port}/post_notification_json
     security_monkey_user: devopsportal@devopsportal.local
     security_monkey_password: devopsportal
     security_monkey_role: Justify
+    security_monkey_fqdn: ${_param:haproxy_security_monkey_bind_host}
+    security_monkey_web_port: ${_param:haproxy_security_monkey_bind_port}
+    security_monkey_api_port: ${_param:haproxy_security_monkey_bind_port}
+    security_monkey_nginx_port: ${_param:haproxy_security_monkey_bind_port}
+    devops_portal_sm_wtf_csrf_enabled: False
+    security_monkey_sync_interval: 15
     security_monkey_openstack:
       os_account_id: mcp_cloud
       os_account_name: mcp_cloud
@@ -27,6 +33,10 @@
             SECURITY_MONKEY_POSTGRES_PASSWORD: ${_param:secmonkey_db_user_password}
             SECURITY_MONKEY_POSTGRES_HOST: ${_param:secmonkey_db_host}
             SECURITY_MONKEY_POSTGRES_PORT: ${_param:haproxy_postgresql_bind_port}
+            SECURITY_MONKEY_FQDN: ${_param:security_monkey_fqdn}
+            WEB_PORT: ${_param:security_monkey_web_port}
+            API_PORT: ${_param:security_monkey_api_port}
+            NGINX_PORT: ${_param:security_monkey_nginx_port}
             NOTIFICATIONS_SERVICE_URL: ${_param:notification_service_url}
             DEFAULT_USER: ${_param:security_monkey_user}
             DEFAULT_PASSWORD: ${_param:security_monkey_password}
@@ -39,6 +49,10 @@
             OS_PROJECT_DOMAIN_NAME: ${_param:security_monkey_openstack:project_domain_name}
             OS_PROJECT_NAME: ${_param:security_monkey_openstack:project_name}
             USER_DOMAIN_NAME: ${_param:security_monkey_openstack:user_domain_name}
+            SM_WTF_CSRF_ENABLED: ${_param:devops_portal_sm_wtf_csrf_enabled}
+            SECURITY_MONKEY_SYNC_INTERVAL: ${_param:security_monkey_sync_interval}
+            SQLALCHEMY_DATABASE_URI: postgresql://${_param:secmonkey_db_user}:${_param:secmonkey_db_user_password}@${_param:secmonkey_db_host}:${_param:haproxy_postgresql_bind_port}/${_param:security_monkey_db}
+            SQLALCHEMY_POOL_RECYCLE: 14400
           service:
             api:
               image: ${_param:docker_image_security_monkey_api}
@@ -57,4 +71,4 @@
                 restart_policy:
                   condition: any
               volumes:
-                - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
\ No newline at end of file
+                - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
diff --git a/elasticsearch/client/index/janitor_monkey.yml b/elasticsearch/client/index/janitor_monkey.yml
new file mode 100644
index 0000000..bef92ae
--- /dev/null
+++ b/elasticsearch/client/index/janitor_monkey.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    janitor_monkey_cis_openstack_shards: 5
+    janitor_monkey_cis_openstack_replicas: 1
+  elasticsearch:
+    client:
+      index:
+        cis-openstack:
+          enabled: true
+          force_operation: true
+          definition:
+            template: cis-openstack
+            settings:
+              number_of_shards: ${_param:janitor_monkey_cis_openstack_shards}
+              number_of_replicas: ${_param:janitor_monkey_cis_openstack_replicas}
\ No newline at end of file
diff --git a/elasticsearch/client/index/pushkin.yml b/elasticsearch/client/index/pushkin.yml
new file mode 100644
index 0000000..1d17c77
--- /dev/null
+++ b/elasticsearch/client/index/pushkin.yml
@@ -0,0 +1,42 @@
+parameters:
+  _param:
+    pushkin_notifications_shards: 5
+    pushkin_notifications_replicas: 1
+  elasticsearch:
+    client:
+      index:
+        notifications:
+          enabled: true
+          force_operation: true
+          definition:
+            template: notifications
+            settings:
+              number_of_shards: ${_param:pushkin_notifications_shards}
+              number_of_replicas: ${_param:pushkin_notifications_replicas}
+            mappings:
+              notification:
+                properties:
+                  applicationId:
+                    type: long
+                  content:
+                    type: text
+                    fields:
+                      keyword:
+                        type: keyword
+                        ignore_above: 256
+                  level:
+                    type: text
+                    fields:
+                      keyword:
+                        type: keyword
+                        ignore_above: 256
+                  read:
+                    type: boolean
+                  timestamp:
+                    type: date
+                  title:
+                    type: text
+                    fields:
+                      keyword:
+                        type: keyword
+                        ignore_above: 256
\ No newline at end of file
diff --git a/elasticsearch/client/init.yml b/elasticsearch/client/init.yml
new file mode 100644
index 0000000..d0710ca
--- /dev/null
+++ b/elasticsearch/client/init.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    elasticsearch_client_host: ${_param:haproxy_elasticsearch_bind_host}
+    elasticsearch_client_port: ${_param:haproxy_elasticsearch_http_bind_port}
+  elasticsearch:
+    client:
+      enabled: true
+      server:
+        host: ${_param:elasticsearch_client_host}
+        port: ${_param:elasticsearch_client_port}
\ No newline at end of file
diff --git a/elasticsearch/server/curator.yml b/elasticsearch/server/curator.yml
index 82f34bb..e4e5ace 100644
--- a/elasticsearch/server/curator.yml
+++ b/elasticsearch/server/curator.yml
@@ -30,3 +30,23 @@
               unit: days
               unit_count: ${_param:elasticsearch_curator_retention_period}
               exclude:
+          - action: delete_indices
+            description: >-
+                Delete indices older than ${_param:elasticsearch_curator_retention_period} days (based on index name).
+            options:
+              ignore_empty_list: True
+              timeout_override:
+              continue_if_exception: False
+              disable_action: False
+            filters:
+            - filtertype: pattern
+              kind: regex
+              value: "^events_.*$"
+              exclude:
+            - filtertype: age
+              source: name
+              direction: older
+              timestring: '%Y-%m-%d'
+              unit: days
+              unit_count: ${_param:elasticsearch_curator_retention_period}
+              exclude:
\ No newline at end of file
diff --git a/freeipa/client/dns.yml b/freeipa/client/dns.yml
new file mode 100644
index 0000000..b88174e
--- /dev/null
+++ b/freeipa/client/dns.yml
@@ -0,0 +1,8 @@
+parameters:
+  linux:
+    network:
+      resolv:
+        dns:
+          - ${_param:freeipa_node01_hostname}
+          - ${_param:freeipa_node02_hostname}
+          - ${_param:freeipa_node03_hostname}
diff --git a/freeipa/client/keytab/apache2.yml b/freeipa/client/keytab/apache2.yml
new file mode 100644
index 0000000..3b18150
--- /dev/null
+++ b/freeipa/client/keytab/apache2.yml
@@ -0,0 +1,11 @@
+parameters:
+  freeipa:
+    client:
+      keytab:
+        /etc/apache2/ipa.keytab:
+          user: root
+          group: www-data
+          mode: 640
+          identities:
+            - service: HTTP
+              host: ${linux:network:hostname}
diff --git a/freeipa/client/keytab/krb5.yml b/freeipa/client/keytab/krb5.yml
new file mode 100644
index 0000000..4555927
--- /dev/null
+++ b/freeipa/client/keytab/krb5.yml
@@ -0,0 +1,8 @@
+parameters:
+  freeipa:
+    client:
+      keytab:
+        /etc/krb5.keytab:
+          identities:
+            - service: host
+              host: ${linux:network:hostname}.${_param:cluster_domain}
diff --git a/freeipa/client/nsupdate.yml b/freeipa/client/nsupdate.yml
new file mode 100644
index 0000000..837b9c7
--- /dev/null
+++ b/freeipa/client/nsupdate.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    freeipa_client_nsupdate_01_address: 172.16.10.240
+  freeipa:
+    client:
+      nsupdate:
+        - name: ${linux:network:hostname}.${_param:cluster_domain}
+          ipv4:
+            - ${_param:freeipa_client_nsupdate_01_address}
+          server: idm.${_param:cluster_domain}
diff --git a/galera/server/database/designate.yml b/galera/server/database/designate.yml
new file mode 100644
index 0000000..107e3ae
--- /dev/null
+++ b/galera/server/database/designate.yml
@@ -0,0 +1,26 @@
+parameters:
+  mysql:
+    server:
+      database:
+        designate:
+          encoding: utf8
+          users:
+          - name: designate
+            password: ${_param:mysql_designate_password}
+            host: '%'
+            rights: all
+          - name: designate
+            password: ${_param:mysql_designate_password}
+            host: ${_param:cluster_vip_address}
+            rights: all
+        designate_pool_manager:
+          encoding: utf8
+          users:
+          - name: designate
+            password: ${_param:mysql_designate_password}
+            host: '%'
+            rights: all
+          - name: designate
+            password: ${_param:mysql_designate_password}
+            host: ${_param:cluster_vip_address}
+            rights: all
diff --git a/galera/server/database/ironic.yml b/galera/server/database/ironic.yml
new file mode 100644
index 0000000..8cb14a3
--- /dev/null
+++ b/galera/server/database/ironic.yml
@@ -0,0 +1,15 @@
+parameters:
+  mysql:
+    server:
+      database:
+        ironic:
+          encoding: utf8
+          users:
+          - name: ironic
+            password: ${_param:mysql_ironic_password}
+            host: '%'
+            rights: all
+          - name: ironic
+            password: ${_param:mysql_ironic_password}
+            host: ${_param:cluster_local_address}
+            rights: all
diff --git a/galera/server/database/octavia.yml b/galera/server/database/octavia.yml
new file mode 100644
index 0000000..dfefb9c
--- /dev/null
+++ b/galera/server/database/octavia.yml
@@ -0,0 +1,15 @@
+parameters:
+  mysql:
+    server:
+      database:
+        octavia:
+          encoding: 'utf8'
+          users:
+          - name: 'octavia'
+            password: '${_param:mysql_octavia_password}'
+            host: '%'
+            rights: 'all'
+          - name: 'octavia'
+            password: '${_param:mysql_octavia_password}'
+            host: '${_param:cluster_local_address}'
+            rights: 'all'
diff --git a/gerrit/client/project/docker_images.yml b/gerrit/client/project/docker_images.yml
new file mode 100644
index 0000000..cc35eb3
--- /dev/null
+++ b/gerrit/client/project/docker_images.yml
@@ -0,0 +1,20 @@
+parameters:
+  gerrit:
+    client:
+      project:
+        mk/docker-aptly:
+          enabled: true
+          description: Aptly docker images
+          upstream: https://github.com/tcpcloud/docker-aptly
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
+        mk/python-flask-hello:
+          enabled: true
+          description: Flask hello demo application
+          upstream: https://github.com/tcpcloud/python-flask-hello
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
diff --git a/glance/client/image/octavia.yml b/glance/client/image/octavia.yml
new file mode 100644
index 0000000..582f1bc
--- /dev/null
+++ b/glance/client/image/octavia.yml
@@ -0,0 +1,29 @@
+classes:
+- system.glance.client
+parameters:
+  _param:
+    amphora_image_url: "https://artifactory.mirantis.com/binary-prod-local/mirantis/openstack/octavia/images/${_param:openstack_version}/amphora-x64-haproxy.qcow2"
+    amphora_image_name:  "amphora-x64-haproxy"
+  glance:
+    client:
+      identity:
+        admin_identity:
+          endpoint_type: internalURL
+          image:
+            amphora-x64-haproxy:
+              name: ${_param:amphora_image_name}
+              location: ${_param:amphora_image_url}
+              import_from_format: 'qcow2'
+              container_format: 'bare'
+              disk_format: 'qcow2'
+              tags:
+                - 'amphora'
+              visibility: public
+              wait_timeout: 1000
+  salt:
+    minion:
+      mine:
+        module:
+          glanceng.get_image_owner_id:
+            - ${_param:amphora_image_name}
+            - 'admin_identity'
diff --git a/glance/client/init.yml b/glance/client/init.yml
new file mode 100644
index 0000000..305f9ba
--- /dev/null
+++ b/glance/client/init.yml
@@ -0,0 +1,4 @@
+parameters:
+  glance:
+    client:
+      enabled: true
diff --git a/glance/control/cluster.yml b/glance/control/cluster.yml
index b009e9e..6402721 100644
--- a/glance/control/cluster.yml
+++ b/glance/control/cluster.yml
@@ -42,4 +42,5 @@
           - host: ${_param:openstack_message_queue_node03_address}
       storage:
         engine: file
-      images: []
\ No newline at end of file
+      images: []
+      show_multiple_locations: True
diff --git a/glance/control/image_manager.yml b/glance/control/image_manager.yml
new file mode 100644
index 0000000..27103a3
--- /dev/null
+++ b/glance/control/image_manager.yml
@@ -0,0 +1,5 @@
+parameters:
+  glance:
+    server:
+      policy:
+        publicize_image: ['role:admin', 'role:image_manager']
diff --git a/glance/control/single.yml b/glance/control/single.yml
index 13f4434..458cd37 100644
--- a/glance/control/single.yml
+++ b/glance/control/single.yml
@@ -5,3 +5,4 @@
     server:
       database:
         host: ${_param:single_address}
+      show_multiple_locations: True
diff --git a/glusterfs/client/volume/decapod.yml b/glusterfs/client/volume/decapod.yml
new file mode 100644
index 0000000..ef9de8a
--- /dev/null
+++ b/glusterfs/client/volume/decapod.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    decapod_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:
+        decapod:
+          path: /srv/volumes/decapod
+          server: ${_param:decapod_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/elasticsearch.yml b/glusterfs/client/volume/elasticsearch.yml
index 0248093..2ebfcfc 100644
--- a/glusterfs/client/volume/elasticsearch.yml
+++ b/glusterfs/client/volume/elasticsearch.yml
@@ -11,3 +11,5 @@
           path: /srv/volumes/elasticsearch
           server: ${_param:elasticsearch_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/client/volume/influxdb.yml b/glusterfs/client/volume/influxdb.yml
new file mode 100644
index 0000000..4edcf4b
--- /dev/null
+++ b/glusterfs/client/volume/influxdb.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    influxdb_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:
+        influxdb:
+          path: /srv/volumes/influxdb
+          server: ${_param:influxdb_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/keystone.yml b/glusterfs/client/volume/keystone.yml
index 7139029..822b61f 100644
--- a/glusterfs/client/volume/keystone.yml
+++ b/glusterfs/client/volume/keystone.yml
@@ -13,3 +13,9 @@
           user: keystone
           group: keystone
           opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
+        keystone-credential-keys:
+          path: /var/lib/keystone/credential-keys
+          server: ${_param:keystone_glusterfs_service_host}
+          user: keystone
+          group: keystone
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/mongodb.yml b/glusterfs/client/volume/mongodb.yml
new file mode 100644
index 0000000..1b2fd4f
--- /dev/null
+++ b/glusterfs/client/volume/mongodb.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    mongodb_glusterfs_service_host: ${_param:glusterfs_service_host}
+    mongodb_glusterfs_node01_address: ${_param:cluster_node01_address}
+    mongodb_glusterfs_node02_address: ${_param:cluster_node02_address}
+    mongodb_glusterfs_node03_address: ${_param:cluster_node03_address}
+  glusterfs:
+    client:
+      volumes:
+        mongodb:
+          path: /srv/volumes/mongodb
+          server: ${_param:mongodb_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:mongodb_glusterfs_node01_address}:${_param:mongodb_glusterfs_node02_address}:${_param:mongodb_glusterfs_node03_address}"
diff --git a/glusterfs/client/volume/privatebin.yml b/glusterfs/client/volume/privatebin.yml
new file mode 100644
index 0000000..163d5f9
--- /dev/null
+++ b/glusterfs/client/volume/privatebin.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    privatebin_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:
+        privatebin:
+          path: /srv/volumes/privatebin
+          server: ${_param:privatebin_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:glusterfs_node01_address}:${_param:glusterfs_node02_address}:${_param:glusterfs_node03_address}"
diff --git a/glusterfs/server/volume/decapod.yml b/glusterfs/server/volume/decapod.yml
new file mode 100644
index 0000000..e4b80df
--- /dev/null
+++ b/glusterfs/server/volume/decapod.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        decapod:
+          storage: /srv/glusterfs/decapod
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/decapod
+            - ${_param:cluster_node02_address}:/srv/glusterfs/decapod
+            - ${_param:cluster_node03_address}:/srv/glusterfs/decapod
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/influxdb.yml b/glusterfs/server/volume/influxdb.yml
new file mode 100644
index 0000000..7f2d894
--- /dev/null
+++ b/glusterfs/server/volume/influxdb.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        influxdb:
+          storage: /srv/glusterfs/influxdb
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/influxdb
+            - ${_param:cluster_node02_address}:/srv/glusterfs/influxdb
+            - ${_param:cluster_node03_address}:/srv/glusterfs/influxdb
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/keystone.yml b/glusterfs/server/volume/keystone.yml
index 229d787..2515fca 100644
--- a/glusterfs/server/volume/keystone.yml
+++ b/glusterfs/server/volume/keystone.yml
@@ -14,4 +14,17 @@
             nfs.disable: On
             network.remote-dio: On
             diagnostics.client-log-level: WARNING
-            diagnostics.brick-log-level: WARNING
\ No newline at end of file
+            diagnostics.brick-log-level: WARNING
+        keystone-credential-keys:
+          storage: /srv/glusterfs/keystone-credential-keys
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/keystone-credential-keys
+            - ${_param:cluster_node02_address}:/srv/glusterfs/keystone-credential-keys
+            - ${_param:cluster_node03_address}:/srv/glusterfs/keystone-credential-keys
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/mongodb.yml b/glusterfs/server/volume/mongodb.yml
new file mode 100644
index 0000000..a9c69f7
--- /dev/null
+++ b/glusterfs/server/volume/mongodb.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        mongodb:
+          storage: /srv/glusterfs/mongodb
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/mongodb
+            - ${_param:cluster_node02_address}:/srv/glusterfs/mongodb
+            - ${_param:cluster_node03_address}:/srv/glusterfs/mongodb
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/privatebin.yml b/glusterfs/server/volume/privatebin.yml
new file mode 100644
index 0000000..8be5a76
--- /dev/null
+++ b/glusterfs/server/volume/privatebin.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        privatebin:
+          storage: /srv/glusterfs/privatebin
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/privatebin
+            - ${_param:cluster_node02_address}:/srv/glusterfs/privatebin
+            - ${_param:cluster_node03_address}:/srv/glusterfs/privatebin
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/haproxy/proxy/listen/cicd/artifactory.yml b/haproxy/proxy/listen/cicd/artifactory.yml
new file mode 100644
index 0000000..5bf9bda
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/artifactory.yml
@@ -0,0 +1,38 @@
+parameters:
+  _param:
+    haproxy_artifactory_bind_host: ${_param:haproxy_bind_address}
+    haproxy_artifactory_bind_port: 8081
+    haproxy_artifactory_ssh_bind_host: ${_param:haproxy_artifactory_bind_host}
+    haproxy_artifactory_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        artifactory:
+          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_artifactory_bind_host}
+              port: ${_param:haproxy_artifactory_bind_port}
+              ssl: ${_param:haproxy_artifactory_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18082
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18082
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18082
+              params: backup check
diff --git a/haproxy/proxy/listen/decapod.yml b/haproxy/proxy/listen/decapod.yml
new file mode 100644
index 0000000..a3d79ab
--- /dev/null
+++ b/haproxy/proxy/listen/decapod.yml
@@ -0,0 +1,28 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        decapod:
+          mode: http
+          options:
+            - forwardfor
+#            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_jenkins_bind_host}
+              port: 9999
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 19999
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 19999
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 19999
+              params: backup check
diff --git a/haproxy/proxy/listen/kubernetes/apiserver.yml b/haproxy/proxy/listen/kubernetes/apiserver.yml
index a45a71a..8dfcb35 100644
--- a/haproxy/proxy/listen/kubernetes/apiserver.yml
+++ b/haproxy/proxy/listen/kubernetes/apiserver.yml
@@ -12,13 +12,16 @@
           servers:
           - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
-            port: 443
+            port: 6443
             params: check
           - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
-            port: 443
+            port: 6443
             params: check
           - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
-            port: 443
-            params: check
\ No newline at end of file
+            port: 6443
+            params: check
+          timeout:
+            server: 10m
+            client: 10m
diff --git a/haproxy/proxy/listen/kubernetes/apiserver_insecure.yml b/haproxy/proxy/listen/kubernetes/apiserver_insecure.yml
index a365c51..7211507 100644
--- a/haproxy/proxy/listen/kubernetes/apiserver_insecure.yml
+++ b/haproxy/proxy/listen/kubernetes/apiserver_insecure.yml
@@ -20,6 +20,9 @@
             host: ${_param:cluster_node03_address}
             port: 8080
             params: check
+          timeout:
+            server: 10m
+            client: 10m
         k8s_cluster_localhost:
           type: kubernetes
           binds:
@@ -37,4 +40,7 @@
           - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 8080
-            params: check
\ No newline at end of file
+            params: check
+          timeout:
+            server: 10m
+            client: 10m
diff --git a/haproxy/proxy/listen/mysql.yml b/haproxy/proxy/listen/mysql.yml
index a7ef910..40a9f35 100644
--- a/haproxy/proxy/listen/mysql.yml
+++ b/haproxy/proxy/listen/mysql.yml
@@ -7,7 +7,7 @@
       listen:
         mysql:
           mode: tcp
-          balance: source
+          balance: first
           binds:
             - address: ${_param:haproxy_bind_address}
               port: ${_param:haproxy_mysql_bind_port}
diff --git a/haproxy/proxy/listen/openstack/galera.yml b/haproxy/proxy/listen/openstack/galera.yml
index 254dc3b..7298cfc 100644
--- a/haproxy/proxy/listen/openstack/galera.yml
+++ b/haproxy/proxy/listen/openstack/galera.yml
@@ -11,6 +11,7 @@
         mysql_cluster:
           type: mysql
           service_name: mysql
+          balance: first
           binds:
           - address: ${_param:cluster_vip_address}
             port: 3306
diff --git a/haproxy/proxy/listen/openstack/heat.yml b/haproxy/proxy/listen/openstack/heat.yml
index 440a018..2e6b918 100644
--- a/haproxy/proxy/listen/openstack/heat.yml
+++ b/haproxy/proxy/listen/openstack/heat.yml
@@ -7,19 +7,19 @@
           service_name: heat
           binds:
           - address: ${_param:cluster_vip_address}
-            port: 8000
+            port: 8003
           servers:
           - name: ctl01
             host: ${_param:cluster_node01_address}
-            port: 8000
+            port: 8003
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl02
             host: ${_param:cluster_node02_address}
-            port: 8000
+            port: 8003
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl03
             host: ${_param:cluster_node03_address}
-            port: 8000
+            port: 8003
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
         heat_api:
           type: openstack-service
@@ -45,17 +45,17 @@
           service_name: heat
           binds:
           - address: ${_param:cluster_vip_address}
-            port: 8003
+            port: 8000
           servers:
           - name: ctl01
             host: ${_param:cluster_node01_address}
-            port: 8003
+            port: 8000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl02
             host: ${_param:cluster_node02_address}
-            port: 8003
+            port: 8000
             params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
           - name: ctl03
             host: ${_param:cluster_node03_address}
-            port: 8003
-            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
+            port: 8000
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/ironic.yml b/haproxy/proxy/listen/openstack/ironic.yml
new file mode 100644
index 0000000..221a9cc
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/ironic.yml
@@ -0,0 +1,25 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        ironic:
+          type: general-service
+          service_name: ironic
+          check: false
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 6385
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 6385
+            params: check
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 6385
+            params: check
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 6385
+            params: check
+
diff --git a/haproxy/proxy/listen/openstack/ironic_deploy.yml b/haproxy/proxy/listen/openstack/ironic_deploy.yml
new file mode 100644
index 0000000..f5e7a4f
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/ironic_deploy.yml
@@ -0,0 +1,24 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        ironic_deploy:
+          type: general-service
+          service_name: ironic_deploy
+          check: false
+          binds:
+          - address: ${_param:cluster_baremetal_vip_address}
+            port: 6385
+          servers:
+          - name: bmt01
+            host: ${_param:openstack_baremetal_node01_baremetal_address}
+            port: 6385
+            params: check
+          - name: bmt02
+            host: ${_param:openstack_baremetal_node02_baremetal_address}
+            port: 6385
+            params: check
+          - name: bmt03
+            host: ${_param:openstack_baremetal_node03_baremetal_address}
+            port: 6385
+            params: check
diff --git a/haproxy/proxy/listen/openstack/octavia.yml b/haproxy/proxy/listen/openstack/octavia.yml
new file mode 100644
index 0000000..7360557
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/octavia.yml
@@ -0,0 +1,23 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        octavia_api:
+          type: openstack-service
+          service_name: octavia
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 9876
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 9876
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 9876
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 9876
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/oss/elasticsearch.yml b/haproxy/proxy/listen/oss/elasticsearch.yml
index 2f5d1ee..3a4c98e 100644
--- a/haproxy/proxy/listen/oss/elasticsearch.yml
+++ b/haproxy/proxy/listen/oss/elasticsearch.yml
@@ -1,14 +1,16 @@
 parameters:
   _param:
     haproxy_elasticsearch_bind_host: ${_param:haproxy_bind_address}
-    haproxy_elasticsearch_bind_port: 9200
-    haproxy_elasticsearch_exposed_port: 19200
+    haproxy_elasticsearch_http_bind_port: 9200
+    haproxy_elasticsearch_http_exposed_port: 19200
+    haproxy_elasticsearch_binary_bind_port: 9300
+    haproxy_elasticsearch_binary_exposed_port: 19300
     haproxy_elasticsearch_ssl:
       enabled: false
   haproxy:
     proxy:
       listen:
-        elasticsearch:
+        elasticsearch_http:
           mode: http
           options:
             - forwardfor
@@ -21,18 +23,41 @@
               condition: "if { ssl_fc }"
           binds:
             - address: ${_param:haproxy_elasticsearch_bind_host}
-              port: ${_param:haproxy_elasticsearch_bind_port}
+              port: ${_param:haproxy_elasticsearch_http_bind_port}
               ssl: ${_param:haproxy_elasticsearch_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
-              port: ${_param:haproxy_elasticsearch_exposed_port}
+              port: ${_param:haproxy_elasticsearch_http_exposed_port}
               params: check
             - name: ${_param:cluster_node02_name}
               host: ${_param:cluster_node02_address}
-              port: ${_param:haproxy_elasticsearch_exposed_port}
+              port: ${_param:haproxy_elasticsearch_http_exposed_port}
               params: backup check
             - name: ${_param:cluster_node03_name}
               host: ${_param:cluster_node03_address}
-              port: ${_param:haproxy_elasticsearch_exposed_port}
+              port: ${_param:haproxy_elasticsearch_http_exposed_port}
               params: backup check
+        elasticsearch_binary:
+          mode: tcp
+          options:
+            - tcpka
+            - tcplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_elasticsearch_bind_host}
+              port: ${_param:haproxy_elasticsearch_binary_bind_port}
+              ssl: ${_param:haproxy_elasticsearch_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_elasticsearch_binary_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_elasticsearch_binary_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_elasticsearch_binary_exposed_port}
+              params: backup check
\ No newline at end of file
diff --git a/haproxy/proxy/listen/oss/janitor_monkey.yml b/haproxy/proxy/listen/oss/janitor_monkey.yml
new file mode 100644
index 0000000..c2ff760
--- /dev/null
+++ b/haproxy/proxy/listen/oss/janitor_monkey.yml
@@ -0,0 +1,40 @@
+parameters:
+  _param:
+    haproxy_janitor_monkey_bind_host: ${_param:haproxy_bind_address}
+    haproxy_janitor_monkey_bind_port: 8088
+    haproxy_janitor_monkey_exposed_port: 18088
+    haproxy_janitor_monkey_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        janitor_monkey:
+          mode: http
+          options:
+          - httpchk get /simianarmy/api/v1/janitor
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          health-check:
+            http:
+              enabled: true
+              options:
+                - expect status 200
+          binds:
+            - address: ${_param:haproxy_janitor_monkey_bind_host}
+              port: ${_param:haproxy_janitor_monkey_bind_port}
+              ssl: ${_param:haproxy_janitor_monkey_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_janitor_monkey_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_janitor_monkey_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_janitor_monkey_exposed_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/mongodb.yml b/haproxy/proxy/listen/oss/mongodb.yml
new file mode 100644
index 0000000..d4086cd
--- /dev/null
+++ b/haproxy/proxy/listen/oss/mongodb.yml
@@ -0,0 +1,51 @@
+parameters:
+  _param:
+    haproxy_mongodb_bind_host: ${_param:haproxy_bind_address}
+    haproxy_mongodb_bind_port: 27017
+    haproxy_mongodb_exposed_port: 37017
+    haproxy_mongodb_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        mongodb:
+          mode: tcp
+          balance: source
+          options:
+            - tcp-check
+          health-check:
+            tcp:
+              enabled: true
+              options:
+                - send-binary 39000000 # Message Length (57)
+                - send-binary EEEEEEEE # Request ID (random value)
+                - send-binary 00000000 # Response To (nothing)
+                - send-binary d4070000 # OpCode (Query)
+                - send-binary 00000000 # Query Flags
+                - send-binary 746573742e # fullCollectionName (test.$cmd)
+                - send-binary 24636d6400 # continued
+                - send-binary 00000000 # NumToSkip
+                - send-binary FFFFFFFF # NumToReturn
+                - send-binary 13000000 # Document Length (19)
+                - send-binary 01 # Type (Double)
+                - send-binary 70696e6700 # Ping:
+                - send-binary 000000000000f03f # Value : 1
+                - send-binary 00 # Term
+                - expect string ok
+          binds:
+            - address: ${_param:haproxy_mongodb_bind_host}
+              port: ${_param:haproxy_mongodb_bind_port}
+              ssl: ${_param:haproxy_mongodb_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_mongodb_exposed_port}
+              params: check port ${_param:haproxy_mongodb_exposed_port}
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_mongodb_exposed_port}
+              params: backup check port ${_param:haproxy_mongodb_exposed_port}
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_mongodb_exposed_port}
+              params: backup check port ${_param:haproxy_mongodb_exposed_port}
diff --git a/haproxy/proxy/listen/oss/postgresql.yml b/haproxy/proxy/listen/oss/postgresql.yml
index 1bc1f44..a356a48 100644
--- a/haproxy/proxy/listen/oss/postgresql.yml
+++ b/haproxy/proxy/listen/oss/postgresql.yml
@@ -7,6 +7,11 @@
       enabled: false
   haproxy:
     proxy:
+      timeout:
+        queue: '8h'
+        client: '8h'
+        server: '8h'
+        check: '10s'
       listen:
         postgresql:
           mode: tcp
diff --git a/haproxy/proxy/listen/privatebin.yml b/haproxy/proxy/listen/privatebin.yml
new file mode 100644
index 0000000..5588211
--- /dev/null
+++ b/haproxy/proxy/listen/privatebin.yml
@@ -0,0 +1,29 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        privatebin:
+          mode: http
+          service_name: privatebin
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: 8099
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 8099
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 8099
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 8099
+              params: backup check
diff --git a/haproxy/proxy/listen/stacklight/redis.yml b/haproxy/proxy/listen/stacklight/redis.yml
index 881e8ed..7bc5ea6 100644
--- a/haproxy/proxy/listen/stacklight/redis.yml
+++ b/haproxy/proxy/listen/stacklight/redis.yml
@@ -5,6 +5,8 @@
         redis:
           mode: tcp
           check: False
+          options:
+          - tcp-check
           health-check:
             tcp:
               options:
diff --git a/heka/log_collector/output/sensu.yml b/heka/log_collector/output/sensu.yml
index e7bf79d..23085b7 100644
--- a/heka/log_collector/output/sensu.yml
+++ b/heka/log_collector/output/sensu.yml
@@ -1,3 +1,2 @@
 classes:
 - service.heka.log_collector.output.sensu
-
diff --git a/heka/log_collector/output/telegraf.yml b/heka/log_collector/output/telegraf.yml
new file mode 100644
index 0000000..e6a9488
--- /dev/null
+++ b/heka/log_collector/output/telegraf.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    log_collector_telegraf_port: 8186
+  heka:
+    log_collector:
+      telegraf_host: 127.0.0.1
+      telegraf_port: ${_param:log_collector_telegraf_port}
+      telegraf_timeout: 2000
+      emit_rates: false
+      alarms_enabled: false
diff --git a/heka/remote_collector/container.yml b/heka/remote_collector/container.yml
new file mode 100644
index 0000000..61b8c31
--- /dev/null
+++ b/heka/remote_collector/container.yml
@@ -0,0 +1,9 @@
+classes:
+- service.heka.remote_collector.container
+- system.heka.server
+parameters:
+  _param:
+    remote_collector_prefix_dir: /srv/volumes/local/remote_collector
+  heka:
+    remote_collector:
+      prefix_dir: ${_param:remote_collector_prefix_dir}
\ No newline at end of file
diff --git a/heka/remote_collector/output/telegraf.yml b/heka/remote_collector/output/telegraf.yml
new file mode 100644
index 0000000..48da337
--- /dev/null
+++ b/heka/remote_collector/output/telegraf.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    remote_collector_telegraf_port: 8186
+  heka:
+    remote_collector:
+      influxdb_host: ${_param:remote_collector_telegraf_host}
+      influxdb_port: ${_param:remote_collector_telegraf_port}
+      influxdb_timeout: 2000
+      emit_rates: false
+      alarms_enabled: false
diff --git a/horizon/server/cluster.yml b/horizon/server/cluster.yml
index 8ee48a3..a68ab12 100644
--- a/horizon/server/cluster.yml
+++ b/horizon/server/cluster.yml
@@ -10,6 +10,8 @@
   horizon:
     server:
       branding: ${_param:horizon_site_branding}
+      bind:
+        port: 8078
       plugin: {}
       session:
         engine: "cache"
diff --git a/horizon/server/plugin/lbaasv2.yml b/horizon/server/plugin/lbaasv2.yml
new file mode 100644
index 0000000..69e2682
--- /dev/null
+++ b/horizon/server/plugin/lbaasv2.yml
@@ -0,0 +1,9 @@
+parameters:
+  horizon:
+    server:
+      plugin:
+        lbaasv2:
+          source:
+            engine: pkg
+            name: python-horizon-neutron-lbaasv2-panel
+
diff --git a/influxdb/client/database/ceilometer.yml b/influxdb/client/database/ceilometer.yml
new file mode 100644
index 0000000..52aebae
--- /dev/null
+++ b/influxdb/client/database/ceilometer.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_ceilometer_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        ceilometer:
+          enabled: true
+          name: ceilometer
+          retention_policy:
+            - name: ceilometer_default
+              is_default: true
+              duration: ${_param:influxdb_ceilometer_rp_duration}
+              replication: 1
+      user:
+        ceilometer:
+          enabled: true
+          name: ceilometer
+          password: ${_param:ceilometer_influxdb_password}
+      grant:
+        ceilometer_all:
+          enabled: true
+          user: ceilometer
+          database: ceilometer
+          privilege: all
diff --git a/influxdb/client/database/stacklight.yml b/influxdb/client/database/stacklight.yml
new file mode 100644
index 0000000..d07d0b8
--- /dev/null
+++ b/influxdb/client/database/stacklight.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    influxdb_stacklight_rp_duration: 30d
+  influxdb:
+    client:
+      database:
+        lma:
+          enabled: true
+          name: lma
+          retention_policy:
+          - name: lma_default
+            is_default: true
+            duration: ${_param:influxdb_stacklight_password}
+            replication: 1
+      user:
+        lma:
+          enabled: true
+          name: lma
+          password: ${_param:influxdb_stacklight_password}
+      grant:
+        lma_all:
+          enabled: true
+          user: lma
+          database: lma
+          privilege: all
diff --git a/influxdb/client/init.yml b/influxdb/client/init.yml
new file mode 100644
index 0000000..8c66f1b
--- /dev/null
+++ b/influxdb/client/init.yml
@@ -0,0 +1,13 @@
+classes:
+- service.influxdb.client
+parameters:
+  _param:
+    influxdb_client_port: 8086
+  influxdb:
+    client:
+      server:
+        protocol: http
+        host: ${_param:influxdb_client_host}
+        port: ${_param:influxdb_client_port}
+        user: root
+        password: ${_param:influxdb_client_password}
diff --git a/influxdb/server/container.yml b/influxdb/server/container.yml
new file mode 100644
index 0000000..d7e7df7
--- /dev/null
+++ b/influxdb/server/container.yml
@@ -0,0 +1,19 @@
+classes:
+- service.influxdb.server.container
+parameters:
+  influxdb:
+    server:
+      enabled: true
+      prefix_dir: /srv/volumes/local/influxdb
+      http:
+        enabled: true
+        bind:
+          port: 8086
+      admin:
+        enabled: true
+        bind:
+          port: 8083
+        user:
+          enabled: true
+          name: 'root'
+          password: ${_param:influxdb_admin_password}
diff --git a/ironic/api/cluster.yml b/ironic/api/cluster.yml
new file mode 100644
index 0000000..c3a7901
--- /dev/null
+++ b/ironic/api/cluster.yml
@@ -0,0 +1,9 @@
+classes:
+- service.ironic.api.cluster
+parameters:
+  ironic:
+    api:
+      enabled: true
+      version: ${_param:ironic_version}
+      bind:
+        address: ${_param:cluster_baremetal_local_address}
diff --git a/ironic/api/single.yml b/ironic/api/single.yml
new file mode 100644
index 0000000..0800579
--- /dev/null
+++ b/ironic/api/single.yml
@@ -0,0 +1,7 @@
+classes:
+- service.ironic.api.single
+parameters:
+  ironic:
+    api:
+      bind:
+        address: ${_param:single_address}
diff --git a/ironic/conductor/cluster.yml b/ironic/conductor/cluster.yml
new file mode 100644
index 0000000..ba0c538
--- /dev/null
+++ b/ironic/conductor/cluster.yml
@@ -0,0 +1,6 @@
+classes:
+- service.ironic.conductor.cluster
+parameters:
+  ironic:
+    conductor:
+      api_url: 'http://${_param:cluster_baremetal_vip_address}:6385'
diff --git a/ironic/conductor/single.yml b/ironic/conductor/single.yml
new file mode 100644
index 0000000..69e6c20
--- /dev/null
+++ b/ironic/conductor/single.yml
@@ -0,0 +1,7 @@
+classes:
+- service.ironic.conductor.single
+parameters:
+  ironic:
+    conductor:
+      enabled: true
+      version: ${_param:ironic_version}
diff --git a/ironic/tftpd_hpa.yml b/ironic/tftpd_hpa.yml
new file mode 100644
index 0000000..fc1dd74
--- /dev/null
+++ b/ironic/tftpd_hpa.yml
@@ -0,0 +1,14 @@
+classes:
+  - service.tftpd_hpa.server.single
+parameters:
+  tftpd_hpa:
+    server:
+      enabled: true
+      bind:
+        address: '0.0.0.0'
+        port: 69
+      username: 'ironic'
+      path: /var/lib/tftpboot
+      options:
+       - secure
+       - map-file: '/var/lib/tftpboot/map-file'
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
index f9e01b8..5d9a140 100644
--- a/jenkins/client/approved_scripts.yml
+++ b/jenkins/client/approved_scripts.yml
@@ -17,9 +17,12 @@
         - method hudson.model.Item getName
         - method hudson.model.ItemGroup getItem java.lang.String
         - method hudson.model.ItemGroup getItems
+        - method hudson.model.Job getBuildByNumber int
         - method hudson.model.Job getBuilds
         - method hudson.model.Job getLastBuild
         - method hudson.model.Run getEnvironment
+        - method hudson.model.Run getId
+        - method hudson.model.Run getNumber
         - method hudson.model.Run getResult
         - method hudson.model.Run getTimeInMillis
         - method hudson.model.Run isBuilding
@@ -30,6 +33,7 @@
         - method java.lang.AutoCloseable close
         - method java.lang.Class isInstance java.lang.Object
         - method java.lang.Iterable iterator
+        - method java.lang.Throwable printStackTrace
         - method java.net.HttpURLConnection getResponseCode
         - method java.net.HttpURLConnection setRequestMethod java.lang.String
         - method java.net.URI getHost
@@ -41,32 +45,54 @@
         - method java.net.URLConnection setDoOutput boolean
         - method java.net.URLConnection setRequestProperty java.lang.String java.lang.String
         - method java.util.Collection remove java.lang.Object
+        - method java.util.Collection stream
         - method java.util.LinkedHashMap$LinkedHashIterator hasNext
         - method java.util.List subList int int
         - method java.util.Map remove java.lang.Object
         - method java.util.Map size
         - method java.util.regex.MatchResult group int
+        - method java.util.regex.MatchResult groupCount
+        - method java.util.regex.Matcher find
         - method java.util.regex.Matcher matches
         - method java.util.regex.Pattern matcher java.lang.CharSequence
+        - method java.util.stream.Stream collect java.util.stream.Collector
+        - method java.util.Calendar add int int
+        - method java.util.Calendar getTime
+        - method java.util.Date before java.util.Date
+        - method jenkins.model.Jenkins getItemByFullName java.lang.String
         - method jenkins.model.Jenkins getPluginManager
         - method org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
+        - method org.jenkinsci.plugins.workflow.job.WorkflowRun finish hudson.model.Result java.lang.Throwable
+        - method org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction getEnvironment
         - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper build
+        - new groovy.json.JsonBuilder
         - new groovy.json.JsonBuilder java.lang.Object
         - new groovy.json.JsonSlurperClassic
         - new java.io.File java.lang.String
+        - new java.io.IOException java.lang.String
         - new java.io.OutputStreamWriter java.io.OutputStream
         - new java.lang.Exception java.lang.String
         - new java.lang.InterruptedException
+        - new java.lang.RuntimeException java.lang.String
+        - new java.lang.StringBuilder
+        - new java.lang.StringBuilder int
         - new java.net.URI java.lang.String
+        - new java.util.ArrayList
         - new java.util.Date
+        - new java.util.HashMap
         - staticField groovy.io.FileType FILES
         - staticMethod com.cloudbees.plugins.credentials.CredentialsProvider lookupCredentials java.lang.Class hudson.model.ItemGroup
+        - staticMethod java.lang.Integer valueOf int
         - staticMethod java.lang.Integer valueOf java.lang.String
+        - staticMethod java.lang.Math min int int
         - staticMethod java.lang.String format java.lang.String java.lang.Object[]
+        - staticMethod java.lang.String valueOf int
         - staticMethod java.lang.System exit int
         - staticMethod java.lang.System getProperty java.lang.String
         - staticMethod java.lang.System getenv java.lang.String
+        - staticMethod java.util.regex.Pattern compile java.lang.String
         - staticMethod java.util.regex.Pattern quote java.lang.String
+        - staticMethod java.util.stream.Collectors joining java.lang.CharSequence
         - staticMethod jenkins.model.Jenkins getInstance
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods collect java.util.Map groovy.lang.Closure
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods eachFile java.io.File groovy.io.FileType groovy.lang.Closure
@@ -75,36 +101,24 @@
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods get java.util.Map java.lang.Object java.lang.Object
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Iterable int
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.String int
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.util.List groovy.lang.Range
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getBytes java.io.File
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getText java.io.InputStream
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods hasProperty java.lang.Object java.lang.String
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods iterator java.lang.Object
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods iterator java.lang.Object[]
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods leftShift java.lang.StringBuffer java.lang.Object
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Iterable
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Object
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.util.Collection
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println java.lang.Object java.lang.Object
         - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object java.lang.String java.lang.Object
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods sort java.util.Collection
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods split java.lang.String
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods takeRight java.util.List int
         - staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods encodeBase64 byte[]
         - staticMethod org.codehaus.groovy.runtime.ScriptBytecodeAdapter bitwiseNegate java.lang.Object
-        - method java.util.Collection stream
-        - staticMethod java.util.stream.Collectors joining java.lang.CharSequence
-        - method java.util.stream.Stream collect java.util.stream.Collector
-        - staticMethod java.util.regex.Pattern compile java.lang.String
-        - method java.util.regex.Matcher find
-        - 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
-        - new groovy.json.JsonBuilder
-        - new java.lang.RuntimeException java.lang.String
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods takeRight java.util.List int
-        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.util.List groovy.lang.Range
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toBoolean java.lang.Boolean
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Object java.lang.String
+        - method java.io.File listFiles
+        - method java.lang.String concat java.lang.String
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index ef0241d..b37c48f 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -13,7 +13,7 @@
       master:
         host: ${_param:jenkins_master_host}
         port: ${_param:jenkins_master_port}
-        user: ${_param:jenkins_client_user}
+        username: ${_param:jenkins_client_user}
         password: ${_param:jenkins_client_password}
       plugin:
         ansicolor: {}
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
index c902f32..7371d3b 100644
--- a/jenkins/client/job/debian/packages/extra.yml
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -93,6 +93,10 @@
               dist: trusty
               build: pipeline
               branch: debian/trusty
+            - package: jmx-exporter
+              dist: trusty
+              build: jmx-exporter
+              branch: master
             - package: librdkafka
               dist: xenial
               build: pipeline
@@ -145,6 +149,18 @@
               dist: xenial
               build: libvirt-exporter
               branch: master
+            - package: kafka
+              dist: xenial
+              build: pipeline
+              branch: debian/xenial
+            - package: python-cassandra-driver
+              dist: xenial
+              build: pipeline
+              branch: debian/xenial
+            - package: jmx-exporter
+              dist: xenial
+              build: jmx-exporter
+              branch: master
           template:
             type: workflow-scm
             concurrent: false
diff --git a/jenkins/client/job/debian/packages/horizon/modules.yml b/jenkins/client/job/debian/packages/horizon/modules.yml
index 0df27ad..4fe4966 100644
--- a/jenkins/client/job/debian/packages/horizon/modules.yml
+++ b/jenkins/client/job/debian/packages/horizon/modules.yml
@@ -6,6 +6,18 @@
           name: build-debian-horizon-module-{{name}}-{{os_version}}-{{os}}-{{dist}}
           jobs:
             # Trusty
+            - name: horizon-avi-panels
+              os: ubuntu
+              dist: trusty
+              os_version: mitaka
+              branch: stable/mitaka
+            # Xenial
+            - name: horizon-avi-panels
+              os: ubuntu
+              dist: xenial
+              os_version: mitaka
+              branch: stable/mitaka
+            # Trusty
             - name: horizon-neutron-lbaasv2-panel
               os: ubuntu
               dist: trusty
@@ -18,6 +30,18 @@
               os_version: ocata
               branch: stable/ocata
             # Trusty
+            - name: horizon-neutron-lbaasv2-panel
+              os: ubuntu
+              dist: trusty
+              os_version: mitaka
+              branch: stable/mitaka
+            # Xenial
+            - name: horizon-neutron-lbaasv2-panel
+              os: ubuntu
+              dist: xenial
+              os_version: mitaka
+              branch: stable/mitaka
+            # Trusty
             - name: horizon-overrides-plugin
               os: ubuntu
               dist: trusty
diff --git a/jenkins/client/job/debian/packages/salt-multi.yml b/jenkins/client/job/debian/packages/salt-multi.yml
index d216e9d..a57a8ab 100644
--- a/jenkins/client/job/debian/packages/salt-multi.yml
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -117,4 +117,4 @@
                 default: 'true'
               UPLOAD_APTLY:
                 type: boolean
-                default: 'true'
\ No newline at end of file
+                default: 'true'
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index ecd7432..31b8e2a 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -19,6 +19,8 @@
               dist: trusty
             - name: backupninja
               dist: trusty
+            - name: baremetal-simulator
+              dist: trusty
             - name: billometer
               dist: trusty
             - name: bind
@@ -79,6 +81,8 @@
               dist: trusty
             - name: iptables
               dist: trusty
+            - name: ironic
+              dist: trusty
             - name: isc-dhcp
               dist: trusty
             - name: java
@@ -129,6 +133,8 @@
               dist: trusty
             - name: ntp
               dist: trusty
+            - name: octavia
+              dist: trusty
             - name: opencontrail
               dist: trusty
             - name: openldap
@@ -145,6 +151,8 @@
               dist: trusty
             - name: postgresql
               dist: trusty
+            - name: powerdns
+              dist: trusty
             - name: pritunl
               dist: trusty
             - name: prometheus
@@ -189,6 +197,8 @@
               dist: trusty
             - name: varnish
               dist: trusty
+            - name: xtrabackup
+              dist: trusty
             - name: zookeeper
               dist: trusty
             - name: aodh
@@ -203,6 +213,10 @@
               dist: xenial
             - name: avinetworks
               dist: xenial
+            - name: barbican
+              dist: xenial
+            - name: baremetal-simulator
+              dist: xenial
             - name: backupninja
               dist: xenial
             - name: billometer
@@ -253,6 +267,8 @@
               dist: xenial
             - name: glusterfs
               dist: xenial
+            - name: gnocchi
+              dist: xenial
             - name: grafana
               dist: xenial
             - name: graphite
@@ -261,10 +277,14 @@
               dist: xenial
             - name: heka
               dist: xenial
+            - name: helm
+              dist: xenial
             - name: influxdb
               dist: xenial
             - name: iptables
               dist: xenial
+            - name: ironic
+              dist: xenial
             - name: isc-dhcp
               dist: xenial
             - name: java
@@ -315,6 +335,8 @@
               dist: xenial
             - name: ntp
               dist: xenial
+            - name: octavia
+              dist: xenial
             - name: opencontrail
               dist: xenial
             - name: openldap
@@ -327,6 +349,8 @@
               dist: xenial
             - name: owncloud
               dist: xenial
+            - name: panko
+              dist: xenial
             - name: postfix
               dist: xenial
             - name: postgresql
@@ -335,6 +359,8 @@
               dist: xenial
             - name: prometheus
               dist: xenial
+            - name: powerdns
+              dist: xenial
             - name: python
               dist: xenial
             - name: rabbitmq
@@ -375,6 +401,8 @@
               dist: xenial
             - name: varnish
               dist: xenial
+            - name: xtrabackup
+              dist: xenial
             - name: zookeeper
               dist: xenial
           template:
diff --git a/jenkins/client/job/debian/packages/testing.yml b/jenkins/client/job/debian/packages/testing.yml
new file mode 100644
index 0000000..c7ecf98
--- /dev/null
+++ b/jenkins/client/job/debian/packages/testing.yml
@@ -0,0 +1,74 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        build-debian-python-flask-hello:
+          name: build-debian-{{package}}-ubuntu-{{dist}}
+          jobs:
+            - package: python-flask-hello
+              dist: trusty
+              build: pipeline
+              branch: master
+          template:
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: build-debian-packages-{{build}}.groovy
+            trigger:
+              gerrit:
+                project:
+                  mk/{{package}}:
+                    branches:
+                      - "{{branch}}"
+                message:
+                  build_successful: "Build successful"
+                  build_unstable: "Build unstable"
+                  build_failure: "Build failed"
+                event:
+                  ref:
+                    - updated
+            param:
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/mk/python-flask-hello"
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              EXTRA_REPO_URL:
+                type: string
+                default: ""
+              EXTRA_REPO_KEY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_url}/public.gpg"
+              APTLY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_api_url}"
+              APTLY_REPO:
+                type: string
+                default: "ubuntu-{{dist}}-extra"
+              OS:
+                type: string
+                default: "ubuntu"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              PPA:
+                type: string
+                default: "mirantis-opencontrail/extra"
+              UPLOAD_PPA:
+                type: boolean
+                default: 'false'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/decapod/add_mon.yml b/jenkins/client/job/decapod/add_mon.yml
new file mode 100644
index 0000000..03daed2
--- /dev/null
+++ b/jenkins/client/job/decapod/add_mon.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_add_mon:
+          type: workflow-scm
+          name: decapod-add_mon
+          display_name: "Decapod - add monitors"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: add-mon.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'
\ No newline at end of file
diff --git a/jenkins/client/job/decapod/add_osd.yml b/jenkins/client/job/decapod/add_osd.yml
new file mode 100644
index 0000000..f0a4333
--- /dev/null
+++ b/jenkins/client/job/decapod/add_osd.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_add_osd:
+          type: workflow-scm
+          name: decapod-add_osd
+          display_name: "Decapod - add new osd"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: add-osd.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'
\ No newline at end of file
diff --git a/jenkins/client/job/decapod/del_mon.yml b/jenkins/client/job/decapod/del_mon.yml
new file mode 100644
index 0000000..d858431
--- /dev/null
+++ b/jenkins/client/job/decapod/del_mon.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_del_mon:
+          type: workflow-scm
+          name: decapod-del_mon
+          display_name: "Decapod - del monitors"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: del-mon.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/decapod/del_osd.yml b/jenkins/client/job/decapod/del_osd.yml
new file mode 100644
index 0000000..b432762
--- /dev/null
+++ b/jenkins/client/job/decapod/del_osd.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_del_osd:
+          type: workflow-scm
+          name: decapod-del_osd
+          display_name: "Decapod - del osd"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: del-osd.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'
\ No newline at end of file
diff --git a/jenkins/client/job/decapod/monitoring.yml b/jenkins/client/job/decapod/monitoring.yml
new file mode 100644
index 0000000..ea6a5c2
--- /dev/null
+++ b/jenkins/client/job/decapod/monitoring.yml
@@ -0,0 +1,30 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        decapod_monitoring:
+          type: workflow-scm
+          name: decapod-monitoring
+          display_name: "Decapod - monitoring"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/decapod-pipelines"
+            credentials: "gerrit"
+            script: monitoring.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'
\ No newline at end of file
diff --git a/jenkins/client/job/deploy/k8s_control.yml b/jenkins/client/job/deploy/k8s_control.yml
new file mode 100644
index 0000000..7e915c2
--- /dev/null
+++ b/jenkins/client/job/deploy/k8s_control.yml
@@ -0,0 +1,34 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy_k8s_control:
+          type: workflow-scm
+          name: deploy-k8s-control
+          display_name: "Deploy - k8s control"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: deploy-k8s-deployments.groovy
+          param:
+            # deployments and test settings
+            TARGET_MINIONS:
+              type: string
+              default: "E@k8s-ctl01.*"
+              description: "Salt compound target to match nodes to be updated [*, G@osfamily:debian]."
+            EXTRA_COMMAND:
+              type: string
+              default: ""
+              description: "Extra command to run before update"
+            # salt master
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
diff --git a/jenkins/client/job/deploy/lab/cicd.yml b/jenkins/client/job/deploy/lab/cicd.yml
index 7f53d29..9002c9c 100644
--- a/jenkins/client/job/deploy/lab/cicd.yml
+++ b/jenkins/client/job/deploy/lab/cicd.yml
@@ -20,7 +20,7 @@
               # heat
               HEAT_TEMPLATE_URL:
                 type: string
-                default: "git@github.com:Mirantis/mk-lab-heat-templates.git"
+                default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
               HEAT_TEMPLATE_CREDENTIALS:
                 type: string
                 default: "gerrit"
@@ -35,13 +35,13 @@
                 default: "{{lab}}"
               HEAT_STACK_ENVIRONMENT:
                 type: string
-                default: "tcpisek"
+                default: "devcloud"
               HEAT_STACK_ZONE:
                 type: string
-                default: "mirantis-zone-qa"
+                default: "mcp-mk"
               HEAT_STACK_PUBLIC_NET:
                 type: string
-                default: "mirantis-private"
+                default: "public"
               HEAT_STACK_DELETE:
                 type: boolean
                 default: 'true'
@@ -62,22 +62,28 @@
               # openstack api
               OPENSTACK_API_URL:
                 type: string
-                default: "https://vpc.tcpisek.cz:5000/v2.0"
+                default: "https://cloud-cz.bud.mirantis.net:5000"
               OPENSTACK_API_CREDENTIALS:
                 type: string
-                default: "openstack-qa-credentials"
+                default: "openstack-devcloud-credentials"
               OPENSTACK_API_PROJECT:
                 type: string
-                default: "mirantis_mk20_qa"
+                default: "mcp-mk"
               OPENSTACK_API_CLIENT:
                 type: string
-                default: "liberty"
+                default: ""
               OPENSTACK_API_VERSION:
                 type: string
-                default: "2"
-              OPENSTACK_API_PROJECT_DOMAIN_ID:
+                default: "3"
+              OPENSTACK_API_PROJECT_DOMAIN:
                 type: string
                 default: "default"
               OPENSTACK_API_USER_DOMAIN_ID:
                 type: string
                 default: "default"
+              OPENSTACK_API_PROJECT_ID:
+                type: string
+                default: ""
+              OPENSTACK_API_USER_DOMAIN:
+                type: string
+                default: "default"
diff --git a/jenkins/client/job/deploy/lab/cleanup.yml b/jenkins/client/job/deploy/lab/cleanup.yml
new file mode 100644
index 0000000..626dd4e
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/cleanup.yml
@@ -0,0 +1,106 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy-stack-cleanup:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - stack cleanup"
+          discard:
+            build:
+              keep_num: 20
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: cleanup-pipeline.groovy
+          param:
+            # general parameters
+            STACK_NAME:
+              type: string
+              description: This stack will be deleted.
+            STACK_TYPE:
+              type: choice
+              choices:
+                - heat
+                - aws
+              default: 'heat'
+
+            # heat parameters
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-mk"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
+
+            # aws parameters
+            AWS_API_CREDENTIALS:
+              type: string
+              default: "aws-credentials"
+            AWS_DEFAULT_REGION:
+              type: string
+              default: "us-west-2"
+
+        delete-failed-stacks:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - delete failed stacks"
+          discard:
+            build:
+              keep_num: 20
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: delete-broken-stacks-pipeline.groovy
+          trigger:
+            timer:
+              spec: "0 H * * *"
+          param:
+            # openstack api
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://cloud-cz.bud.mirantis.net:5000"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-devcloud-credentials"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mcp-mk"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: ""
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "3"
+            OPENSTACK_API_PROJECT_DOMAIN:
+              type: string
+              default: "default"
+            OPENSTACK_API_USER_DOMAIN_ID:
+              type: string
+              default: "default"
+            OPENSTACK_API_PROJECT_ID:
+              type: string
+              default: ""
+            OPENSTACK_API_USER_DOMAIN:
+              type: string
+              default: "default"
diff --git a/jenkins/client/job/deploy/lab/component/aaa.yml b/jenkins/client/job/deploy/lab/component/aaa.yml
new file mode 100644
index 0000000..61d0b60
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/aaa.yml
@@ -0,0 +1,10 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: aaa_ha_freeipa
+        stack_type: heat
+        stack_install: core,aaa
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/component/ceph.yml b/jenkins/client/job/deploy/lab/component/ceph.yml
new file mode 100644
index 0000000..0d84374
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/ceph.yml
@@ -0,0 +1,10 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: ceph_ha
+        stack_type: heat
+        stack_install: core,ceph
+        stack_test: "ceph"
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/component/drivetrain.yml b/jenkins/client/job/deploy/lab/component/drivetrain.yml
new file mode 100644
index 0000000..e9e00e7
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/drivetrain.yml
@@ -0,0 +1,15 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: drivetrain_ha
+        stack_type: heat
+        stack_install: core
+        stack_test: ""
+        job_timer: ""
+      - stack_name: drivetrain_ha_clusters
+        stack_type: heat
+        stack_install: core
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/component/kubernetes.yml b/jenkins/client/job/deploy/lab/component/kubernetes.yml
new file mode 100644
index 0000000..9e80c64
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/kubernetes.yml
@@ -0,0 +1,30 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: k8s_aio_calico
+        stack_type: heat
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: ""
+      - stack_name: k8s_aio_contrail
+        stack_type: heat
+        stack_install: core,k8s,contrail
+        stack_test: ""
+        job_timer: ""
+      - stack_name: k8s_ha_calico
+        stack_type: aws
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: k8s_ha_calico
+        stack_type: heat
+        stack_install: core,k8s,calico
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: k8s_ha_contrail
+        stack_type: heat
+        stack_install: core,k8s,contrail
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/component/openstack.yml b/jenkins/client/job/deploy/lab/component/openstack.yml
new file mode 100644
index 0000000..33c03f3
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/openstack.yml
@@ -0,0 +1,24 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: os_aio_contrail
+        stack_type: heat
+        stack_install: core,openstack,contrail
+        stack_test: ""
+        job_timer: ""
+      - stack_name: os_aio_ovs
+        stack_type: heat
+        stack_install: core,openstack,ovs
+        job_timer: ""
+      - stack_name: os_ha_contrail
+        stack_type: heat
+        stack_install: core,openstack,contrail
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: os_ha_ovs
+        stack_type: heat
+        stack_install: core,openstack,ovs
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/component/stacklight.yml b/jenkins/client/job/deploy/lab/component/stacklight.yml
new file mode 100644
index 0000000..2802e13
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/component/stacklight.yml
@@ -0,0 +1,20 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: stacklight_k8s_calico
+        stack_type: heat
+        stack_install: core,k8s,calico,stacklight
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: stacklight_os_contrail
+        stack_type: heat
+        stack_install: core,openstack,contrail,stacklight
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: stacklight_os_ovs
+        stack_type: heat
+        stack_install: core,openstack,ovs,stacklight
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/mk/cloud.yml b/jenkins/client/job/deploy/lab/deploy.yml
similarity index 66%
rename from jenkins/client/job/deploy/lab/mk/cloud.yml
rename to jenkins/client/job/deploy/lab/deploy.yml
index 6bffea0..5d87340 100644
--- a/jenkins/client/job/deploy/lab/mk/cloud.yml
+++ b/jenkins/client/job/deploy/lab/deploy.yml
@@ -1,27 +1,19 @@
 parameters:
   _param:
-    jenkins_cloud_deploy_pipelines:
-      - stack_name: k8s_calico
-        stack_type: heat
-        stack_install: core,k8s
-        job_timer: ""
-      - stack_name: k8s_calico
-        stack_type: aws
-        stack_install: core,k8s
-        job_timer: ""
+    jenkins_deploy_jobs: []
   jenkins:
     client:
       job_template:
-        cloud_deploy_heat_template:
+        deploy_template:
           name: deploy-{{stack_type}}-{{stack_name}}
-          jobs: ${_param:jenkins_cloud_deploy_pipelines}
+          jobs: ${_param:jenkins_deploy_jobs}
           template:
             type: workflow-scm
             discard:
               build:
                 keep_num: 20
             concurrent: true
-            display_name: "Deploy {{stack_type}} {{stack_name}} stack"
+            display_name: "Deploy - {{stack_name}} {{stack_type}}"
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
@@ -31,13 +23,15 @@
               timer:
                 spec: "{{job_timer}}"
             param:
-              # deployments and test settings
+              # general parameters
+              ASK_ON_ERROR:
+                type: boolean
+                default: 'false'
+
+              # deployments
               STACK_NAME:
                 type: string
                 description: Heat stack name. Will be generated if missing.
-              STACK_TEMPLATE:
-                type: string
-                default: "{{stack_name}}"
               STACK_TYPE:
                 type: string
                 default: "{{stack_type}}"
@@ -46,15 +40,21 @@
                 default: "{{stack_install}}"
               STACK_TEST:
                 type: string
-                default: ""
+                default: "{{stack_test}}"
+              STACK_REUSE:
+                type: boolean
+                default: 'false'
               STACK_DELETE:
                 type: boolean
                 default: 'true'
                 description: "Don't enable it if you need to use the lab after"
-              STACK_REUSE:
-                type: boolean
-                default: 'false'
+              STACK_COMPUTE_COUNT:
+                type: string
+                default: '2'
 
+              STACK_TEMPLATE:
+                type: string
+                default: "{{stack_name}}"
               STACK_TEMPLATE_URL:
                 type: string
                 default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
@@ -66,15 +66,19 @@
                 default: "master"
               STACK_CLEANUP_JOB:
                 type: string
-                default: ''
+                default: 'deploy-stack-cleanup'
 
-              # salt master
+              # salt
               SALT_MASTER_CREDENTIALS:
                 type: string
                 default: "salt-qa-credentials"
               SALT_MASTER_URL:
                 type: string
                 default: ""
+              SALT_OVERRIDES:
+                type: text
+                default: ""
+                description: "YAML with overrides for Salt deployment"
 
               # aws api
               AWS_STACK_REGION:
@@ -87,55 +91,66 @@
                 type: string
                 default: "jenkins-mk"
 
+              # heat
+              HEAT_STACK_ENVIRONMENT:
+                type: string
+                default: "devcloud"
+              HEAT_STACK_ZONE:
+                type: string
+                default: "mcp-mk"
+              HEAT_STACK_PUBLIC_NET:
+                type: string
+                default: "public"
 
               # openstack api
               OPENSTACK_API_URL:
                 type: string
-                default: "https://vpc.tcpisek.cz:5000/v2.0"
+                default: "https://cloud-cz.bud.mirantis.net:5000"
               OPENSTACK_API_CREDENTIALS:
                 type: string
-                default: "openstack-qa-credentials"
+                default: "openstack-devcloud-credentials"
               OPENSTACK_API_PROJECT:
                 type: string
-                default: "mirantis_mk20_qa"
+                default: "mcp-mk"
+              OPENSTACK_API_PROJECT_DOMAIN:
+                type: string
+                default: "default"
+              OPENSTACK_API_PROJECT_ID:
+                type: string
+                default: ""
+              OPENSTACK_API_USER_DOMAIN:
+                type: string
+                default: "default"
+
               OPENSTACK_API_CLIENT:
                 type: string
-                default: "liberty"
+                default: ""
               OPENSTACK_API_VERSION:
                 type: string
-                default: "2"
-              OPENSTACK_API_PROJECT_DOMAIN_ID:
-                type: string
-                default: "default"
-              OPENSTACK_API_USER_DOMAIN_ID:
-                type: string
-                default: "default"
+                default: "3"
 
-              # heat
-              HEAT_STACK_ENVIRONMENT:
-                type: string
-                default: "tcpisek"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "workshop-sunnyvale"
-              HEAT_STACK_PUBLIC_NET:
-                type: string
-                default: "mirantis-private"
-
-              # k8s setttings
-              K8S_API_SERVER:
+              # test
+              TEST_K8S_API_SERVER:
                 type: string
                 default: "http://127.0.0.1:8080"
-              K8S_CONFORMANCE_IMAGE:
+              TEST_K8S_CONFORMANCE_IMAGE:
                 type: string
                 default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
 
-              # Tempest settings
-              TEMPEST_IMAGE_LINK:
+              TEST_TEMPEST_IMAGE:
                 type: string
+                description: "Tempest docker image"
                 default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
-
-              ASK_ON_ERROR:
+              TEST_TEMPEST_TARGET:
+                type: string
+                description: "Node to run tests"
+                default: ""
+              TEST_DOCKER_INSTALL:
                 type: boolean
-                default: 'false'
+                description: "Install docker on the target if true"
+                default: "true"
+              TEST_TEMPEST_PATTERN:
+                type: string
+                description: "Run tests matched to pattern only"
+                default: ""
 
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
index e700325..881e425 100644
--- a/jenkins/client/job/deploy/lab/init.yml
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -1,10 +1,16 @@
 classes:
-  - system.jenkins.client.job.deploy.lab.mk.physical
-  - system.jenkins.client.job.deploy.lab.mk.virtual
-  - system.jenkins.client.job.deploy.lab.mk.cleanup
-  - system.jenkins.client.job.deploy.lab.mk.cloud
   - system.jenkins.client.job.deploy.lab.cicd
+  - system.jenkins.client.job.deploy.lab.test-cicd
   - system.jenkins.client.job.deploy.lab.demo
+  - system.jenkins.client.job.deploy.lab.cleanup
+  - system.jenkins.client.job.deploy.lab.release.mcp05
+  - system.jenkins.client.job.deploy.lab.release.mcp10
+  - system.jenkins.client.job.deploy.lab.release.mcp11
+  - system.jenkins.client.job.deploy.lab.component.aaa
+  - system.jenkins.client.job.deploy.lab.component.ceph
+  - system.jenkins.client.job.deploy.lab.component.kubernetes
+  - system.jenkins.client.job.deploy.lab.component.openstack
+  - system.jenkins.client.job.deploy.lab.component.stacklight
 
 parameters:
   jenkins:
diff --git a/jenkins/client/job/deploy/lab/mk/cleanup.yml b/jenkins/client/job/deploy/lab/mk/cleanup.yml
deleted file mode 100644
index 8658eec..0000000
--- a/jenkins/client/job/deploy/lab/mk/cleanup.yml
+++ /dev/null
@@ -1,81 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      job:
-        deploy-heat-cleanup:
-          type: workflow-scm
-          concurrent: true
-          display_name: "Deploy - heat cleanup"
-          discard:
-            build:
-              keep_num: 20
-          scm:
-            type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            credentials: "gerrit"
-            script: cleanup-pipeline.groovy
-          param:
-            # openstack api
-            OPENSTACK_API_URL:
-              type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
-            OPENSTACK_API_CREDENTIALS:
-              type: string
-              default: "openstack-qa-credentials"
-            OPENSTACK_API_PROJECT:
-              type: string
-              default: "mirantis_mk20_qa"
-            OPENSTACK_API_CLIENT:
-              type: string
-              default: "liberty"
-            OPENSTACK_API_VERSION:
-              type: string
-              default: "2"
-            OPENSTACK_API_PROJECT_DOMAIN_ID:
-              type: string
-              default: "default"
-            OPENSTACK_API_USER_DOMAIN_ID:
-              type: string
-              default: "default"
-            # heat
-            HEAT_STACK_NAME:
-              type: string
-              description: This stack will be deleted.
-        delete-failed-stacks:
-          type: workflow-scm
-          concurrent: true
-          display_name: "Deploy - delete failed stacks"
-          discard:
-            build:
-              keep_num: 20
-          scm:
-            type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            credentials: "gerrit"
-            script: delete-broken-stacks-pipeline.groovy
-          trigger:
-            timer:
-              spec: "0 H * * *"
-          param:
-            # openstack api
-            OPENSTACK_API_URL:
-              type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
-            OPENSTACK_API_CREDENTIALS:
-              type: string
-              default: "openstack-qa-credentials"
-            OPENSTACK_API_PROJECT:
-              type: string
-              default: "mirantis_mk20_qa"
-            OPENSTACK_API_CLIENT:
-              type: string
-              default: "liberty"
-            OPENSTACK_API_VERSION:
-              type: string
-              default: "2"
-            OPENSTACK_API_PROJECT_DOMAIN_ID:
-              type: string
-              default: "default"
-            OPENSTACK_API_USER_DOMAIN_ID:
-              type: string
-              default: "default"
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/mk/init.yml
deleted file mode 100644
index 9e988ba..0000000
--- a/jenkins/client/job/deploy/lab/mk/init.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-parameters:
-  _param:
-    jenkins_deploy_lab_mk_jobs: []
-  jenkins:
-    client:
-      job_template:
-        deploy_heat_template:
-          name: deploy-{{stack_type}}-{{lab}}
-          jobs: ${_param:jenkins_deploy_lab_mk_jobs}
-          template:
-            type: workflow-scm
-            discard:
-              build:
-                keep_num: 20
-            concurrent: true
-            display_name: "Deploy - {{lab}} {{stack_type}} lab"
-            scm:
-              type: git
-              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-              credentials: "gerrit"
-              script: lab-pipeline.groovy
-            trigger:
-              timer:
-                spec: "{{timer}}"
-            param:
-              # deployments and test settings
-              STACK_TYPE:
-                type: string
-                default: "{{stack_type}}"
-              STACK_INSTALL:
-                type: string
-                default: "{{install}}"
-              STACK_TEST:
-                type: string
-                default: "{{test}}"
-
-              STACK_TEMPLATE_URL:
-                type: string
-                default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
-              STACK_TEMPLATE_CREDENTIALS:
-                type: string
-                default: "gerrit"
-              STACK_TEMPLATE_BRANCH:
-                type: string
-                default: "master"
-              STACK_NAME:
-                type: string
-                description: Heat stack name. Will be generated if missing.
-              STACK_TEMPLATE:
-                type: string
-                default: "{{lab}}"
-              STACK_DELETE:
-                type: boolean
-                default: 'true'
-                description: "Don't enable it if you need to use the lab after"
-              STACK_REUSE:
-                type: boolean
-                default: 'false'
-              STACK_CLEANUP_JOB:
-                type: string
-                default: 'deploy-heat-cleanup'
-              # heat
-              HEAT_STACK_ENVIRONMENT:
-                type: string
-                default: "tcpisek"
-              HEAT_STACK_ZONE:
-                type: string
-                default: "mirantis-zone-qa"
-              HEAT_STACK_PUBLIC_NET:
-                type: string
-                default: "mirantis-private"
-
-              # salt master
-              SALT_MASTER_CREDENTIALS:
-                type: string
-                default: "salt-qa-credentials"
-              SALT_MASTER_URL:
-                type: string
-                default: ""
-
-              # openstack api
-              OPENSTACK_API_URL:
-                type: string
-                default: "https://vpc.tcpisek.cz:5000/v2.0"
-              OPENSTACK_API_CREDENTIALS:
-                type: string
-                default: "openstack-qa-credentials"
-              OPENSTACK_API_PROJECT:
-                type: string
-                default: "mirantis_mk20_qa"
-              OPENSTACK_API_CLIENT:
-                type: string
-                default: "liberty"
-              OPENSTACK_API_VERSION:
-                type: string
-                default: "2"
-              OPENSTACK_API_PROJECT_DOMAIN_ID:
-                type: string
-                default: "default"
-              OPENSTACK_API_USER_DOMAIN_ID:
-                type: string
-                default: "default"
-
-              # k8s setttings
-              K8S_API_SERVER:
-                type: string
-                default: "http://127.0.0.1:8080"
-              K8S_CONFORMANCE_IMAGE:
-                type: string
-                default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
-
-              # Tempest settings
-              TEMPEST_IMAGE_LINK:
-                type: string
-                default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
-
-              ASK_ON_ERROR:
-                type: boolean
-                default: 'false'
-
diff --git a/jenkins/client/job/deploy/lab/mk/physical.yml b/jenkins/client/job/deploy/lab/mk/physical.yml
deleted file mode 100644
index 8e6d498..0000000
--- a/jenkins/client/job/deploy/lab/mk/physical.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-classes:
-  - system.jenkins.client.job.deploy.lab.mk
-parameters:
-  _param:
-    jenkins_deploy_lab_mk_jobs:
-      - lab: mcp10_contrail
-        install: core,kvm,openstack,contrail
-        stack_type: physical
-        test: openstack
-        timer: ""
-      - lab: mcp10_opencontrail_nfv
-        install: core,kvm,openstack,nfv
-        stack_type: physical
-        test: openstack
-        timer: ""
-      - lab: mcp10_dvr
-        install: core,kvm,openstack,dvr
-        stack_type: physical
-        test: openstack
-        timer: ""
-      - lab: mcp10_non_dvr
-        install: core,kvm,openstack
-        stack_type: physical
-        test: openstack
-        timer: ""
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
deleted file mode 100644
index e615408..0000000
--- a/jenkins/client/job/deploy/lab/mk/virtual.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-classes:
-  - system.jenkins.client.job.deploy.lab.mk
-parameters:
-  _param:
-    jenkins_deploy_lab_mk_jobs:
-      # mk20
-      - lab: virtual_mk20_advanced
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mk20_basic
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      # mk22
-      - lab: virtual_mk22_advanced
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mk22_basic
-        install: core,openstack
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      # mcp05
-      - lab: virtual_mcp05_dvr
-        install: core,openstack,dvr
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp05_ovs
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      # mcp10
-      - lab: virtual_mcp10_contrail
-        install: core,openstack,contrail
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp10_dvr
-        install: core,openstack,dvr
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp10_ovs
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      # mcp11
-      - lab: virtual_mcp11_contrail
-        install: core,openstack,contrail
-        stack_type: heat
-        test: openstack
-        extra_formulas: ""
-        timer: ""
-      - lab: virtual_mcp11_dvr
-        install: core,openstack,dvr
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp11_ovs
-        install: core,openstack,ovs
-        stack_type: heat
-        test: openstack
-        timer: ""
-        extra_formulas: ""
-      - lab: virtual_mcp11_k8s_calico
-        install: core,k8s,calico
-        stack_type: heat
-        test: k8s
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
-      - lab: virtual_mcp11_k8s_contrail
-        install: core,k8s,contrail
-        stack_type: heat
-        test: k8s
-        timer: "H H(0-6) * * *"
-        extra_formulas: ""
diff --git a/jenkins/client/job/deploy/lab/release/mcp05.yml b/jenkins/client/job/deploy/lab/release/mcp05.yml
new file mode 100644
index 0000000..3dbc25f
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mcp05.yml
@@ -0,0 +1,15 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: virtual_mcp05_dvr
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp05_ovs
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/release/mcp10.yml b/jenkins/client/job/deploy/lab/release/mcp10.yml
new file mode 100644
index 0000000..e8905ac
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mcp10.yml
@@ -0,0 +1,43 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      # physical
+      - stack_name: mcp10_contrail
+        stack_install: core,kvm,openstack,contrail
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+      - stack_name: mcp10_opencontrail_nfv
+        stack_install: core,kvm,openstack,nfv
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+      - stack_name: mcp10_dvr
+        stack_install: core,kvm,openstack,dvr
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+      - stack_name: mcp10_non_dvr
+        stack_install: core,kvm,openstack
+        stack_type: physical
+        stack_test: openstack
+        job_timer: ""
+
+      # virtual
+      - stack_name: virtual_mcp10_contrail
+        stack_install: core,openstack,contrail
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp10_dvr
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp10_ovs
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/release/mcp11.yml b/jenkins/client/job/deploy/lab/release/mcp11.yml
new file mode 100644
index 0000000..98c8a5c
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mcp11.yml
@@ -0,0 +1,50 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      - stack_name: virtual_mcp11_contrail
+        stack_install: core,openstack,contrail
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_dvr
+        stack_install: core,openstack,dvr
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_ovs
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_ironic_small
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_aio
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mcp11_k8s_calico
+        stack_install: core,k8s,calico
+        stack_type: heat
+        stack_test: k8s
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp11_k8s_contrail
+        stack_install: core,k8s,contrail
+        stack_type: heat
+        stack_test: k8s
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp11_contrail_nfv
+        stack_install: core,openstack,contrail
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
+      - stack_name: virtual_mcp11_ovs_dpdk
+        stack_install: core,openstack,ovs
+        stack_type: heat
+        stack_test: ""
+        job_timer: "H H(0-6) * * *"
diff --git a/jenkins/client/job/deploy/lab/release/mk.yml b/jenkins/client/job/deploy/lab/release/mk.yml
new file mode 100644
index 0000000..4fce1c5
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/release/mk.yml
@@ -0,0 +1,27 @@
+classes:
+  - system.jenkins.client.job.deploy.lab.deploy
+parameters:
+  _param:
+    jenkins_deploy_jobs:
+      # mk20
+      - stack_name: virtual_mk20_advanced
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mk20_basic
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      # mk22
+      - stack_name: virtual_mk22_advanced
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
+      - stack_name: virtual_mk22_basic
+        stack_install: core,openstack
+        stack_type: heat
+        stack_test: ""
+        job_timer: ""
diff --git a/jenkins/client/job/deploy/lab/test-cicd.yml b/jenkins/client/job/deploy/lab/test-cicd.yml
new file mode 100644
index 0000000..0205223
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/test-cicd.yml
@@ -0,0 +1,111 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        deploy_heat_test_cicd:
+          name: deploy-heat-{{name}}
+          jobs:
+            - name: test-cicd-lab-dev
+              lab: cicd_lab_dev
+          template:
+            type: workflow-scm
+            concurrent: true
+            display_name: "Deploy {{name}} heat stack"
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: cicd-lab-pipeline.groovy
+            param:
+              # heat
+              HEAT_TEMPLATE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/mk/heat-templates"
+              HEAT_TEMPLATE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              HEAT_TEMPLATE_BRANCH:
+                type: string
+                default: "master"
+              HEAT_STACK_NAME:
+                type: string
+                description: Heat stack name. Will be generated if missing.
+              HEAT_STACK_TEMPLATE:
+                type: string
+                default: "{{lab}}"
+              HEAT_STACK_ENVIRONMENT:
+                type: string
+                default: "devcloud"
+              HEAT_STACK_ZONE:
+                type: string
+                default: "mcp-oss"
+              HEAT_STACK_PUBLIC_NET:
+                type: string
+                default: "public"
+              HEAT_STACK_DELETE:
+                type: boolean
+                default: 'true'
+                description: "Delete heat stack at the end of job"
+              HEAT_STACK_REUSE:
+                type: boolean
+                default: 'false'
+                description: "Reuse existing stack and only orchestrate deployment"
+
+              # salt master
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt-qa-credentials"
+              SSH_PUBLIC_KEY:
+                type: string
+                description: "User's public SSH key to be able to login when stack is deployed"
+
+              # openstack api
+              OPENSTACK_API_URL:
+                type: string
+                default: "https://cloud-cz.bud.mirantis.net:5000"
+              OPENSTACK_API_CREDENTIALS:
+                type: string
+                default: "openstack-devcloud-credentials"
+              OPENSTACK_API_PROJECT:
+                type: string
+                default: "mcp-oss"
+              OPENSTACK_API_CLIENT:
+                type: string
+                default: ""
+              OPENSTACK_API_VERSION:
+                type: string
+                default: "3"
+              OPENSTACK_API_PROJECT_DOMAIN:
+                type: string
+                default: "default"
+              OPENSTACK_API_USER_DOMAIN_ID:
+                type: string
+                default: "default"
+              OPENSTACK_API_PROJECT_ID:
+                type: string
+                default: ""
+              OPENSTACK_API_USER_DOMAIN:
+                type: string
+                default: "default"
+
+              # devops-portal-tests
+              DEVOPS_PORTAL_TESTS_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/oss/devops-portal-tests"
+              DEVOPS_PORTAL_TESTS_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              DEVOPS_PORTAL_TESTS_BRANCH:
+                type: string
+                default: "master"
+              DEVOPS_PORTAL_TESTS_RUN_LOCAL:
+                type: boolean
+                default: 'true'
+                description: "Run on swarm master node"
+              DEVOPS_PORTAL_TESTS_CONFIG:
+                type: string
+                description: "Path to the service-configuration file in json-format"
+              DEVOPS_PORTAL_TESTS_MARK:
+                type: string
+                default: "ALL"
+                description: "Mark specific tests to run: healthcheck, functional (default = all)"
diff --git a/jenkins/client/job/deploy/openstack.yml b/jenkins/client/job/deploy/openstack.yml
index cad1182..f316ab4 100644
--- a/jenkins/client/job/deploy/openstack.yml
+++ b/jenkins/client/job/deploy/openstack.yml
@@ -14,7 +14,7 @@
             type: git
             url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
             credentials: "gerrit"
-            script: lab-pipeline.groovy
+            script: cloud-deploy-pipeline.groovy
           param:
             # deployments and test settings
             STACK_TYPE:
@@ -34,3 +34,23 @@
             ASK_ON_ERROR:
                 type: boolean
                 default: 'false'
+        deploy-openstack-compute:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - OpenStack Compute node"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: openstack-compute-install.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TARGET_SERVERS:
+              type: string
+              default: ""
+              description: "Salt compound target to match nodes to be updated [*, G@osfamily:debian]."
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
index a65d440..8816a66 100644
--- a/jenkins/client/job/deploy/update/init.yml
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -3,3 +3,9 @@
   - system.jenkins.client.job.deploy.update.config
   - system.jenkins.client.job.deploy.update.saltenv
   - system.jenkins.client.job.deploy.update.upgrade
+  - system.jenkins.client.job.deploy.update.upgrade_compute
+  - system.jenkins.client.job.deploy.update.upgrade_ovs_gateway
+  - system.jenkins.client.job.deploy.update.upgrade_opencontrail
+  - system.jenkins.client.job.deploy.update.restore_mysql
+  - system.jenkins.client.job.deploy.update.restore_cassandra
+  - system.jenkins.client.job.deploy.update.restore_zookeeper
diff --git a/jenkins/client/job/deploy/update/package.yml b/jenkins/client/job/deploy/update/package.yml
index 273796c..a4e7fc0 100644
--- a/jenkins/client/job/deploy/update/package.yml
+++ b/jenkins/client/job/deploy/update/package.yml
@@ -36,7 +36,7 @@
             TARGET_SUBSET_LIVE:
               type: string
               default: '1'
-              description: Number of selected noded to live apply selected package update.
+              description: Number of selected nodes to live apply selected package update.
             TARGET_BATCH_LIVE:
               type: string
               description: Batch size for the complete live package update on all nodes, empty string means apply to all targetted nodes.
diff --git a/jenkins/client/job/deploy/update/restore_cassandra.yml b/jenkins/client/job/deploy/update/restore_cassandra.yml
new file mode 100644
index 0000000..7f53f80
--- /dev/null
+++ b/jenkins/client/job/deploy/update/restore_cassandra.yml
@@ -0,0 +1,25 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-cassandra-db-restore:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Cassandra - restore db"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: restore-cassandra.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
diff --git a/jenkins/client/job/deploy/update/restore_mysql.yml b/jenkins/client/job/deploy/update/restore_mysql.yml
new file mode 100644
index 0000000..9b2e4d7
--- /dev/null
+++ b/jenkins/client/job/deploy/update/restore_mysql.yml
@@ -0,0 +1,26 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-mysql-db-restore:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Xtrabackup - restore mysql db"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: xtrabackup-restore-mysql-db.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+
diff --git a/jenkins/client/job/deploy/update/restore_zookeeper.yml b/jenkins/client/job/deploy/update/restore_zookeeper.yml
new file mode 100644
index 0000000..f33607a
--- /dev/null
+++ b/jenkins/client/job/deploy/update/restore_zookeeper.yml
@@ -0,0 +1,25 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-zookeeper-restore:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Zookeeper - restore"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: restore-zookeeper.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
diff --git a/jenkins/client/job/deploy/update/saltenv.yml b/jenkins/client/job/deploy/update/saltenv.yml
index 397e3f3..1ce1494 100644
--- a/jenkins/client/job/deploy/update/saltenv.yml
+++ b/jenkins/client/job/deploy/update/saltenv.yml
@@ -5,6 +5,7 @@
   _param:
     jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
     jenkins_salt_model_name: "salt"
+    jenkins_salt_model_branch: "master"
   jenkins:
     client:
       job_template:
@@ -21,6 +22,7 @@
             scm:
               type: git
               url: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+              branch: ${_param:jenkins_salt_model_branch}
               credentials: "gerrit"
               script: Jenkinsfile
             param:
diff --git a/jenkins/client/job/deploy/update/upgrade_compute.yml b/jenkins/client/job/deploy/update/upgrade_compute.yml
new file mode 100644
index 0000000..f95e70e
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade_compute.yml
@@ -0,0 +1,36 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-upgrade-compute:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade computes"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: openstack-compute-upgrade.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TARGET_SERVERS:
+              type: string
+              default: "cmp*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            TARGET_SUBSET_TEST:
+              type: string
+              description: Number of nodes to list package updates, empty string means all targetted nodes.
+            TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected nodes to live apply upgrade.
diff --git a/jenkins/client/job/deploy/update/upgrade_opencontrail.yml b/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
new file mode 100644
index 0000000..b5d1e77
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade_opencontrail.yml
@@ -0,0 +1,57 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-upgrade-opencontrail:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade Opencontrail"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: opencontrail-upgrade.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            STAGE_CONTROLLERS_UPGRADE:
+              type: boolean
+              default: 'true'
+              description: "Run upgrade on Opencontrail controllers"
+            STAGE_ANALYTICS_UPGRADE:
+              type: boolean
+              default: 'true'
+              description: "Run upgrade on Opencontrail analytics"
+            STAGE_COMPUTES_UPGRADE:
+              type: boolean
+              default: 'true'
+              description: "Run upgrade on Opencontrail compute nodes"
+            COMPUTE_TARGET_SERVERS:
+              type: string
+              default: "cmp*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            COMPUTE_TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected nodes to live apply compute upgrade.
+            STAGE_CONTROLLERS_ROLLBACK:
+              type: boolean
+              default: 'false'
+              description: "Run rollback on Opencontrail controllers"
+            STAGE_ANALYTICS_ROLLBACK:
+              type: boolean
+              default: 'false'
+              description: "Run rollback on Opencontrail analytics"
+            STAGE_COMPUTES_ROLLBACK:
+              type: boolean
+              default: 'false'
+              description: "Run rollback on Opencontrail compute nodes"
diff --git a/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml b/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
new file mode 100644
index 0000000..3d12796
--- /dev/null
+++ b/jenkins/client/job/deploy/update/upgrade_ovs_gateway.yml
@@ -0,0 +1,36 @@
+#
+# Jobs to update packages on given Salt master environment
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-upgrade-ovs-gateway:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - upgrade OVS gateway"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: ovs-gateway-upgrade.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            TARGET_SERVERS:
+              type: string
+              default: "gtw*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            TARGET_SUBSET_TEST:
+              type: string
+              description: Number of nodes to list package updates, empty string means all targetted nodes.
+            TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected nodes to live apply upgrade.
diff --git a/jenkins/client/job/docker/build-images.yml b/jenkins/client/job/docker/build-images.yml
index e9e7447..ca1d058 100644
--- a/jenkins/client/job/docker/build-images.yml
+++ b/jenkins/client/job/docker/build-images.yml
@@ -6,7 +6,11 @@
           name: "docker-build-images-{{name}}"
           jobs:
             - name: aptly
+              repo: mk
             - name: ci
+              repo: mk
+            - name: prometheus
+              repo: mcp
           template:
             discard:
               build:
@@ -17,7 +21,7 @@
             concurrent: true
             scm:
               type: git
-              url: "${_param:jenkins_gerrit_url}/mk/docker-{{name}}"
+              url: "${_param:jenkins_gerrit_url}/{{repo}}/docker-{{name}}"
               credentials: "gerrit"
             trigger:
               gerrit:
@@ -31,7 +35,7 @@
             param:
               IMAGE_GIT_URL:
                 type: string
-                default: "${_param:jenkins_gerrit_url}/mk/docker-{{name}}"
+                default: "${_param:jenkins_gerrit_url}/{{repo}}/docker-{{name}}"
               IMAGE_BRANCH:
                 type: string
                 default: "master"
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
index 1a2e4d9..99e230b 100644
--- a/jenkins/client/job/docker/init.yml
+++ b/jenkins/client/job/docker/init.yml
@@ -23,8 +23,8 @@
               tags: "2.32"
               dockerfile: "Dockerfile"
             - name: jenkins
-              branch: "2.52"
-              tags: "2.52 latest"
+              branch: "2.71"
+              tags: "2.71 latest"
               dockerfile: "Dockerfile"
             - name: phpldapadmin
               branch: "master"
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/cis-collectors.yml
similarity index 76%
copy from jenkins/client/job/docker/devops-portal.yml
copy to jenkins/client/job/docker/oss/cis-collectors.yml
index 7af37eb..11d8be9 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/cis-collectors.yml
@@ -2,8 +2,8 @@
   jenkins:
     client:
       job:
-        docker-build-images-devops-portal:
-          name: docker-build-images-devops-portal
+        docker-build-images-cis-openstack:
+          name: docker-build-images-cis-openstack
           discard:
             build:
               keep_num: 25
@@ -13,13 +13,13 @@
           concurrent: false
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
-                "oss/devops-portal":
+                "oss/cis-collectors":
                   branches:
                     - master
               skip_vote:
@@ -40,16 +40,19 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "cis-openstack"
             IMAGE_TAGS:
               type: string
               default: ""
+            CONTEXT_PATH:
+              type: string
+              default: "openstack"
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
             DOCKERFILE_PATH:
               type: string
-              default: "docker/devops-portal"
+              default: ""
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/devops-portal.yml
similarity index 83%
rename from jenkins/client/job/docker/devops-portal.yml
rename to jenkins/client/job/docker/oss/devops-portal.yml
index 7af37eb..3b831d8 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/devops-portal.yml
@@ -13,9 +13,9 @@
           concurrent: false
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
@@ -40,16 +40,19 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "devops-portal"
             IMAGE_TAGS:
               type: string
               default: ""
+            CONTEXT_PATH:
+              type: string
+              default: "."
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
             DOCKERFILE_PATH:
               type: string
-              default: "docker/devops-portal"
+              default: "docker/devops-portal/Dockerfile"
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
diff --git a/jenkins/client/job/docker/oss/init.yml b/jenkins/client/job/docker/oss/init.yml
new file mode 100644
index 0000000..386ea75
--- /dev/null
+++ b/jenkins/client/job/docker/oss/init.yml
@@ -0,0 +1,11 @@
+classes:
+  - system.jenkins.client.job.docker.oss.cis-collectors
+  - system.jenkins.client.job.docker.oss.devops-portal
+  - system.jenkins.client.job.docker.oss.janitor-monkey-codebase
+  - system.jenkins.client.job.docker.oss.janitor-monkey-docker
+  - system.jenkins.client.job.docker.oss.pushkin-docker
+  - system.jenkins.client.job.docker.oss.pushkin-codebase
+  - system.jenkins.client.job.docker.oss.pushkin-codebase-ext
+  - system.jenkins.client.job.docker.oss.rundeck
+  - system.jenkins.client.job.docker.oss.security-monkey-docker
+  - system.jenkins.client.job.docker.oss.security-monkey-codebase-openstack
diff --git a/jenkins/client/job/docker/oss/janitor-monkey-codebase.yml b/jenkins/client/job/docker/oss/janitor-monkey-codebase.yml
new file mode 100644
index 0000000..95a45f1
--- /dev/null
+++ b/jenkins/client/job/docker/oss/janitor-monkey-codebase.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-janitor-monkey-codebase:
+          name: docker-build-images-janitor-monkey-codebase
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/SimianArmy":
+                  branches:
+                    - devel
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "janitor-monkey"
+            IMAGE_TAGS:
+              type: string
+              default: ""
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DOCKER_REGISTRY:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net"
+            PROJECT_NAMESPACE:
+              type: string
+              default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-janitor-monkey
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_JANITOR_MONKEY_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_JANITOR_MONKEY_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/janitor-monkey-docker.yml
similarity index 66%
copy from jenkins/client/job/docker/devops-portal.yml
copy to jenkins/client/job/docker/oss/janitor-monkey-docker.yml
index 7af37eb..083d086 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/janitor-monkey-docker.yml
@@ -2,24 +2,24 @@
   jenkins:
     client:
       job:
-        docker-build-images-devops-portal:
-          name: docker-build-images-devops-portal
+        docker-build-images-janitor-monkey-docker:
+          name: docker-build-images-janitor-monkey-docker
           discard:
             build:
               keep_num: 25
             artifact:
               keep_num: 25
           type: workflow-scm
-          concurrent: false
+          concurrent: true
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
-                "oss/devops-portal":
+                "oss/docker-janitor-monkey":
                   branches:
                     - master
               skip_vote:
@@ -40,19 +40,28 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "janitor-monkey"
             IMAGE_TAGS:
               type: string
               default: ""
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
-            DOCKERFILE_PATH:
-              type: string
-              default: "docker/devops-portal"
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
             PROJECT_NAMESPACE:
               type: string
               default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CI_BUILD_ARG_JANITOR_MONKEY_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_JANITOR_MONKEY_REF:
+              type: string
+              default: ""
\ No newline at end of file
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/pushkin-codebase-ext.yml
similarity index 61%
copy from jenkins/client/job/docker/devops-portal.yml
copy to jenkins/client/job/docker/oss/pushkin-codebase-ext.yml
index 7af37eb..1a5b5b6 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/pushkin-codebase-ext.yml
@@ -2,24 +2,24 @@
   jenkins:
     client:
       job:
-        docker-build-images-devops-portal:
-          name: docker-build-images-devops-portal
+        docker-build-images-pushkin-codebase-ext:
+          name: docker-build-images-pushkin-codebase-ext
           discard:
             build:
               keep_num: 25
             artifact:
               keep_num: 25
           type: workflow-scm
-          concurrent: false
+          concurrent: true
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
-                "oss/devops-portal":
+                "oss/pushkin-extensions":
                   branches:
                     - master
               skip_vote:
@@ -40,19 +40,34 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "pushkin"
             IMAGE_TAGS:
               type: string
               default: ""
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
-            DOCKERFILE_PATH:
-              type: string
-              default: "docker/devops-portal"
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
             PROJECT_NAMESPACE:
               type: string
               default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-pushkin
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_PUSHKIN_EXT_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_EXT_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/pushkin-codebase.yml
similarity index 60%
copy from jenkins/client/job/docker/devops-portal.yml
copy to jenkins/client/job/docker/oss/pushkin-codebase.yml
index 7af37eb..f40bde3 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/pushkin-codebase.yml
@@ -2,26 +2,26 @@
   jenkins:
     client:
       job:
-        docker-build-images-devops-portal:
-          name: docker-build-images-devops-portal
+        docker-build-images-pushkin-codebase:
+          name: docker-build-images-pushkin-codebase
           discard:
             build:
               keep_num: 25
             artifact:
               keep_num: 25
           type: workflow-scm
-          concurrent: false
+          concurrent: true
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
-                "oss/devops-portal":
+                "oss/pushkin":
                   branches:
-                    - master
+                    - devel
               skip_vote:
                 - successful
                 - failed
@@ -40,19 +40,34 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "pushkin"
             IMAGE_TAGS:
               type: string
               default: ""
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
-            DOCKERFILE_PATH:
-              type: string
-              default: "docker/devops-portal"
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
             PROJECT_NAMESPACE:
               type: string
               default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-pushkin
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_PUSHKIN_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/pushkin-docker.yml
similarity index 62%
copy from jenkins/client/job/docker/devops-portal.yml
copy to jenkins/client/job/docker/oss/pushkin-docker.yml
index 7af37eb..d71e701 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/pushkin-docker.yml
@@ -2,24 +2,24 @@
   jenkins:
     client:
       job:
-        docker-build-images-devops-portal:
-          name: docker-build-images-devops-portal
+        docker-build-images-pushkin-docker:
+          name: docker-build-images-pushkin-docker
           discard:
             build:
               keep_num: 25
             artifact:
               keep_num: 25
           type: workflow-scm
-          concurrent: false
+          concurrent: true
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
-                "oss/devops-portal":
+                "oss/docker-pushkin":
                   branches:
                     - master
               skip_vote:
@@ -40,19 +40,34 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "pushkin"
             IMAGE_TAGS:
               type: string
               default: ""
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
-            DOCKERFILE_PATH:
-              type: string
-              default: "docker/devops-portal"
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
             PROJECT_NAMESPACE:
               type: string
               default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CI_BUILD_ARG_PUSHKIN_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_REF:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_EXT_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_PUSHKIN_EXT_REF:
+              type: string
+              default: ""
\ No newline at end of file
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/oss/rundeck.yml
similarity index 77%
copy from jenkins/client/job/docker/devops-portal.yml
copy to jenkins/client/job/docker/oss/rundeck.yml
index 7af37eb..9b116fe 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/oss/rundeck.yml
@@ -2,8 +2,8 @@
   jenkins:
     client:
       job:
-        docker-build-images-devops-portal:
-          name: docker-build-images-devops-portal
+        docker-build-images-rundeck:
+          name: docker-build-images-rundeck
           discard:
             build:
               keep_num: 25
@@ -13,13 +13,13 @@
           concurrent: false
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
-                "oss/devops-portal":
+                "oss/docker-rundeck":
                   branches:
                     - master
               skip_vote:
@@ -40,16 +40,19 @@
           param:
             IMAGE_NAME:
               type: string
-              default: "devops_portal"
+              default: "rundeck"
             IMAGE_TAGS:
               type: string
               default: ""
+            CONTEXT_PATH:
+              type: string
+              default: "."
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
             DOCKERFILE_PATH:
               type: string
-              default: "docker/devops-portal"
+              default: ""
             DOCKER_REGISTRY:
               type: string
               default: "docker-dev-virtual.docker.mirantis.net"
diff --git a/jenkins/client/job/docker/oss/security-monkey-codebase-openstack.yml b/jenkins/client/job/docker/oss/security-monkey-codebase-openstack.yml
new file mode 100644
index 0000000..a135df8
--- /dev/null
+++ b/jenkins/client/job/docker/oss/security-monkey-codebase-openstack.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-security-monkey-codebase-openstack:
+          name: docker-build-images-security-monkey-codebase-openstack 
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-security-monkey-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/security-monkey-openstack":
+                  branches:
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "security-monkey"
+            IMAGE_TAGS:
+              type: string
+              default: ""
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DOCKER_REGISTRY:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net"
+            PROJECT_NAMESPACE:
+              type: string
+              default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "security-monkey/Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CUSTOM_GERRIT_PROJECT:
+              type: string
+              default: oss/docker-security-monkey
+            CUSTOM_GERRIT_BRANCH:
+              type: string
+              default: master
+            CI_BUILD_ARG_SECURITY_MONKEY_OPENSTACK_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_SECURITY_MONKEY_OPENSTACK_REF:
+              type: string
+              default: ""
diff --git a/jenkins/client/job/docker/oss/security-monkey-docker.yml b/jenkins/client/job/docker/oss/security-monkey-docker.yml
new file mode 100644
index 0000000..7724f80
--- /dev/null
+++ b/jenkins/client/job/docker/oss/security-monkey-docker.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-security-monkey-docker:
+          name: docker-build-images-security-monkey-docker
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: docker-build-image-security-monkey-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/docker-security-monkey":
+                  branches:
+                    - master
+              skip_vote:
+                - successful
+                - failed
+                - unstable
+                - not_built
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeNoCodeChange: false
+                change:
+                  - merged
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: 'rebuild'
+          param:
+            IMAGE_NAME:
+              type: string
+              default: "security-monkey"
+            IMAGE_TAGS:
+              type: string
+              default: ""
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DOCKER_REGISTRY:
+              type: string
+              default: "docker-dev-virtual.docker.mirantis.net"
+            PROJECT_NAMESPACE:
+              type: string
+              default: "oss"
+            DOCKERFILE_PATH:
+              type: string
+              default: "security-monkey/Dockerfile"
+            CONTEXT_PATH:
+              type: string
+              default: "."
+            CI_BUILD_ARG_SECURITY_MONKEY_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_SECURITY_MONKEY_REF:
+              type: string
+              default: ""
+            CI_BUILD_ARG_SECURITY_MONKEY_OPENSTACK_REPO:
+              type: string
+              default: ""
+            CI_BUILD_ARG_SECURITY_MONKEY_OPENSTACK_REF:
+              type: string
+              default: ""
\ No newline at end of file
diff --git a/jenkins/client/job/docker/testing.yml b/jenkins/client/job/docker/testing.yml
new file mode 100644
index 0000000..bf65dbc
--- /dev/null
+++ b/jenkins/client/job/docker/testing.yml
@@ -0,0 +1,63 @@
+parameters:
+  _param:
+    jenkins_docker_registry_url: ""
+    jenkins_docker_registry_credentials: "dockerhub"
+  jenkins:
+    client:
+      job_template:
+        docker-build-image-testing:
+          name: docker-build-image-{{name}}-{{branch}}
+          jobs:
+            - name: python-flask-hello
+              branch: "master"
+              tags: "latest"
+              dockerfile: "Dockerfile"
+          template:
+            discard:
+              build:
+                keep_num: 5
+              artifact:
+                keep_num: 5
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: docker-build-image-pipeline.groovy
+            trigger:
+              reverse:
+                projects:
+                  - build-debian-python-flask-hello-ubuntu-trusty
+                state: UNSTABLE
+            param:
+              IMAGE_NAME:
+                type: string
+                default: "tcpcloud/{{name}}"
+              IMAGE_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/mk/python-flask-hello"
+              IMAGE_BUILD_PARAMS:
+                type: string
+                default: "--build-arg apt_repository='deb [arch=amd64] ${_param:jenkins_aptly_url}/trusty/ nightly extra' --build-arg apt_key_url=${_param:jenkins_aptly_url}/public.gpg --no-cache"
+              IMAGE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              IMAGE_CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              IMAGE_TAGS:
+                type: string
+                default: "{{tags}}"
+              DOCKERFILE_PATH:
+                type: string
+                default: "{{dockerfile}}"
+              REGISTRY_URL:
+                type: string
+                default: "${_param:jenkins_docker_registry_url}"
+              REGISTRY_CREDENTIALS_ID:
+                type: string
+                default: "${_param:jenkins_docker_registry_credentials}"
+              DOCKER_GIT_TAG:
+                type: boolean
+                default: "true"
diff --git a/jenkins/client/job/fake_test.yml b/jenkins/client/job/fake_test.yml
new file mode 100644
index 0000000..079651c
--- /dev/null
+++ b/jenkins/client/job/fake_test.yml
@@ -0,0 +1,37 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        gerrit-fake-test:
+          name: gerrit-fake-test
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: fake-test-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "salt-formulas/salt-formulas":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
diff --git a/jenkins/client/job/gating.yml b/jenkins/client/job/gating.yml
index 6b6d620..6886b06 100644
--- a/jenkins/client/job/gating.yml
+++ b/jenkins/client/job/gating.yml
@@ -38,6 +38,7 @@
             quiet_period: 60
             trigger:
               gerrit:
+                silent_start_mode: true
                 project:
                   '{{regex}}':
                     compare_type: REG_EXP
@@ -48,7 +49,6 @@
                   - failed
                   - unstable
                   - not_built
-                silent_start_mode: "true"
                 event:
                   comment:
                     - added:
diff --git a/jenkins/client/job/git-mirrors/downstream/docker_images.yml b/jenkins/client/job/git-mirrors/downstream/docker_images.yml
index 2471280..ff1c649 100644
--- a/jenkins/client/job/git-mirrors/downstream/docker_images.yml
+++ b/jenkins/client/job/git-mirrors/downstream/docker_images.yml
@@ -6,4 +6,8 @@
       - name: docker-aptly
         downstream: mk/docker-aptly
         upstream: "https://github.com/tcpcloud/docker-aptly"
-        branches: master
\ No newline at end of file
+        branches: master
+      - name: python-flask-hello
+        downstream: mk/python-flask-hello
+        upstream: "https://github.com/tcpcloud/python-flask-hello"
+        branches: master
diff --git a/jenkins/client/job/git-mirrors/upstream/oss.yml b/jenkins/client/job/git-mirrors/upstream/oss.yml
new file mode 100644
index 0000000..af3f816
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/oss.yml
@@ -0,0 +1,9 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.upstream
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs:
+      - name: rundeck-cis-jobs
+        downstream: oss/rundeck-cis-jobs
+        upstream: "git@github.com:Mirantis/rundeck-cis-jobs"
+        branches: master
diff --git a/jenkins/client/job/image/centos.yml b/jenkins/client/job/image/centos.yml
index 995bfd4..2524163 100644
--- a/jenkins/client/job/image/centos.yml
+++ b/jenkins/client/job/image/centos.yml
@@ -56,13 +56,13 @@
               default: "qcow2"
             GLANCE_URL:
               type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
+              default: "https://cloud-cz.bud.mirantis.net:5000"
             GLANCE_CREDENTIALS_ID:
               type: string
-              default: "openstack-qa-credentials"
+              default: "openstack-devcloud-credentials"
             GLANCE_PROJECT:
               type: string
-              default: "mirantis_mk20_qa"
+              default: "mcp-mk"
             GLANCE_ARGS:
               type: string
               default: ""
@@ -71,4 +71,4 @@
               default: "true"
             OPENSTACK_API_CLIENT:
               type: string
-              default: "liberty"
+              default: ""
diff --git a/jenkins/client/job/image/debian.yml b/jenkins/client/job/image/debian.yml
index 924b34c..2c92f80 100644
--- a/jenkins/client/job/image/debian.yml
+++ b/jenkins/client/job/image/debian.yml
@@ -56,13 +56,13 @@
               default: "qcow2"
             GLANCE_URL:
               type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
+              default: "https://cloud-cz.bud.mirantis.net:5000"
             GLANCE_CREDENTIALS_ID:
               type: string
-              default: "openstack-qa-credentials"
+              default: "openstack-devcloud-credentials"
             GLANCE_PROJECT:
               type: string
-              default: "mirantis_mk20_qa"
+              default: "mcp-mk"
             GLANCE_ARGS:
               type: string
               default: ""
@@ -71,4 +71,4 @@
               default: "true"
             OPENSTACK_API_CLIENT:
               type: string
-              default: "liberty"
+              default: ""
diff --git a/jenkins/client/job/image/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
index a9f25e5..c5b43d6 100644
--- a/jenkins/client/job/image/ubuntu.yml
+++ b/jenkins/client/job/image/ubuntu.yml
@@ -45,7 +45,7 @@
               default: ""
             UPLOAD_URL:
               type: string
-              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+              default: "${_param:jenkins_packer_upload_url}"
             SKIP_UPLOAD:
               type: boolean
               default: "false"
@@ -63,13 +63,13 @@
               default: "qcow2"
             GLANCE_URL:
               type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
+              default: "https://cloud-cz.bud.mirantis.net:5000"
             GLANCE_CREDENTIALS_ID:
               type: string
-              default: "openstack-qa-credentials"
+              default: "openstack-devcloud-credentials"
             GLANCE_PROJECT:
               type: string
-              default: "mirantis_mk20_qa"
+              default: "mcp-mk"
             GLANCE_ARGS:
               type: string
               default: ""
@@ -78,7 +78,7 @@
               default: "true"
             OPENSTACK_API_CLIENT:
               type: string
-              default: "liberty"
+              default: ""
         build-image-ubuntu-16-04:
           type: workflow-scm
           concurrent: false
@@ -129,13 +129,13 @@
               default: "qcow2"
             GLANCE_URL:
               type: string
-              default: "https://vpc.tcpisek.cz:5000/v2.0"
+              default: "https://cloud-cz.bud.mirantis.net:5000"
             GLANCE_CREDENTIALS_ID:
               type: string
-              default: "openstack-qa-credentials"
+              default: "openstack-devcloud-credentials"
             GLANCE_PROJECT:
               type: string
-              default: "mirantis_mk20_qa"
+              default: "mcp-mk"
             GLANCE_ARGS:
               type: string
               default: ""
@@ -144,4 +144,4 @@
               default: "true"
             OPENSTACK_API_CLIENT:
               type: string
-              default: "liberty"
+              default: ""
diff --git a/jenkins/client/job/opencontrail/build/dpdk-extra.yml b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
index 5b128a2..156cedb 100644
--- a/jenkins/client/job/opencontrail/build/dpdk-extra.yml
+++ b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
@@ -9,22 +9,38 @@
               dist: trusty
               branch_name: kilo
               branch_real_name: kilo
+              aptly_repo: ubuntu-trusty-kilo
+              binary: "all"
             - os: ubuntu
               dist: trusty
               branch_name: liberty
               branch_real_name: liberty-multiqueue
+              aptly_repo: ubuntu-trusty-liberty
+              binary: "all"
             - os: ubuntu
               dist: trusty
               branch_name: mitaka
               branch_real_name: mitaka
+              aptly_repo: ubuntu-trusty-mitaka
+              binary: "all"
             - os: ubuntu
               dist: xenial
               branch_name: mitaka
               branch_real_name: mitaka
+              aptly_repo: ubuntu-xenial-mitaka
+              binary: "all"
             - os: ubuntu
               dist: xenial
               branch_name: newton
               branch_real_name: newton
+              aptly_repo: ubuntu-xenial-newton
+              binary: "all"
+            - os: ubuntu
+              dist: xenial
+              branch_name: dpdk1702
+              branch_real_name: mitaka_dpdk_17_02
+              aptly_repo: ubuntu-xenial-oc40-dpdk1702
+              binary: "contrail-dpdk-kernel-modules-dkms"
           template:
             discard:
              build:
@@ -39,19 +55,6 @@
               credentials: "gerrit"
               script: build-extra-dpdk-pipeline.groovy
             quiet_period: 120
-            trigger:
-              gerrit:
-                project:
-                  contrail/contrail-dpdk-extra-packages:
-                    branches:
-                      - "{{branch_real_name}}"
-                message:
-                  build_successful: "Build successful"
-                  build_unstable: "Build unstable"
-                  build_failure: "Build failed"
-                event:
-                  ref:
-                    - updated
             param:
               SOURCE_URL:
                 type: string
@@ -80,4 +83,4 @@
               BINARY_PACKAGES:
                 description: "binary packages to create"
                 type: string
-                default: "all"
+                default: "{{binary}}"
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
index cd8a132..9643254 100644
--- a/jenkins/client/job/opencontrail/build/generic.yml
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -13,54 +13,91 @@
               branch: R3.0.3.x
               ppa: mirantis-opencontrail/opencontrail-3.0.3
               upload_source_package: false
+              dpdk: contrail_dpdk_2_1
             - buildname: oc31
               os: ubuntu
               dist: trusty
               branch: R3.1
               ppa: mirantis-opencontrail/opencontrail-3.1
               upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc31
               os: ubuntu
               dist: xenial
               branch: R3.1
               ppa: mirantis-opencontrail/opencontrail-3.1
               upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc311
               os: ubuntu
               dist: trusty
               branch: R3.1.1.x
               ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc311
               os: ubuntu
               dist: xenial
               branch: R3.1.1.x
               ppa: mirantis-opencontrail/opencontrail-3.1.1
               upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc32
               os: ubuntu
               dist: trusty
               branch: R3.2
               ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc32
               os: ubuntu
               dist: xenial
               branch: R3.2
               ppa: mirantis-opencontrail/opencontrail-3.2
               upload_source_package: true
+              dpdk: contrail_dpdk_2_1
+            - buildname: oc323
+              os: ubuntu
+              dist: trusty
+              branch: R3.2.3.x
+              ppa: mirantis-opencontrail/opencontrail-3.2.3
+              upload_source_package: true
+              dpdk: contrail_dpdk_2_1
+            - buildname: oc323
+              os: ubuntu
+              dist: xenial
+              branch: R3.2.3.x
+              ppa: mirantis-opencontrail/opencontrail-3.2.3
+              upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc40
               os: ubuntu
               dist: trusty
               branch: R4.0
               ppa: mirantis-opencontrail/opencontrail-4.0
-              upload_source_package: false
+              upload_source_package: true
+              dpdk: contrail_dpdk_2_1
             - buildname: oc40
               os: ubuntu
               dist: xenial
               branch: R4.0
               ppa: mirantis-opencontrail/opencontrail-4.0
+              upload_source_package: true
+              dpdk: contrail_dpdk_2_1
+            - buildname: oc40-dpdk1702
+              os: ubuntu
+              dist: trusty
+              branch: R4.0
+              ppa: mirantis-opencontrail/opencontrail-4.0-dpdk-17-02
               upload_source_package: false
+              dpdk: contrail_dpdk_17_02
+            - buildname: oc40-dpdk1702
+              os: ubuntu
+              dist: xenial
+              branch: R4.0
+              ppa: mirantis-opencontrail/opencontrail-4.0-dpdk-17-02
+              upload_source_package: false
+              dpdk: contrail_dpdk_17_02
             - buildname: oc666
               os: ubuntu
               dist: trusty
@@ -108,10 +145,9 @@
                 type: boolean
                 default: 'false'
                 description: "Don't cleanup on failure"
-              DEBUG_DPDK:
-                type: boolean
-                default: 'false'
-                description: "CONFIG_RTE_LIBRTE_ETHDEV_DEBUG enabled or disabled"
+              DPDK_BRANCH:
+                type: string
+                default: "{{dpdk}}"
               OS:
                 type: string
                 default: "{{os}}"
diff --git a/jenkins/client/job/opencontrail/build/test.yml b/jenkins/client/job/opencontrail/build/test.yml
index 5a4666a..655b9f8 100644
--- a/jenkins/client/job/opencontrail/build/test.yml
+++ b/jenkins/client/job/opencontrail/build/test.yml
@@ -62,15 +62,10 @@
                     branches:
                       - "{{branch}}"
                 event:
-                  patchset:
-                    - created:
-                        excludeDrafts: false
-                        excludeTrivialRebase: false
-                        excludeNoCodeChange: false
-                  comment:
+                 comment:
                     - addedContains:
-                        commentAddedCommentContains: '(recheck|reverify)'
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
             param:
               TEST_MODELS:
                 type: string
-                default: "{{clusters}}"
\ No newline at end of file
+                default: "{{clusters}}"
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
index e76b322..4b42d50 100644
--- a/jenkins/client/job/opencontrail/init.yml
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -3,12 +3,12 @@
   - system.jenkins.client.job.opencontrail.git-mirrors
 parameters:
   _param:
-    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R4.0,master"
+    contrail_branches: "R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,master"
     contrail_kubernetes_branches: "master,release-1.2"
-    contrail_dpdk_extra_branches: "mitaka,kilo,liberty-multiqueue,newton"
+    contrail_dpdk_extra_branches: "mitaka,mitaka_dpdk_17_02,mitaka_dpdk_17_05,kilo,liberty-multiqueue,newton"
     contrail_ceilometer_plugin_branches: "master,R4.0"
     contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
-    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R4.0,contrail_dpdk_17_02,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
+    contrail_dpdk_branches: "master,R3.0.2.x,R3.0.3.x,R3.1,R3.1.1.x,R3.2,R3.2.3.x,R4.0,contrail_dpdk_17_02,contrail_dpdk_17_05,contrail_dpdk_1_7,contrail_dpdk_2_0,contrail_dpdk_2_1"
   jenkins:
     client:
       view:
diff --git a/jenkins/client/job/oss/init.yml b/jenkins/client/job/oss/init.yml
new file mode 100644
index 0000000..0e23f01
--- /dev/null
+++ b/jenkins/client/job/oss/init.yml
@@ -0,0 +1,3 @@
+classes:
+  - system.jenkins.client.job.oss.test_devops_portal
+  - system.jenkins.client.job.oss.test_security_monkey_openstack
diff --git a/jenkins/client/job/test_devops_portal.yml b/jenkins/client/job/oss/test_devops_portal.yml
similarity index 66%
rename from jenkins/client/job/test_devops_portal.yml
rename to jenkins/client/job/oss/test_devops_portal.yml
index 5cf4c79..4007010 100644
--- a/jenkins/client/job/test_devops_portal.yml
+++ b/jenkins/client/job/oss/test_devops_portal.yml
@@ -6,16 +6,16 @@
           name: test-oss-devops-portal
           discard:
             build:
-              keep_num: 10
+              keep_num: 15
             artifact:
-              keep_num: 10
+              keep_num: 15
           type: workflow-scm
           concurrent: true
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: test-nodejs-pipeline.groovy
+            script: test-devops-portal-pipeline.groovy
           trigger:
             gerrit:
               project:
@@ -32,20 +32,9 @@
                   - addedContains:
                       commentAddedCommentContains: '(recheck|reverify)'
           param:
-            COMPOSE_PATH:
-              type: string
-              default: "docker/stack/docker-compose.yml"
             CREDENTIALS_ID:
               type: string
               default: "gerrit"
-            JSON_CONFIG:
-              type: string
-              default: '{"services": {"elasticsearch": {"endpoint": "http://elasticsearch:9200"}}}'
-            COMMANDS:
-              type: text
-              default: |
-                npm run lint
-                npm run test:unit
             DEFAULT_GIT_URL:
                 type: string
                 default: "${_param:jenkins_gerrit_url}/oss/devops-portal"
diff --git a/jenkins/client/job/oss/test_security_monkey_openstack.yml b/jenkins/client/job/oss/test_security_monkey_openstack.yml
new file mode 100644
index 0000000..7e9343f
--- /dev/null
+++ b/jenkins/client/job/oss/test_security_monkey_openstack.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-oss-security-monkey-openstack:
+          name: test-oss-security-monkey-openstack
+          discard:
+            build:
+              keep_num: 15
+            artifact:
+              keep_num: 15
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: test-security-monkey-openstack-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/security-monkey-openstack":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/oss/security-monkey-openstack"
+            DEFAULT_GIT_REF:
+              type: string
+              default: master
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
index 1716a44..331eb59 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -8,105 +8,223 @@
           name: git-mirror-2way-salt-formula-{{name}}
           jobs:
             - name: aodh
+              branches: ${_param:salt_formulas_branches}
             - name: apache
+              branches: ${_param:salt_formulas_branches}
             - name: aptcacher
+              branches: ${_param:salt_formulas_branches}
             - name: aptly
+              branches: ${_param:salt_formulas_branches}
             - name: artifactory
-            - name: backupninja
+              branches: ${_param:salt_formulas_branches}
             - name: avinetworks
+              branches: ${_param:salt_formulas_branches}
+            - name: backupninja
+              branches: ${_param:salt_formulas_branches}
+            - name: barbican
+              branches: ${_param:salt_formulas_branches}
             - name: billometer
+              branches: ${_param:salt_formulas_branches}
             - name: bind
+              branches: ${_param:salt_formulas_branches}
             - name: bird
+              branches: ${_param:salt_formulas_branches}
             - name: cadf
+              branches: ${_param:salt_formulas_branches}
             - name: calico
+              branches: ${_param:salt_formulas_branches}
             - name: cassandra
+              branches: ${_param:salt_formulas_branches}
             - name: ccp
+              branches: ${_param:salt_formulas_branches}
             - name: ceilometer
+              branches: ${_param:salt_formulas_extra_branches}
             - name: ceph
+              branches: ${_param:salt_formulas_branches}
             - name: chrony
+              branches: ${_param:salt_formulas_branches}
             - name: cinder
+              branches: ${_param:salt_formulas_extra_branches}
             - name: collectd
+              branches: ${_param:salt_formulas_branches}
             - name: dekapod
+              branches: ${_param:salt_formulas_branches}
             - name: devops-portal
+              branches: ${_param:salt_formulas_branches}
             - name: docker
+              branches: ${_param:salt_formulas_branches}
             - name: dovecot
+              branches: ${_param:salt_formulas_branches}
             - name: elasticsearch
+              branches: ${_param:salt_formulas_branches}
             - name: etcd
+              branches: ${_param:salt_formulas_branches}
             - name: foreman
+              branches: ${_param:salt_formulas_branches}
             - name: freeipa
+              branches: ${_param:salt_formulas_branches}
             - name: galera
+              branches: ${_param:salt_formulas_branches}
             - name: gerrit
+              branches: ${_param:salt_formulas_branches}
             - name: git
+              branches: ${_param:salt_formulas_branches}
             - name: gitlab
+              branches: ${_param:salt_formulas_branches}
             - name: glance
+              branches: ${_param:salt_formulas_extra_branches}
             - name: glusterfs
+              branches: ${_param:salt_formulas_branches}
+            - name: gnocchi
+              branches: ${_param:salt_formulas_branches}
             - name: grafana
+              branches: ${_param:salt_formulas_branches}
             - name: graphite
+              branches: ${_param:salt_formulas_branches}
             - name: haproxy
+              branches: ${_param:salt_formulas_branches}
             - name: heat
+              branches: ${_param:salt_formulas_extra_branches}
             - name: heka
+              branches: ${_param:salt_formulas_branches}
+            - name: helm
+              branches: ${_param:salt_formulas_branches}
             - name: horizon
+              branches: ${_param:salt_formulas_extra_branches}
             - name: influxdb
+              branches: ${_param:salt_formulas_branches}
             - name: iptables
+              branches: ${_param:salt_formulas_branches}
+            - name: ironic
+              branches: ${_param:salt_formulas_branches}
             - name: isc-dhcp
+              branches: ${_param:salt_formulas_branches}
             - name: java
+              branches: ${_param:salt_formulas_branches}
             - name: jenkins
+              branches: ${_param:salt_formulas_branches}
             - name: kedb
+              branches: ${_param:salt_formulas_branches}
             - name: keepalived
+              branches: ${_param:salt_formulas_branches}
             - name: keystone
+              branches: ${_param:salt_formulas_extra_branches}
             - name: kibana
+              branches: ${_param:salt_formulas_branches}
             - name: kubernetes
+              branches: ${_param:salt_formulas_extra_branches}
             - name: letsencrypt
+              branches: ${_param:salt_formulas_branches}
             - name: libvirt
+              branches: ${_param:salt_formulas_branches}
             - name: linux
+              branches: ${_param:salt_formulas_branches}
             - name: lldp
+              branches: ${_param:salt_formulas_branches}
             - name: logrotate
+              branches: ${_param:salt_formulas_branches}
             - name: maas
+              branches: ${_param:salt_formulas_branches}
             - name: magnum
+              branches: ${_param:salt_formulas_branches}
             - name: memcached
+              branches: ${_param:salt_formulas_branches}
             - name: midonet
+              branches: ${_param:salt_formulas_branches}
             - name: monasca
+              branches: ${_param:salt_formulas_branches}
             - name: mongodb
+              branches: ${_param:salt_formulas_branches}
             - name: murano
+              branches: ${_param:salt_formulas_branches}
             - name: mysql
+              branches: ${_param:salt_formulas_branches}
             - name: nagios
+              branches: ${_param:salt_formulas_branches}
             - name: network
+              branches: ${_param:salt_formulas_branches}
             - name: neutron
+              branches: ${_param:salt_formulas_extra_branches}
             - name: nfs
+              branches: ${_param:salt_formulas_branches}
             - name: nginx
+              branches: ${_param:salt_formulas_branches}
             - name: nodejs
+              branches: ${_param:salt_formulas_branches}
             - name: nova
+              branches: ${_param:salt_formulas_extra_branches}
             - name: ntp
+              branches: ${_param:salt_formulas_branches}
+            - name: octavia
+              branches: ${_param:salt_formulas_branches}
             - name: opencontrail
+              branches: ${_param:salt_formulas_branches}
             - name: openldap
+              branches: ${_param:salt_formulas_branches}
             - name: openssh
+              branches: ${_param:salt_formulas_branches}
             - name: openvpn
+              branches: ${_param:salt_formulas_branches}
             - name: openvstorage
+              branches: ${_param:salt_formulas_branches}
             - name: owncloud
+              branches: ${_param:salt_formulas_branches}
+            - name: panko
+              branches: ${_param:salt_formulas_branches}
             - name: postfix
+              branches: ${_param:salt_formulas_branches}
             - name: postgresql
+              branches: ${_param:salt_formulas_branches}
+            - name: powerdns
+              branches: ${_param:salt_formulas_branches}
             - name: pritunl
+              branches: ${_param:salt_formulas_branches}
             - name: prometheus
+              branches: ${_param:salt_formulas_branches}
             - name: python
+              branches: ${_param:salt_formulas_branches}
             - name: rabbitmq
+              branches: ${_param:salt_formulas_branches}
             - name: reclass
+              branches: ${_param:salt_formulas_branches}
             - name: redis
+              branches: ${_param:salt_formulas_branches}
             - name: roundcube
+              branches: ${_param:salt_formulas_branches}
             - name: rsync
+              branches: ${_param:salt_formulas_branches}
             - name: rsyslog
+              branches: ${_param:salt_formulas_branches}
+            - name: rundeck
+              branches: ${_param:salt_formulas_branches}
             - name: sahara
+              branches: ${_param:salt_formulas_branches}
             - name: salt
+              branches: ${_param:salt_formulas_branches}
             - name: sensu
+              branches: ${_param:salt_formulas_branches}
             - name: sentry
+              branches: ${_param:salt_formulas_branches}
             - name: sphinx
+              branches: ${_param:salt_formulas_branches}
             - name: spinnaker
+              branches: ${_param:salt_formulas_branches}
             - name: statsd
+              branches: ${_param:salt_formulas_branches}
             - name: supervisor
+              branches: ${_param:salt_formulas_branches}
             - name: swift
+              branches: ${_param:salt_formulas_extra_branches}
             - name: taiga
+              branches: ${_param:salt_formulas_branches}
             - name: telegraf
+              branches: ${_param:salt_formulas_branches}
             - name: varnish
+              branches: ${_param:salt_formulas_branches}
+            - name: xtrabackup
+              branches: ${_param:salt_formulas_branches}
             - name: zookeeper
+              branches: ${_param:salt_formulas_branches}
           template:
             discard:
               build:
@@ -138,4 +256,4 @@
                 default: "gerrit"
               BRANCHES:
                 type: string
-                default: ${_param:salt_formulas_branches}
+                default: "{{branches}}"
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/init.yml b/jenkins/client/job/salt-formulas/git-mirrors/init.yml
index 9b1d77d..b46aebc 100644
--- a/jenkins/client/job/salt-formulas/git-mirrors/init.yml
+++ b/jenkins/client/job/salt-formulas/git-mirrors/init.yml
@@ -2,4 +2,5 @@
   - system.jenkins.client.job.salt-formulas.git-mirrors.2way
 parameters:
   _param:
-    salt_formulas_branches: master
+    salt_formulas_branches: "master"
+    salt_formulas_extra_branches: "master,debian/xenial,debian/trusty"
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
index 0f3b405..c25cc49 100644
--- a/jenkins/client/job/salt-formulas/tests.yml
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -39,14 +39,17 @@
             - name: gitlab
             - name: glance
             - name: glusterfs
+            - name: gnocchi
             - name: grafana
             - name: graphite
             - name: haproxy
             - name: heat
             - name: heka
+            - name: helm
             - name: horizon
             - name: influxdb
             - name: iptables
+            - name: ironic
             - name: isc-dhcp
             - name: java
             - name: jenkins
@@ -76,14 +79,17 @@
             - name: nodejs
             - name: nova
             - name: ntp
+            - name: octavia
             - name: opencontrail
             - name: openldap
             - name: openssh
             - name: openvpn
             - name: openvstorage
             - name: owncloud
+            - name: panko
             - name: postfix
             - name: postgresql
+            - name: powerdns
             - name: pritunl
             - name: prometheus
             - name: python
@@ -107,6 +113,7 @@
             - name: telegraf
             - name: tftpd-hpa
             - name: varnish
+            - name: xtrabackup
             - name: zookeeper
           template:
             discard:
@@ -128,14 +135,9 @@
                     branches:
                       - master
                 event:
-                  patchset:
-                    - created:
-                        excludeDrafts: false
-                        excludeTrivialRebase: false
-                        excludeNoCodeChange: false
                   comment:
                     - addedContains:
-                        commentAddedCommentContains: '(recheck|reverify)'
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
             param:
               SALT_VERSION:
                 type: string
@@ -156,3 +158,5 @@
               KITCHEN_TESTS_PARALLEL:
                 type: boolean
                 default: 'false'
+              CUSTOM_KITCHEN_ENVS:
+                type: text
diff --git a/jenkins/client/job/salt-models/generate-auto.yml b/jenkins/client/job/salt-models/generate-auto.yml
deleted file mode 100644
index 4f62784..0000000
--- a/jenkins/client/job/salt-models/generate-auto.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      job_template:
-        generate-salt-model-auto:
-          name: generate-salt-model-{{cookiecutter_template}}
-          param:
-            cookiecutter_template:
-            - separated-products-auto
-          template:
-            type: workflow-scm
-            concurrent: true
-            display_name: "Generate reclass cluster {{cookiecutter_template}} automatically"
-            scm:
-              type: git
-              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-              credentials: "jenkins-mk"
-              script: generate-cookiecutter-products-auto.groovy
-            param:
-              COOKIECUTTER_TEMPLATE_URL:
-                type: string
-                default: "git@github.com:Mirantis/mk2x-cookiecutter-reclass-model.git"
-              COOKIECUTTER_TEMPLATE_CREDENTIALS:
-                type: string
-                default: github-credentials
-              COOKIECUTTER_TEMPLATE_BRANCH:
-                type: string
-                default: master
-              COOKIECUTTER_TEMPLATE_PATH:
-                type: string
-                default: "./"
-              COOKIECUTTER_TEMPLATE_CONTEXT:
-                type: text
-              RECLASS_MODEL_URL:
-                type: string
-              RECLASS_MODEL_CREDENTIALS:
-                type: string
-                default: gerrit
-              RECLASS_MODEL_BRANCH:
-                type: string
-                default: master
-              EMAIL_ADDRESS:
-                type: string
-                default: ""
\ No newline at end of file
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
index f88c54d..491cfee 100644
--- a/jenkins/client/job/salt-models/generate.yml
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -17,12 +17,13 @@
               credentials: "jenkins-mk"
               script: generate-cookiecutter-products.groovy
             param:
+              # Cookiecutter
               COOKIECUTTER_TEMPLATE_URL:
                 type: string
-                default: "git@github.com:Mirantis/mk2x-cookiecutter-reclass-model.git"
+                default: "${_param:jenkins_gerrit_url}/mk/cookiecutter-templates.git"
               COOKIECUTTER_TEMPLATE_CREDENTIALS:
                 type: string
-                default: github-credentials
+                default: gerrit
               COOKIECUTTER_TEMPLATE_BRANCH:
                 type: string
                 default: master
@@ -31,19 +32,13 @@
                 default: "./"
               COOKIECUTTER_TEMPLATE_CONTEXT:
                 type: text
-              RECLASS_MODEL_URL:
+
+              # Other
+              SHARED_RECLASS_URL:
                 type: string
-              RECLASS_MODEL_CREDENTIALS:
-                type: string
-                default: gerrit
-              RECLASS_MODEL_BRANCH:
-                type: string
-                default: master
-              COMMIT_CHANGES:
-                type: boolean
-                default: false
+                default: "${_param:jenkins_gerrit_url}/salt-models/reclass-system.git"
               EMAIL_ADDRESS:
                 type: string
               TEST_MODEL:
                 type: boolean
-                default: true
+                default: false
diff --git a/jenkins/client/job/salt-models/git-mirrors.yml b/jenkins/client/job/salt-models/git-mirrors.yml
index 7ee7b94..034f8d5 100644
--- a/jenkins/client/job/salt-models/git-mirrors.yml
+++ b/jenkins/client/job/salt-models/git-mirrors.yml
@@ -6,12 +6,6 @@
       job_template:
         git_mirror_2way_salt_model:
           name: git-mirror-2way-salt-model-{{name}}
-          param:
-            name:
-              - reclass-system
-              - slovaktelekom
-              - stacklight
-              - statens
           template:
             type: workflow-scm
             concurrent: false
@@ -21,7 +15,7 @@
               credentials: "gerrit"
               script: git-mirror-2way-pipeline.groovy
               github:
-                url: "https://github.com/Mirantis/{{name}}-salt-model"
+                url: "https://github.com/Mirantis/{{upstream_name}}-salt-model"
             trigger:
               github:
               pollscm:
@@ -44,10 +38,10 @@
                 default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}.git"
               TARGET_URL:
                 type: string
-                default: "git@github.com:Mirantis/{{name}}-salt-model.git"
+                default: "git@github.com:Mirantis/{{upstream_name}}-salt-model.git"
               CREDENTIALS_ID:
                 type: string
                 default: "gerrit"
               BRANCHES:
                 type: string
-                default: "master"
+                default: "{{branches}}"
diff --git a/jenkins/client/job/salt-models/init.yml b/jenkins/client/job/salt-models/init.yml
index 9da1a34..7e5039a 100644
--- a/jenkins/client/job/salt-models/init.yml
+++ b/jenkins/client/job/salt-models/init.yml
@@ -2,7 +2,6 @@
   - system.jenkins.client.job.salt-models.git-mirrors
   - system.jenkins.client.job.salt-models.tests
   - system.jenkins.client.job.salt-models.generate
-  - system.jenkins.client.job.salt-models.generate-auto
 parameters:
   _param:
     salt_formulas_branches: master
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
index 8837573..4b6c006 100644
--- a/jenkins/client/job/salt-models/tests.yml
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -1,23 +1,11 @@
 parameters:
   _param:
+  jenkins_pollscm_spec: "0 1 * * *"
   jenkins:
     client:
       job_template:
         test_salt_model:
           name: test-salt-model-{{name}}
-          jobs:
-            - name: mcp-baremetal-lab
-              extra_formulas: ""
-            - name: mcp-virtual-lab
-              extra_formulas: "prometheus"
-            - name: mk-ci
-              extra_formulas: ""
-            - name: qa
-              extra_formulas: ""
-            - name: stacklight
-              extra_formulas: ""
-            - name: training
-              extra_formulas: ""
           template:
             type: workflow-scm
             scm:
@@ -31,16 +19,12 @@
                 project:
                   salt-models/{{name}}:
                     branches:
-                      - master
+                      - compare_type: "REG_EXP"
+                        name: "{{branch}}"
                 event:
-                  patchset:
-                    - created:
-                        excludeDrafts: false
-                        excludeTrivialRebase: false
-                        excludeNoCodeChange: false
                   comment:
                     - addedContains:
-                        commentAddedCommentContains: '(recheck|reverify)'
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
             param:
               SALT_OPTS:
                 type: string
@@ -57,16 +41,31 @@
                 default: "gerrit"
               PARALLEL_NODE_GROUP_SIZE:
                 type: string
-                default: "3"
+                default: "2"
               # Salt master setup extra formulas
               EXTRA_FORMULAS:
                 type: string
                 default: "{{extra_formulas}}"
+              FORMULAS_SOURCE:
+                type: string
+                default: "{{formulas_src}}"
+              FORMULAS_REVISION:
+                type: string
+                default: "{{formulas_revision}}"
+              SYSTEM_GIT_URL:
+                type: string
+                default: ""
+              SYSTEM_GIT_REF:
+                type: string
+                default: ""
+              CONFIG_NODE_NAME_PATTERN:
+                type: string
+                default: "{{config_node_name}}"
+              MAX_CPU_PER_JOB:
+                type: string
+                default: "2"
         test_system_reclass:
           name: test-salt-model-{{name}}
-          jobs:
-            - name: reclass-system
-              clusters: "mcp-baremetal-lab,mcp-virtual-lab,qa,stacklight,training"
           template:
             type: workflow-scm
             scm:
@@ -75,16 +74,6 @@
               credentials: "gerrit"
               script: test-system-reclass-pipeline.groovy
             concurrent: true
-            trigger:
-              gerrit:
-                project:
-                  salt-models/{{name}}:
-                    branches:
-                      - master
-                event:
-                  comment:
-                    - addedContains:
-                        commentAddedCommentContains: '(recheck|reverify)'
             param:
               TEST_MODELS:
                 type: string
@@ -99,7 +88,7 @@
         test_salt_model_cookiecutter:
           name: test-salt-model-cookiecutter-{{cookiecutter_template}}
           jobs:
-            - cookiecutter_template: cookiecutter-template
+            - cookiecutter_template: cookiecutter-templates
           template:
             type: workflow-scm
             concurrent: true
@@ -117,7 +106,7 @@
                 event:
                   comment:
                     - addedContains:
-                        commentAddedCommentContains: '(recheck|reverify)'
+                        commentAddedCommentContains: '^(?s:Patch Set \d+:.*(test|recheck|reverify)\s*)$'
             param:
               COOKIECUTTER_TEMPLATE_URL:
                 type: string
@@ -134,3 +123,55 @@
               RECLASS_MODEL_BRANCH:
                 type: string
                 default: master
+              PARALLEL_NODE_GROUP_SIZE:
+                type: string
+                default: "1"
+              EXTRA_FORMULAS:
+                type: string
+                default: "xtrabackup docker haproxy aptly keepalived gerrit jenkins openldap maas"
+      job:
+        test-salt-model-node:
+          name: test-salt-model-node
+          discard:
+            build:
+              keep_num: 500
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: test-salt-model-node.groovy
+          param:
+            NODE_TARGET:
+              type: string
+              default: ""
+            DEFAULT_GIT_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+            DEFAULT_GIT_REF:
+              type: string
+              default: master
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            EXTRA_FORMULAS:
+              type: string
+              default: ""
+            FORMULAS_SOURCE:
+              type: string
+              default: "pkg"
+            FORMULAS_REVISION:
+              type: string
+              default: "stable"
+            SYSTEM_GIT_URL:
+              type: string
+              default: ""
+            SYSTEM_GIT_REF:
+              type: string
+              default: ""
+            MAX_CPU_PER_JOB:
+              type: string
+              default: "2"
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
index 5d58f20..d0f0a6e 100644
--- a/jenkins/client/job/test_pipelines.yml
+++ b/jenkins/client/job/test_pipelines.yml
@@ -1,50 +1,56 @@
 parameters:
   jenkins:
     client:
-      job:
-        test-mk-mk-pipelines:
-          name: test-mk-mk-pipelines
-          discard:
-            build:
-              keep_num: 25
-            artifact:
-              keep_num: 25
-          type: workflow-scm
-          concurrent: true
-          scm:
-            type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            credentials: "gerrit"
-            script: test-groovy-pipeline.groovy
-          trigger:
-            gerrit:
-              project:
-                "mk/mk-pipelines":
-                  branches:
-                    - master
-              event:
-                patchset:
-                  - created:
-                      excludeDrafts: false
-                      excludeTrivialRebase: false
-                      excludeNoCodeChange: false
-                comment:
-                  - addedContains:
-                      commentAddedCommentContains: '(recheck|reverify)'
-          param:
-            CREDENTIALS_ID:
-              type: string
-              default: "gerrit"
-            GRADLE_IMAGE:
-              type: string
-              default: "niaquinto/gradle"
-            GRADLE_CMD:
-              type: string
-              default: "check"
-            DEFAULT_GIT_URL:
+      job_template:
+        test-pipelines:
+          name: test-{{name}}
+          jobs:
+            - name: mk-mk-pipelines
+              repo: mk/mk-pipelines
+            - name: oss-jenkins-pipelines
+              repo: oss/jenkins/pipelines
+          template:
+            discard:
+              build:
+                keep_num: 25
+              artifact:
+                keep_num: 25
+            type: workflow-scm
+            concurrent: true
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: test-groovy-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  "{{repo}}":
+                    branches:
+                      - master
+                event:
+                  patchset:
+                    - created:
+                        excludeDrafts: false
+                        excludeTrivialRebase: false
+                        excludeNoCodeChange: false
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
+            param:
+              CREDENTIALS_ID:
                 type: string
-                description: "Run against alternate system reclass"
-                default: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
-            DEFAULT_GIT_REF:
+                default: "gerrit"
+              GRADLE_IMAGE:
                 type: string
-                default: master
+                default: "niaquinto/gradle"
+              GRADLE_CMD:
+                type: string
+                default: "check"
+              DEFAULT_GIT_URL:
+                  type: string
+                  description: "Run against alternate system reclass"
+                  default: "${_param:jenkins_gerrit_url}/{{repo}}"
+              DEFAULT_GIT_REF:
+                  type: string
+                  default: master
diff --git a/jenkins/client/node.yml b/jenkins/client/node.yml
new file mode 100644
index 0000000..321951a
--- /dev/null
+++ b/jenkins/client/node.yml
@@ -0,0 +1,47 @@
+parameters:
+  _param:
+    jenkins_slave_executors: 4
+  jenkins:
+    client:
+      node:
+        master:
+          node_mode: Exclusive
+          remote_home: /var/lib/jenkins
+          launcher:
+            type: master
+        slave01:
+          remote_home: /var/lib/jenkins
+          desc: ""
+          num_executors: ${_param:jenkins_slave_executors}
+          node_mode: Normal
+          ret_strategy: Always
+          labels:
+            - python
+            - test
+            - docker
+          launcher:
+             type: jnlp
+        slave02:
+          remote_home: /var/lib/jenkins
+          desc: ""
+          num_executors: ${_param:jenkins_slave_executors}
+          node_mode: Normal
+          ret_strategy: Always
+          labels:
+            - python
+            - test
+            - docker
+          launcher:
+             type: jnlp
+        slave03:
+          remote_home: /var/lib/jenkins
+          desc: ""
+          num_executors: ${_param:jenkins_slave_executors}
+          node_mode: Normal
+          ret_strategy: Always
+          labels:
+            - python
+            - test
+            - docker
+          launcher:
+             type: jnlp
diff --git a/jenkins/client/security/matrix.yml b/jenkins/client/security/matrix.yml
index b08aefd..a0ecc1e 100644
--- a/jenkins/client/security/matrix.yml
+++ b/jenkins/client/security/matrix.yml
@@ -5,9 +5,11 @@
       - ${_param:jenkins_client_user}
       - admins
     # Read only access
-    jenkins_security_matrix_read: []
+    jenkins_security_matrix_read:
+      - mirantis
     # Read + permissions to build jobs
-    jenkins_security_matrix_build: []
+    jenkins_security_matrix_build:
+      - mirantis
     # Build permissions + create/delete, whatever.
     jenkins_security_matrix_write:
       - ${_param:jenkins_client_user}
diff --git a/jenkins/slave/docker.yml b/jenkins/slave/docker.yml
index ddf997b..ea3639b 100644
--- a/jenkins/slave/docker.yml
+++ b/jenkins/slave/docker.yml
@@ -15,13 +15,4 @@
             hosts:
             - ALL
             commands:
-            - /usr/bin/docker
-  docker:
-    client:
-      network:
-        docker_gwbridge:
-          subnet: 10.20.0.0/16
-          opt:
-            com.docker.network.bridge.name: docker_gwbridge
-            com.docker.network.bridge.enable_icc: false
-            com.docker.network.bridge.enable_ip_masquerade: true
\ No newline at end of file
+            - /usr/bin/docker
\ No newline at end of file
diff --git a/keepalived/cluster/instance/openstack_baremetal_vip.yml b/keepalived/cluster/instance/openstack_baremetal_vip.yml
new file mode 100644
index 0000000..c3141b6
--- /dev/null
+++ b/keepalived/cluster/instance/openstack_baremetal_vip.yml
@@ -0,0 +1,21 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  _param:
+    keepalived_openstack_baremetal_vip_address: ${_param:cluster_baremetal_vip_address}
+    keepalived_openstack_baremetal_password: password
+    keepalived_openstack_baremetal_vip_interface: eth1
+    keepalived_openstack_baremetal_vip_virtual_router_id: 132
+    keepalived_openstack_baremetal_vip_priority: ${_param:keepalived_vip_priority}
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        openstack_baremetal_vip:
+          address: ${_param:keepalived_openstack_baremetal_vip_address}
+          password: ${_param:keepalived_openstack_baremetal_password}
+          interface: ${_param:keepalived_openstack_baremetal_vip_interface}
+          virtual_router_id: ${_param:keepalived_openstack_baremetal_vip_virtual_router_id}
+          priority: ${_param:keepalived_openstack_baremetal_vip_priority}
diff --git a/keystone/client/core.yml b/keystone/client/core.yml
new file mode 100644
index 0000000..39d28de
--- /dev/null
+++ b/keystone/client/core.yml
@@ -0,0 +1,40 @@
+parameters:
+  linux:
+    system:
+      job:
+        keystone_job_rotate:
+          command: '/usr/bin/keystone-manage fernet_rotate --keystone-user keystone --keystone-group keystone >> /var/log/key_rotation_log 2>> /var/log/key_rotation_log'
+          enabled: true
+          user: root
+          minute: 0
+  keystone:
+    client:
+      enabled: true
+      server:
+        identity:
+          admin:
+            host: ${_param:keystone_service_host}
+            port: 35357
+            token: ${_param:keystone_service_token}
+          roles:
+          - admin
+          - Member
+          project:
+            service:
+              description: "OpenStack Service tenant"
+            admin:
+              description: "OpenStack Admin tenant"
+              user:
+                admin:
+                  is_admin: true
+                  password: ${_param:keystone_admin_password}
+                  email: ${_param:admin_email}
+        admin_identity:
+          admin:
+            user: admin
+            password: ${_param:keystone_admin_password}
+            project: admin
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
+            use_keystoneauth: true
diff --git a/keystone/client/image_manager.yml b/keystone/client/image_manager.yml
new file mode 100644
index 0000000..024b0c4
--- /dev/null
+++ b/keystone/client/image_manager.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    keystone_image_manager_email: 'root@localhost'
+  keystone:
+    client:
+      enabled: true
+      server:
+        identity:
+          admin:
+            host: ${_param:keystone_service_host}
+            port: 35357
+            token: ${_param:keystone_service_token}
+          roles:
+          - image_manager
+          project:
+            admin:
+              user:
+                image_manager:
+                  is_admin: false
+                  password: ${_param:keystone_image_manager_password}
+                  email: ${_param:keystone_image_manager_email}
+                  roles:
+                  - image_manager
diff --git a/keystone/client/service/barbican.yml b/keystone/client/service/barbican.yml
new file mode 100644
index 0000000..f83e6ab
--- /dev/null
+++ b/keystone/client/service/barbican.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                barbican:
+                  is_admin: true
+                  password: ${_param:keystone_barbican_password}
+                  email: ${_param:admin_email}
+          service:
+            barbican:
+              type: key-manager
+              description: OpenStack Key-Manager Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 9311
+                public_path: '/'
+                internal_address: ${_param:barbican_service_host}
+                internal_port: 9311
+                internal_path: '/'
+                admin_address: ${_param:barbican_service_host}
+                admin_port: 9311
+                admin_path: '/'
diff --git a/keystone/client/service/congress.yml b/keystone/client/service/congress.yml
new file mode 100644
index 0000000..529d3ee
--- /dev/null
+++ b/keystone/client/service/congress.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                congress:
+                  is_admin: true
+                  password: ${_param:keystone_congress_password}
+                  email: ${_param:admin_email}
+          service:
+            congress:
+              type: policy
+              description: Congress service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 1789
+                public_path: '/'
+                internal_address: ${_param:congress_service_host}
+                internal_port: 1789
+                internal_path: '/'
+                admin_address: ${_param:congress_service_host}
+                admin_port: 1789
+                admin_path: '/'
diff --git a/keystone/client/service/ironic.yml b/keystone/client/service/ironic.yml
new file mode 100644
index 0000000..1ab9872
--- /dev/null
+++ b/keystone/client/service/ironic.yml
@@ -0,0 +1,38 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                ironic:
+                  is_admin: true
+                  password: ${_param:keystone_ironic_password}
+                  email: ${_param:admin_email}
+          service:
+            ironic:
+              type: baremetal
+              description: OpenStack Baremetal Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 6385
+                public_path: ''
+                internal_address: ${_param:ironic_service_host}
+                internal_port: 6385
+                internal_path: ''
+                admin_address: ${_param:ironic_service_host}
+                admin_port: 6385
+                admin_path: ''
+        admin_identity:
+          admin:
+            user: admin
+            password: ${_param:keystone_admin_password}
+            project: admin
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
diff --git a/keystone/client/service/keystone3.yml b/keystone/client/service/keystone3.yml
index 9dd9eef..bd0c63b 100644
--- a/keystone/client/service/keystone3.yml
+++ b/keystone/client/service/keystone3.yml
@@ -6,7 +6,7 @@
       server:
         identity:
           service:
-            keystone3:
+            keystone:
               type: identity
               description: OpenStack Identity Service v3
               endpoints:
@@ -20,4 +20,4 @@
                 internal_path: '/v3'
                 admin_address: ${_param:keystone_service_host}
                 admin_port: 35357
-                admin_path: '/v3'
+                admin_path: '/v2.0'
diff --git a/keystone/client/service/octavia.yml b/keystone/client/service/octavia.yml
new file mode 100644
index 0000000..0382345
--- /dev/null
+++ b/keystone/client/service/octavia.yml
@@ -0,0 +1,39 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                octavia:
+                  is_admin: true
+                  password: ${_param:keystone_octavia_password}
+                  email: ${_param:admin_email}
+          service:
+            octavia:
+              type: octavia
+              description: OpenStack Loadbalancing Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 9876
+                public_path: '/'
+                internal_address: ${_param:octavia_service_host}
+                internal_port: 9876
+                internal_path: '/'
+                admin_address: ${_param:octavia_service_host}
+                admin_port: 9876
+                admin_path: '/'
+        octavia_identity:
+          admin:
+            user: octavia
+            password: ${_param:keystone_octavia_password}
+            project: service
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
+            use_keystoneauth: true
diff --git a/keystone/client/service/radosgw-swift.yml b/keystone/client/service/radosgw-swift.yml
index 9c7547e..3bf9b27 100644
--- a/keystone/client/service/radosgw-swift.yml
+++ b/keystone/client/service/radosgw-swift.yml
@@ -1,6 +1,7 @@
 parameters:
   _param:
     cluster_public_protocol: https
+    radosgw_swift_cluster_port: 8081
   keystone:
     client:
       server:
@@ -20,11 +21,11 @@
                 - region: ${_param:openstack_region}
                   public_address: ${_param:cluster_public_host}
                   public_protocol: ${_param:cluster_public_protocol}
-                  public_port: 8081
+                  public_port: ${_param:radosgw_swift_cluster_port}
                   public_path: '/swift/v1' # /$(project_id)s
                   internal_address: ${_param:radosgw_service_host}
-                  internal_port: 8081
+                  internal_port: ${_param:radosgw_swift_cluster_port}
                   internal_path: '/swift/v1'
                   admin_address: ${_param:radosgw_service_host}
-                  admin_port: 8081
+                  admin_port: ${_param:radosgw_swift_cluster_port}
                   admin_path: '/swift/v1'
diff --git a/keystone/client/single.yml b/keystone/client/single.yml
index 6d7a4c6..0c70390 100644
--- a/keystone/client/single.yml
+++ b/keystone/client/single.yml
@@ -38,3 +38,12 @@
                   is_admin: true
                   password: ${_param:keystone_admin_password}
                   email: ${_param:admin_email}
+        admin_identity:
+          admin:
+            user: admin
+            password: ${_param:keystone_admin_password}
+            project: admin
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
+            use_keystoneauth: true
diff --git a/keystone/server/cluster.yml b/keystone/server/cluster.yml
index 54bf75f..9b13788 100644
--- a/keystone/server/cluster.yml
+++ b/keystone/server/cluster.yml
@@ -32,6 +32,8 @@
         expiration: 3600
         max_active_keys: 3
         location: /var/lib/keystone/fernet-keys
+      credential:
+        location: /var/lib/keystone/credential-keys
       message_queue:
         engine: rabbitmq
         members:
diff --git a/keystone/server/single.yml b/keystone/server/single.yml
index aae179f..72dc045 100644
--- a/keystone/server/single.yml
+++ b/keystone/server/single.yml
@@ -35,6 +35,8 @@
         expiration: 3600
         max_active_keys: 3
         location: /var/lib/keystone/fernet-keys
+      credential:
+        location: /var/lib/keystone/credential-keys
       message_queue:
         engine: rabbitmq
         host: ${_param:single_address}
diff --git a/keystone/server/wsgi.yml b/keystone/server/wsgi.yml
index 2c8a19d..1a949e9 100644
--- a/keystone/server/wsgi.yml
+++ b/keystone/server/wsgi.yml
@@ -15,5 +15,10 @@
           name: wsgi
           host:
             name: ${linux:network:fqdn}
+          log:
+            custom:
+              format: >-
+                %v:%p %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+
       modules:
         - wsgi
diff --git a/kubernetes/control/flask_hello.yml b/kubernetes/control/flask_hello.yml
new file mode 100644
index 0000000..f7b41e5
--- /dev/null
+++ b/kubernetes/control/flask_hello.yml
@@ -0,0 +1,26 @@
+classes:
+  - system.kubernetes.control
+parameters:
+  kubernetes:
+    control:
+      service:
+        flask-hello:
+          enabled: true
+          service: flask-hello
+          namespace: default
+          cluster: flask-hello
+          role: server
+          type: LoadBalancer
+          replicas: 1
+          kind: Deployment
+          apiVersion: extensions/v1beta1
+          ports:
+            - port: 5000
+              name: flask-hello
+          container:
+            flask-hello:
+              image: ${_param:cicd_control_address}:5000/tcpcloud/python-flask-hello
+              image_pull_policy: Always
+              ports:
+              - port: 5000
+                name: flask-hello
diff --git a/kubernetes/control/init.yml b/kubernetes/control/init.yml
new file mode 100644
index 0000000..6e5fb40
--- /dev/null
+++ b/kubernetes/control/init.yml
@@ -0,0 +1,2 @@
+classes:
+  - service.kubernetes.control.cluster
diff --git a/kubernetes/master/cluster.yml b/kubernetes/master/cluster.yml
index ab283d0..f21f003 100644
--- a/kubernetes/master/cluster.yml
+++ b/kubernetes/master/cluster.yml
@@ -4,6 +4,9 @@
 - service.haproxy.proxy.single
 - system.haproxy.proxy.listen.kubernetes.apiserver
 parameters:
+  _param:
+    kubernetes_netchecker_agent_image: quay.io/l23network/k8s-netchecker-agent:v1.0
+    kubernetes_netchecker_server_image: quay.io/l23network/k8s-netchecker-server:v1.0
   kubernetes:
     master:
       container: false
diff --git a/kubernetes/master/single.yml b/kubernetes/master/single.yml
index 5f0dfdc..cc8d8ab 100644
--- a/kubernetes/master/single.yml
+++ b/kubernetes/master/single.yml
@@ -1,8 +1,11 @@
 classes:
 - service.kubernetes.master.single
 parameters:
+  _param:
+    kubernetes_netchecker_agent_image: quay.io/l23network/k8s-netchecker-agent:v1.0
+    kubernetes_netchecker_server_image: quay.io/l23network/k8s-netchecker-server:v1.0
   kubernetes:
     master:
       container: false
       network:
-        engine: calico
\ No newline at end of file
+        engine: calico
diff --git a/kubernetes/pool/cluster.yml b/kubernetes/pool/cluster.yml
index 8295d97..0f961a3 100644
--- a/kubernetes/pool/cluster.yml
+++ b/kubernetes/pool/cluster.yml
@@ -2,6 +2,15 @@
 - service.kubernetes.pool.cluster
 - service.docker.host
 parameters:
+  _param:
+    # component docker images
+    kubernetes_calicoctl_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/ctl:latest
+    kubernetes_calico_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/node:latest
+    kubernetes_calico_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/cni:latest
+    kubernetes_hyperkube_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/hyperkube-amd64:v1.6.2-2
+    kubernetes_contrail_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-cni:v1.0.0
+    kubernetes_contrail_network_controller_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-network-controller:v1.0.0
+
   kubernetes:
     pool:
       container: false
@@ -9,3 +18,7 @@
         engine: calico
         prometheus:
           enabled: true
+  docker:
+    host:
+      options:
+        iptables: false
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
index 68e3844..00f22b8 100644
--- a/kubernetes/pool/single.yml
+++ b/kubernetes/pool/single.yml
@@ -2,8 +2,21 @@
 - service.kubernetes.pool.single
 - service.docker.host
 parameters:
+  _param:
+    # component docker images
+    kubernetes_calicoctl_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/ctl:latest
+    kubernetes_calico_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/node:latest
+    kubernetes_calico_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/cni:latest
+    kubernetes_hyperkube_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/hyperkube-amd64:v1.6.2-2
+    kubernetes_contrail_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-cni:v1.0.0
+    kubernetes_contrail_network_controller_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-network-controller:v1.0.0
+
   kubernetes:
     pool:
       container: false
       network:
-        engine: calico
\ No newline at end of file
+        engine: calico
+  docker:
+    host:
+      options:
+        iptables: false
diff --git a/linux/system/repo/docker.yml b/linux/system/repo/docker.yml
index 6eae575..c527aa8 100644
--- a/linux/system/repo/docker.yml
+++ b/linux/system/repo/docker.yml
@@ -6,4 +6,4 @@
           source: "deb https://apt.dockerproject.org/repo ubuntu-${_param:linux_system_codename} main"
           architectures: amd64
           key_id: 58118E89F3A912897C070ADBF76221572C52609D
-          key_server: hkp://p80.pool.sks-keyservers.net:80
+          key_server: keyserver.ubuntu.com
diff --git a/linux/system/repo/mcp/openstack.yml b/linux/system/repo/mcp/openstack.yml
index 249f5b2..2235b2c 100644
--- a/linux/system/repo/mcp/openstack.yml
+++ b/linux/system/repo/mcp/openstack.yml
@@ -34,7 +34,7 @@
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename}/archive-mcp${_param:openstack_version}.key"
           pin:
-          - pin: 'release a=${_param:openstack_version}-uptades'
+          - pin: 'release a=${_param:openstack_version}-updates'
             priority: 1100
             package: '*'
         mirantis_openstack_holdback:
diff --git a/linux/system/repo/mcp/salt.yml b/linux/system/repo/mcp/salt/init.yml
similarity index 100%
rename from linux/system/repo/mcp/salt.yml
rename to linux/system/repo/mcp/salt/init.yml
diff --git a/linux/system/repo/mcp/salt/unstable.yml b/linux/system/repo/mcp/salt/unstable.yml
new file mode 100644
index 0000000..b0b992e
--- /dev/null
+++ b/linux/system/repo/mcp/salt/unstable.yml
@@ -0,0 +1,17 @@
+classes:
+- linux.system.repo.mcp.salt
+parameters:
+  _param:
+    linux_system_repo_mcp_salt_unstable_version: testing
+  linux:
+    system:
+      repo:
+        mcp_salt_unstable:
+          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_unstable_version} salt"
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_salt_unstable_version}'
+            priority: 90
+            package: '*'
diff --git a/linux/system/repo/saltstack/rhel.yml b/linux/system/repo/saltstack/rhel.yml
new file mode 100644
index 0000000..b0f28f3
--- /dev/null
+++ b/linux/system/repo/saltstack/rhel.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    salt_version: 2016.3
+    rhel_releasever: 7
+    rhel_basearch: x86_64
+  linux:
+    system:
+      repo:
+        salt:
+          humanname: "SaltStack repo for RHEL/CentOS ${rhel_repo_releasever}"
+          source: "https://repo.saltstack.com/yum/redhat/${_param:rhel_releasever}/${_param:rhel_basearch}/${_param:salt_version}"
+          gpgkey: "https://repo.saltstack.com/yum/redhat/${_param:rhel_releasever}/${_param:rhel_basearch}/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
+          gpgcheck: true
+          architectures: amd64
diff --git a/linux/system/repo/saltstack/rhel6.yml b/linux/system/repo/saltstack/rhel6.yml
new file mode 100644
index 0000000..098410c
--- /dev/null
+++ b/linux/system/repo/saltstack/rhel6.yml
@@ -0,0 +1,6 @@
+classes:
+- system.linux.system.repo.saltstack.rhel
+parameters:
+  _param:
+    salt_version: 2016.3
+    rhel_releasever: 6
diff --git a/linux/system/repo/saltstack/rhel7.yml b/linux/system/repo/saltstack/rhel7.yml
new file mode 100644
index 0000000..a216398
--- /dev/null
+++ b/linux/system/repo/saltstack/rhel7.yml
@@ -0,0 +1,6 @@
+classes:
+- system.linux.system.repo.saltstack.rhel
+parameters:
+  _param:
+    salt_version: 2016.3
+    rhel_releasever: 7
diff --git a/linux/system/repo_local/ceph.yml b/linux/system/repo_local/ceph.yml
new file mode 100644
index 0000000..d28c0b6
--- /dev/null
+++ b/linux/system/repo_local/ceph.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        ceph:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} ceph-mirantis"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/docker.yml b/linux/system/repo_local/docker.yml
new file mode 100644
index 0000000..cd3b514
--- /dev/null
+++ b/linux/system/repo_local/docker.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        docker:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} docker"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/elasticsearch.yml b/linux/system/repo_local/elasticsearch.yml
new file mode 100644
index 0000000..8dc78aa
--- /dev/null
+++ b/linux/system/repo_local/elasticsearch.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        elasticsearch:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/${_param:linux_system_codename}/ ${_param:apt_mk_version} elastic"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/grafana.yml b/linux/system/repo_local/grafana.yml
index a94d1be..f2d9ad5 100644
--- a/linux/system/repo_local/grafana.yml
+++ b/linux/system/repo_local/grafana.yml
@@ -4,6 +4,6 @@
       repo:
         grafana:
           refresh_db: ${_param:linux_repo_refresh_db}
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ nightly grafana"
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} grafana"
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/influxdb.yml b/linux/system/repo_local/influxdb.yml
index 5e30d83..1c641bb 100644
--- a/linux/system/repo_local/influxdb.yml
+++ b/linux/system/repo_local/influxdb.yml
@@ -4,6 +4,6 @@
       repo:
         influxdb:
           refresh_db: ${_param:linux_repo_refresh_db}
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ nightly influxdb"
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} influxdb"
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/mcp/extra.yml b/linux/system/repo_local/mcp/extra.yml
index b7ae91a..c55ecfc 100644
--- a/linux/system/repo_local/mcp/extra.yml
+++ b/linux/system/repo_local/mcp/extra.yml
@@ -10,3 +10,8 @@
           source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_extra_version} extra"
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_extra_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/salt.yml b/linux/system/repo_local/mcp/salt/init.yml
similarity index 100%
rename from linux/system/repo_local/mcp/salt.yml
rename to linux/system/repo_local/mcp/salt/init.yml
diff --git a/linux/system/repo_local/mcp/salt/unstable.yml b/linux/system/repo_local/mcp/salt/unstable.yml
new file mode 100644
index 0000000..4d2f9a7
--- /dev/null
+++ b/linux/system/repo_local/mcp/salt/unstable.yml
@@ -0,0 +1,17 @@
+classes:
+- linux.system.repo_local.mcp.salt
+parameters:
+  _param:
+    linux_system_repo_mcp_salt_unstable_version: testing
+  linux:
+    system:
+      repo:
+        mcp_salt_unstable:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:linux_system_repo_mcp_salt_unstable_version} salt"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release a=${_param:linux_system_repo_mcp_salt_unstable_version}'
+            priority: 90
+            package: '*'
diff --git a/linux/system/repo_local/sensu.yml b/linux/system/repo_local/sensu.yml
index df418fd..67750cf 100644
--- a/linux/system/repo_local/sensu.yml
+++ b/linux/system/repo_local/sensu.yml
@@ -4,6 +4,6 @@
       repo:
         sensu:
           refresh_db: ${_param:linux_repo_refresh_db}
-          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ nightly sensu"
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:apt_mk_version} sensu"
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/maas/region/single.yml b/maas/region/single.yml
index 569d475..d3227ca 100644
--- a/maas/region/single.yml
+++ b/maas/region/single.yml
@@ -2,15 +2,42 @@
   - service.maas.region.single
   - service.maas.region.vendor_repo
 parameters:
+  _param:
+    maas_admin_username: mirantis
   maas:
+    cluster:
+      enabled: true
+      role: master
+      region:
+        host: ${_param:single_address}
+        port: 5242
     region:
+      salt_master_ip: ${_param:infra_config_deploy_address}
       theme: mirantis
       enable_iframe: True
       bind:
-        host: ${_param:cluster_vip_address}
+        host: ${_param:single_address}
+      admin:
+        username: ${_param:maas_admin_username}
+        password: ${_param:maas_admin_password}
+        email:  email@example.com
       database:
         engine: postgresql
-        host: 10.0.175.10
+        host: localhost
         name: maasdb
-        password: password
-        username: maas
\ No newline at end of file
+        password: ${_param:maas_db_password}
+        username: maas
+      maas_config:
+        commissioning_distro_series: xenial
+        default_distro_series: xenial
+        default_osystem: 'ubuntu'
+        default_storage_layout: lvm
+        disk_erase_with_secure_erase: true
+        dnssec_validation: 'no'
+        enable_third_party_drivers: true
+        maas_name: mas01
+        active_discovery_interval: '600'
+        ntp_external_only: true
+        upstream_dns: ${_param:dns_server01}
+        enable_http_proxy: false
+        default_min_hwe_kernel: ''
diff --git a/model_manager/server/delivery.yml b/model_manager/server/delivery.yml
new file mode 100644
index 0000000..c7c5dce
--- /dev/null
+++ b/model_manager/server/delivery.yml
@@ -0,0 +1,6 @@
+classes:
+- service.model_manager.server.delivery
+- service.redis.server.local
+- system.nginx.server.single
+- system.nginx.server.site.model_manager
+
diff --git a/model_manager/server/integration.yml b/model_manager/server/integration.yml
new file mode 100644
index 0000000..0d723a8
--- /dev/null
+++ b/model_manager/server/integration.yml
@@ -0,0 +1,6 @@
+classes:
+- service.model_manager.server.integration
+- service.redis.server.local
+- system.nginx.server.single
+- system.nginx.server.site.model_manager
+
diff --git a/model_manager/server/single.yml b/model_manager/server/single.yml
new file mode 100644
index 0000000..2bc7f0d
--- /dev/null
+++ b/model_manager/server/single.yml
@@ -0,0 +1,4 @@
+classes:
+- system.model_manager.server.integration
+- system.model_manager.server.delivery
+
diff --git a/mysql/client/database/ironic.yml b/mysql/client/database/ironic.yml
new file mode 100644
index 0000000..e142e64
--- /dev/null
+++ b/mysql/client/database/ironic.yml
@@ -0,0 +1,18 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            ironic:
+              encoding: utf8
+              users:
+              - name: ironic
+                password: ${_param:mysql_ironic_password}
+                host: '%'
+                rights: all
+              - name: ironic
+                password: ${_param:mysql_ironic_password}
+                host: ${_param:cluster_local_address}
+                rights: all
+
diff --git a/mysql/client/database/octavia.yml b/mysql/client/database/octavia.yml
new file mode 100644
index 0000000..6c31ece
--- /dev/null
+++ b/mysql/client/database/octavia.yml
@@ -0,0 +1,17 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            octavia:
+              encoding: utf8
+              users:
+              - name: octavia
+                password: ${_param:mysql_octavia_password}
+                host: '%'
+                rights: all
+              - name: octavia
+                password: ${_param:mysql_octavia_password}
+                host: ${_param:single_address}
+                rights: all
diff --git a/neutron/client/service/ironic.yml b/neutron/client/service/ironic.yml
new file mode 100644
index 0000000..17d3e6f
--- /dev/null
+++ b/neutron/client/service/ironic.yml
@@ -0,0 +1,23 @@
+classes:
+- service.neutron.client
+parameters:
+  neutron:
+    client:
+      server:
+        admin_identity:
+          endpoint_type: internalURL
+          network:
+            baremetal-flat-network:
+              tenant: admin
+              shared: True
+              admin_state_up: True
+              provider_network_type: flat
+              provider_physical_network: physnet3
+              port_security_enabled: false
+              subnet:
+                baremetal-subnet:
+                  cidr: ${_param:openstack_baremeta_neutron_subnet_cidr}
+                  allocation_pools:
+                    - start: ${_param:openstack_baremeta_neutron_subnet_allocation_start}
+                      end: ${_param:openstack_baremeta_neutron_subnet_allocation_end}
+                  enable_dhcp: true
diff --git a/neutron/client/service/octavia.yml b/neutron/client/service/octavia.yml
new file mode 100644
index 0000000..90a4a4e
--- /dev/null
+++ b/neutron/client/service/octavia.yml
@@ -0,0 +1,92 @@
+classes:
+- service.neutron.client
+parameters:
+  _param:
+    octavia_hm_bind_ip: '192.168.0.12'
+  neutron:
+    client:
+      server:
+        octavia_identity:
+          endpoint_type: internalURL
+          network:
+            lb-mgmt-net:
+              tenant: service
+              admin_state_up: True
+              subnet:
+                lb-mgmt-subnet:
+                  cidr: 192.168.0.0/24
+                  allocation_pools:
+                    - start: 192.168.0.2
+                      end: 192.168.0.200
+              port:
+                octavia-health-manager-listen-port:
+                  fixed_ips:
+                    - ip_address: ${_param:octavia_hm_bind_ip}
+                  device_owner: Octavia:health-mgr
+                  binding_host_id: ${_param:openstack_gateway_node01_hostname}
+                  security_groups:
+                    - lb-health-mgr-sec-grp
+          security_group:
+            lb-mgmt-sec-grp:
+              tenant: service
+              rules:
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv4'
+                  'protocol': 'icmp'
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv4'
+                  'protocol': 'TCP'
+                  'port_range_min': 22
+                  'port_range_max': 22
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv4'
+                  'protocol': 'TCP'
+                  'port_range_min': 9443
+                  'port_range_max': 9443
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv6'
+                  'protocol': 'icmpv6'
+                  'remote_ip_prefix': '::/0'
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv6'
+                  'protocol': 'TCP'
+                  'port_range_min': 22
+                  'port_range_max': 22
+                  'remote_ip_prefix': '::/0'
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv6'
+                  'protocol': 'TCP'
+                  'port_range_min': 9443
+                  'port_range_max': 9443
+                  'remote_ip_prefix': '::/0'
+            lb-health-mgr-sec-grp:
+              tenant: service
+              rules:
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv4'
+                  'protocol': 'UDP'
+                  'port_range_min': 5555
+                  'port_range_max': 5555
+                - 'direction': 'ingress'
+                  'ethertype': 'IPv6'
+                  'protocol': 'UDP'
+                  'port_range_min': 5555
+                  'port_range_max': 5555
+                  'remote_ip_prefix': '::/0'
+
+  salt:
+    minion:
+      mine:
+        module:
+          list_octavia_networks:
+            mine_function: neutronng.list_networks
+            name: 'lb-mgmt-net'
+            profile: 'octavia_identity'
+          list_octavia_mgmt_security_groups:
+            mine_function: neutronng.list_security_groups
+            name: 'lb-mgmt-sec-grp'
+            profile: 'octavia_identity'
+          list_octavia_hm_ports:
+            mine_function: neutronng.list_ports
+            name: 'octavia-health-manager-listen-port'
+            profile: 'octavia_identity'
diff --git a/neutron/client/service/public.yml b/neutron/client/service/public.yml
new file mode 100644
index 0000000..c3e2ca3
--- /dev/null
+++ b/neutron/client/service/public.yml
@@ -0,0 +1,25 @@
+classes:
+- service.neutron.client
+parameters:
+  neutron:
+    client:
+      server:
+        admin_identity:
+          endpoint_type: internalURL
+          network:
+            public:
+              tenant: admin
+              shared: False
+              router_external: True
+              default: True
+              admin_state_up: True
+              provider_network_type: flat
+              provider_physical_network: physnet1
+              subnet:
+                public-subnet:
+                  cidr: ${_param:openstack_public_neutron_subnet_cidr}
+                  allocation_pools:
+                    - start: ${_param:openstack_public_neutron_subnet_allocation_start}
+                      end: ${_param:openstack_public_neutron_subnet_allocation_end}
+                  gateway: ${_param:openstack_public_neutron_subnet_gateway}
+                  enable_dhcp: False
diff --git a/neutron/compute/cluster.yml b/neutron/compute/cluster.yml
index 9897006..d6674f0 100644
--- a/neutron/compute/cluster.yml
+++ b/neutron/compute/cluster.yml
@@ -1,9 +1,12 @@
 classes:
 - service.neutron.compute.single
 parameters:
+  _param:
+    neutron_enable_qos: False
   neutron:
     compute:
       dvr: ${_param:neutron_compute_dvr}
+      qos: ${_param:neutron_enable_qos}
       agent_mode: ${_param:neutron_compute_agent_mode}
       external_access: ${_param:neutron_compute_external_access}
       backend:
@@ -12,4 +15,4 @@
         members:
           - host: ${_param:openstack_message_queue_node01_address}
           - host: ${_param:openstack_message_queue_node02_address}
-          - host: ${_param:openstack_message_queue_node03_address}
\ No newline at end of file
+          - host: ${_param:openstack_message_queue_node03_address}
diff --git a/neutron/control/opencontrail/single.yml b/neutron/control/opencontrail/single.yml
new file mode 100644
index 0000000..0c2841b
--- /dev/null
+++ b/neutron/control/opencontrail/single.yml
@@ -0,0 +1,39 @@
+classes:
+- service.neutron.control.single
+parameters:
+  mysql:
+    server:
+      database:
+        neutron:
+          encoding: utf8
+          users:
+          - name: neutron
+            password: ${_param:mysql_neutron_password}
+            host: '%'
+            rights: all
+          - name: neutron
+            password: ${_param:mysql_neutron_password}
+            host: ${_param:cluster_local_address}
+            rights: all
+  neutron:
+    server:
+      dns_domain: ${_param:cluster_domain}
+      database:
+        host: ${_param:openstack_database_address}
+      identity:
+        region: ${_param:openstack_region}
+        host: ${_param:openstack_control_address}
+      message_queue:
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+      compute:
+        host: ${_param:openstack_control_address}
+        region: ${_param:openstack_region}
+      backend:
+        engine: contrail
+        host: ${_param:opencontrail_control_address}
+        port: 8082
+        user: admin
+        password: ${_param:keystone_admin_password}
+        tenant: admin
+        token: ${_param:keystone_service_token}
\ No newline at end of file
diff --git a/neutron/control/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index dc8e0c5..0587342 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -9,12 +9,14 @@
     neutron_global_physnet_mtu: 1500
     neutron_external_mtu: 1500
     neutron_tenant_network_types: "flat,vxlan"
+    neutron_enable_qos: False
   neutron:
     server:
       plugin: ml2
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
       l3_ha: ${_param:neutron_l3_ha}
       dvr: ${_param:neutron_control_dvr}
+      qos: ${_param:neutron_enable_qos}
       backend:
         engine: ml2
         tenant_network_types: "${_param:neutron_tenant_network_types}"
diff --git a/neutron/control/openvswitch/octavia.yml b/neutron/control/openvswitch/octavia.yml
new file mode 100644
index 0000000..9f6345b
--- /dev/null
+++ b/neutron/control/openvswitch/octavia.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    octavia_api_bind_address: ${_param:cluster_local_address}
+  neutron:
+    server:
+      lbaas:
+        enabled: true
+        providers:
+          octavia:
+            engine: octavia
+            driver_path: 'neutron_lbaas.drivers.octavia.driver.OctaviaDriver'
+            base_url: http://${_param:octavia_api_bind_address}:9876
diff --git a/neutron/control/openvswitch/single.yml b/neutron/control/openvswitch/single.yml
index 6601db1..91db484 100644
--- a/neutron/control/openvswitch/single.yml
+++ b/neutron/control/openvswitch/single.yml
@@ -7,12 +7,14 @@
     neutron_global_physnet_mtu: 1500
     neutron_external_mtu: 1500
     neutron_tenant_network_types: "flat,vxlan"
+    neutron_enable_qos: False
   neutron:
     server:
       plugin: ml2
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
       l3_ha: ${_param:neutron_l3_ha}
       dvr: ${_param:neutron_control_dvr}
+      qos: ${_param:neutron_enable_qos}
       backend:
         engine: ml2
         tenant_network_types: "${_param:neutron_tenant_network_types}"
diff --git a/neutron/gateway/cluster.yml b/neutron/gateway/cluster.yml
index 99699f7..a4f37b1 100644
--- a/neutron/gateway/cluster.yml
+++ b/neutron/gateway/cluster.yml
@@ -1,9 +1,12 @@
 classes:
 - service.neutron.gateway.single
 parameters:
+  _param:
+    neutron_enable_qos: False
   neutron:
     gateway:
       dvr: ${_param:neutron_gateway_dvr}
+      qos: ${_param:neutron_enable_qos}
       agent_mode: ${_param:neutron_gateway_agent_mode}
       backend:
         tenant_network_types: ${_param:neutron_tenant_network_types}"
diff --git a/neutron/gateway/ironic.yml b/neutron/gateway/ironic.yml
new file mode 100644
index 0000000..c01dbce
--- /dev/null
+++ b/neutron/gateway/ironic.yml
@@ -0,0 +1,4 @@
+parameters:
+  neutron:
+    gateway:
+      ironic_enabled: true
diff --git a/nginx/server/proxy/model_manager_web.yml b/nginx/server/proxy/model_manager_web.yml
new file mode 100644
index 0000000..a71fe41
--- /dev/null
+++ b/nginx/server/proxy/model_manager_web.yml
@@ -0,0 +1,37 @@
+parameters:
+  _param:
+    nginx_proxy_model_manager_web_host: ${_param:cluster_public_host}
+    nginx_proxy_model_manager_web_proxy_host: ${_param:cluster_vip_address}
+    nginx_proxy_model_manager_web_buffer_size:
+      number: 4
+      size: 256
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_model_manager_web:
+          enabled: true
+          type: nginx_proxy
+          name: model_manager_web
+          proxy:
+            host: ${_param:nginx_proxy_model_manager_web_proxy_host}
+            port: 80
+            size: 10000m
+            timeout: 43200
+            protocol: http
+            websocket: true
+            request_buffer: false
+            buffer:
+              ${_param:nginx_proxy_model_manager_web_buffer_size}
+          host:
+            name: ${_param:nginx_proxy_model_manager_web_host}
+            port: 443
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
+        nginx_ssl_redirect_model_manager_web:
+          enabled: true
+          type: nginx_redirect
+          name: model_manager_web_redirect
+          host:
+            name: ${_param:nginx_proxy_model_manager_web_host}
+            port: 80
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index 5c4a1fa..2b84993 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -85,12 +85,24 @@
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9696
           ssl: ${_param:nginx_proxy_ssl}
-        nginx_proxy_openstack_api_heat_cfn:
+        nginx_proxy_openstack_api_heat_cloudwatch:
           enabled: true
           type: nginx_proxy
           name: openstack_api_heat_cfn
           proxy:
             host: ${_param:heat_service_host}
+            port: 8003
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8003
+          ssl: ${_param:nginx_proxy_ssl}
+        nginx_proxy_openstack_api_heat_cfn:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_heat_cloudwatch
+          proxy:
+            host: ${_param:heat_service_host}
             port: 8000
             protocol: http
           host:
diff --git a/nginx/server/site/ironic.yml b/nginx/server/site/ironic.yml
new file mode 100644
index 0000000..d03311c
--- /dev/null
+++ b/nginx/server/site/ironic.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_ironic:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_ironic
+          check: false
+          proxy:
+            host: ${_param:ironic_service_host}
+            port: 6385
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 6385
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/site/model_manager.yml b/nginx/server/site/model_manager.yml
new file mode 100644
index 0000000..150d785
--- /dev/null
+++ b/nginx/server/site/model_manager.yml
@@ -0,0 +1,13 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        model_manager_dashboard:
+          enabled: true
+          type: model_manager
+          name: dashboard
+          host:
+            name: ${_param:single_address}
+            port: 80
+
diff --git a/nova/client/service/octavia.yml b/nova/client/service/octavia.yml
new file mode 100644
index 0000000..e0b6557
--- /dev/null
+++ b/nova/client/service/octavia.yml
@@ -0,0 +1,21 @@
+classes:
+- service.nova.client
+parameters:
+  _param:
+    octavia_ssh_key_path: "/etc/octavia/.ssh/octavia_ssh_key.pub"
+  nova:
+    client:
+      server:
+        admin_identity:
+          endpoint_type: internalURL
+          flavor:
+            m1.amphora:
+              flavor_id: ${_param:amp_flavor_id}
+              ram: 1024
+              disk: 2
+              vcpus: 1
+        octavia_identity:
+          endpoint_type: internalURL
+          keypair:
+            octavia_ssh_key:
+              pub_file: ${_param:octavia_ssh_key_path}
diff --git a/nova/compute_ironic/cluster.yml b/nova/compute_ironic/cluster.yml
new file mode 100644
index 0000000..2526373
--- /dev/null
+++ b/nova/compute_ironic/cluster.yml
@@ -0,0 +1,53 @@
+classes:
+- service.nova.compute.ironic
+parameters:
+  nova:
+    compute:
+      version: ${_param:nova_version}
+      enabled: true
+      virtualization: 'baremetal'
+      pkgs:
+        - nova-compute-ironic
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name: nova
+        user: nova
+        password: ${_param:mysql_nova_password}
+      identity:
+        engine: keystone
+        region: ${_param:openstack_region}
+        host: ${_param:cluster_vip_address}
+        port: 35357
+        user: nova
+        password: ${_param:keystone_nova_password}
+        tenant: service
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+        members:
+          - host: ${_param:openstack_message_queue_node01_address}
+          - host: ${_param:openstack_message_queue_node02_address}
+          - host: ${_param:openstack_message_queue_node03_address}
+      network:
+        engine: neutron
+        region: ${_param:openstack_region}
+        host: ${_param:neutron_service_host}
+        port: 9696
+        user: neutron
+        tenant: service
+        password: ${_param:keystone_neutron_password}
+      ironic:
+        region: ${_param:openstack_region}
+        host: ${_param:ironic_service_host}
+        port: 6385
+        user: ironic
+        tenant: service
+        password: ${_param:keystone_ironic_password}
+        auth_type: password
+        project_domain_name: Default
+        user_domain_name: Default
diff --git a/nova/compute_ironic/single.yml b/nova/compute_ironic/single.yml
new file mode 100644
index 0000000..5c19023
--- /dev/null
+++ b/nova/compute_ironic/single.yml
@@ -0,0 +1,47 @@
+classes:
+- service.nova.compute.ironic
+parameters:
+  nova:
+    compute:
+      version: ${_param:nova_version}
+      enabled: true
+      virtualization: 'baremetal'
+      pkgs:
+        - nova-compute-ironic
+      database:
+        engine: mysql
+        host: ${_param:control_address}
+        port: 3306
+        name: nova
+        user: nova
+        password: ${_param:mysql_nova_password}
+      identity:
+        engine: keystone
+        region: ${_param:openstack_region}
+        host: ${_param:control_address}
+        port: 35357
+        user: nova
+        password: ${_param:keystone_nova_password}
+        tenant: service
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+        host: ${_param:control_address}
+      network:
+        engine: neutron
+        region: ${_param:openstack_region}
+        host: ${_param:control_address}
+        port: 9696
+        user: neutron
+        tenant: service
+        password: ${_param:keystone_neutron_password}
+      ironic:
+        region: ${_param:openstack_region}
+        host: ${_param:control_address}
+        port: 6385
+        user: ironic
+        tenant: service
+        password: ${_param:keystone_ironic_password}
diff --git a/octavia/api/cluster.yml b/octavia/api/cluster.yml
new file mode 100644
index 0000000..75a4c19
--- /dev/null
+++ b/octavia/api/cluster.yml
@@ -0,0 +1,9 @@
+classes:
+- service.octavia.api.cluster
+- system.haproxy.proxy.listen.openstack.octavia
+parameters:
+  octavia:
+    api:
+      enabled: true
+      bind:
+        address: ${_param:cluster_local_address}
diff --git a/octavia/api/single.yml b/octavia/api/single.yml
new file mode 100644
index 0000000..685c4b4
--- /dev/null
+++ b/octavia/api/single.yml
@@ -0,0 +1,8 @@
+classes:
+- service.octavia.api.single
+parameters:
+  octavia:
+    api:
+      enabled: true
+      bind:
+        address: ${_param:single_address}
diff --git a/octavia/manager/single.yml b/octavia/manager/single.yml
new file mode 100644
index 0000000..a7bc7a9
--- /dev/null
+++ b/octavia/manager/single.yml
@@ -0,0 +1,7 @@
+classes:
+- service.octavia.manager.single
+parameters:
+  octavia:
+    manager:
+      enabled: true
+      version: ${_param:octavia_version}
diff --git a/opencontrail/client/resource/k8s_api.yml b/opencontrail/client/resource/k8s_api.yml
new file mode 100644
index 0000000..3c6102b
--- /dev/null
+++ b/opencontrail/client/resource/k8s_api.yml
@@ -0,0 +1,9 @@
+parameters:
+  opencontrail:
+    client:
+      linklocal_service:
+        k8s_api:
+          lls_ip: ${_param:kubernetes_internal_api_address}
+          lls_port: 6443
+          ipf_addresses: ${_param:kubernetes_control_address}
+          ipf_port: 443
diff --git a/opencontrail/client/resource/openstack_metadata.yml b/opencontrail/client/resource/openstack_metadata.yml
new file mode 100644
index 0000000..3ed8f3b
--- /dev/null
+++ b/opencontrail/client/resource/openstack_metadata.yml
@@ -0,0 +1,9 @@
+parameters:
+  opencontrail:
+    client:
+      linklocal_service:
+         metadata:
+           lls_ip: 169.254.169.254
+           lls_port: 80
+           ipf_addresses: ${_param:openstack_control_address}
+           ipf_port: 8775
diff --git a/opencontrail/compute/cluster.yml b/opencontrail/compute/cluster.yml
index 375e600..5e92709 100644
--- a/opencontrail/compute/cluster.yml
+++ b/opencontrail/compute/cluster.yml
@@ -1,3 +1,5 @@
+classes:
+  - service.opencontrail.compute.cluster
 applications:
 - opencontrail
 parameters:
@@ -20,6 +22,8 @@
       version: ${_param:opencontrail_version}
       disable_flow_collection: true
       enabled: True
+      bind:
+        address: ${_param:single_address}
       discovery:
         host: ${_param:opencontrail_control_address}
       interface:
diff --git a/opencontrail/compute/cluster4_0.yml b/opencontrail/compute/cluster4_0.yml
new file mode 100644
index 0000000..68f8007
--- /dev/null
+++ b/opencontrail/compute/cluster4_0.yml
@@ -0,0 +1,51 @@
+applications:
+- opencontrail
+parameters:
+  _param:
+    opencontrail_compute_iface_mask: 24
+    opencontrail_version: 4.0
+    linux_repo_contrail_component: oc40
+  opencontrail:
+    common:
+      version: ${_param:opencontrail_version}
+      identity:
+        engine: keystone
+        host: ${_param:openstack_control_address}
+        port: 35357
+        token: ${_param:keystone_service_token}
+        password: ${_param:keystone_admin_password}
+      network:
+        engine: neutron
+        host: ${_param:openstack_control_address}
+        port: 9696
+    compute:
+      version: ${_param:opencontrail_version}
+      disable_flow_collection: true
+      enabled: True
+      bind:
+        address: ${_param:single_address}
+      config:
+        members:
+        - host: ${_param:opencontrail_control_node01_address}
+        - host: ${_param:opencontrail_control_node02_address}
+        - host: ${_param:opencontrail_control_node03_address}
+      collector:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+      control:
+        members:
+        - host: ${_param:opencontrail_control_node01_address}
+        - host: ${_param:opencontrail_control_node02_address}
+        - host: ${_param:opencontrail_control_node03_address}
+      interface:
+        address: ${_param:opencontrail_compute_address}
+        dev: ${_param:opencontrail_compute_iface}
+        gateway: ${_param:opencontrail_compute_gateway}
+        mask: ${_param:opencontrail_compute_iface_mask}
+        dns: ${_param:opencontrail_compute_dns}
+        mtu: 9000
+  nova:
+    compute:
+      networking: contrail
diff --git a/opencontrail/compute/dpdk.yml b/opencontrail/compute/dpdk.yml
index b0d8e0c..049fae0 100644
--- a/opencontrail/compute/dpdk.yml
+++ b/opencontrail/compute/dpdk.yml
@@ -17,7 +17,7 @@
     system:
       package:
         liburcu4:
-          version: 0.9.1-3+tcp1
+          version: 0.9.1-3
     network:
       interface:
         vhost0:
diff --git a/opencontrail/compute/single4_0.yml b/opencontrail/compute/single4_0.yml
new file mode 100644
index 0000000..bd77c05
--- /dev/null
+++ b/opencontrail/compute/single4_0.yml
@@ -0,0 +1,44 @@
+applications:
+- opencontrail
+parameters:
+  _param:
+    opencontrail_compute_iface_mask: 24
+    opencontrail_version: 4.0
+    linux_repo_contrail_component: oc40
+  opencontrail:
+    common:
+      version: ${_param:opencontrail_version}
+      identity:
+        engine: keystone
+        host: ${_param:control_address}
+        port: 35357
+        token: ${_param:keystone_service_token}
+        password: ${_param:keystone_admin_password}
+      network:
+        engine: neutron
+        host: ${_param:control_address}
+        port: 9696
+    compute:
+      version: ${_param:opencontrail_version}
+      enabled: True
+      config:
+        members:
+        - host: ${_param:opencontrail_control_node01_address}
+        - host: ${_param:opencontrail_control_node02_address}
+        - host: ${_param:opencontrail_control_node03_address}
+      collector:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+      interface:
+        address: ${_param:opencontrail_compute_address}
+        dev: ${_param:opencontrail_compute_iface}
+        gateway: ${_param:opencontrail_compute_gateway}
+        mask: ${_param:opencontrail_compute_iface_mask}
+        dns: ${_param:opencontrail_compute_dns}
+        mtu: 9000
+  nova:
+    compute:
+      networking: contrail
+
diff --git a/opencontrail/control/analytics4_0.yml b/opencontrail/control/analytics4_0.yml
new file mode 100644
index 0000000..a122830
--- /dev/null
+++ b/opencontrail/control/analytics4_0.yml
@@ -0,0 +1,64 @@
+classes:
+- service.haproxy.proxy.single
+- service.keepalived.cluster.single
+- service.opencontrail.control.analytics
+- system.haproxy.proxy.listen.opencontrail.analytics
+parameters:
+  _param:
+    opencontrail_version: 4.0
+    linux_repo_contrail_component: oc40
+    opencontrail_message_queue_node01_address: ${_param:openstack_message_queue_node01_address}
+    opencontrail_message_queue_node02_address: ${_param:openstack_message_queue_node02_address}
+    opencontrail_message_queue_node03_address: ${_param:openstack_message_queue_node03_address}
+    opencontrail_message_queue_address: ${_param:openstack_message_queue_address}
+# Temprorary fix for MOS9 packages to pin old version of kafka
+  linux:
+    system:
+      package:
+        librdkafka1:
+          version: 0.9.0-0contrail0
+          hold: true
+        python-kafka:
+          version: 1.0.1-0contrail1
+          hold: true
+      kernel:
+        modules:
+        - nf_conntrack_ipv4
+  opencontrail:
+    common:
+      identity:
+        host: ${_param:openstack_control_address}
+      network:
+        host: ${_param:openstack_control_address}
+    collector:
+      discovery:
+        host: None
+      database:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+      analytics:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+      message_queue:
+        host: ${_param:opencontrail_message_queue_address}
+        members:
+        - host: ${_param:opencontrail_message_queue_node01_address}
+        - host: ${_param:opencontrail_message_queue_node02_address}
+        - host: ${_param:opencontrail_message_queue_node03_address}
+      config:
+        members:
+        - host: ${_param:opencontrail_control_node01_address}
+        - host: ${_param:opencontrail_control_node02_address}
+        - host: ${_param:opencontrail_control_node03_address}
+    database:
+      discovery:
+        host: None
+      analytics:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
diff --git a/opencontrail/control/cluster4_0.yml b/opencontrail/control/cluster4_0.yml
new file mode 100644
index 0000000..cd12eef
--- /dev/null
+++ b/opencontrail/control/cluster4_0.yml
@@ -0,0 +1,114 @@
+classes:
+- service.haproxy.proxy.single
+- service.keepalived.cluster.single
+- service.opencontrail.control.cluster
+- system.haproxy.proxy.listen.opencontrail.control
+- system.haproxy.proxy.listen.opencontrail.analytics
+parameters:
+  _param:
+    opencontrail_version: 4.0
+    linux_repo_contrail_component: oc40
+    opencontrail_message_queue_node01_address: ${_param:openstack_control_node01_address}
+    opencontrail_message_queue_node02_address: ${_param:openstack_control_node02_address}
+    opencontrail_message_queue_node03_address: ${_param:openstack_control_node03_address}
+    opencontrail_message_queue_address: ${_param:openstack_control_address}
+# Temprorary fix for MOS9 packages to pin old version of kafka
+  linux:
+    system:
+      package:
+        librdkafka1:
+          version: 0.9.0-0contrail0
+        python-kafka:
+          version: 1.0.1-0contrail1
+      kernel:
+        modules:
+        - nf_conntrack_ipv4
+  opencontrail:
+    common:
+      identity:
+        host: ${_param:openstack_control_address}
+      network:
+        host: ${_param:openstack_control_address}
+    collector:
+      discovery:
+        host: None
+      database:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+      analytics:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+      message_queue:
+        host: ${_param:opencontrail_message_queue_address}
+        members:
+        - host: ${_param:opencontrail_message_queue_node01_address}
+        - host: ${_param:opencontrail_message_queue_node02_address}
+        - host: ${_param:opencontrail_message_queue_node03_address}
+      config:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+    database:
+      discovery:
+        host: None
+      analytics:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+    config:
+      network:
+        host: ${_param:openstack_control_address}
+      bind:
+        address: ${_param:cluster_local_address}
+      discovery:
+        host: None
+      api:
+        host: ${_param:opencontrail_control_address}
+      analytics:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+      message_queue:
+        members:
+        - host: ${_param:opencontrail_message_queue_node01_address}
+        - host: ${_param:opencontrail_message_queue_node02_address}
+        - host: ${_param:opencontrail_message_queue_node03_address}
+      identity:
+        region: ${_param:openstack_region}
+        host: ${_param:openstack_control_address}
+    control:
+      analytics:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+      message_queue:
+        members:
+        - host: ${_param:opencontrail_message_queue_node01_address}
+        - host: ${_param:opencontrail_message_queue_node02_address}
+        - host: ${_param:opencontrail_message_queue_node03_address}
+      database:
+        members:
+        - host: ${_param:cluster_node01_address}
+        - host: ${_param:cluster_node02_address}
+        - host: ${_param:cluster_node03_address}
+      discovery:
+        host: None
+    web:
+      analytics:
+        host: ${_param:opencontrail_control_address}
+      cache:
+        host: 127.0.0.1
+      identity:
+        host: ${_param:openstack_control_address}
+      database:
+        port: 9042
+      network:
+        host: ${_param:openstack_control_address}
diff --git a/opencontrail/control/control4_0.yml b/opencontrail/control/control4_0.yml
new file mode 100644
index 0000000..32b51e5
--- /dev/null
+++ b/opencontrail/control/control4_0.yml
@@ -0,0 +1,79 @@
+classes:
+- service.keepalived.cluster.single
+- service.opencontrail.control.control
+- system.haproxy.proxy.listen.opencontrail.control
+parameters:
+  _param:
+    opencontrail_version: 4.0
+    linux_repo_contrail_component: oc40
+    opencontrail_message_queue_node01_address: ${_param:openstack_message_queue_node01_address}
+    opencontrail_message_queue_node02_address: ${_param:openstack_message_queue_node02_address}
+    opencontrail_message_queue_node03_address: ${_param:openstack_message_queue_node03_address}
+  opencontrail:
+    common:
+      identity:
+        host: ${_param:openstack_control_address}
+      network:
+        host: ${_param:openstack_control_address}
+    config:
+      network:
+        host: ${_param:openstack_control_address}
+      bind:
+        address: ${_param:cluster_local_address}
+      discovery:
+        host: None
+      api:
+        host: ${_param:opencontrail_control_address}
+      analytics:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+      message_queue:
+        members:
+        - host: ${_param:opencontrail_message_queue_node01_address}
+        - host: ${_param:opencontrail_message_queue_node02_address}
+        - host: ${_param:opencontrail_message_queue_node03_address}
+      identity:
+        region: ${_param:openstack_region}
+        host: ${_param:openstack_control_address}
+    control:
+      analytics:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+      message_queue:
+        members:
+        - host: ${_param:opencontrail_message_queue_node01_address}
+        - host: ${_param:opencontrail_message_queue_node02_address}
+        - host: ${_param:opencontrail_message_queue_node03_address}
+      database:
+        members:
+        - host: ${_param:opencontrail_control_node01_address}
+        - host: ${_param:opencontrail_control_node02_address}
+        - host: ${_param:opencontrail_control_node03_address}
+      discovery:
+        host: None
+    web:
+      analytics:
+        host: ${_param:opencontrail_analytics_address}
+      cache:
+        host: 127.0.0.1
+      identity:
+        host: ${_param:openstack_control_address}
+      database:
+        port: 9042
+      network:
+        host: ${_param:openstack_control_address}
+    database:
+      analytics:
+        members:
+        - host: ${_param:opencontrail_analytics_node01_address}
+        - host: ${_param:opencontrail_analytics_node02_address}
+        - host: ${_param:opencontrail_analytics_node03_address}
+  linux:
+    system:
+      kernel:
+        modules:
+        - nf_conntrack_ipv4
diff --git a/opencontrail/control/single4_0.yml b/opencontrail/control/single4_0.yml
new file mode 100644
index 0000000..365ed20
--- /dev/null
+++ b/opencontrail/control/single4_0.yml
@@ -0,0 +1,140 @@
+classes:
+- service.opencontrail.control.single
+- service.haproxy.proxy.single
+parameters:
+  _param:
+    opencontrail_version: 4.0
+    linux_repo_contrail_component: oc40
+# Temprorary fix for MOS9 packages to pin old version of kafka
+  linux:
+    system:
+      package:
+        librdkafka1:
+          version: 0.9.0-0contrail0
+        python-kafka:
+          version: 1.0.1-0contrail1
+        contrail-api-cli:
+          version: latest
+      kernel:
+        modules:
+        - nf_conntrack_ipv4
+  haproxy:
+    proxy:
+      listen:
+        contrail_api:
+          type: contrail-api
+          service_name: contrail
+          check: false
+          binds:
+          - address: ${_param:single_address}
+            port: 8082
+          servers:
+          - name: ctl01
+            host: ${_param:single_address}
+            port: 9100
+            params: check inter 2000 rise 2 fall 3
+        contrail_discovery:
+          type: contrail-api
+          service_name: contrail
+          binds:
+          - address: ${_param:single_address}
+            port: 5998
+          servers:
+          - name: ctl01
+            host: ${_param:single_address}
+            port: 9110
+            params: check inter 2000 rise 2 fall 3
+        contrail_config_stats:
+          type: contrail-config
+          service_name: contrail
+          format: listen
+          binds:
+          - address: '*'
+            port: 5937
+          user: haproxy
+          password: ${_param:opencontrail_stats_password}
+        contrail_openstack_stats:
+          type: contrail-config
+          service_name: contrail
+          format: listen
+          binds:
+          - address: '*'
+            port: 5936
+          user: haproxy
+          password: ${_param:opencontrail_stats_password}
+        contrail_collector_stats:
+          type: contrail-config
+          service_name: contrail
+          format: listen
+          binds:
+          - address: '*'
+            port: 5938
+          user: haproxy
+          password: ${_param:opencontrail_stats_password}
+  opencontrail:
+    common:
+      identity:
+        host: ${_param:openstack_control_address}
+      network:
+        host: ${_param:openstack_control_address}
+    config:
+      network:
+        host: ${_param:openstack_control_address}
+      bind:
+        address: ${_param:single_address}
+      discovery:
+        host: None
+      api:
+        host: ${_param:single_address}
+      analytics:
+        members:
+        - host: ${_param:single_address}
+      message_queue:
+        members:
+        - host: ${_param:openstack_control_address}
+      identity:
+        region: ${_param:openstack_region}
+        host: ${_param:openstack_control_address}
+    control:
+      analytics:
+        members:
+        - host: ${_param:single_address}
+      message_queue:
+        members:
+        - host: ${_param:openstack_control_address}
+      database:
+        members:
+        - host: ${_param:single_address}
+      discovery:
+        host: None
+    web:
+      analytics:
+        host: ${_param:single_address}
+      cache:
+        host: 127.0.0.1
+      identity:
+        host: ${_param:openstack_control_address}
+      database:
+        port: 9042
+      network:
+        host: ${_param:openstack_control_address}
+    database:
+      analytics:
+        members:
+        - host: ${_param:single_address}
+    collector:
+      discovery:
+        host: None
+      database:
+        members:
+        - host: ${_param:single_address}
+      analytics:
+        members:
+        - host: ${_param:single_address}
+      message_queue:
+        host: ${_param:openstack_control_address}
+        members:
+        - host: ${_param:openstack_control_address}
+      config:
+        members:
+        - host: ${_param:single_address}
diff --git a/openldap/client/groups/mirantis.yml b/openldap/client/groups/mirantis.yml
new file mode 100644
index 0000000..003eba0
--- /dev/null
+++ b/openldap/client/groups/mirantis.yml
@@ -0,0 +1,19 @@
+classes:
+  - system.openldap.client.groups
+parameters:
+  openldap:
+    client:
+      entry:
+        groups:
+          entry:
+            mirantis:
+              attr:
+                description: Mirantis Administrators
+                gidNumber: 20002
+                memberUid:
+                  - akomarek
+                  - fpytloun
+                  - jpavlik
+              classes:
+                - posixGroup
+                - top
diff --git a/openldap/client/people/mirantis.yml b/openldap/client/people/mirantis.yml
new file mode 100644
index 0000000..3673783
--- /dev/null
+++ b/openldap/client/people/mirantis.yml
@@ -0,0 +1,64 @@
+#
+# This class defines Mirantis users. To crypt user password, use this command:
+#   echo "{CRYPT}$(mkpasswd --rounds 500000 -m sha-512 --salt `head -c 40 /dev/random | base64 | sed -e 's/+/./g' |  cut -b 10-25` 'password')"
+#
+classes:
+  - system.openldap.client.people
+  - system.openldap.client.groups.mirantis
+parameters:
+  openldap:
+    client:
+      entry:
+        people:
+          entry:
+            jpavlik:
+              attr:
+                uid: jpavlik
+                userPassword: '{CRYPT}$6$rounds=500000$sSdm1peCUw78UsaP$l55AuiLv3j.0avLg.k8B2jM.xBczuf9CMursuS4QUm0ZEUgIZkmToPU1PiaTJB37zGgv2ubAYbr2oME7.TX8G1'
+                uidNumber: 20051
+                gidNumber: ${openldap:client:entry:groups:entry:mirantis:attr:gidNumber}
+                gecos: "Jakub Pavlik"
+                givenName: Jakub
+                sn: Pavlik
+                homeDirectory: /home/jpavlik
+                loginShell: /bin/bash
+                mail: jpavlik@mirantis.com
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
+            akomarek:
+              attr:
+                uid: akomarek
+                userPassword: '{CRYPT}$6$rounds=500000$sSdm1peCUw78UsaP$l55AuiLv3j.0avLg.k8B2jM.xBczuf9CMursuS4QUm0ZEUgIZkmToPU1PiaTJB37zGgv2ubAYbr2oME7.TX8G1'
+                uidNumber: 20052
+                gidNumber: ${openldap:client:entry:groups:entry:mirantis:attr:gidNumber}
+                gecos: "Ales Komarek"
+                givenName: Ales
+                sn: Komarek
+                homeDirectory: /home/akomarek
+                loginShell: /bin/bash
+                mail: akomarek@mirantis.com
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
+            fpytloun:
+              attr:
+                uid: fpytloun
+                userPassword: '{CRYPT}$6$rounds=500000$T84bEG26yetA1384$.Zh2GZu6pjWdS3hA2WVFzMnWe/hD15IeNIiGM.clq4XpKkwzbNeLbIs7F21vMsxzdOs0R8P8fvjepVHyrPrjQ.'
+                uidNumber: 20053
+                gidNumber: ${openldap:client:entry:groups:entry:mirantis:attr:gidNumber}
+                gecos: "Filip Pytloun"
+                givenName: Filip
+                sn: Pytloun
+                homeDirectory: /home/fpytloun
+                loginShell: /bin/bash
+                mail: fpytloun@mirantis.com
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
diff --git a/openssh/client/lab.yml b/openssh/client/lab.yml
index 26ac7f4..7a65847 100644
--- a/openssh/client/lab.yml
+++ b/openssh/client/lab.yml
@@ -38,13 +38,6 @@
           enabled: true
           user: ${linux:system:user:root}
           private_key: ${private_keys:lab}
-          known_hosts:
-          - ${known_hosts:git.tcpcloud.eu}
-  known_hosts:
-    git.tcpcloud.eu:
-      name: git.tcpcloud.eu
-      type: ecdsa
-      fingerprint: fc:77:72:6c:65:c0:e1:26:0d:68:b8:a8:4a:56:38:22
   private_keys:
     lab:
       type: rsa
diff --git a/openssh/server/team/ccp_team.yml b/openssh/server/team/k8s_apps_team.yml
similarity index 66%
rename from openssh/server/team/ccp_team.yml
rename to openssh/server/team/k8s_apps_team.yml
index 3355dc1..e57ed1a 100644
--- a/openssh/server/team/ccp_team.yml
+++ b/openssh/server/team/k8s_apps_team.yml
@@ -2,20 +2,6 @@
   linux:
     system:
       user:
-        kproskurin:
-          enabled: true
-          name: kproskurin
-          sudo: true
-          full_name: Kirill Proskurin
-          home: /home/kproskurin
-          email: kproskurin@mirantis.com
-        sreshetnyak:
-          enabled: true
-          name: sreshetnyak
-          sudo: true
-          full_name: Sergey Reshetnyak
-          home: /home/sreshetnyak
-          email: sreshetnyak@mirantis.com
         apavlov:
           enabled: true
           name: apavlov
@@ -23,13 +9,20 @@
           full_name: Andrey Pavlov
           home: /home/apavlov
           email: apavlov@mirantis.com
-        sryabin:
+        mzhnichkov:
           enabled: true
-          name: sryabin
+          name: mzhnichkov
           sudo: true
-          full_name: Sergey Ryabin
-          home: /home/sryabin
-          email: sryabin@mirantis.com
+          full_name: Michail Zhnichkov
+          home: /home/mzhnichkov
+          email: mzhnichkov@mirantis.com
+        prazumovsky:
+          enabled: true
+          name: prazumovsky
+          sudo: true
+          full_name: Peter Razumovsky
+          home: /home/prazumovsky
+          email: prazumovsky@mirantis.com
         slukjanov:
           enabled: true
           name: slukjanov
@@ -37,6 +30,13 @@
           full_name: Sergey Lukjanov
           home: /home/slukjanov
           email: slukjanov@mirantis.com
+        sreshetnyak:
+          enabled: true
+          name: sreshetnyak
+          sudo: true
+          full_name: Sergey Reshetnyak
+          home: /home/sreshetnyak
+          email: sreshetnyak@mirantis.com
         ytaraday:
           enabled: true
           name: ytaraday
@@ -48,46 +48,46 @@
     server:
       enabled: true
       user:
-        kproskurin:
-          enabled: true
-          public_keys:
-          - ${public_keys:kproskurin}
-          user: ${linux:system:user:kproskurin}
-        sreshetnyak:
-          enabled: true
-          public_keys:
-          - ${public_keys:sreshetnyak}
-          user: ${linux:system:user:sreshetnyak}
         apavlov:
           enabled: true
           public_keys:
           - ${public_keys:apavlov}
           user: ${linux:system:user:apavlov}
-        sryabin:
+        mzhnichkov:
           enabled: true
           public_keys:
-          - ${public_keys:sryabin}
-          user: ${linux:system:user:sryabin}
+          - ${public_keys:mzhnichkov}
+          user: ${linux:system:user:mzhnichkov}
+        prazumovsky:
+          enabled: true
+          public_keys:
+          - ${public_keys:prazumovsky}
+          user: ${linux:system:user:prazumovsky}
         slukjanov:
           enabled: true
           public_keys:
           - ${public_keys:slukjanov}
           user: ${linux:system:user:slukjanov}
+        sreshetnyak:
+          enabled: true
+          public_keys:
+          - ${public_keys:sreshetnyak}
+          user: ${linux:system:user:sreshetnyak}
         ytaraday:
           enabled: true
           public_keys:
           - ${public_keys:ytaraday}
           user: ${linux:system:user:ytaraday}
   public_keys:
-    kproskurin:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBvuPnwVjS5AuxOp4Bd3zRFhE1IB7g5R8LMwfCpqokolV0pHw1QGbCFprBcahvR0daGla/lB0buUu1sCLmFm0QH/m3VD9PkY8VE/4XW58yCtA5/ANYqLchWaNxaaaQG8Sg3gxtcMwLUQ92HFejZT9c0jgQDRc8pTHHuPj/HuV1I2Cw2a/DHZtrMbMT27aAglrPFiMty+P1Gd5mdHAXK8sfK+LSZ9/PZ2IbW0fCGL3tE8rTwL7FG5rN7eeaX56lWwO3oQMu184Wi1vL/ukIt2sdRi6qvKAYfeELPzffo8GOhesQAq+BXzjpIo2HUT2gSkZid0YzX7lRLPWhAi1sdq3V oloremo@iHAL9000-2.local
-    sreshetnyak:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbc8cUMy2Stjq4qS8TaVGvTIUGetpgTcLCiW3NnG5Yqe+s+nlQnIL3ezvgSKHin4/PYHl8vV9FnmLdPLk+4eefoek1px8soW/B+Ri0KN6aQUy1ztcecMxcxRH9g4VLZWTbazqGsADwRCQVPXmyIQVQN5wMKd0IzXUp5c03dWv/I1PE7QPdKySrdhjjyo+1Npx/tQjtJaSnGCaUJrXfHXBxiiENzmHuY+se14nWV9RyYN3zRWsa8Yt1n2hWNNiKNfT89h6yFwZAxdsS+jGhzbGTLcWyAqq3sfvvgm0yeL5FEm0AKaOMv7AuM5LqjPkQE4zzCGA0j19EQlAjsVcvKHGH sreshetniak@workstation
     apavlov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC13FvtJl6OdwdiaLFYfJO5WaA7YUMi2/DJJECWtrjJPObGPeAQ1Z8zxQWanwZVhDO7E5oR7n/LmuKHaJkRIFyQEZY3mHS3k4yybg0Vqu2FcGWQO4P3R16v6qDLvuvu9S4sUkYF3k8oYDzwN/Vc+o7a4AkL5U5rjB3vbLWVdGg8G61jFjdekXbJdFCb0liPpcQrUe1yZmjE2E4ERPOZLCVADPiVzXJhtbKigbn/nwdk4D0g+eq3NW0AwJfkyCu6mt1xXfk6gmhUrBPh1ostWv6mSpD9bXvxIKv/QnIM4SUJ/RhJH0uhWtpH4GeXvnPXHs0bxfyq1GtQt5bD3gqCHruz apavlov@Andreys-MacBook-Pro.local
-    sryabin:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5KZguajyeerULef0PxEZGOvY2yzaFd+Ob9sdM1v57RZBOyu8EdfNwso1OuLRwrZP6o6V8OBJ95O1AKE0ay5PQzu3VlbZgQfVTazc7ngKOqvIZP7JYlxM58cHcU+Hu1fvtdDYbc0cOzIP1Cu+AA4ZRiqa9YxMbI8i8bKR+MdgX+yKErXiEeM6wMmg8MEyGFFLxNmeOY78pS4xxlFsyd78JkS+TCAStULIahffPDcJI02Kt1Af9lGRyM3fKoFlNx0/lsPncvTGz/trgjAae1Q6f1CrH2saXNtFSwi58Qs6sP4A9lxMTtkGhbUMhkInYg5w+9QnZcGYfBNqXvhA6qbrH
+    prazumovsky:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMGi+I02wfKwHqKoTahRJg3TWX9SaYjKBRKndmVfz4J9kptuQEsVbJGiBIxOKV4unFvBSgVDVgZ4rUwwkL2nMrdATAWiBeVcgaNTt4kVBxD21wAeFWi0kTgrJ403jqOqH/WIKA6lnGUCmdRxp3phcjHRlgw/ZOnFu6AuZqtO1Luxg/9PawOFcoCjWWDolp/ICSHBhGZuDWThvTSgVQTd10oMP55LMjuxSOdvM1ZjWczyxegKD7lt7j+FjQXHzGUyqcCH/NlXl4VHdjaNG2muP0lY+QRiRMye3qftu15qgRxqQtL1QksBspDP2TvVVTwE7c0m7VtKaQtnmlsJGUx/7H prazumovsky@shprotby-box
+    mzhnichkov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDW54LczyIFu1cKKDiKTcc3CQpY1sosDez7nLlOCdhyn096rl5q4GbjcX5WtMvlArKKjw5cRoBGMlLdJuQ+5PGfxnlK0GOaa924AyQSNINUyvEshV4D1OvEScN/lM0TNQZ3tkIw4YbST1g5JoSkq0MRv/qlzdv8Jg0sV4phZcx410uVQ0oVhfQgrGuq6pjf1fQpvo00cfGUyZRzF9JsxVGHdkXPgYB+W479Smha9GE2wkpiQscnnFyAcs50auLEt9E6/Tw+4fSK1dTgbD0MCSopI+E9WgVaCAxcTaEKaIB32gbgG3jRziC711GDdF4567hM1xDspPc3LeGSsTa4eAYN
     slukjanov:
       key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOV5dNsXJ6aJMml7JSd4cJ54qYhOya18QNEdb7NJ88yo
+    sreshetnyak:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbc8cUMy2Stjq4qS8TaVGvTIUGetpgTcLCiW3NnG5Yqe+s+nlQnIL3ezvgSKHin4/PYHl8vV9FnmLdPLk+4eefoek1px8soW/B+Ri0KN6aQUy1ztcecMxcxRH9g4VLZWTbazqGsADwRCQVPXmyIQVQN5wMKd0IzXUp5c03dWv/I1PE7QPdKySrdhjjyo+1Npx/tQjtJaSnGCaUJrXfHXBxiiENzmHuY+se14nWV9RyYN3zRWsa8Yt1n2hWNNiKNfT89h6yFwZAxdsS+jGhzbGTLcWyAqq3sfvvgm0yeL5FEm0AKaOMv7AuM5LqjPkQE4zzCGA0j19EQlAjsVcvKHGH sreshetniak@workstation
     ytaraday:
       key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDtcRlAQg3baU14eBh8THRv+1T5sHCGAIeFaReEB/KRT
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index 266bd15..aab98c7 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -19,6 +19,7 @@
 - system.openssh.server.team.members.mikhailkraynov
 - system.openssh.server.team.members.nadezhdakabanova
 - system.openssh.server.team.members.renesoto
+- system.openssh.server.team.members.rsafonov
 - system.openssh.server.team.members.scottmachtmes
 - system.openssh.server.team.members.zahedkhurasani
 parameters:
diff --git a/openssh/server/team/mcp_ci.yml b/openssh/server/team/mcp_ci.yml
index cd931a6..4bf0a5c 100644
--- a/openssh/server/team/mcp_ci.yml
+++ b/openssh/server/team/mcp_ci.yml
@@ -23,6 +23,13 @@
           full_name: Dmytro Kaiharodtsev
           home: /home/dkaiharodsev
           email: dkaiharodsev@mirantis.com
+        sotpuschennikov:
+          enabled: true
+          name: sotpuschennikov
+          sudo: true
+          full_name: Sergey Otpuschennikov
+          home: /home/sotpuschennikov
+          email: sotpuschennikov@mirantis.com
   openssh:
     server:
       enabled: true
@@ -42,6 +49,11 @@
           public_keys:
           - ${public_keys:dkaiharodsev}
           user: ${linux:system:user:dkaiharodsev}
+        sotpuschennikov:
+          enabled: true
+          public_keys:
+          - ${public_keys:sotpuschennikov}
+          user: ${linux:system:user:sotpuschennikov}
   public_keys:
     rkamaldinov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCzeIFxatNuXWuaTomcGDTMlpqiF6KlK47BSO5yIpfWHTL7o0OFsQArB4UeZ9AC7JHQg1bpxzscJxz8Xj3tA1f8yOCrepR8LbWh7L6a1hMhSCJPK9QLUHPCLV4PW0ghq46Um8ekxMbEqGM/rrKP+GeYxNFUxJMHCkKbZAsV+BV8amuJHQkYt29GP/hgYyZEoWKErqoQ/uGQ0qWEMVQsnus6M3p3c/v1J4JtbbrmRBjyrPx/Tjinw6K2sgocgBZT7vVb4PYwbONi1IAclkPJIyrSNEavZ4MbK93ZXNQCV7rkUbKmHT71Qle34/ks9zyERJ3RgB+pWgQqCjtmJeV51V1 rkamaldinov@mirantis.com
@@ -49,3 +61,5 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPKldN0BL6C/pmjkKyaSUw9OTUQAumWLCgNPyLVGZIuYPyFs9GqvKgHVm0QChm1OLhnQuA1wxGW5piBtqaDCTyLbKb/ANR3nhO1rqX5LTwZS2W2I0ImP47HUpnxqsBl15/y9hY2JDHZ7qrd7zNqCD+uCkf9l9qA9BmN1aMSKm07fqaaUfhnl3AocxsPX4X4eHfzy7hPJdzrHEcHbGoLLEd8ahJLkHKieWF1lAI++fIhETPF41+ZbH7MBBG4qw/UhhYAgLP3YAEWwvm/J3DtRqGkpSvH2U21hmAlgJHwxtoCD9Q1jKpH5+BDTvqJIXu0K7Gcl00xbeNYyHrwTVsldFX dburmistrov@mirantis.com
     dkaiharodsev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSz9eH08GDUOSEDReJAIdjDCoYaoTwg1SSzYNwPRO/evJBeqYwRvZmxzITKq+1qy4jXnpa3ZpuBdaUebqKri2VtvMGmBrWtP8Ojbg3kNPjKOfvrW4cCyJE0yrnW03TULnRgrnf4/WXLK0dnHxL39AmlVjQTVS4pbx73XjyPoVjJbk4PXq37F5cLyyLj4aeWmCcPWn7MLsEC4RUkDwHy3DsDNdgKOlUSHmmOfVy9GBwVbXwVyYbq732Qm0Qqf/2zlJi84LgXOH2irv5HRTMDQ2Wey5Amcl7VpK8OMvtN4R8Sb7c3mgsmM/b/h+gefl0Y/vQfsSSi8GCPhmBoNT4FBgZ dkaiharodsev@dkaiharodsev-pc
+    sotpuschennikov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO/nNs4MF5ZOCooLxF+zrxVmuJa9URzAqIQG5eZkhWvSAnrYREN15BN6dlcixA+Ro4YsHY6iSHzsaanr8onNu89yZdCkHIqLZ8+DcBefpoVXcsLZzeXwNNqr9sUjHEJCTesI5dJcEe/222LjwzAdTW1Xv/o3mgVAwt+4XsQ2IPAlxl3LfJOlCQdC/0sL5FMFX6LwMonLBss3B/J45atXgPL1Dx9WKTP0QrJHaX+vh+Xj2PK9yXcB2hJhFP0IULmUqGkYgDw/mh2DiHSiCQUPGZDo49MIw4WqEwqpQKcJGjD0Ihy2pjzwI9ZUzCNWe+bUcqDdl/9SH4YsNbfaK4Te6H pers@sotpuschennikov
diff --git a/openssh/server/team/members/akomarek.yml b/openssh/server/team/members/akomarek.yml
new file mode 100644
index 0000000..7fe33fb
--- /dev/null
+++ b/openssh/server/team/members/akomarek.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        newt:
+          enabled: true
+          name: newt
+          sudo: true
+          full_name: Ales Komarek
+          home: /home/newt
+          email: mail@newt.cz
+  openssh:
+    server:
+      enabled: true
+      user:
+        newt:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
+          user: ${linux:system:user:newt}
\ No newline at end of file
diff --git a/openssh/server/team/members/ashestakov.yml b/openssh/server/team/members/ashestakov.yml
new file mode 100644
index 0000000..c3eae16
--- /dev/null
+++ b/openssh/server/team/members/ashestakov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        ashestakov:
+          enabled: true
+          name: ashestakov
+          sudo: true
+          full_name: Andrey Shestakov
+          home: /home/ashestakov
+          email: ashestakov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ashestakov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClIwlkr2nH8tCa2VnDgYpsVccJ4pX44mEdjt4oYqSdvEzXKaLhkC2vRzZ/DJo+1GjHC1cy6oPq26bo186MZ2/6PBh2gyVR5rRWyOFoNocAUaaEnBxu8TtNewIzrZ9k+telbmzz/PcoXkELLsHjrTPPxGlpI6qmk3WL/vJlXumvlZlv/FUbI8RlMxTuOK3TF5AQBGd3+1UkF+qFcAFGAAVFO0Td69MMQcsIhLCzJ68d7YM60+3z37At0x/URNlRwgf5Wt8NLPUQwo1dCDCK4GSZtqAHzj7IKVyk77twiN0SLQR12eTqUkyEjm6zR6QpZ6mpIbAjRVVFV5W55WTZXpIz
+          user: ${linux:system:user:ashestakov}
diff --git a/openssh/server/team/members/atengler.yml b/openssh/server/team/members/atengler.yml
new file mode 100644
index 0000000..cf06e02
--- /dev/null
+++ b/openssh/server/team/members/atengler.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        tux:
+          enabled: true
+          name: tux
+          sudo: true
+          full_name: Adam Tengler
+          home: /home/tux
+          email: atengler@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        tux:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXEN5qmte4oMYFCMZtuNzWiu5M32Dp0OsfR1pSz5gMMQF1Sw3xEDXEATEWhyvJTuVtFQasWVcMCYzEPev8H54UK97dLlxHxEDD9PQYY2O+xu/Rq+p/jryJ/T3mO7LDjUUXtHkUnsDZ51G+sFAWktE+FifwrEDmAEnRucLqOzVhehelG73S3uqfxVsPTsW2CcVIZICKtvdODbgAVyCf1LRR0LJv4fXqcyebCbzIrk4NWJhc474TH88niC7PH5VfxSfXZdKoi3yKVMgqdGSUxGhkx3D5CwCR9K+kUnP0rE5GNIqoCiS8iNbWl6POfMPSxH/ckqZN1h8El6SEoPJzVNp9 tux@tux-workbook
+          user: ${linux:system:user:tux}
\ No newline at end of file
diff --git a/openssh/server/team/members/dcech.yml b/openssh/server/team/members/dcech.yml
new file mode 100644
index 0000000..4e6dedf
--- /dev/null
+++ b/openssh/server/team/members/dcech.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        dcech:
+          enabled: true
+          name: dcech
+          sudo: true
+          full_name: Daniel Cech
+          home: /home/dcech
+          email: dcech@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        dcech:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8A26XMLUnXkxv4e/vByD4W4PQ0ZdgGZz5Tg6G/fQKuSa+9zRucG6IlOchJPikwrDyTrojHTGAClHPuyr2bPIRrjFy4oUTZNdjiDptV99Zv/kHRStYzPyZ4KabnFLJVKNtyKKagk6Z3wpzEjFjRHWJK7A5bIzHfd7Amx/frdLKRo9YZjGbLnZRw6mWGqZYyp2/5a/5rKqH1BhMQggDGkAwFGWYQByZzk2F81nDnkt3CY3bi24gX90w4mgFjP8B0m0QCEhcGqpfOKsQTnIyBCtztEHBiUplzBN+RHS4dDOIEs9SWrXLiMFakWu1Vr6bUa7v5xGaNN8XAWjd3xdsy4hvJjJHU5HPaMY9MGH+N6W0UUZxIF0MuxDNP03MDM1uA5mRWTdwffARaDySYaEUrUEYJmzFAtk700Jv/Aav7QixLoIeKU9SAKYvVb7XNlMWgiswQdRPoiMpXPXPw+bMhjpimHJa4n0KFGAUO/cRD1dpJKybqxDe2ip57JzpFkm5PxuNht5qmEreKcS5dWQqm0fDE9wv8cCUMnWQv36f0IDeVpftmeDREatqXSeUjES7NFQOgIQW5C5Pl+8ZHTXw46c/uh89gUILJT2tS/mOXaU4mELox1Qv8vc/laoGAec+TGD0flf75LfiuLOK6JOYX0QVW13ko1wc3CyJzHOi1sFEAw== daniel.cech@tcpcloud.eu
+          user: ${linux:system:user:dcech}
\ No newline at end of file
diff --git a/openssh/server/team/members/dszeluga.yml b/openssh/server/team/members/dszeluga.yml
index 72c7db4..2eb2b53 100644
--- a/openssh/server/team/members/dszeluga.yml
+++ b/openssh/server/team/members/dszeluga.yml
@@ -1,9 +1,10 @@
+##Disabled user
 parameters:
   linux:
     system:
       user:
         dszeluga:
-          enabled: true
+          enabled: false
           name: dszeluga
           sudo: true
           full_name: Damian Szeluga
diff --git a/openssh/server/team/members/fpytloun.yml b/openssh/server/team/members/fpytloun.yml
new file mode 100644
index 0000000..8cdfcec
--- /dev/null
+++ b/openssh/server/team/members/fpytloun.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        filip:
+          enabled: true
+          name: filip
+          sudo: true
+          full_name: Filip Pytloun
+          home: /home/filip
+          email: filip@pytloun.cz
+  openssh:
+    server:
+      enabled: true
+      user:
+        filip:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCcuHTjJ3CoWdkmvtag07bIWeyAMqFLAN+QApat7TXUcDYmm/neK4Asg3m/UicofZnB80cI4tjnB84Z8WazLHMxVTLwHbEqTVbXVeKebiZ5yn0yo4ndRzmppUfSvs0xcMysBwu+hYAnIDXTedctbciMSYKbuQ+b9XZ4mFZ/2RHG4QBA/dPUxJdCwvkBu7AOV+6zaRSR99UETr5nxICQUGVJBTy6VkCsch4mK3/K2SrujODUhytcROg+6ejV/aZHWH9xIFRBLfhmSFeOC6oneBWo4QBQ2tTZgb7Go744JpkhkoMfWQnR2s6cCgUN60BJ6j5snqmbv9/2CmgbI4UprC+E6lL04K/Jbgjv+fi3KqnCIpRiQzahmjSeeYdPducWme3BVDceUSb5EzF/RjSDi4yHcTWJS0TcPf195p42O1G6tLw5zfmIu2+PWUq1L4pLualboUbaDtwqg0WaLWKONi9tJkOS1OMz4hxqEbWBAtFNJLHC5K+OXcV8Yt6C7iB2dEZ4c26MAi1pdMqhFjxYiCGYKZ4lyV9xo8tWcs5fiUIi2PKyLQ9SMRQbhXIcb9ENby2D/ijh5AVpbBew8iaUQQKg83Yo0z2PwTWyNFuXECAl667XaTNZEMVUjo5yU/OtktVZiH6ZfvEFwj+7OpLBiZ3sFgp/7EHcGXa0FL6BcXuwfQ== filip@pytloun.cz
+          user: ${linux:system:user:filip}
\ No newline at end of file
diff --git a/openssh/server/team/members/jbroulik.yml b/openssh/server/team/members/jbroulik.yml
new file mode 100644
index 0000000..d7cfcff
--- /dev/null
+++ b/openssh/server/team/members/jbroulik.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        jbroulik:
+          enabled: true
+          name: jbroulik
+          sudo: true
+          full_name: Jiri Broulik
+          home: /home/jbroulik
+          email: jbroulik@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        jbroulik:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCBPHunnzTMg2I88ZIaiQ5eJYJRq/hQcB5UtDZTC7hO0ce+oEpftcLQiQ69xKbOPb5xiK6VMJd6a53gZykabMTov6y+nECMr4B1i6tgK1NPCU/sGhvsUKeiRo7ZVMScRPuJuTGRLjR6Ac3pRrwrWpmoRvJtLnbrvjEYlt9V7ui/VFkl7uiPQc3AjNiSkgBekDGtrqZktjUstEosucjfriF/PVtlZqha7d3rHLpK1KBzzaSMNMxCgBitEtqjgHLtcR1H/KgPQpYAwkokmvAGH8/fqcd+tpmp6hiH3k2Haf8EjVBTcw71fbmqC0rpL8/r74jyYAmkfPG8LISb/T9gPcV jiri@jiri-Mirantis
+          user: ${linux:system:user:jbroulik}
\ No newline at end of file
diff --git a/openssh/server/team/members/jcach.yml b/openssh/server/team/members/jcach.yml
new file mode 100644
index 0000000..8ab2a81
--- /dev/null
+++ b/openssh/server/team/members/jcach.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        jcach:
+          enabled: true
+          name: jcach
+          sudo: true
+          full_name: Jan Cach
+          home: /home/jcach
+          email: jcach@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        jcach:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCwAqWUvMAPTh4euvGwhLU3GjlAHVzKvlclKdg1VqmWAZI1Nd+GjKhop5kS3hMk+HCg4bgfE5nAEsp3mF78c+XXDZot1T1Sxsd0SfatkMycXgeK4l1U6QtouNR//7wEv4gPA5la7T5ktgwk7hfjnc9Jl84yS8xA1d5gsgOhQw4wHYQquyOcOA5rN8ylh7P+tEfJSx4PWlfsu9M8IZU9WvftPxNbmUfVF+GuwPcNgbAtMi3Oz2Zg9+6W4gnwfJiufXU+onDa2e5tL8ZsGqEbTQXIx13sg0ilMIT6WpbTtbCe81oZYokAMGY2hlbubhtHgGSQhBI4/qgE7/CsD4TNtuOFTAy8Y6lzvoDsTzR51ApUFHHQEjlsf7AfQFJF3Mb5/fy84K0PF2chz4XwXeO9ZbUGOvY9P349gqyJRIV29V6b8m2aqKYIHO/CRxYk52H1UY9SlCsJq9G+7qjHbugV+35+Za1/RFc0l+80Ei/GnfkYYNxpxHNM6r4sM2mte00lWTQwaSreFIVz/fRlKiaok1hHwwUNxgifdtcdIm+7RGnBgV9MoNGYN4AESKTnj7tr6OIOSLaZm8YbPJDW3VmpSmwGfHpOfI00lfymbKsR5ytn6nTLVHOkfU6pI4+LpUc0Jb9+Szrn+5QA8bGp6yn2DTCzHNW/mR5rrHYUY6o9m8/W4w== casek@casek14NB
+          user: ${linux:system:user:jcach}
\ No newline at end of file
diff --git a/openssh/server/team/members/jjosef.yml b/openssh/server/team/members/jjosef.yml
new file mode 100644
index 0000000..210162a
--- /dev/null
+++ b/openssh/server/team/members/jjosef.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        jjosef:
+          enabled: true
+          name: jjosef
+          sudo: true
+          full_name: Jakub Josef
+          home: /home/jjosef
+          email: jakub.josef@gmail.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        jjosef:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkK55PVyvnhW2XiIyDUTWOaW1frsd7g9t8SLRmjtEjKqJOBaRk48bSUfcV2twGcSOq3E2dUikh3URobYIZ6WBEiWrl1e7MYCJJAE+8qzVoskk01mC6tp9HGbsSRKrZTgpjzReM+kN6jffi/P1rSqgeg4U0O99N2aWqdfc7UJPFM09z9nqfB1Gj4HUnBkC1X+di4U3S6W8q62JLgxuK2MAry3xSnPztFVH5OXXbBltdVIxshOHj9i8wyof9iFHGdjFNvB+c5I3RJ2HRmmmHm3zey9iHU7PNIppXKglUFZ0EKIB4LsDjL6xrEjo2A5tfCaVZLNJgP95tdbGEcYQuDv3N jakub.josef@gmail.com
+          user: ${linux:system:user:jjosef}
\ No newline at end of file
diff --git a/openssh/server/team/members/jpavlik.yml b/openssh/server/team/members/jpavlik.yml
new file mode 100644
index 0000000..135db8c
--- /dev/null
+++ b/openssh/server/team/members/jpavlik.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        jpavlik:
+          enabled: true
+          name: jpavlik
+          sudo: true
+          full_name: Jakub Pavlik
+          home: /home/jpavlik
+          email: jpavlik@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        jpavlik:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAylDZDzgMuEsJQpwFHDW+QivCVhryxXd1/HWqq1TVhJmT9oNAYdhUBnf/9kVtgmP0EWpDJtGSEaSugCmx8KE76I64RhpOTlm7wO0FFUVnzhFtTPx38WHfMjMdk1HF8twZU4svi72Xbg1KyBimwvaxTTd4zxq8Mskp3uwtkqPcQJDSQaZYv+wtuB6m6vHBCOTZwAognDGEvvCg0dgTU4hch1zoHSaxedS1UFHjUAM598iuI3+hMos/5hjG/vuay4cPLBJX5x1YF6blbFALwrQw8ZmTPaimqDUA9WD6KSmS1qg4rOkk4cszIfJ5vyymMrG+G3qk5LeT4VrgIgWQTAHyXw== pavlk.jakub@gmail.com
+          user: ${linux:system:user:jpavlik}
\ No newline at end of file
diff --git a/openssh/server/team/members/lmercl.yml b/openssh/server/team/members/lmercl.yml
new file mode 100644
index 0000000..4fd4707
--- /dev/null
+++ b/openssh/server/team/members/lmercl.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        lmercl:
+          enabled: true
+          name: lmercl
+          sudo: true
+          full_name: Lubos Mercl
+          home: /home/lmercl
+          email: lmercl@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        lmercl:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCy6mFrr4oNdLjT5wBZj1+KXNpdawnGGWEevDBQ2SWFjxBFujkWVLiW1kxLTpLVSnuoE5FB7doRIsT/CDe9IU5OhsJ+z6TT56R/pfVKrVnSB1rgrwqdezjgmYEM6kTWiH2GKJE0yiQEPgagK8Rz5Zl420JkhbFWnL7EGPhxNtmYMGDTZwUTzP0KYmytyeH15OqNIiBGTrp1t2bTrVB8HRnUp0uDpfoWAUnsijVGNe1j1bNKtDO0Z9LAWx3eUyxIk4cdpX/EeWJg8jNrSMxtAZZ7Hhm/WInNSNqcHcZ1rEYCAjENxo1WVOuA/aqUqc5xaAipWNon4Rk0e0IUAaFOfLvN2lIuilUZ5XKHDe7a2crkGPnotheT9FgaEHOeFtpuhSaygeZHTMR197jeocgjWIkPqHjVAGSQqQf0TAdNuN73QPTigbbfHWWc1d8KlCM5BqJUXMHPG6BasE1sI/4ykYbxN/DAEvVJ4+rdIlqSdedd73ZAseVQjDtpzD8diScGrpdOhZnTm43q89F8dIFv7tt1TjIwvfcDQNSBjyyKcYpj+NTyW2Zk7qWDVz+lzH0ToYk/rOKkGlrsRy7OwOnmyKR8IcIOL7Bowj895ThCX8tBrdLu/m55ojBOcZiCpawCm7K55ri1Ar6i8cO+bHDh11kKRa/utRRSQTpsW0sbCsamzQ== lubos@lubos-ThinkPad-X1
+          user: ${linux:system:user:lmercl}
\ No newline at end of file
diff --git a/openssh/server/team/members/mceloud.yml b/openssh/server/team/members/mceloud.yml
new file mode 100644
index 0000000..62dc444
--- /dev/null
+++ b/openssh/server/team/members/mceloud.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        marco:
+          enabled: true
+          name: marco
+          sudo: true
+          full_name: Marek Celoud
+          home: /home/marco
+          email: mceloud@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        marco:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmrJJsRR1dIqaomk83+sn5OnRLvVqrxtROT2uO83W0C4036t3OfJEBL2COJ4Z1iQmyoQUcIpRdJns+Ft8GpVEEQ+mW4eo33jhVEkfLBzRTE7f/WqDmMeDbdxO7LdUNlIIc40KBPcnJWvEorqV2z2UF0+xqittTE34A3CgF82BI2Nx6vCNhgnJJnCyYisD+wT4f+Ovor3Rm2s6zdnJRqcLgx5lkNx6fM2ffkD36MjyPyVYWvFqw68kEsBPcpB0EmiINKQRg3A/iPvUgRWMl9nSvSMVopkbTOBpSK3H9hzGCLiQJvE8pGjHhb7SOix0p0sFdNrNRiC5ayaGQUDQgWH8h marco@marco-MS-7699
+          user: ${linux:system:user:marco}
\ No newline at end of file
diff --git a/openssh/server/team/members/mkarpin.yml b/openssh/server/team/members/mkarpin.yml
new file mode 100644
index 0000000..32cc689
--- /dev/null
+++ b/openssh/server/team/members/mkarpin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        mkarpin:
+          enabled: true
+          name: mkarpin
+          sudo: true
+          full_name: Mykyta Karpin
+          home: /home/mkarpin
+          email: mkarpin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        mkarpin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCcO+qMO4z5O75JmeoyHQKNjq72psAMO2lebEMl5MbgVs7BAOT3PChamRId3xhwX2X5R0vS1ZSgRm0XC4br2OpJ9DsBhOBbPRK/EyjAm5aTBW8eZZ69NDFam/hLJ6Xq+jZDdlBT8iK7CPxTJD+0wz1KqpIgYlUNkix5EEj2wfUAfw3j6lGiEVQ0Cpbejey9sYlUSitKcYs/EAX5byBBqkFCLL4/D77fLOIuWfDzAAStUR/wbOJnWNiIScifu4EUdcSdHra9RoQaRgo31ALq+BeYVpvqnyHTOw9t2q04sZVDN4anhUMAFh0n1CkbY/2HWpX/RYWt1bV6XtDeoCpsC5Ar nkarpin@nkarpin-pc
+          user: ${linux:system:user:mkarpin}
\ No newline at end of file
diff --git a/openssh/server/team/members/mpolreich.yml b/openssh/server/team/members/mpolreich.yml
new file mode 100644
index 0000000..8a01168
--- /dev/null
+++ b/openssh/server/team/members/mpolreich.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        mpolreich:
+          enabled: true
+          name: mpolreich
+          sudo: true
+          full_name: Martin Polreich
+          home: /home/mpolreich
+          email: mpolreich@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        mpolreich:
+          enabled: true
+          public_keys:
+            - 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
+          user: ${linux:system:user:mpolreich}
\ No newline at end of file
diff --git a/openssh/server/team/members/mrelewicz.yml b/openssh/server/team/members/mrelewicz.yml
index 7e863e2..168e9b5 100644
--- a/openssh/server/team/members/mrelewicz.yml
+++ b/openssh/server/team/members/mrelewicz.yml
@@ -1,9 +1,10 @@
+##Disabled user
 parameters:
   linux:
     system:
       user:
         mrelewicz:
-          enabled: true
+          enabled: false
           name: mrelewicz
           sudo: true
           full_name: Maciej Relewicz
diff --git a/openssh/server/team/members/osmola.yml b/openssh/server/team/members/osmola.yml
new file mode 100644
index 0000000..653027b
--- /dev/null
+++ b/openssh/server/team/members/osmola.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        osmola:
+          enabled: true
+          name: osmola
+          sudo: true
+          full_name: Ondrej Smola
+          home: /home/osmola
+          email: osmola@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        osmola:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGcF8AI/8hOeKlda4vniFVBbD3wOK4D2+/z+pB7kK0JyxfVC3XccYbpqQioWjt96JwDX8dSio07OUAFqOWQH2cTp6wjqNmpIaAODo44kQgKDXrjEq61fYW+L6JYZHxsFUPLvlNlwQwND2F5HU8oWbsneGu+Psb/COQebcGDdT1v/f2G9r5br2O43P/XPx8+YGKd+OiHPIN4Fk8fZzCGX7oJ7GGGr8YTL/Y8ULF3WiTXbQEWusU52Sf7/Is0A6BQOH+OuBGrVCT+j2XI9QBMyVSYtaKCnRDlEGessnGIGRGrNza/xYivWBw8IsVziDC8x7zZByAwmctWoWED6wWs4YU7SqoonEaYEog32J6Uw9tGtTgvkRC1mpMtgR2eenjNax8Fpoc6uTb/l0gevaRE6IqNMS0FBIIbkCYcoxfj7zIsYms/9IhsXGk1lW5ZrouCFICGEVa7zJ2F+3DvyQDCSuqsk/bfUQZEFw1FdAYIsZYQR+LIOSVQplapGVyqhlbkeUEVdILzgdMAfkPa80ZnGvTO729G/8uP78k1QhZUHAypkeWQ/aJfOKrxXyAxtMZiuyK31zf4OZdKSDS9bAWlmyKkohp7cEjLU0ex4AYDS231Y6JywL+RnucMJ4gFqSfSYfkM6+23gFbYfP7NcEKrkCaim/9RMU1RsunBk8As2K5gw== ondrej.smola@tcpcloud.eu
+          user: ${linux:system:user:osmola}
\ No newline at end of file
diff --git a/openssh/server/team/members/pcizinsky.yml b/openssh/server/team/members/pcizinsky.yml
new file mode 100644
index 0000000..d702687
--- /dev/null
+++ b/openssh/server/team/members/pcizinsky.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        pcizinsky:
+          enabled: true
+          name: pcizinsky
+          sudo: true
+          full_name: Pavel Cizinsky
+          home: /home/pcizinsky
+          email: pcizinsky@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        pcizinsky:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt9HA2bUwCVGGdUjyFzdPFp0j2z9XanLW9gHZ3BhB6Wc4ficU6zmbqYxrHUvdmUrRJbLMEAo9JDlzAIw4CPGhRkD3d7HfnmlEYcEeizLnnC+CmKo3+mrwkQIzWIz6PJOh1kvp5uaNp4ztjRGXXmPzcR0nk4jRD89gLHvH9EYStxZI6nsi3mmWR/LhgIhijb8p63duhE4HuK/RRRjeDQaUsbTG9TMEskY5ZI3p/QM55wlml9F8QJrtwxpaIPI5Fl8lflq+4YcoqgDIBFc6nwubIuiNY4gPJ8s1SQfsfxHSOJpFPZDwi76dxUpthtJrU46fqRvXPzTKoS29WZ5pSAY6p pavel.cizinsky@tcpcloud.eu
+          user: ${linux:system:user:pcizinsky}
\ No newline at end of file
diff --git a/openssh/server/team/members/pjediny.yml b/openssh/server/team/members/pjediny.yml
new file mode 100644
index 0000000..7a4b17d
--- /dev/null
+++ b/openssh/server/team/members/pjediny.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        pjediny:
+          enabled: true
+          name: pjediny
+          sudo: true
+          full_name: Petr Jediny
+          home: /home/pjediny
+          email: pjediny@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        pjediny:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEAgPX2oPwcmBMjf46UC+1vUBnKn9iBG88VD7lNiMN2UGBNihfCfSt4vOSNcVotyCSTrgm1dzHWN3nDt/fYiWvEimVE8VrawU9nJQ48o+M546SMCSYL9jqm+j+oSTd9CP7TeMgRw7hob+/vXREJVmol9cynsQei7HoFeo6iw7ZYMqgI1qOtHwN5Xep/7XZbQ0znweQY4hvywl47dK1GxnoQQUi1v30MzKRVIasf3cCMVr3qJ3ECxyQ2+Po/899jYLDdeJvJeG6dJQf1aDEDSHkoEjVup4jl5xu8y3jAYxOfKwMPe+Lb6lF3zRCB9QRZN71cxLVm+w7LfLtgLfsKv3xPeNpvvOvEQOdFg5jx9Z8w1KRkU2Zkc4fRTcWis89/9va3QL7W1pini3fM+WrpFatc02i7KjoJApeNQt0pwFl33DW+Zz8bQQZT7PT7LWNZjuvB4YmZYA6t9hj5rzUdUN2IyD2mNvPeNykdCLuFh7N7A67tpFSh48UHGld2ckdNmPQR8Ev50Fxu9jj13Cs4l3VMxzOF5I6VOS7g5vEKcCpIyDTtjSk4fGZhyeea5l8unCQzMw9UjkZjgy4nTZvxeqdRNnXSMrb0SzNuqbSM1J67GAUPxfxjb5HSmCYK/KSK3RXHrhwrW+t6B5x72KCCmYYJfUwofm6GIPEYGDxPL/VWGKM= pjediny key
+          user: ${linux:system:user:pjediny}
\ No newline at end of file
diff --git a/openssh/server/team/members/pmichalec.yml b/openssh/server/team/members/pmichalec.yml
new file mode 100644
index 0000000..c397cd4
--- /dev/null
+++ b/openssh/server/team/members/pmichalec.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        pmichalec:
+          enabled: true
+          name: pmichalec
+          sudo: true
+          full_name: Petr Michalec
+          home: /home/pmichalec
+          email: pmichalec@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        pmichalec:
+          enabled: true
+          public_keys:
+            - key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGwsfObHWHqBv6UQBjvm0nkgnAGc5MZPuQXJ3ln4sM1P pmichalec@dontpanic
+          user: ${linux:system:user:pmichalec}
\ No newline at end of file
diff --git a/openssh/server/team/members/psvimbersky.yml b/openssh/server/team/members/psvimbersky.yml
new file mode 100644
index 0000000..2fc10b1
--- /dev/null
+++ b/openssh/server/team/members/psvimbersky.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        psvimbersky:
+          enabled: true
+          name: psvimbersky
+          sudo: true
+          full_name: Pavel Svimbersky
+          home: /home/psvimbersky
+          email: psvimbersky@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        psvimbersky:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnsI2H2xgNFttWvGaIa7UdXtgAnlGMpin1/sBufx/bYkDMU2r0xGDjIBbUNWc4/OSKhpDyJiwxT5qiln07uFDBw0PtHUlJYHpJgS9xE6PERZPEiyQqrmbUVdqX9bIimweMH8kJIXjKgut+pc+GLUs5SyUlkjlHbKuYoYo52jAx+ldAslKK0P/aA1msjzGpoDRSvFChew7FHs9sH0GTgX865DoqCzqulNjHiGUrziBxwEAdUVjNDfxFHROm6kgdFU7ipgNQTHB7NvEI/VfZFlcuZ9IWZQhLQiw1jSxs4zAxOYJWrELPUqhPYE5yB5Y9j8iP4b0xIKhwoWkxQxdYuaLB
+          user: ${linux:system:user:psvimbersky}
diff --git a/openssh/server/team/members/rfelkl.yml b/openssh/server/team/members/rfelkl.yml
new file mode 100644
index 0000000..1b7fbf4
--- /dev/null
+++ b/openssh/server/team/members/rfelkl.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        rfelkl:
+          enabled: true
+          name: rfelkl
+          sudo: true
+          full_name: Richard Felkl
+          home: /home/rfelkl
+          email: rfelkl@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        rfelkl:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlvQKWbEQ8bM2rtE35sA5+y//YKMLNJ48d+/RxWlUx6G8xJusUhrKZuMRMgN5NqJQ92Z0Yd2lulsPeKEfSbqAxBxmNZ+mAAy8w8P/BHlQImi2HgMpWtQ5yExsAvCUAqq6KclJBhzjArg4+ztmKmNvjM8ZktJYeCM8VJ+qT01B8/3+frgltIDCDcC8YpRwbAt7aLjuB2Jk5Q9daQbtZ4XyXwHgPDpyZUkcuueUk/iklUBkAh9P3CFJBpttXEyKI0+cJAtM9vCXXPWmWt7nFAyQ8nH9+lTv/ZuD+pipKJBW2sp8+fFUWJ/Z6GzWhyh2KxiY7eK3kgabg1i7FtLFtRbZj richard@richard-inspiron
+          user: ${linux:system:user:rfelkl}
\ No newline at end of file
diff --git a/openssh/server/team/members/rsafonov.yml b/openssh/server/team/members/rsafonov.yml
new file mode 100644
index 0000000..5569975
--- /dev/null
+++ b/openssh/server/team/members/rsafonov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        rsafonov:
+          enabled: true
+          name: rsafonov
+          sudo: false
+          full_name: Roman Safonov
+          home: /home/rsafonov
+          email: rsafonov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        rsafonov:
+          enabled: true
+          public_keys: ${public_keys:rsafonov}
+          user: ${linux:system:user:rsafonov}
+  public_keys:
+    rsafonov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaVDVMjNUXR+SP4xjH4vX9zfqzYHosQRO4MlVxE8uJPIIQdF1+iPWtggLrsRDZTSQ0JNzCYGXPv8fK6iKBQ/cX5KgMnVPQmFn4Q+Ip/oWotkbVZtR1F0ZVw01KNBYE0LMXrV9dxhX6qUFCO0IV9inbOZ+6zhYOLPddG2WVc8htz8XH7xdWqGbU1GBwyEoRFjITZ9GAYMRNrSjlzPsoBVkQwGKNtvh8uCFZasfAMr2mV1XVFcJlK52T6bNqIXOYPmRc9mSoQoD0UHRRYwlWAZHzW+2e8SABT+NRT1Cc/BoioRC2SBKj9tsZgy9nhq5O0EfuvWVL3ZCM6+RviNxkEL7Z roman@roman
+
diff --git a/openssh/server/team/members/rsatek.yml b/openssh/server/team/members/rsatek.yml
new file mode 100644
index 0000000..7b99a7c
--- /dev/null
+++ b/openssh/server/team/members/rsatek.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        rsatek:
+          enabled: true
+          name: rsatek
+          sudo: true
+          full_name: Rudolf Satek
+          home: /home/rsatek
+          email: rsatek@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        rsatek:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC63DK9CdBB2WNHcbgzReBlcVY7YDvVKBJI4P5O8N3lg/T+01ROL99/6k8drFYFJjdeXJaMkCg7UM17yIyouDijBHB9G9AM7jkefBZrGDF7QaWJeGvpxB9W3BQnhotCeuP363CNBup+oUfPwXVnkE5iGuLJAGS8SENpVZpZsF0gXAUuVtvl5D8h1wIqQtFveJSV6qJkjVIudZYJfOMDBfiyS5nEwKmboP5jFtrm3e64HpxDhm2J5irNtzw3hOO8cq2ssnZ0ZAHFf2FfnPAzZ2L0Z1MpZcEPdzBonsdO8/cfxdbov9hW4iLmpJF80KxgPyHU0R304uyfnsfkC164l0Rx rsatek@Rudolfs-MacBook-Pro.local
+          user: ${linux:system:user:rsatek}
diff --git a/openssh/server/team/members/skreys.yml b/openssh/server/team/members/skreys.yml
new file mode 100644
index 0000000..df76889
--- /dev/null
+++ b/openssh/server/team/members/skreys.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        skreys:
+          enabled: true
+          name: skreys
+          sudo: true
+          full_name: Sergey Kreys
+          home: /home/skreys
+          email: skreys@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        skreys:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeg+Wj7yTBRLvsu2LKgdKyb6FW4n3t5me0LAZhGkP9mbsYonE5sN0OwI42ZPYeU1O35c+E4n3GJ4ZzdJYRUQJtqO5EHUMNyXELEcS8GZKydg5A0KPs69bB8SPVlTfO5D77sAWwG/3JIQD/uI21jqCp3a4lyEw5X2HjMbuz2Z4cW7Y69i73RdIYQdYb0X5+mqcVz8YEyuMZi2zweMxsvOczcanQ/4J6JKtC8imJu23Gr0TeS15OJCFh7yGviVp//LBzusXreqlEf7Tzx2yHkJ/rqULIIlPpBC1TFD7sgA72j3kq9rw3ZeQAwmaJA82L3KzagkgSQprEsRYnQ+wSWXkj skreys@skreys
+          user: ${linux:system:user:skreys}
\ No newline at end of file
diff --git a/openssh/server/team/members/smatov.yml b/openssh/server/team/members/smatov.yml
new file mode 100644
index 0000000..8c21e28
--- /dev/null
+++ b/openssh/server/team/members/smatov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        smatov:
+          enabled: true
+          name: smatov
+          sudo: true
+          full_name: Sergey Matov
+          home: /home/smatov
+          email: smatov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        smatov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgBHACRnY/VEEDFE63xDp4bx0zgWY4h1aB9/c2f962HtTNaQ6R/Cz6DLISaB5th8qzrzbvjn9WcpHdxyTm9BqkLLzB4qe7fnebPtn6zGczZ9Btrjk9R8Fuw6DZhSucSk572r/gVIY0O3Z1LajHkNr0ZTQS8AY3fgn8rXMD2vMOruOzyTOmfWKmEw7e+JYUqoFXHhE3Dd7hGQ99d6kH2N3zXfM2rzfjshGAq0kOi5dN4Hx6QIXZapt0t9TzpYTkK5SaVzuEVyVaKRLYSa/rdPjHkKqDFa99RcQ+OI93uvT9CFNWDFIC/TDJ2M+7PQbm836EICXXVWKjQ2NUnQJeOU5v smatov@ubuntu
+          user: ${linux:system:user:smatov}
\ No newline at end of file
diff --git a/openssh/server/team/members/tkukral.yml b/openssh/server/team/members/tkukral.yml
new file mode 100644
index 0000000..e53ce2d
--- /dev/null
+++ b/openssh/server/team/members/tkukral.yml
@@ -0,0 +1,21 @@
+parameters:
+  linux:
+    system:
+      user:
+        tkukral:
+          enabled: true
+          name: tkukral
+          sudo: true
+          full_name: Tomas Kukral
+          home: /home/tkukral
+          email: tkukral@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        tkukral:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRM6WquKic6i6v/JbNR2XuMqCCYqlfyGU1K7XHK7tWFordRLz2/o4S76sZULBTXR0rLHtynvHM4QHlloE1/XJnd0BtI/3y8aY0OkXyu6PHvTC8Az8SyGj2XAcaiPlaT2f+oTJHoPc9rxLhMMD7OTwias6QeVKB3UrT0OaHfy2wWCF7t8cQeofi2ldEHKeCsC1jrT1vaVuoThQgZ00h0rNk4COPZEW34FXdmdJFUmZcUIDMa71HtYgnn4gmE8sUiJ/j6ardvPaycCDT9j1GW1Yu6UVLBWOoMMCb04bDJiidlvY1fQqbM/G4cR4ZPHFZ0RQiM2+wnRaB5RCmBVgNT0Tj
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDIcEZKBvsDAVOeUyucpTXH7nubNjXxlQSMf6oXmcXW5EFzQ7bcBjUJIC2/w4NV2v+/qbbvax1BiI5wU3TWM+LKx6VyhexwrnGQ4p9xprbAIiYaDAbT4KsSOyFnItmbD3qo5JzYruF/jxpus2fV/rBjfsgENHSDSL7ZNO5XLRhdfdcjGrReYf6MU+Py90mOxIcafJQ0nI2PkZ4JURtiJmd/lBp+QJH+6JpQ4Fjm1C0stJFLZfyn0r9YtMXs7j3LK5QaypbZO63NvBKp/1GhZUbC48Cb19SqIoBfQl8JroT93PFzhcQaXd/iXbbBg1WPhEJLAaJEJ7aHGVN+93YHoukP+AFobrpCES3LPFrwbRXpjZNCbKtQCMS1oZHLNBrIsa6uuvAhd9ni3Q/iJq4O6uZ8g0gW69+VI3FT7l3adBCBlOQUVvN51k2k3Q18oeFZAuVPoH49gUDXgxaUHjA5nE0hgPd6KaZkh5UGs/8jyvDLRLVRCUGYfVZcXlMAa5uc1SaUGR3XZgciUlY9DWAGTS8mA4ZnD6mXdnQmjDqhaI2S9jFmuO1Z4YAlHCs+qqMmnFBwbIZuIJaTgl9blr2pi8g6SVQGOE8eA9SDZYTH2EM741ZgVxBPTC/QjMcRtERWNTzfK+R6nZgsdozi9w8MMlmLgvjhney+YuhPhBI2YUwafV2wngqcz7qKP35Jx4E0AeI/Z6z2duuP4JHtaswkR7Zwk4/ebRm1DGIvImh4UxucumEMpXrNOyPZqyJwOb1GM7U5w/kfGSU10y6Y2/db23eYvIb2c1aIbKcGI+Db+1UuED9KcmI9JuYnxqzQZe66T56s+jOi0zyjQDlx9gu2ib/ORE+XVuKqvqii/WF4dTK42YgzTY1RX4wag4mNOEhY4hX+VA6eEFLruqIE+zQ9L+vjf4w2jqpC2CTtY+UtgAbkpZWn9/00CqS9EAh3cmYVgL8se+mfo9iQkcOrHoJ/hN9wyWOK8yQXACMtm/zdFyMtCzhWeSvz03SPz4o1L5QcS3VG+FF6XE5jb0KCWH2C0U6ufgKhpna+LXmG1nXGtay7KqUkQeIwOXq2nq2xehPwgfM25xIPHJ+t1dQMstXrR/h0Bs9lHM7V7mTcgA4MtuYM1mwUpuK9QYantvWE7aq1KtFwFBaP/4swtSoxWsotIDv9GxJhWRJ8aUJIAbsN2znMlbtsIDGTMlWLW3pbpr+1ANAZx6YiQOSCkDDzk4eaFMhlGaa+4sBVfIU0QwnO9swOjQMQH+3/qaeGl9LOZEf87kwFKnQDpMEdDl4vmpsSwzcyGT8AIFl/ybrrl///v3cvCZe1lDJZxPag6KT4BOwycoWTKfL5ll06v+JzW67XqkQT
+          user: ${linux:system:user:tkukral}
diff --git a/openssh/server/team/members/vmikes.yml b/openssh/server/team/members/vmikes.yml
new file mode 100644
index 0000000..07d62f3
--- /dev/null
+++ b/openssh/server/team/members/vmikes.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        vmikes:
+          enabled: true
+          name: vmikes
+          sudo: true
+          full_name: Vlasta Mikes
+          home: /home/vmikes
+          email: vmikes@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        vmikes:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXng0oUbSGMlZCamlSWuc4jzgTym+p9u0ukbQvaWW2cneOhLw6QbVkOgRETBIfXitiIB+5nNqTYy7lrYqc3wofjZJzonR07oFoNcyhITLnKjLHV9eZ8aRhwKL2PONyp8d61cdm5zqeth1tMP8uBB+SOn+aD12Hu5tfTJjQeH286p+Xt75Llo/bHybfYmt2HaV9Ts6qb/Kw3Eom0Jkjh8837navek/PnFF7WAkM8GvP5Taqzp4Tmu2UfLeMv4459q+ZiS56WRbcixBQGb7uUUy4jkuis0batBNoY0pwMaaTj8KzSwrQ8shc/LuU2QhR7xwXVIgZR/Yqa/Ojw/U36N4t v.mikes@tcpisek.cz
+          user: ${linux:system:user:vmikes}
\ No newline at end of file
diff --git a/openssh/server/team/members/vnogin.yml b/openssh/server/team/members/vnogin.yml
new file mode 100644
index 0000000..e8c1df9
--- /dev/null
+++ b/openssh/server/team/members/vnogin.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        vnogin:
+          enabled: true
+          name: vnogin
+          sudo: true
+          full_name: Vitaliy Nogin
+          home: /home/vnogin
+          email: vnogin@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        vnogin:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiuKuC+aACWPhwTg1liOOGMAvL3zSMcgU2ZfjN6NMLMyekJqD7sr9NwJkeXEt6wr1YSelfYDcUjdu2ZyQHzfQ8CaNrTAlrNYUc+UlUqqydbO1d89j/MMn8fUAuFBu1vLMOqfNW8nPRmy327blmvSxBq2Oz9wSf/z/3lB4TVJKGwB61ciQn08FwFAitCN9cdfBthjRJXrhs/7kt0/An8O0p43LNa1aQ5QeaxLUAqMZa3VxkAaEwFzm/E/Vg4SPEJLijfCWYPozkZttoS2ud0HAJR87jya/BaCrtSAOqX55cLzWGABlvDWFprwo/59aJw7WlE8Y2bgxhtnFRdaHuIk7T vnogin@MacBook-Pro-Vitalii.local
+          user: ${linux:system:user:vnogin}
diff --git a/openssh/server/team/members/vsaienko.yml b/openssh/server/team/members/vsaienko.yml
new file mode 100644
index 0000000..bd532f6
--- /dev/null
+++ b/openssh/server/team/members/vsaienko.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        vsaienko:
+          enabled: true
+          name: vsaienko
+          sudo: true
+          full_name: Vasyl Saienko
+          home: /home/vsaienko
+          email: vsaienko@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        vsaienko:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPagYDP2Dt5cGMC/HYlv+5AVYx/v9yRiOSJuQb/XqU35PLW5CVroSAaEA33IIAOjyte8DRrmi4UxErX00V7+F9Dwebt0qkEX35FE91E+BM2L3S2Zcuuh4gHDDp5khsHSTHdgiFpMhRREFesuG6P7ekQ6gCBzKK4R+TTLVTKWYn1/TXQIvMUAO+umGykHQ2T6memO2eGivnSSNkKCGOjODquyP3JMmt9Dk7bP5RR6kRLSD9HknFCIFds2fkcdbOhZMv+XIqwOVAWhRPksafOMktmaHNyy3k6IcMPJroH6H4P/GsQmrPL8IXpDP01vTdeQYM47YqPC14L3T74u71YJGF vsaienko@mirantis.com
+          user: ${linux:system:user:vsaienko}
diff --git a/openssh/server/team/mmo_devops.yml b/openssh/server/team/mmo_devops.yml
index d3eb756..60fe258 100644
--- a/openssh/server/team/mmo_devops.yml
+++ b/openssh/server/team/mmo_devops.yml
@@ -4,8 +4,12 @@
 - system.openssh.server.team.members.dszeluga
 - system.openssh.server.team.members.jmosher
 - system.openssh.server.team.members.ecantwell
+- system.openssh.server.team.members.lmercl
 - system.openssh.server.team.members.mrelewicz
 - system.openssh.server.team.members.mwilson
+- system.openssh.server.team.members.osmola
+- system.openssh.server.team.members.pcizinsky
 - system.openssh.server.team.members.pmathews
+- system.openssh.server.team.members.pmichalec
 # Missing- team members still in flux
 # - system.openssh.server.team.members.bpiotrowski
diff --git a/openssh/server/team/oscore_devops.yml b/openssh/server/team/oscore_devops.yml
new file mode 100644
index 0000000..0ee5dde
--- /dev/null
+++ b/openssh/server/team/oscore_devops.yml
@@ -0,0 +1,6 @@
+classes:
+- system.linux.system.sudo
+- system.openssh.server.team.members.vsaienko
+- system.openssh.server.team.members.vnogin
+- system.openssh.server.team.members.ashestakov
+- system.openssh.server.team.members.mkarpin
diff --git a/openssh/server/team/oss_team.yml b/openssh/server/team/oss_team.yml
index 9d6dce9..db4dbbd 100644
--- a/openssh/server/team/oss_team.yml
+++ b/openssh/server/team/oss_team.yml
@@ -23,6 +23,27 @@
           full_name: Michael Ivanov
           home: /home/mivanov
           email: mivanov@mirantis.com
+        vkramskikh:
+          enabled: true
+          name: vkramskikh
+          sudo: true
+          full_name: Vitaly Kramskikh
+          home: /home/vkramskikh
+          email: vkramskikh@mirantis.com
+        jkirnosova:
+          enabled: true
+          name: jkirnosova
+          sudo: true
+          full_name: Iuliia Aranovich
+          home: /home/jkirnosova
+          email: jkirnosova@mirantis.com
+        sskripnick:
+          enabled: true
+          name: sskripnick
+          sudo: true
+          full_name: Serhii Skrypnik
+          home: /home/sskripnick
+          email: sskripnick@mirantis.com
   openssh:
     server:
       enabled: true
@@ -42,6 +63,21 @@
           public_keys:
           - ${public_keys:mivanov}
           user: ${linux:system:user:mivanov}
+        vkramskikh:
+          enabled: true
+          public_keys:
+          - ${public_keys:vkramskikh}
+          user: ${linux:system:user:vkramskikh}
+        jkirnosova:
+          enabled: true
+          public_keys:
+          - ${public_keys:jkirnosova}
+          user: ${linux:system:user:jkirnosova}
+        sskripnick:
+          enabled: true
+          public_keys:
+          - ${public_keys:sskripnick}
+          user: ${linux:system:user:sskripnick}
   public_keys:
     ikharin:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0NNCF9Orei3Ls5wa7xNH/2nl4eAUYY/vuAers7as8lQXjUXkurLQUG1YTQhuRiqyLrqLZjokq87l3LcpXsiBaqNybwlg4OAcf7p59FwDwdpCcAfoHeP03vt/FOYgozeExIRxVNHMdZjQJ4o5j75vnwTfGIubSF1eUOwtRVeezAREK1OPA2TRvlSOXCsAinNSZHBFTlYVYIXQEk/zuH7PdwlU2rkN69mNivh1tAUDlhrwZHrR9rcudafp5s3C5MKFtI3W4MhYIqv9ZViEhLwfEhNb0WXiUv+sdGTf8jTcXaYOlw6z9A76Ab/9bfPyOTmI7tli8Pz15+YPj1ymdlIZlQ==
@@ -49,3 +85,9 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDF13qwUbb+lva8KCNE6IppajmGfF3MJIFhIPD7HYwzeIyI3INlc6nMMOk+r4a6IO3okVxgqRi27boebvUpazw0Jw4T4e1oLQpWCxvhTZkukFsrd9DJiCj07VXluua2ofaCRLCSHVLdjAH4WocmZeCXpZF1ldDeNBeuX0iYJiFBslrG/pmOuCm3IEL7GmoIJjF0Idtwo3tkWcvCUXKvBaVqCHS34Q/KJLAvZc95MLESs/kdnhfxhxbpWrRRFcZn/zIxuuptuTBzWOPd7CnsOLo5PCnuxIfDznDYYzQUJq6OmwMZipepTtymXUvFQiqq7xc/HmNR51vowqwoftgHNxYvoaQgXkneWFnq4Cl9WZaLVs90wNgQewPaKmhL8ia1S2C3Cub0ILsbU/091L7adBeZI87pkfx72HhFQRUOcVprgPAEKKTbEvUQKAQ4rZ6GOIU5Tz/fKf1sXLhiTEAgpGpaTyyTP04vpgP5iY4kcXQHpRsPxg1BQ+93S3KqF2XAdXvrA4eZfAHmGhsAOePdnJQZVf8c4exsgkIGEyM9Wgi2ZWlq7oY0tFJLf+Kq7y23QuC6isIqBBIDN/TtmHRpiWNY4zwmGhzSxBdA6zMVy9PblrU71w1xVBS4KKwUqbWbP06pA7V04sp8kGKz5OmN9Z+rdTQJ2v41SSU71kT6XSFFOQ==
     mivanov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLY+5Yc3MMOmxVGrBmvfMX9bwK98RdgW+9E/rj56rh1w5cuIy5qN0xsuU4634EcSLRUjGXBcutDXPEXV1s7BZfeZjXJri37RICLsKfvPZcyiEqtwTbGYkcDDOHH0nmZdfngi0r/qAc5o5k3KA7Eh4CJW+GgqPoShngCKo9YKqbWFUkrGpX7wIUMlqwyuVKsybxD6EU+CB3RAeASG4E0rRq7VYQaTj/+PQq8VrWGUs9QHW8wX+OakDDCI7Or4Ll5q/uPCopaU9r7yz+uEYA1L8P2wEJ4XG9V6dxUMvzrFLBE+wDrHHXcEZMWGbmrPHUy5Yt8UCFPgtYfOl2BvHHHUSp
+    vkramskikh:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9eVOmPT/jCS/q/+T5EmKIBol3wovE+qTb4SQI4y9ZUIT+tMGult1dheqXVKIMYdTe/cccPTf5A+b6QpkPEjzQQljn0qmyHM75ya+Gjd3uTWx+1VXSFL42p0+404oVkB+eOtax+Bf8CU14P6sJn+3ypO63VVCJz6V2cgkr14tqkMZb+4OBPJB6zrNAfXhNJlJ8fLV4d5c4guin74hoaor5VIER3hwMPIe0CtudzdjcdDDvVNqXYfoknwMTNR52h1Zfwvomsy5pdFcI5sQKaOxSqWyi3C22yu/ZK0Diq82INskZ1vjHiJHw8QguXLzevCK4BECnjDFr6Hu4J6eRK3YJ
+    jkirnosova:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuW6hvLo7eRwm6WcjJEDW7TsLG2rZrtmffHQ58c4AzlLAxV0tkvvfQRS4f5Pb+Wj1flxt+RW2rq4dSkQCpwNnYdTHHRnQJFJQEAouqNF7cTVrprioXNeoBe8DGVHiUUI8IpeN8hJYQw17NB6hf8oZulZqdZZ9DA7uwnC0HFfQ1E4MuFnfhB0/XyzJMsxrxHyjte+cOdgE9F43ccHInBGowrzOJP8AUdWdC0I2WU0sjvQrGcvlHr7/EqPP1Zh7PblwESyf3muas7iFTCKtCbXM+pT3e687++ueCqrAftVZGCPpXe23U3sSGdiIti0L6CYxBI02VKlsQgfSqWd8z+W1T
+    sskripnick:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbDedH7Aw1g2LDHrCLpxfq5GsdTpqRglDXy9dDSEr08tVVl7gSzPJ5oMlIr9VsNVHsR9vf/THhxghFrV1rQZDny8c6yLqus3Upc7pJfOUztWD4+E29H7qJOafrnuNRHGFaEiaG6aZm3WyyvAdlR1lh/i5zQtdrPBmjYkq5LMJvNQBpj4XqmHYp7gLRNDI30Ne49xxAIGC1Qbx0Xvhmq9/h4gZhI5mB/QeOj4tPcd7g+kSTdc5/fXbBLeQDBZt/HlDr7/LFjYZ4OBumVDOTfClFO5UoIAvHyfysaiWI/qZ7UZI7uU4yAPeI8/s/INOQOIoiqaHyiVnL5BvFklHldMot
diff --git a/openssh/server/team/presales.yml b/openssh/server/team/presales.yml
new file mode 100644
index 0000000..7efc9da
--- /dev/null
+++ b/openssh/server/team/presales.yml
@@ -0,0 +1,51 @@
+parameters:
+  linux:
+    system:
+      user:
+        ivano:
+          enabled: true
+          name: ivano
+          sudo: true
+          full_name: Ivan Ostojic
+          home: /home/ivano
+          email: ivan@mirantis.com
+        asteer:
+          enabled: true
+          name: asteer
+          sudo: true
+          full_name: Adrian Steer
+          home: /home/asteer
+          email: asteer@mirantis.com
+        sbraun:
+          enabled: true
+          name: sbraun
+          sudo: true
+          full_name: Sebastien Braun
+          home: /home/sbraun
+          email: sbraun@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ivano:
+          enabled: true
+          public_keys:
+          - ${public_keys:ivano}
+          user: ${linux:system:user:ivano}
+        asteer:
+          enabled: true
+          public_keys:
+          - ${public_keys:asteer}
+          user: ${linux:system:user:asteer}
+        sbraun:
+          enabled: true
+          public_keys:
+          - ${public_keys:sbraun}
+          user: ${linux:system:user:sbraun}
+  public_keys:
+    ivano:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD94JXgHYTjfPoyYfWe5HgCPUgyal89VlI7ZYLr7RezAl+YQaaeO5adCXnnMDN2BiNf2l1SfbFf/A4Vi6W5eSRLqtSplpdhass7iqmmq+rDoXcELv6BZYnbOFhbFq2vegwcgk35A2uz9x9i3x3wHMLBZI/+dNCjCnW2Uikb/f0nmFqTLT5T9SJ/nmhs5oPd5vGKgFtYdRPLZW/fPxl180psPzBXmOCh50xyydxKPzncyFme+mgb0o1GjyBiJe7cXL/rXShcrFb9btMS+sXZZVQaDveaBHYUE+q+29yqR0c5uUusEzD9BWZVSoKPrFUMy/9YohGwRqbRE7Jh8XVF7Fff ivano@unicorn
+    asteer:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBIXQqD5NH9glU5CBoodFtTuZMd5KgcjPDw0krOBaM0YkzbCGzEecLeqgd1oP2AbUO1nV80O9STatFhJ1NY1x1Xxv/k0n7kMIXpuxyAcVKbg6J/B5GzACsK9tKfnEypz8VvQcBB70h+4Y6G6AiOQxRpLJg4fHv/Q0fF3rl3diQyJZeTa6jjcYettikclZlYYyFh1eLQ7yzjbGL+KNX/ks/N55gl+N6BKYIGvhSUFI7Xex0p6qqpPM+XTsGJFVRBIrHnNiTtHc5SO+oN/J4u2PnO14tP8ZAeX33jF4XejbRvo8kA61KZ+i10wkSbGKFLQeYBrVnxJwo5FG+kOm8WnRF
+    sbraun:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCdvb2aPES+H5+McRueB3EYbpdG/685pIJCH6mbFmTsIHlQobcJSSYtqww7ji/m6/KuMGE/Wc5f06d5v+beslfHKLaaAKXwWBpDgO77zwO42PbFPreFXKg8sNLPmqB+WEyIX7yAaJNxz0bbQgo2Vl3Bhtv/79zZXpzo0DIXNtdi75vwzWpuiyRuhC7pNqz+VXFZAVtkA+EchogDnT7rLa8ullSwuSgk5iPC6/XsuwL5Z5/UGBx4OT9Y8+cjb3g2oE9N3hdJH8wp9ts6stvKgAZ/5EE+LuCVhtKCvQ0sbZY8DmH99HFIP7SQoNQoyD8ALKbyCxGdF4/kxsqSlnLM5bR sebbraun@gmail.com
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index 6d55bee..84a8255 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -16,13 +16,6 @@
           full_name: Simon Pasquier
           home: /home/spasquier
           email: spasquier@mirantis.com
-        scroiset:
-          enabled: true
-          name: scroiset
-          sudo: true
-          full_name: Swann Croiset
-          home: /home/scroiset
-          email: scroiset@mirantis.com
         ppetit:
           enabled: true
           name: ppetit
@@ -65,13 +58,6 @@
           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
@@ -93,6 +79,20 @@
           full_name: Krzysztof Szukiełojć
           home: /home/kszukielojc
           email: kszukielojc@mirantis.com
+        isviridov:
+          enabled: true
+          name: isviridov
+          sudo: true
+          full_name: Illia Svyrydov
+          home: /home/isviridov
+          email: isviridov@mirantis.com
+        nzaporozhets:
+          enabled: true
+          name: nzaporozhets
+          sudo: true
+          full_name: Nikita Zaporozhets
+          home: /home/nzaporozhets
+          email: nzaporozhets@mirantis.com
   openssh:
     client:
       enabled: true
@@ -109,11 +109,6 @@
           public_keys:
           - ${public_keys:spasquier}
           user: ${linux:system:user:spasquier}
-        scroiset:
-          enabled: true
-          public_keys:
-          - ${public_keys:scroiset}
-          user: ${linux:system:user:scroiset}
         ppetit:
           enabled: true
           public_keys:
@@ -144,11 +139,6 @@
           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:
@@ -164,13 +154,21 @@
           public_keys:
           - ${public_keys:kszukielojc}
           user: ${linux:system:user:kszukielojc}
+        isviridov:
+          enable: true
+          public_keys:
+          - ${public_keys:isviridov}
+          user: ${linux:system:user:isviridov}
+        nzaporozhets:
+          enable: true
+          public_keys:
+          - ${public_keys:nzaporozhets}
+          user: ${linux:system:user:nzaporozhets}
   public_keys:
     newt:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
     spasquier:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXBHKQaGUNB92DsnyvflmCbmuXnkiuNahZiue3hnyXqLA2q8jmQmzBbxReAJzexnVfJhrUCTw8IPJUpMUP27u3igvGdkhfctdUuxVf9yGJErtGNgHK/aGbeLCvUOmhw6X/xbf3IbyFL1gwxOJ2cmmjlSptYU9E1W2xFY+IMFWBhzO3vso5EABgPVli/UUMfeXUUd++lIZpoyYe2Hkri1QGNhzfbZcFjEO78+vNiLZrvjJEtkXWu7iZTYK6eE365CiFJzqFL7N6Ichb28qakcmVqR/foreuz3cOMqMGssKoOQk1213x8w4fE0yLwf9Ft8L7GMf+vXQvuNt0ZKBPWqn7 spasquier@mirantis.com
-    scroiset:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUfVxx6qi4fay4znw8M6yLJJcRr3pdvPPihTAszioFJP9V/GBbqfkofTfeKdpdvJ4j25p40boiDt43Ek7LfcRmKMP9+2SEfk9W7ec/umM8Mer+h4ocnShVQm69weELVUfr9q4G+qWf14ANc9D097bclqQ6FP/cjy8HodVPgQ+i1lpMjwP6xvAAERJJH353lCFsxkh2N8aOi9YcP9M2lQeKWM+eYFsdcmTFAPHbgPq0K4ma6/YXw5UibEBClYu1u4OJTFZSI3z8kERb2cU0aFGYAduiynDMBKM7y7YAoksgBOVprq0huEMFUqJ3vsrZbPn55GIpzmBga+EGnNbSCadt swann@scroiset
     ppetit:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCUGCb+mGidT4FRa4rJxoYx39NX2vCjRw+CmCQJW/Uf6xc0NNp5WRWJ0hnyIMRVVfehvfjdXPo4bO4cXIwmo06C1Wx+DMyvjI9NvuHtt52p3QTsh+PYZe5t4hFuGh7veWQw3LuLtDLVlVS633FQMgT/BXDaBc65yfN9CuV6lHqZ6KPKoGAi3ADlcQFqhFttO+GsVkxd6uGtelnbYXsDMwylCIKop0C/obu6wG85d/8Q2/Zts5CvUcCiCNfZtl8otgNMrpfnuhC0xAsmgwDxqK2kshxUujclyFfO7ixl+E9Plc7kUJvodNbzOcAmY3YpuHVoJQkHx/Ou81/q+JOVtFxz ppetit@baobab 
     obourdon:
@@ -183,11 +181,13 @@
       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
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9lvegjKq6OP7cgF9YU9mPOk1/mfJbov3YnYnhiW1Ks0hrWZyAo+0TV3O7LgWZ8jqD9abbYaOiWCt4d9ABkLUJfCLNAqOJRapJ+tybPAxJKx4eV8pptJ7UF0EdItasTdd+gqJJ4Krk869rwmqVQ4hethdykjhKyWu3bG+uVtFUF5xUj9zaT9NThA6/Xhz0idAiTO8ArmLng4W8ne45gANaHIWXpIsklo6GLUSZwl4z6j2z4joxNJsB1hrw0msT56F26ctkDo6thNMAzPMyZsLjYJBJIRYhdC1d4Up9114nVcY4pzYw76+zXU9zED2XNRLdyAaxFlwXvumAs3iMLI8Z isvetlov@isvetlov-mac.local
     akholkin:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDjpy9RI6iEDH/04eOOwreDa+R32USZiWxyFiKHa8zoDAlOfwaZVg6mZWepOxzwxCJPYusPGXCwQ6Zw9tHxVWOCgtzzPpsCCfhUU4v+99Wh08//W8d/s/WFka+5vqyskAO5Z8Ekk+kQU+jpUBG8/gMxAPBjj0fFc5BNeqDY9r9nmMNK6N2RVjvA6wZ8G5hLGxL9bn5Prhf/+avui1NAfy6gsT/mRt1W+eHWTvpijyNGm+m83jU34dQO6gE48n6WdSylLh/fY/p31rzAURaq1V/AZhdbSuZ8aJYDnfHevpK5+hMjoOop3v3hb7WHEmybGujQfW5HVaaWmG7SFlHeKGE/gZ2P9T+bQ+SgO+PmEAw4LayiBkzTPAHdZ2UGZe+3BI5gdM/ayovK2WVO1jS5FNlNGIvEQW+ws9V+ph+S1jL4jobDJEjs358iXrAYpf4JL+LvxFHiuj6EL51tbo8EU22z5mmgRQQ5eFrDzBuVLhcim651A3a5iSlmCeAQ5rTmHX/Op/PbK+3vAtI8vnlK4AhycLvWQ3kK2DRx+Uhzrlk5v6E14SopAhvpGOHqrLgmoHwHp1xt/9M1JgxkOUK5gccFKTQduxLHoTNBaNcP60IOG/MjqUPcOXSBcAN4Y1RDBg+pwXe4PFgOzwKdFoYeuhvtm8y185S0IvvfCHLCD8pNfQ== akholkin@mirantis.com
     kszukielojc:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCiUm3Z3W3t4v7oe143rCNM/hbg9NU2bYUmQXek8DJPA4c3Xm6u0q+RL9kEXME+3zcj2HKqMxKsCBLXXdFIsgdUbOBV8AYiuySE220FTnEKRmdxsEnfSaBhXxFyIBNoew4gI7URSqAOclt5WuPJTqRM7K4VhbtzwEgeWVd/NUhxMCCtgkdJCYTSmycxmxs7R6V8vMr9Mb8DOqKkSpOu6f3JkR0lwnFN9zGGC4V/60FlJSDzvvI5Tn40ANPHITivs8xME0znsx7t0bF4vQUimvhYn1mumQCY1NwIaxJ/QqasD6Ag9Sn5dxSg9b3SeLn0JM6qKoIqZtfPYVuCp9gmlH0fyzJUdqu4lKKb2wBw/H5lK6icH4+owMawkav55rbvinHQOqmVCr/Bg/rTfc35ycVqjTXH/5J7OhzioKjU0yFkXFS2X/s8gpyxp3beJ+Ea4faoX+kcs0gyhMYzqC7/DOamrau7aVyEAjKYJNy60xRfjCQzjqiurbxVFh+3Fi64UUn7Bl1QV8VEiU3ztJ118psEI7zA+x2VROLZ1jrtaBYZTYB118JZicaFDycEVgg3+BHX3pFH/QSOjLsA4SK+HJjSz8CFKvWwaO6QJv1/3KHpcGEacMvmqKxwpQK0E4WpjWhglZRMPObQ0dBaGClOujgoOIHXtFGILEpWy2SdzDQkHw== kszukielojc@w541
+    isviridov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGNZxzOm7OsZi/q6Qk71fnvjCfWk4BfxpZ5hDig6N1f9D0iAMaINyNmlF2PxstSLW0Mjdq2tXTUvVWlYpGrw+YLHQmVk8dckmLdUAxe2Z0oEvtWhiQC64927ibBTgQ2Tjfkao+PFYPbdjiO4FgRymS1/FpGKhvpdyPDCcOLrxsMSK9YpPi4kbkd4GmlGMercuaEzP3JOOzJioOOLtEw3LOLWG5mAIzXjGFxuCNdTI4gqxQm/iw/tOpb9PcsY10EapZsS4Pd8j58vuhJlwdoTxI3gzySJcTlWm0tcphex0g8X0tEUI+zVjemJcrYkZgUpb6x5/mUjNxC4nv+4A4yMTP
+    nzaporozhets:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/UtqwBD6qkEoWSrmO0jXa9sUcwumySxmkX2XCTlAj+e8tzCNndNhaUueu01pbcNrGrB7xvCHyTa5cxgJEv0RAJRxZnObTjluegiuW+/KNSGwiSDy90bwPVb6zWalrDg12xGh8C0ybmv90uC+GrGO1UXFpm5N1qL3ZsUvSjWBRZ70xXjUI4self+fWxBYJhu7hGZ0RVCeA8TjRutzdOWcSZwN2Arn2Oq+fx9n5HP8iXlPcfM6aWj+QvkXphvKjUhDYiImQ07kJctYvxEwMei5pM1dAPZefQ6FRsUP1gKYKPVp1CiBHPIKLG3LMwxp0/LWQmHB4umZvA6HYplSUXZLMd+FhCRuocVFdxe308JWeIFWyw7og/qEBlpxqW4BUk0bR3c4deI9QDKWCuuunTDB4oEB8ZnkI7utknpx7sqO72Ev2UNS/CSi3yyqgOajojQ3l+McWn9bm08KSLzuuMaexETRYQ9dgjE79N7fH+DEt5Ryii+GA2a8Gl3iRtTZs9WA94mTb/KjZBrVxh+PixpQ6s3oGFelFCPMKSPWIEb+rwuAUi0Ulrqb2UZDzJYhT50QfbCzRN2MU+8bR7PJt/xpAADvQX0iMMrMUvAVngs2YrXKapJliyHhTZxOmVdDRIyCQ1YpK2ktBJf+E+RXl3R5XUmbJkT4jZ1R6cA1QJOEKVQ== nzaporozhets@mirantis.com
diff --git a/openssh/server/team/tcpcloud.yml b/openssh/server/team/tcpcloud.yml
index bdf29be..ac6e107 100644
--- a/openssh/server/team/tcpcloud.yml
+++ b/openssh/server/team/tcpcloud.yml
@@ -1,3 +1,26 @@
+classes:
+- system.openssh.server.team.members.akomarek
+- system.openssh.server.team.members.atengler
+- system.openssh.server.team.members.dcech
+- system.openssh.server.team.members.fpytloun
+- system.openssh.server.team.members.jbroulik
+- system.openssh.server.team.members.jcach
+- system.openssh.server.team.members.jjosef
+- system.openssh.server.team.members.jpavlik
+- system.openssh.server.team.members.lmercl
+- system.openssh.server.team.members.mceloud
+- system.openssh.server.team.members.mpolreich
+- system.openssh.server.team.members.osmola
+- system.openssh.server.team.members.pcizinsky
+- system.openssh.server.team.members.pjediny
+- system.openssh.server.team.members.pmichalec
+- system.openssh.server.team.members.rfelkl
+- system.openssh.server.team.members.skreys
+- system.openssh.server.team.members.smatov
+- system.openssh.server.team.members.tkukral
+- system.openssh.server.team.members.vmikes
+- system.openssh.server.team.members.psvimbersky
+
 parameters:
   linux:
     system:
@@ -12,141 +35,12 @@
           sudo: true
           full_name: Adam Skotnicky
           home: /home/askotnicky
-        alholanova:
-          enabled: true
-          name: alholanova
-          sudo: true
-          full_name: Alenka Aja Sfinga Holanova
-          home: /home/alholanova
-        vmikes:
-          enabled: true
-          name: vmikes
-          sudo: true
-          full_name: Vlasta Mikes
-          home: /home/vmikes
-        newt:
-          enabled: true
-          name: newt
-          sudo: true
-          full_name: Ales Komarek
-          home: /home/newt
-          email: mail@newt.cz
-        jpavlik:
-          enabled: true
-          name: jpavlik
-          sudo: true
-          full_name: Jakub Pavlik
-          home: /home/jpavlik
-        tux:
-          enabled: true
-          name: tux
-          sudo: true
-          full_name: Adam Tengler
-          home: /home/tux
-        marco:
-          enabled: true
-          name: marco
-          sudo: true
-          full_name: Marek Celoud
-          home: /home/marco
-        filip:
-          enabled: true
-          name: filip
-          sudo: true
-          full_name: Filip Pytloun
-          home: /home/filip
-          email: filip@pytloun.cz
         vzach:
           enabled: true
           name: vzach
           sudo: true
           full_name: Vlastimil Zach
           home: /home/vzach
-        osmola:
-          enabled: true
-          name: osmola
-          sudo: true
-          full_name: Ondrej Smola
-          home: /home/osmola
-        pcizinsky:
-          enabled: true
-          name: pcizinsky
-          sudo: true
-          full_name: Pavel Cizinsky
-          home: /home/pcizinsky
-        pjediny:
-          enabled: true
-          name: pjediny
-          sudo: true
-          full_name: Petr Jediny
-          home: /home/pjediny
-        jjosef:
-          enabled: true
-          name: jjosef
-          sudo: true
-          full_name: Jakub Josef
-          home: /home/jjosef
-          email: jakub.josef@gmail.com
-        pmichalec:
-          enabled: true
-          name: pmichalec
-          sudo: true
-          full_name: Petr Michalec
-          home: /home/pmichalec
-        jbroulik:
-          enabled: true
-          name: jbroulik
-          sudo: true
-          full_name: Jiri Broulik
-          home: /home/jbroulik
-        rfelkl:
-          enabled: true
-          name: rfelkl
-          sudo: true
-          full_name: Richard Felkl
-          home: /home/rfelkl
-        tkukral:
-          enabled: true
-          name: tkukral
-          sudo: true
-          full_name: Tomas Kukral
-          home: /home/tkukral
-        mpolreich:
-          enabled: true
-          name: mpolreich
-          sudo: true
-          full_name: Martin Polreich
-          home: /home/mpolreich
-        skreys:
-          enabled: true
-          name: skreys
-          sudo: true
-          full_name: Sergey Kreys
-          home: /home/skreys
-        jcach:
-          enabled: true
-          name: jcach
-          sudo: true
-          full_name: Jan Cach
-          home: /home/jcach
-        lmercl:
-          enabled: true
-          name: lmercl
-          sudo: true
-          full_name: Lubos Mercl
-          home: /home/lmercl
-        smatov:
-          enabled: true
-          name: smatov
-          sudo: true
-          full_name: Sergey Matov
-          home: /home/smatov
-        dcech:
-          enabled: true
-          name: dcech
-          sudo: true
-          full_name: Daniel Cech
-          home: /home/dcech
       group:
         libvirtd:
           enabled: true
@@ -160,160 +54,13 @@
           public_keys:
           - ${public_keys:askotnicky}
           user: ${linux:system:user:askotnicky}
-        alholanova:
-          enabled: true
-          public_keys:
-          - ${public_keys:alholanova}
-          user: ${linux:system:user:alholanova}
-        vmikes:
-          enabled: true
-          public_keys:
-          - ${public_keys:vmikes}
-          user: ${linux:system:user:vmikes}
-        newt:
-          enabled: true
-          public_keys:
-          - ${public_keys:newt}
-          user: ${linux:system:user:newt}
-        jpavlik:
-          enabled: true
-          public_keys:
-          - ${public_keys:jpavlik}
-          user: ${linux:system:user:jpavlik}
-        tux:
-          enabled: true
-          public_keys:
-          - ${public_keys:tux}
-          user: ${linux:system:user:tux}
-        marco:
-          enabled: true
-          public_keys:
-          - ${public_keys:marco}
-          user: ${linux:system:user:marco}
-        filip:
-          enabled: true
-          public_keys:
-          - ${public_keys:filip}
-          user: ${linux:system:user:filip}
-        jjosef:
-          enabled: true
-          public_keys:
-          - ${public_keys:jjosef}
-          user: ${linux:system:user:jjosef}
         vzach:
           enabled: true
           public_keys:
           - ${public_keys:vzach}
           user: ${linux:system:user:vzach}
-        osmola:
-          enabled: true
-          public_keys:
-          - ${public_keys:osmola}
-          user: ${linux:system:user:osmola}
-        pcizinsky:
-          enabled: true
-          public_keys:
-          - ${public_keys:pcizinsky}
-          user: ${linux:system:user:pcizinsky}
-        pjediny:
-          enabled: true
-          public_keys:
-          - ${public_keys:pjediny}
-          user: ${linux:system:user:pjediny}
-        pmichalec:
-          enabled: true
-          public_keys:
-          - ${public_keys:pmichalec}
-          user: ${linux:system:user:pmichalec}
-        jbroulik:
-          enabled: true
-          public_keys:
-          - ${public_keys:jbroulik}
-          user: ${linux:system:user:jbroulik}
-        rfelkl:
-          enabled: true
-          public_keys:
-          - ${public_keys:rfelkl}
-          user: ${linux:system:user:rfelkl}
-        tkukral:
-          enabled: true
-          public_keys:
-          - ${public_keys:tkukral}
-          user: ${linux:system:user:tkukral}
-        mpolreich:
-          enabled: true
-          public_keys:
-          - ${public_keys:mpolreich}
-          user: ${linux:system:user:mpolreich}
-        skreys:
-          enabled: true
-          public_keys:
-          - ${public_keys:skreys}
-          user: ${linux:system:user:skreys}
-        jcach:
-          enabled: true
-          public_keys:
-          - ${public_keys:jcach}
-          user: ${linux:system:user:jcach}
-        lmercl:
-          enabled: true
-          public_keys:
-          - ${public_keys:lmercl}
-          user: ${linux:system:user:lmercl}
-        smatov:
-          enabled: true
-          public_keys:
-          - ${public_keys:smatov}
-          user: ${linux:system:user:smatov}
-        dcech:
-          enabled: true
-          public_keys:
-          - ${public_keys:dcech}
-          user: ${linux:system:user:dcech}
   public_keys:
     askotnicky:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO6EnDYaGdF/Nn6lntxDNnKanCsheZRdh8kA/6ImyeRSjT2cgepm1Fsgv7wXBYoy0OxhB5wgCp5Az/Pj4oLkG3g+G05sUPUxxGCGRiwjcnyQ/FTz4TzHglAVqgbdgWoQYf9Hg6EKZovvPcH3STbEwcl+MhLqvxz0wm5+StE+wvp6I9dEfRV+2/e1uepauOTZ1+Ui1DMNXiMefTlbiIBHzUk7RiwJWgqzQXBndgunmbJWSed8zC0Ug97waDOFIX/oKZmAmsv0NLJ2e/kC3oUTuziGT74F9sh7Pqiw/9HZxvP45hJwEvytfUjfuiikIBbmYdF7Je93czaG/qjXGN8YvP== a.skotnicky@tcpisek.cz
-    alholanova:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqBL5wlpl0HgT6ekRc9IGxMSCylAU1oZTqBl7h9+1g7EnJjhxq8/KR+6jmWl9wn0c2jvd2pPeMnqm3DKe0793RKW6b730QTyckwDpfoIkUtoukiuTgIXg0g6dNlWSPqhiYM1tretBhfEhZrvUfweZZfpOdZ5DxlDP/34cmwXxJRMNHSLK/SPpXthhp+2j/H/U6I6B/YUZkKABwSyJ/AuXfU9NvVXct5W2+i44FuB7ske7vRXJgbfTwRd5HgzF7JQTVBDLezN/am2dR0mCnuDkDRmYW0tOwF0NzwswBwMGfqFlQhNW/5HmanEfU1gBL/sv/M6QiN0MkrzY1fA6DiCER alena.holanova@tcpcloud.eu
-    vmikes:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXng0oUbSGMlZCamlSWuc4jzgTym+p9u0ukbQvaWW2cneOhLw6QbVkOgRETBIfXitiIB+5nNqTYy7lrYqc3wofjZJzonR07oFoNcyhITLnKjLHV9eZ8aRhwKL2PONyp8d61cdm5zqeth1tMP8uBB+SOn+aD12Hu5tfTJjQeH286p+Xt75Llo/bHybfYmt2HaV9Ts6qb/Kw3Eom0Jkjh8837navek/PnFF7WAkM8GvP5Taqzp4Tmu2UfLeMv4459q+ZiS56WRbcixBQGb7uUUy4jkuis0batBNoY0pwMaaTj8KzSwrQ8shc/LuU2QhR7xwXVIgZR/Yqa/Ojw/U36N4t v.mikes@tcpisek.cz
-    newt:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
-    jpavlik:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAylDZDzgMuEsJQpwFHDW+QivCVhryxXd1/HWqq1TVhJmT9oNAYdhUBnf/9kVtgmP0EWpDJtGSEaSugCmx8KE76I64RhpOTlm7wO0FFUVnzhFtTPx38WHfMjMdk1HF8twZU4svi72Xbg1KyBimwvaxTTd4zxq8Mskp3uwtkqPcQJDSQaZYv+wtuB6m6vHBCOTZwAognDGEvvCg0dgTU4hch1zoHSaxedS1UFHjUAM598iuI3+hMos/5hjG/vuay4cPLBJX5x1YF6blbFALwrQw8ZmTPaimqDUA9WD6KSmS1qg4rOkk4cszIfJ5vyymMrG+G3qk5LeT4VrgIgWQTAHyXw== pavlk.jakub@gmail.com
-    tux:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXEN5qmte4oMYFCMZtuNzWiu5M32Dp0OsfR1pSz5gMMQF1Sw3xEDXEATEWhyvJTuVtFQasWVcMCYzEPev8H54UK97dLlxHxEDD9PQYY2O+xu/Rq+p/jryJ/T3mO7LDjUUXtHkUnsDZ51G+sFAWktE+FifwrEDmAEnRucLqOzVhehelG73S3uqfxVsPTsW2CcVIZICKtvdODbgAVyCf1LRR0LJv4fXqcyebCbzIrk4NWJhc474TH88niC7PH5VfxSfXZdKoi3yKVMgqdGSUxGhkx3D5CwCR9K+kUnP0rE5GNIqoCiS8iNbWl6POfMPSxH/ckqZN1h8El6SEoPJzVNp9 tux@tux-workbook
-    marco:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmrJJsRR1dIqaomk83+sn5OnRLvVqrxtROT2uO83W0C4036t3OfJEBL2COJ4Z1iQmyoQUcIpRdJns+Ft8GpVEEQ+mW4eo33jhVEkfLBzRTE7f/WqDmMeDbdxO7LdUNlIIc40KBPcnJWvEorqV2z2UF0+xqittTE34A3CgF82BI2Nx6vCNhgnJJnCyYisD+wT4f+Ovor3Rm2s6zdnJRqcLgx5lkNx6fM2ffkD36MjyPyVYWvFqw68kEsBPcpB0EmiINKQRg3A/iPvUgRWMl9nSvSMVopkbTOBpSK3H9hzGCLiQJvE8pGjHhb7SOix0p0sFdNrNRiC5ayaGQUDQgWH8h marco@marco-MS-7699
-    filip:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCcuHTjJ3CoWdkmvtag07bIWeyAMqFLAN+QApat7TXUcDYmm/neK4Asg3m/UicofZnB80cI4tjnB84Z8WazLHMxVTLwHbEqTVbXVeKebiZ5yn0yo4ndRzmppUfSvs0xcMysBwu+hYAnIDXTedctbciMSYKbuQ+b9XZ4mFZ/2RHG4QBA/dPUxJdCwvkBu7AOV+6zaRSR99UETr5nxICQUGVJBTy6VkCsch4mK3/K2SrujODUhytcROg+6ejV/aZHWH9xIFRBLfhmSFeOC6oneBWo4QBQ2tTZgb7Go744JpkhkoMfWQnR2s6cCgUN60BJ6j5snqmbv9/2CmgbI4UprC+E6lL04K/Jbgjv+fi3KqnCIpRiQzahmjSeeYdPducWme3BVDceUSb5EzF/RjSDi4yHcTWJS0TcPf195p42O1G6tLw5zfmIu2+PWUq1L4pLualboUbaDtwqg0WaLWKONi9tJkOS1OMz4hxqEbWBAtFNJLHC5K+OXcV8Yt6C7iB2dEZ4c26MAi1pdMqhFjxYiCGYKZ4lyV9xo8tWcs5fiUIi2PKyLQ9SMRQbhXIcb9ENby2D/ijh5AVpbBew8iaUQQKg83Yo0z2PwTWyNFuXECAl667XaTNZEMVUjo5yU/OtktVZiH6ZfvEFwj+7OpLBiZ3sFgp/7EHcGXa0FL6BcXuwfQ== filip@pytloun.cz
     vzach:
-      key: AAAAB3NzaC1yc2EAAAABJQAAAQEAn4MJUkXbiZPPEcdKijB4MqnjPGk80x5W+8XsMvZuUqElmuLgB30kdCnSCBgipYPor3m8wakdJTTwiY6P50yhtp/tD2b4t1TC1djPwiNS/6JwjZawj30bS5ZrVKeTHtOq6E0tf927svXgEE21/ADgWpMoDeQ/pKlbt0m/U8YGBCmJ7cBa8ggGHhvJIwCNhpELn02vKV8Qfx44rk+DoxLBwQUHQ8PsEwtoSCLMIulpLflptak1pgvN6ggA5p15i36OyJkobI1yR9YEgtb+8yQqofu2DZ+v+9Qhbb+C0446RnyGzfvk/DreCeI4rJh5/6QZjwv3XfYDER5LbNCnoOQAsQ== v.zach@tcpcloud.eu
-    osmola:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGcF8AI/8hOeKlda4vniFVBbD3wOK4D2+/z+pB7kK0JyxfVC3XccYbpqQioWjt96JwDX8dSio07OUAFqOWQH2cTp6wjqNmpIaAODo44kQgKDXrjEq61fYW+L6JYZHxsFUPLvlNlwQwND2F5HU8oWbsneGu+Psb/COQebcGDdT1v/f2G9r5br2O43P/XPx8+YGKd+OiHPIN4Fk8fZzCGX7oJ7GGGr8YTL/Y8ULF3WiTXbQEWusU52Sf7/Is0A6BQOH+OuBGrVCT+j2XI9QBMyVSYtaKCnRDlEGessnGIGRGrNza/xYivWBw8IsVziDC8x7zZByAwmctWoWED6wWs4YU7SqoonEaYEog32J6Uw9tGtTgvkRC1mpMtgR2eenjNax8Fpoc6uTb/l0gevaRE6IqNMS0FBIIbkCYcoxfj7zIsYms/9IhsXGk1lW5ZrouCFICGEVa7zJ2F+3DvyQDCSuqsk/bfUQZEFw1FdAYIsZYQR+LIOSVQplapGVyqhlbkeUEVdILzgdMAfkPa80ZnGvTO729G/8uP78k1QhZUHAypkeWQ/aJfOKrxXyAxtMZiuyK31zf4OZdKSDS9bAWlmyKkohp7cEjLU0ex4AYDS231Y6JywL+RnucMJ4gFqSfSYfkM6+23gFbYfP7NcEKrkCaim/9RMU1RsunBk8As2K5gw== ondrej.smola@tcpcloud.eu
-    pcizinsky:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt9HA2bUwCVGGdUjyFzdPFp0j2z9XanLW9gHZ3BhB6Wc4ficU6zmbqYxrHUvdmUrRJbLMEAo9JDlzAIw4CPGhRkD3d7HfnmlEYcEeizLnnC+CmKo3+mrwkQIzWIz6PJOh1kvp5uaNp4ztjRGXXmPzcR0nk4jRD89gLHvH9EYStxZI6nsi3mmWR/LhgIhijb8p63duhE4HuK/RRRjeDQaUsbTG9TMEskY5ZI3p/QM55wlml9F8QJrtwxpaIPI5Fl8lflq+4YcoqgDIBFc6nwubIuiNY4gPJ8s1SQfsfxHSOJpFPZDwi76dxUpthtJrU46fqRvXPzTKoS29WZ5pSAY6p pavel.cizinsky@tcpcloud.eu
-    jjosef:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkK55PVyvnhW2XiIyDUTWOaW1frsd7g9t8SLRmjtEjKqJOBaRk48bSUfcV2twGcSOq3E2dUikh3URobYIZ6WBEiWrl1e7MYCJJAE+8qzVoskk01mC6tp9HGbsSRKrZTgpjzReM+kN6jffi/P1rSqgeg4U0O99N2aWqdfc7UJPFM09z9nqfB1Gj4HUnBkC1X+di4U3S6W8q62JLgxuK2MAry3xSnPztFVH5OXXbBltdVIxshOHj9i8wyof9iFHGdjFNvB+c5I3RJ2HRmmmHm3zey9iHU7PNIppXKglUFZ0EKIB4LsDjL6xrEjo2A5tfCaVZLNJgP95tdbGEcYQuDv3N jakub.josef@gmail.com
-    pjediny:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEAgPX2oPwcmBMjf46UC+1vUBnKn9iBG88VD7lNiMN2UGBNihfCfSt4vOSNcVotyCSTrgm1dzHWN3nDt/fYiWvEimVE8VrawU9nJQ48o+M546SMCSYL9jqm+j+oSTd9CP7TeMgRw7hob+/vXREJVmol9cynsQei7HoFeo6iw7ZYMqgI1qOtHwN5Xep/7XZbQ0znweQY4hvywl47dK1GxnoQQUi1v30MzKRVIasf3cCMVr3qJ3ECxyQ2+Po/899jYLDdeJvJeG6dJQf1aDEDSHkoEjVup4jl5xu8y3jAYxOfKwMPe+Lb6lF3zRCB9QRZN71cxLVm+w7LfLtgLfsKv3xPeNpvvOvEQOdFg5jx9Z8w1KRkU2Zkc4fRTcWis89/9va3QL7W1pini3fM+WrpFatc02i7KjoJApeNQt0pwFl33DW+Zz8bQQZT7PT7LWNZjuvB4YmZYA6t9hj5rzUdUN2IyD2mNvPeNykdCLuFh7N7A67tpFSh48UHGld2ckdNmPQR8Ev50Fxu9jj13Cs4l3VMxzOF5I6VOS7g5vEKcCpIyDTtjSk4fGZhyeea5l8unCQzMw9UjkZjgy4nTZvxeqdRNnXSMrb0SzNuqbSM1J67GAUPxfxjb5HSmCYK/KSK3RXHrhwrW+t6B5x72KCCmYYJfUwofm6GIPEYGDxPL/VWGKM= pjediny key
-    pmichalec:
-      key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGwsfObHWHqBv6UQBjvm0nkgnAGc5MZPuQXJ3ln4sM1P pmichalec@dontpanic
-    jbroulik:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCBPHunnzTMg2I88ZIaiQ5eJYJRq/hQcB5UtDZTC7hO0ce+oEpftcLQiQ69xKbOPb5xiK6VMJd6a53gZykabMTov6y+nECMr4B1i6tgK1NPCU/sGhvsUKeiRo7ZVMScRPuJuTGRLjR6Ac3pRrwrWpmoRvJtLnbrvjEYlt9V7ui/VFkl7uiPQc3AjNiSkgBekDGtrqZktjUstEosucjfriF/PVtlZqha7d3rHLpK1KBzzaSMNMxCgBitEtqjgHLtcR1H/KgPQpYAwkokmvAGH8/fqcd+tpmp6hiH3k2Haf8EjVBTcw71fbmqC0rpL8/r74jyYAmkfPG8LISb/T9gPcV jiri@jiri-Mirantis
-    rfelkl:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlvQKWbEQ8bM2rtE35sA5+y//YKMLNJ48d+/RxWlUx6G8xJusUhrKZuMRMgN5NqJQ92Z0Yd2lulsPeKEfSbqAxBxmNZ+mAAy8w8P/BHlQImi2HgMpWtQ5yExsAvCUAqq6KclJBhzjArg4+ztmKmNvjM8ZktJYeCM8VJ+qT01B8/3+frgltIDCDcC8YpRwbAt7aLjuB2Jk5Q9daQbtZ4XyXwHgPDpyZUkcuueUk/iklUBkAh9P3CFJBpttXEyKI0+cJAtM9vCXXPWmWt7nFAyQ8nH9+lTv/ZuD+pipKJBW2sp8+fFUWJ/Z6GzWhyh2KxiY7eK3kgabg1i7FtLFtRbZj richard@richard-inspiron
-    tkukral:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRM6WquKic6i6v/JbNR2XuMqCCYqlfyGU1K7XHK7tWFordRLz2/o4S76sZULBTXR0rLHtynvHM4QHlloE1/XJnd0BtI/3y8aY0OkXyu6PHvTC8Az8SyGj2XAcaiPlaT2f+oTJHoPc9rxLhMMD7OTwias6QeVKB3UrT0OaHfy2wWCF7t8cQeofi2ldEHKeCsC1jrT1vaVuoThQgZ00h0rNk4COPZEW34FXdmdJFUmZcUIDMa71HtYgnn4gmE8sUiJ/j6ardvPaycCDT9j1GW1Yu6UVLBWOoMMCb04bDJiidlvY1fQqbM/G4cR4ZPHFZ0RQiM2+wnRaB5RCmBVgNT0Tj tkukral
-    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
-    skreys:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeg+Wj7yTBRLvsu2LKgdKyb6FW4n3t5me0LAZhGkP9mbsYonE5sN0OwI42ZPYeU1O35c+E4n3GJ4ZzdJYRUQJtqO5EHUMNyXELEcS8GZKydg5A0KPs69bB8SPVlTfO5D77sAWwG/3JIQD/uI21jqCp3a4lyEw5X2HjMbuz2Z4cW7Y69i73RdIYQdYb0X5+mqcVz8YEyuMZi2zweMxsvOczcanQ/4J6JKtC8imJu23Gr0TeS15OJCFh7yGviVp//LBzusXreqlEf7Tzx2yHkJ/rqULIIlPpBC1TFD7sgA72j3kq9rw3ZeQAwmaJA82L3KzagkgSQprEsRYnQ+wSWXkj skreys@skreys
-    jcach:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCwAqWUvMAPTh4euvGwhLU3GjlAHVzKvlclKdg1VqmWAZI1Nd+GjKhop5kS3hMk+HCg4bgfE5nAEsp3mF78c+XXDZot1T1Sxsd0SfatkMycXgeK4l1U6QtouNR//7wEv4gPA5la7T5ktgwk7hfjnc9Jl84yS8xA1d5gsgOhQw4wHYQquyOcOA5rN8ylh7P+tEfJSx4PWlfsu9M8IZU9WvftPxNbmUfVF+GuwPcNgbAtMi3Oz2Zg9+6W4gnwfJiufXU+onDa2e5tL8ZsGqEbTQXIx13sg0ilMIT6WpbTtbCe81oZYokAMGY2hlbubhtHgGSQhBI4/qgE7/CsD4TNtuOFTAy8Y6lzvoDsTzR51ApUFHHQEjlsf7AfQFJF3Mb5/fy84K0PF2chz4XwXeO9ZbUGOvY9P349gqyJRIV29V6b8m2aqKYIHO/CRxYk52H1UY9SlCsJq9G+7qjHbugV+35+Za1/RFc0l+80Ei/GnfkYYNxpxHNM6r4sM2mte00lWTQwaSreFIVz/fRlKiaok1hHwwUNxgifdtcdIm+7RGnBgV9MoNGYN4AESKTnj7tr6OIOSLaZm8YbPJDW3VmpSmwGfHpOfI00lfymbKsR5ytn6nTLVHOkfU6pI4+LpUc0Jb9+Szrn+5QA8bGp6yn2DTCzHNW/mR5rrHYUY6o9m8/W4w== casek@casek14NB
-    lmercl:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCy6mFrr4oNdLjT5wBZj1+KXNpdawnGGWEevDBQ2SWFjxBFujkWVLiW1kxLTpLVSnuoE5FB7doRIsT/CDe9IU5OhsJ+z6TT56R/pfVKrVnSB1rgrwqdezjgmYEM6kTWiH2GKJE0yiQEPgagK8Rz5Zl420JkhbFWnL7EGPhxNtmYMGDTZwUTzP0KYmytyeH15OqNIiBGTrp1t2bTrVB8HRnUp0uDpfoWAUnsijVGNe1j1bNKtDO0Z9LAWx3eUyxIk4cdpX/EeWJg8jNrSMxtAZZ7Hhm/WInNSNqcHcZ1rEYCAjENxo1WVOuA/aqUqc5xaAipWNon4Rk0e0IUAaFOfLvN2lIuilUZ5XKHDe7a2crkGPnotheT9FgaEHOeFtpuhSaygeZHTMR197jeocgjWIkPqHjVAGSQqQf0TAdNuN73QPTigbbfHWWc1d8KlCM5BqJUXMHPG6BasE1sI/4ykYbxN/DAEvVJ4+rdIlqSdedd73ZAseVQjDtpzD8diScGrpdOhZnTm43q89F8dIFv7tt1TjIwvfcDQNSBjyyKcYpj+NTyW2Zk7qWDVz+lzH0ToYk/rOKkGlrsRy7OwOnmyKR8IcIOL7Bowj895ThCX8tBrdLu/m55ojBOcZiCpawCm7K55ri1Ar6i8cO+bHDh11kKRa/utRRSQTpsW0sbCsamzQ== lubos@lubos-ThinkPad-X1
-    smatov:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgBHACRnY/VEEDFE63xDp4bx0zgWY4h1aB9/c2f962HtTNaQ6R/Cz6DLISaB5th8qzrzbvjn9WcpHdxyTm9BqkLLzB4qe7fnebPtn6zGczZ9Btrjk9R8Fuw6DZhSucSk572r/gVIY0O3Z1LajHkNr0ZTQS8AY3fgn8rXMD2vMOruOzyTOmfWKmEw7e+JYUqoFXHhE3Dd7hGQ99d6kH2N3zXfM2rzfjshGAq0kOi5dN4Hx6QIXZapt0t9TzpYTkK5SaVzuEVyVaKRLYSa/rdPjHkKqDFa99RcQ+OI93uvT9CFNWDFIC/TDJ2M+7PQbm836EICXXVWKjQ2NUnQJeOU5v smatov@ubuntu
-    dcech:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8A26XMLUnXkxv4e/vByD4W4PQ0ZdgGZz5Tg6G/fQKuSa+9zRucG6IlOchJPikwrDyTrojHTGAClHPuyr2bPIRrjFy4oUTZNdjiDptV99Zv/kHRStYzPyZ4KabnFLJVKNtyKKagk6Z3wpzEjFjRHWJK7A5bIzHfd7Amx/frdLKRo9YZjGbLnZRw6mWGqZYyp2/5a/5rKqH1BhMQggDGkAwFGWYQByZzk2F81nDnkt3CY3bi24gX90w4mgFjP8B0m0QCEhcGqpfOKsQTnIyBCtztEHBiUplzBN+RHS4dDOIEs9SWrXLiMFakWu1Vr6bUa7v5xGaNN8XAWjd3xdsy4hvJjJHU5HPaMY9MGH+N6W0UUZxIF0MuxDNP03MDM1uA5mRWTdwffARaDySYaEUrUEYJmzFAtk700Jv/Aav7QixLoIeKU9SAKYvVb7XNlMWgiswQdRPoiMpXPXPw+bMhjpimHJa4n0KFGAUO/cRD1dpJKybqxDe2ip57JzpFkm5PxuNht5qmEreKcS5dWQqm0fDE9wv8cCUMnWQv36f0IDeVpftmeDREatqXSeUjES7NFQOgIQW5C5Pl+8ZHTXw46c/uh89gUILJT2tS/mOXaU4mELox1Qv8vc/laoGAec+TGD0flf75LfiuLOK6JOYX0QVW13ko1wc3CyJzHOi1sFEAw== daniel.cech@tcpcloud.eu
\ No newline at end of file
+      key: AAAAB3NzaC1yc2EAAAABJQAAAQEAn4MJUkXbiZPPEcdKijB4MqnjPGk80x5W+8XsMvZuUqElmuLgB30kdCnSCBgipYPor3m8wakdJTTwiY6P50yhtp/tD2b4t1TC1djPwiNS/6JwjZawj30bS5ZrVKeTHtOq6E0tf927svXgEE21/ADgWpMoDeQ/pKlbt0m/U8YGBCmJ7cBa8ggGHhvJIwCNhpELn02vKV8Qfx44rk+DoxLBwQUHQ8PsEwtoSCLMIulpLflptak1pgvN6ggA5p15i36OyJkobI1yR9YEgtb+8yQqofu2DZ+v+9Qhbb+C0446RnyGzfvk/DreCeI4rJh5/6QZjwv3XfYDER5LbNCnoOQAsQ== v.zach@tcpcloud.eu
\ No newline at end of file
diff --git a/powerdns/server/single.yml b/powerdns/server/single.yml
new file mode 100644
index 0000000..13077de
--- /dev/null
+++ b/powerdns/server/single.yml
@@ -0,0 +1,6 @@
+classes:
+  - service.powerdns.server.single
+parameters:
+  powerdns:
+    server:
+      enabled: true
diff --git a/prometheus/alertmanager/container.yml b/prometheus/alertmanager/container.yml
new file mode 100644
index 0000000..e2fdcf7
--- /dev/null
+++ b/prometheus/alertmanager/container.yml
@@ -0,0 +1,3 @@
+classes:
+- service.prometheus.alertmanager.container
+- system.prometheus.alertmanager
diff --git a/prometheus/alertmanager/notification/pushkin.yml b/prometheus/alertmanager/notification/pushkin.yml
new file mode 100644
index 0000000..905a292
--- /dev/null
+++ b/prometheus/alertmanager/notification/pushkin.yml
@@ -0,0 +1,22 @@
+parameters:
+    _param:
+      alertmanager_notification_pushkin_host: ${_param:haproxy_pushkin_bind_host}
+      alertmanager_notification_pushkin_port: ${_param:haproxy_pushkin_bind_port}
+parameters:
+  prometheus:
+    alertmanager:
+      config:
+        route:
+          routes:
+            pushkin:
+              receiver: HTTP-pushkin
+              match_re:
+                - label: route
+                  value:  .+?
+        receiver:
+          HTTP-pushkin:
+            enabled: true
+            webhook_configs:
+              pushkin-vip:
+                url: "${_param:alertmanager_notification_pushkin_host}:${_param:alertmanager_notification_pushkin_port}/webhook?app=stacklight"
+                send_resolved: true
diff --git a/prometheus/exporters/jmx/init.yml b/prometheus/exporters/jmx/init.yml
new file mode 100644
index 0000000..4052201
--- /dev/null
+++ b/prometheus/exporters/jmx/init.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.exporters.jmx
diff --git a/prometheus/exporters/libvirt/init.yml b/prometheus/exporters/libvirt/init.yml
new file mode 100644
index 0000000..5686f44
--- /dev/null
+++ b/prometheus/exporters/libvirt/init.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.exporters.libvirt
diff --git a/prometheus/pushgateway/container.yml b/prometheus/pushgateway/container.yml
new file mode 100644
index 0000000..d0e986e
--- /dev/null
+++ b/prometheus/pushgateway/container.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.pushgateway.container
diff --git a/prometheus/remote_storage_adapter/container.yml b/prometheus/remote_storage_adapter/container.yml
new file mode 100644
index 0000000..f2afbf7
--- /dev/null
+++ b/prometheus/remote_storage_adapter/container.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.remote_storage_adapter.container
diff --git a/prometheus/server/alert/labels_add/route.yml b/prometheus/server/alert/labels_add/route.yml
new file mode 100644
index 0000000..47d9eea
--- /dev/null
+++ b/prometheus/server/alert/labels_add/route.yml
@@ -0,0 +1,9 @@
+parameters:
+  _param:
+    prometheus_server_alert_label_route: mail
+  prometheus:
+    server:
+      config:
+        alert:
+          labels_add:
+            route: ${_param:prometheus_server_alert_label_route}
diff --git a/prometheus/server/container.yml b/prometheus/server/container.yml
new file mode 100644
index 0000000..99873ad
--- /dev/null
+++ b/prometheus/server/container.yml
@@ -0,0 +1,3 @@
+classes:
+- service.prometheus.server.container
+- system.prometheus.server
diff --git a/prometheus/server/remote_write/docker.yml b/prometheus/server/remote_write/docker.yml
new file mode 100644
index 0000000..356f31f
--- /dev/null
+++ b/prometheus/server/remote_write/docker.yml
@@ -0,0 +1,8 @@
+parameters:
+  prometheus:
+    server:
+      config:
+        remote_write:
+          docker_remote_write:
+            enabled: true
+            url: http://monitoring_remote_storage_adapter:${prometheus:remote_storage_adapter:bind:port}/write
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
index 7bbf92e..e2745f1 100644
--- a/prometheus/server/target/dns.yml
+++ b/prometheus/server/target/dns.yml
@@ -20,3 +20,13 @@
               - 'tasks.monitoring_alertmanager'
               type: A
               port: ${prometheus:alertmanager:bind:port}
+            - name: 'remote_agent'
+              domain:
+              - 'tasks.monitoring_remote_agent'
+              type: A
+              port: ${telegraf:remote_agent:output:prometheus_client:bind:port}
+            - name: 'remote_storage_adapter'
+              domain:
+              - 'tasks.monitoring_remote_storage_adapter'
+              type: A
+              port: ${prometheus:remote_storage_adapter:bind:port}
diff --git a/rabbitmq/server/vhost/openstack.yml b/rabbitmq/server/vhost/openstack.yml
index 962bc0a..4320919 100644
--- a/rabbitmq/server/vhost/openstack.yml
+++ b/rabbitmq/server/vhost/openstack.yml
@@ -1,4 +1,7 @@
 parameters:
+  _param:
+    # Ceilometer samples are persisted up to 3 hours by default
+    rabbitmq_ceilometer_ttl: 10800000
   rabbitmq:
     server:
       host:
@@ -15,6 +18,10 @@
           user: openstack
           password: ${_param:rabbitmq_openstack_password}
           policies:
+          - name: Ceilometer
+            pattern: '^metering.sample$'
+            definition: '{"ha-mode": "all", "message-ttl": ${_param:rabbitmq_ceilometer_ttl}}'
+            priority: 10
           - name: HA
             pattern: '^(?!amq\.).*'
             definition: '{"ha-mode": "all", "message-ttl": 120000}'
diff --git a/reclass/storage/system/cicd_manager_cluster.yml b/reclass/storage/system/cicd_manager_cluster.yml
new file mode 100644
index 0000000..898e657
--- /dev/null
+++ b/reclass/storage/system/cicd_manager_cluster.yml
@@ -0,0 +1,29 @@
+parameters:
+  _param:
+    cicd_control_node02_hostname: cid01
+    cicd_control_node03_hostname: cid02
+  reclass:
+    storage:
+      node:
+        cicd_control_node02:
+          name: ${_param:cicd_control_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.cicd.control.manager
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:cicd_control_node02_address}
+            keepalived_vip_priority: 102
+            cicd_database_id: 2
+        cicd_control_node03:
+          name: ${_param:cicd_control_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.cicd.control.manager
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:cicd_control_node03_address}
+            keepalived_vip_priority: 101
+            cicd_database_id: 3
diff --git a/reclass/storage/system/infra_maas_single.yml b/reclass/storage/system/infra_maas_single.yml
new file mode 100644
index 0000000..eb5a96b
--- /dev/null
+++ b/reclass/storage/system/infra_maas_single.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    infra_maas_node01_hostname: mas01
+  reclass:
+    storage:
+      node:
+        infra_maas_node01:
+          name: ${_param:infra_maas_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.maas
+          params:
+            salt_master_host: ${_param:infra_config_deploy_address}
+            linux_system_codename: xenial
+            single_address: ${_param:infra_maas_node01_deploy_address}
+
diff --git a/reclass/storage/system/openstack_baremetal_cluster.yml b/reclass/storage/system/openstack_baremetal_cluster.yml
new file mode 100644
index 0000000..8cab119
--- /dev/null
+++ b/reclass/storage/system/openstack_baremetal_cluster.yml
@@ -0,0 +1,44 @@
+parameters:
+  _param:
+    openstack_baremetal_node01_hostname: bmt01
+    openstack_baremetal_node02_hostname: bmt02
+    openstack_baremetal_node03_hostname: bmt03
+
+    openstack_baremetal_node01_baremetal_address: ${_param:single_address}
+    openstack_baremetal_node02_baremetal_address: ${_param:single_address}
+    openstack_baremetal_node03_baremetal_address: ${_param:single_address}
+  reclass:
+    storage:
+      node:
+        openstack_baremetal_node01:
+          name: ${_param:openstack_baremetal_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.baremetal
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_baremetal_node01_address}
+            baremetal_address: ${_param:openstack_baremetal_node01_baremetal_address}
+        openstack_baremetal_node02:
+          name: ${_param:openstack_baremetal_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.baremetal
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_baremetal_node02_address}
+            baremetal_address: ${_param:openstack_baremetal_node02_baremetal_address}
+        openstack_baremetal_node03:
+          name: ${_param:openstack_baremetal_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.baremetal
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_baremetal_node03_address}
+            baremetal_address: ${_param:openstack_baremetal_node03_baremetal_address}
+
+
diff --git a/reclass/storage/system/openstack_baremetal_single.yml b/reclass/storage/system/openstack_baremetal_single.yml
new file mode 100644
index 0000000..3b279b0
--- /dev/null
+++ b/reclass/storage/system/openstack_baremetal_single.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    openstack_baremetal_node01_hostname: bmt01
+  reclass:
+    storage:
+      node:
+        openstack_baremetal_node01:
+          name: ${_param:openstack_baremetal_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.baremetal
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_baremetal_node01_address}
+            baremetal_address: ${_param:openstack_baremetal_node01_baremetal_address}
diff --git a/reclass/storage/system/openstack_control_single.yml b/reclass/storage/system/openstack_control_single.yml
new file mode 100644
index 0000000..016ab96
--- /dev/null
+++ b/reclass/storage/system/openstack_control_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    openstack_control_node01_hostname: ctl01
+  reclass:
+    storage:
+      node:
+        openstack_control_node01:
+          name: ${_param:openstack_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:openstack_control_node01_address}
diff --git a/reclass/storage/system/openstack_gateway_single_octavia.yml b/reclass/storage/system/openstack_gateway_single_octavia.yml
new file mode 100644
index 0000000..2a5b952
--- /dev/null
+++ b/reclass/storage/system/openstack_gateway_single_octavia.yml
@@ -0,0 +1,7 @@
+parameters:
+  reclass:
+    storage:
+      node:
+        openstack_gateway_node01:
+          classes:
+          - cluster.${_param:cluster_name}.openstack.octavia_manager
diff --git a/reclass/storage/system/stacklight_log_cluster.yml b/reclass/storage/system/stacklight_log_cluster.yml
index 4a5da29..bbb6a6b 100644
--- a/reclass/storage/system/stacklight_log_cluster.yml
+++ b/reclass/storage/system/stacklight_log_cluster.yml
@@ -22,6 +22,7 @@
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.log
+          - cluster.${_param:cluster_name}.stacklight.log_curator
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
@@ -32,6 +33,7 @@
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.log
+          - cluster.${_param:cluster_name}.stacklight.log_curator
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
diff --git a/rundeck/client/project/cicd.yml b/rundeck/client/project/cicd.yml
index e33fcae..cb427d8 100644
--- a/rundeck/client/project/cicd.yml
+++ b/rundeck/client/project/cicd.yml
@@ -1,4 +1,14 @@
 parameters:
+  _param:
+    rundeck_cis_os_auth_url: none
+    rundeck_cis_os_username: admin
+    rundeck_cis_os_password: password
+    rundeck_cis_os_project_name: admin
+    rundeck_cis_os_domain_id: default
+    rundeck_cis_jobs_repository: https://gerrit.mcp.mirantis.net/oss/rundeck-cis-jobs
+    rundeck_cis_jobs_revision: master
+    rundeck_cis_elasticsearch_url: none
+    rundeck_cis_os_docker_image: docker-prod-local.artifactory.mirantis.com/mirantis/oss/cis-openstack:latest
   rundeck:
     client:
       project:
@@ -20,3 +30,29 @@
               hostname: ${_param:cluster_node03_address}
               username: ${_param:rundeck_runbook_user}
               tags: [cicd, docker]
+          plugin:
+            import:
+              address: ${_param:rundeck_cis_jobs_repository}
+              branch: ${_param:rundeck_cis_jobs_revision}
+      secret:
+        cis/elasticsearch/url:
+          type: password
+          content: ${_param:rundeck_cis_elasticsearch_url}
+        cis/openstack/auth_url:
+          type: password
+          content: ${_param:rundeck_cis_os_auth_url}
+        cis/openstack/username:
+          type: password
+          content: ${_param:rundeck_cis_os_username}
+        cis/openstack/password:
+          type: password
+          content: ${_param:rundeck_cis_os_password}
+        cis/openstack/project_name:
+          type: password
+          content: ${_param:rundeck_cis_os_project_name}
+        cis/openstack/domain_id:
+          type: password
+          content: ${_param:rundeck_cis_os_domain_id}
+        cis/openstack/image:
+          type: password
+          content: ${_param:rundeck_cis_os_docker_image}
diff --git a/rundeck/client/runbook.yml b/rundeck/client/runbook.yml
index cb94025..773673b 100644
--- a/rundeck/client/runbook.yml
+++ b/rundeck/client/runbook.yml
@@ -9,8 +9,14 @@
           name: ${_param:rundeck_runbook_user}
           system: true
           sudo: true
+          groups:
+            - docker
           full_name: Rundeck Remote
           home: /var/lib/runbook
+      group:
+        docker:
+          enabled: true
+          name: docker
   openssh:
     server:
       enabled: true
@@ -20,3 +26,5 @@
           public_keys:
             - key: ${_param:rundeck_runbook_public_key}
           user: ${linux:system:user:runbook}
+      accept_env:
+        - RD_OPTION_*
diff --git a/rundeck/server/docker.yml b/rundeck/server/docker.yml
index 3406b6a..1c89f4f 100644
--- a/rundeck/server/docker.yml
+++ b/rundeck/server/docker.yml
@@ -2,6 +2,12 @@
   - service.rundeck.common
   - service.rundeck.server.single
 parameters:
+  _param:
+    rundeck_postgresql_username: rundeck
+    rundeck_postgresql_password: password
+    rundeck_postgresql_database: rundeck
+    rundeck_postgresql_host: ${_param:control_vip_address}
+    rundeck_postgresql_port: 5432
   rundeck:
     server:
       user:
@@ -9,6 +15,13 @@
         gid: 550
       home_dir: /srv/volumes/rundeck
       root_dir: /srv/volumes/rundeck
+      datasource:
+        engine: postgresql
+        host: ${_param:rundeck_postgresql_host}
+        port: ${_param:rundeck_postgresql_port}
+        username: ${_param:rundeck_postgresql_username}
+        password: ${_param:rundeck_postgresql_password}
+        database: ${_param:rundeck_postgresql_database}
       api:
         host: ${_param:haproxy_rundeck_bind_host}
         port: ${_param:haproxy_rundeck_bind_port}
diff --git a/salt/control/cluster/infra_maas_single.yml b/salt/control/cluster/infra_maas_single.yml
new file mode 100644
index 0000000..d8675e8
--- /dev/null
+++ b/salt/control/cluster/infra_maas_single.yml
@@ -0,0 +1,20 @@
+parameters:
+  salt:
+    control:
+      size:
+        infra.maas:
+          cpu: 4
+          ram: 8192
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            mas01:
+              name: ${_param:infra_maas_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: infra.maas
+
diff --git a/salt/control/cluster/openstack_baremetal_cluster.yml b/salt/control/cluster/openstack_baremetal_cluster.yml
new file mode 100644
index 0000000..609be28
--- /dev/null
+++ b/salt/control/cluster/openstack_baremetal_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.baremetal:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            bmt01:
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.baremetal
+            bmt02:
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.baremetal
+            bmt03:
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.baremetal
diff --git a/salt/control/cluster/openstack_baremetal_single.yml b/salt/control/cluster/openstack_baremetal_single.yml
new file mode 100644
index 0000000..5ff00f5
--- /dev/null
+++ b/salt/control/cluster/openstack_baremetal_single.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.baremetal:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            bmt01:
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.baremetal
diff --git a/salt/control/cluster/openstack_gateway_cluster.yml b/salt/control/cluster/openstack_gateway_cluster.yml
index 5d2a20a..efc7215 100644
--- a/salt/control/cluster/openstack_gateway_cluster.yml
+++ b/salt/control/cluster/openstack_gateway_cluster.yml
@@ -13,14 +13,14 @@
           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
             gtw02:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
             gtw03:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
diff --git a/salt/master/formula/git/baremetal.yml b/salt/master/formula/git/baremetal.yml
new file mode 100644
index 0000000..80909e4
--- /dev/null
+++ b/salt/master/formula/git/baremetal.yml
@@ -0,0 +1,14 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            ironic:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-ironic.git'
+              revision: ${_param:salt_master_environment_revision}
+            tftpd_hpa:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-tftpd-hpa.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/foundation.yml b/salt/master/formula/git/foundation.yml
index 7e21699..dbc7d19 100644
--- a/salt/master/formula/git/foundation.yml
+++ b/salt/master/formula/git/foundation.yml
@@ -54,3 +54,7 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-openldap.git'
               revision: ${_param:salt_master_environment_revision}
+            powerdns:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-powerdns.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/openstack.yml b/salt/master/formula/git/openstack.yml
index 36ddfc2..9173a4a 100644
--- a/salt/master/formula/git/openstack.yml
+++ b/salt/master/formula/git/openstack.yml
@@ -92,6 +92,10 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-nova.git'
               revision: ${_param:salt_master_environment_revision}
+            octavia:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-octavia.git'
+              revision: ${_param:salt_master_environment_revision}
             opencontrail:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-opencontrail.git'
diff --git a/salt/master/formula/git/oss.yml b/salt/master/formula/git/oss.yml
index e927387..64f3e54 100644
--- a/salt/master/formula/git/oss.yml
+++ b/salt/master/formula/git/oss.yml
@@ -1,7 +1,4 @@
 parameters:
-  _param:
-    salt_master_oss_repository: https://gerrit.mcp.mirantis.net/salt-formulas
-    salt_master_oss_revision: master
   salt:
     master:
       environment:
@@ -12,8 +9,8 @@
                 devops_utils.py:
                   enabled: true
               source: git
-              address: '${_param:salt_master_oss_repository}/devops-portal.git'
-              revision: ${_param:salt_master_oss_revision}
+              address: '${_param:salt_master_environment_repository}/salt-formula-devops-portal.git'
+              revision: ${_param:salt_master_environment_revision}
             rundeck:
               module:
                 rundeck.py:
@@ -21,6 +18,12 @@
               state:
                 rundeck_project.py:
                   enabled: true
+              state:
+                rundeck_scm.py:
+                  enabled: true
+              state:
+                rundeck_secret.py:
+                  enabled: true
               source: git
-              address: '${_param:salt_master_oss_repository}/rundeck.git'
-              revision: ${_param:salt_master_oss_revision}
+              address: '${_param:salt_master_environment_repository}/salt-formula-rundeck.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/saltstack.yml b/salt/master/formula/git/saltstack.yml
index d0ca453..ebcf96f 100644
--- a/salt/master/formula/git/saltstack.yml
+++ b/salt/master/formula/git/saltstack.yml
@@ -47,3 +47,15 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-sphinx.git'
               revision: ${_param:salt_master_environment_revision}
+            xtrabackup:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-xtrabackup.git'
+              revision: ${_param:salt_master_environment_revision}
+            zookeeper:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-zookeeper.git'
+              revision: ${_param:salt_master_environment_revision}
+            cassandra:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-cassandra.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/pkg/baremetal.yml b/salt/master/formula/pkg/baremetal.yml
new file mode 100644
index 0000000..3899fe7
--- /dev/null
+++ b/salt/master/formula/pkg/baremetal.yml
@@ -0,0 +1,12 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            ironic:
+              source: pkg
+              name: salt-formula-ironic
+            tftpd_hpa:
+              source: pkg
+              name: salt-formula-tftpd-hpa
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 3eed5e9..3111419 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -28,6 +28,9 @@
             openldap:
               source: pkg
               name: salt-formula-openldap
+            powerdns:
+              source: pkg
+              name: salt-formula-powerdns
             lldp:
               source: pkg
               name: salt-formula-lldp
diff --git a/salt/master/formula/pkg/openstack.yml b/salt/master/formula/pkg/openstack.yml
index b1222d1..827f096 100644
--- a/salt/master/formula/pkg/openstack.yml
+++ b/salt/master/formula/pkg/openstack.yml
@@ -70,6 +70,9 @@
             nova:
               source: pkg
               name: salt-formula-nova
+            octavia:
+              source: pkg
+              name: salt-formula-octavia
             opencontrail:
               source: pkg
               name: salt-formula-opencontrail
diff --git a/salt/master/formula/pkg/saltstack.yml b/salt/master/formula/pkg/saltstack.yml
index eeff26b..a62a272 100644
--- a/salt/master/formula/pkg/saltstack.yml
+++ b/salt/master/formula/pkg/saltstack.yml
@@ -37,3 +37,12 @@
             sphinx:
               source: pkg
               name: salt-formula-sphinx
+            xtrabackup:
+              source: pkg
+              name: salt-formula-xtrabackup
+            zookeeper:
+              source: pkg
+              name: salt-formula-zookeeper
+            cassandra:
+              source: pkg
+              name: salt-formula-cassandra
diff --git a/salt/minion/ca/octavia_ca.yml b/salt/minion/ca/octavia_ca.yml
new file mode 100644
index 0000000..ac66bec
--- /dev/null
+++ b/salt/minion/ca/octavia_ca.yml
@@ -0,0 +1,29 @@
+parameters:
+  _param:
+    octavia_ca_common_name: Octavia CA
+    octavia_ca_country: cz
+    octavia_ca_locality: Prague
+    octavia_ca_organization: Mirantis
+    octavia_ca_days_valid_authority: 3650
+    octavia_ca_days_valid_certificate: 365
+  salt:
+    minion:
+      ca:
+        octavia_ca:
+          common_name: ${_param:octavia_ca_common_name}
+          country: ${_param:octavia_ca_country}
+          locality: ${_param:octavia_ca_locality}
+          organization: ${_param:octavia_ca_organization}
+          signing_policy:
+            cert_server:
+              type: v3_edge_cert_server
+              minions: '*'
+            cert_client:
+              type: v3_edge_cert_client
+              minions: '*'
+            cert_open:
+              type: v3_edge_cert_open
+              minions: '*'
+          days_valid:
+            authority: ${_param:octavia_ca_days_valid_authority}
+            certificate: ${_param:octavia_ca_days_valid_certificate}
diff --git a/salt/minion/cert/octavia_amp_client.yml b/salt/minion/cert/octavia_amp_client.yml
new file mode 100644
index 0000000..5219450
--- /dev/null
+++ b/salt/minion/cert/octavia_amp_client.yml
@@ -0,0 +1,21 @@
+parameters:
+  _param:
+    octavia_ca_hostname: ${linux:system:name}
+    octavia_ca_host: ${_param:octavia_ca_hostname}.${_param:cluster_domain}
+    octavia_ca_authority: octavia_ca
+  salt:
+    minion:
+      cert:
+        octavia_amp_client:
+          host: ${_param:octavia_ca_host}
+          authority: ${_param:octavia_ca_authority}
+          common_name: octavia_amp_client
+          signing_policy: cert_open
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          ca_file: ${octavia:manager:certificates:ca_certificate}
+          ca_key_file: ${octavia:manager:certificates:ca_private_key}
+          key_file: ${octavia:manager:haproxy_amphora:client_cert_key}
+          cert_file: ${octavia:manager:haproxy_amphora:client_cert}
+          all_file: ${octavia:manager:haproxy_amphora:client_cert_all}
+          user: octavia
+          group: octavia
diff --git a/salt/minion/cert/rabbitmq_server.yml b/salt/minion/cert/rabbitmq_server.yml
new file mode 100644
index 0000000..59972fe
--- /dev/null
+++ b/salt/minion/cert/rabbitmq_server.yml
@@ -0,0 +1,22 @@
+parameters:
+
+  _param:
+    salt_minion_ca_host: cfg01.${_param:cluster_domain}
+    salt_minion_ca_authority: salt_master_ca
+
+  salt:
+    minion:
+        cert:
+          rabbitmq_server:
+            host: ${_param:salt_minion_ca_host}
+            authority: ${_param:salt_minion_ca_authority}
+            common_name: rabbitmq_server
+            signing_policy: cert_open
+            alternative_names: IP:127.0.0.1,IP:${_param:cluster_local_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+            key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+            key_file: ${rabbitmq:server:ssl:key_file}
+            cert_file: ${rabbitmq:server:ssl:cert_file}
+            all_file: ${rabbitmq:server:ssl:all_file}
+            ca_file: ${rabbitmq:server:ssl:ca_file}
+            user: rabbitmq
+            group: rabbitmq
\ No newline at end of file
diff --git a/sensu/server/cluster.yml b/sensu/server/cluster.yml
index 28eb78b..5c8fe85 100644
--- a/sensu/server/cluster.yml
+++ b/sensu/server/cluster.yml
@@ -11,6 +11,15 @@
     rabbitmq_cold_password: password
     rabbitmq_monitor_password: password
     sensu_message_queue_host: ${_param:cluster_vip_address}
+    cluster_redis_port: 6379
+  sensu:
+   server:
+     bind:
+       address: ${_param:single_address}
+     database:
+       engine: redis
+       host: ${_param:cluster_vip_address}
+       port: ${_param:cluster_redis_port}
   rabbitmq:
     cluster:
       name: 'monitoring'
diff --git a/telegraf/agent/init.yml b/telegraf/agent/init.yml
index 0e836e8..64ef566 100644
--- a/telegraf/agent/init.yml
+++ b/telegraf/agent/init.yml
@@ -1,11 +1,5 @@
 classes:
 - service.telegraf.agent
-parameters:
-  telegraf:
-    agent:
-      output:
-        prometheus_client:
-          bind:
-            address: 0.0.0.0
-            port: 9126
-          engine: prometheus
+- system.telegraf.agent.input.http_listener
+- system.telegraf.agent.output.prometheus_client
+- system.telegraf.sudo
diff --git a/telegraf/agent/input/http_listener.yml b/telegraf/agent/input/http_listener.yml
new file mode 100644
index 0000000..6cdcf3c
--- /dev/null
+++ b/telegraf/agent/input/http_listener.yml
@@ -0,0 +1,2 @@
+classes:
+- service.telegraf.agent.input.http_listener
diff --git a/telegraf/agent/output/prometheus_client.yml b/telegraf/agent/output/prometheus_client.yml
new file mode 100644
index 0000000..bad5ebd
--- /dev/null
+++ b/telegraf/agent/output/prometheus_client.yml
@@ -0,0 +1,2 @@
+classes:
+- service.telegraf.agent.output.prometheus_client
diff --git a/telegraf/agent/remote/init.yml b/telegraf/agent/remote/init.yml
new file mode 100644
index 0000000..c634d54
--- /dev/null
+++ b/telegraf/agent/remote/init.yml
@@ -0,0 +1,17 @@
+classes:
+- service.telegraf.agent.remote
+parameters:
+  telegraf:
+    remote_agent:
+      omit_hostname: true
+      dir:
+        config: /srv/volumes/local/telegraf
+        config_d: /srv/volumes/local/telegraf/telegraf.d
+      input:
+        internal:
+      output:
+        prometheus_client:
+          bind:
+            address: 0.0.0.0
+            port: 9126
+          engine: prometheus
diff --git a/telegraf/agent/remote/input/http_listener.yml b/telegraf/agent/remote/input/http_listener.yml
new file mode 100644
index 0000000..d6788d2
--- /dev/null
+++ b/telegraf/agent/remote/input/http_listener.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    telegraf_remote_agent_http_listener_port: 8186
+  telegraf:
+    remote_agent:
+      input:
+        http_listener:
+          bind:
+            address: 0.0.0.0
+            port: ${_param:telegraf_remote_agent_http_listener_port}
+          read_timeout: 10s
+          write_timeout: 10s
+          tagexclude: ['hostname']
diff --git a/telegraf/agent/remote/input/influxdb.yml b/telegraf/agent/remote/input/influxdb.yml
new file mode 100644
index 0000000..9b28476
--- /dev/null
+++ b/telegraf/agent/remote/input/influxdb.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    telegraf_remote_agent_influxdb_port: 15016
+    telegraf_remote_agent_influxdb_protocol: http
+  telegraf:
+    remote_agent:
+      input:
+        influxdb:
+          servers:
+          - url: "${_param:telegraf_remote_agent_influxdb_protocol}://${_param:telegraf_remote_agent_influxdb_address}:${_param:telegraf_remote_agent_influxdb_port}/debug/vars"
+          tags:
+            host: ${_param:telegraf_remote_agent_influxdb_address}
diff --git a/telegraf/agent/remote/output/prometheus.yml b/telegraf/agent/remote/output/prometheus.yml
new file mode 100644
index 0000000..8aadd96
--- /dev/null
+++ b/telegraf/agent/remote/output/prometheus.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    telegraf_remote_agent_prometheus_port: 9126
+  telegraf:
+    remote_agent:
+      output:
+        prometheus_client:
+          bind:
+            address: 0.0.0.0
+            port: ${_param:telegraf_remote_agent_prometheus_port}
+          engine: prometheus
diff --git a/telegraf/sudo.yml b/telegraf/sudo.yml
new file mode 100644
index 0000000..3fc76e1
--- /dev/null
+++ b/telegraf/sudo.yml
@@ -0,0 +1,11 @@
+parameters:
+  linux:
+    system:
+      sudo:
+        enabled: true
+        users:
+          telegraf:
+            hosts:
+            - ALL
+            commands:
+            - /usr/sbin/gluster
diff --git a/xtrabackup/client/single.yml b/xtrabackup/client/single.yml
new file mode 100644
index 0000000..cbe1123
--- /dev/null
+++ b/xtrabackup/client/single.yml
@@ -0,0 +1,3 @@
+classes:
+- service.xtrabackup.client.single
+- system.openssh.client.root
\ No newline at end of file
diff --git a/xtrabackup/server/single.yml b/xtrabackup/server/single.yml
new file mode 100644
index 0000000..d1d54fd
--- /dev/null
+++ b/xtrabackup/server/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.xtrabackup.server.single
diff --git a/zookeeper/backup/client/single.yml b/zookeeper/backup/client/single.yml
new file mode 100644
index 0000000..0085b79
--- /dev/null
+++ b/zookeeper/backup/client/single.yml
@@ -0,0 +1,13 @@
+classes:
+- system.openssh.client.root
+parameters:
+  _param:
+    zookeeper_remote_backup_server: cfg01
+  zookeeper:
+    backup:
+      client:
+        enabled: true
+        full_backups_to_keep: 3
+        hours_before_full: 24
+        target:
+          host: ${_param:zookeeper_remote_backup_server}
diff --git a/zookeeper/backup/server/single.yml b/zookeeper/backup/server/single.yml
new file mode 100644
index 0000000..aaa877b
--- /dev/null
+++ b/zookeeper/backup/server/single.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    zookeeper_backup_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzLUiHKAjfFXiZ3fsgx35uXF6VivfC5WFafu4QMalxmj6W+s277oCfdWA8Du5f1wtQXM73VQ5nHkXhM2UIfUMarsyhXK+BxKVrcgEBNHdKlDytaecUPyuOxTDdGWhN/DPv5/vL8NYWweEYBbNbLgU0Td7Rvm52TUXKThIDjeF7XDxX4ShXWipBSwU4boOUBtR8KWfga8fsqeBN+eacuAQFR3MrrOfVvAuWW6Bsf047cmd+V6Qv0raoW73Nu4M/ZAdTsaR5k62a0cHsSRoi3hCmNRqw+CZaQi8prQU6t26eWPEtznjp5EkPF+LLh8LxUoCfWqWT+Lxe8QQwT1nx/LCN
+  zookeeper:
+    backup:
+      server:
+        enabled: true
+        hours_before_full: 24
+        full_backups_to_keep: 5
+        key:
+          zookeeper_pub_key:
+            enabled: true
+            key: ${_param:zookeeper_backup_public_key}