Merge pull request #106 from Mirantis/_pr_rally_results

static web for rally
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..1b8353e
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,4 @@
+[gerrit]
+host=gerrit.mcp.mirantis.net
+port=29418
+project=salt-models/reclass-system.git
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..1cc95a8
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,91 @@
+dist: trusty
+sudo: required
+
+addons:
+  apt:
+    sources:
+    - sourceline: 'deb http://apt-mk.mirantis.com/trusty nightly salt'
+    - key_url: 'http://apt-mk.mirantis.com/public.gpg'
+    packages:
+    - curl
+    - subversion
+    - git
+    - salt-master
+    - salt-minion
+    - reclass
+    - python-pip
+    - tree
+
+
+#git:
+#  submodules: false
+#
+before_install:
+   - sudo pip install cookiecutter
+#  - test ! -e .gitmodules || sed -i 's,https://\([.a-z0-9_-]*\)/\(.*\),git@\1:\2,' .gitmodules
+#  - test ! -e .gitmodules || git submodule update --init --recursive --remote
+
+env:
+  global:
+    - ENV_DOMAIN=ci.local
+  matrix:
+    - CLUSTER_NAME=openstack_mk_contrail
+    - CLUSTER_NAME=openstack_mk_ovs
+    - CLUSTER_NAME=kubernetes_mk
+
+install:
+  - export RECLASS_SYSTEM=file://$PWD
+  - mkdir ../$CLUSTER_NAME; cd ../$CLUSTER_NAME
+  - export RECLASS_REPO_PATH=$PWD
+  - export RECLASS_REPOSITORY=file://$RECLASS_REPO_PATH
+  - git clone git@github.com:Mirantis/mk2x-cookiecutter-reclass-model.git ../cookiecutter_models; cd ../cookiecutter_models
+  - export COOKIECUTTER_BASE=$PWD
+  - export ENV_DOMAIN=ci.local
+  - COOKIECUTTER_JSON=$COOKIECUTTER_BASE/cluster/$CLUSTER_NAME/cookiecutter.json
+  #- export ENV_DOMAIN=${CLUSTER_NAME//_/-}.$ENV_DOMAIN
+  - export MASTER_HOSTNAME=cfg01.$ENV_DOMAIN
+  - cd $RECLASS_REPO_PATH
+  - git init .
+# CI WORKAROUNDS
+  - export FORMULAS_SOURCE=pkg
+  - sed -i "s/deployment_name/$CLUSTER_NAME/g" $COOKIECUTTER_JSON
+  - sed -i "s/deploy-name.local/$ENV_DOMAIN/g" $COOKIECUTTER_JSON
+  - sed -i 's%.*reclass_repository.*%"reclass_repository":"'$RECLASS_REPOSITORY'",%g' $COOKIECUTTER_JSON
+  - cookiecutter $COOKIECUTTER_BASE/cluster/$CLUSTER_NAME --output-dir ./classes/cluster --no-input
+  - git add ./*
+  - git commit -am "Init, add cluster level"
+  - git submodule add $RECLASS_SYSTEM ./classes/system
+  - |
+    mkdir -p nodes;
+    git branch -a
+    tree -lL 3
+    cat <<-EOF > nodes/cfg01.$ENV_DOMAIN.yml
+    classes:
+      - cluster.$CLUSTER_NAME.infra.config
+    parameters:
+      _param:
+        linux_system_codename: trusty
+        reclass_data_revision: master
+      linux:
+        system:
+          name: cfg01
+          domain: $ENV_DOMAIN
+    # #######################
+
+  - git add ./*
+  - git commit -am "Add system level and salt-master node"
+# CI WORKAROUNDS
+  - export RECLASS_BRANCH=master
+  #- sed -ie "s#\(reclass_data_revision.\).*#\1 $RECLASS_BRANCH#" $(find nodes -name ${MASTER_HOSTNAME}.yml|tail -n1)
+  #- git commit -am "Fake branch update" || true
+# PREREQUSITES
+  - sudo mkdir /srv/salt; sudo cp -a $PWD /srv/salt/reclass
+  - sudo svn export --force https://github.com/salt-formulas/salt-formulas/trunk/deploy/scripts /srv/salt/scripts
+
+script:
+  - cd /srv/salt/scripts
+  - sudo ./salt-master-init.sh || exit 1
+
+after_failure:
+  - tree -lL 3 $RECLASS_REPO_PATH
+  - for i in ls -lta "/tmp/*verify*"; do echo -e "\n\n$i:";tail -n20 $i; done
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
new file mode 100644
index 0000000..4fd75aa
--- /dev/null
+++ b/CHANGELOG.rst
@@ -0,0 +1,6 @@
+Changelog
+==========
+
+
+* 2017-03-03 Tomáš Kukrál <tkukral@mirantis.com}
+- change default Salt-API port to 6969
diff --git a/README.rst b/README.rst
index 94e97dc..1f1c8f4 100644
--- a/README.rst
+++ b/README.rst
@@ -9,3 +9,88 @@
 Network configuration
 =====================
 
+Enable SR-IOV support
+---------------------
+
+Include class at `cluster.<name>.openstack.compute`
+
+.. code-block:: yaml
+
+  - system.nova.compute.nfv.sriov
+
+For single SR-IOV interface setup you can set parameters:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+`sriov_nic01_device_name`
+  Name of the Physical Function interface (pF)
+
+`sriov_nic01_numvfs`
+  Number of Virtual Functions (VF), for number of 
+  supported VF check documentation for your network interface card.
+
+`sriov_nic01_physical_network`
+  Default **physnet1**, label for physical network the interface belongs to.
+
+`sriov_unsafe_interrupts`
+  Default **False**, needs to be set **True** if your hw platform does not 
+  support interrupt remapping.
+
+
+Multiple SR-IOV interface setup:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+By default, the metadata model contains configuration for 1 NIC
+dedicated for SR-IOV, so we need to setup network interfaces like in the
+following example.
+
+.. code-block:: yaml
+
+      ...
+        nova:
+          compute:
+            sriov:
+              sriov_nic01:
+                devname: eth1
+                physical_network: physnet3
+              sriov_nic02:
+                devname: eth2
+                physical_network: physnet4
+              sriov_nic03:
+                devname: eth3
+                physical_network: physnet3
+              sriov_nic04:
+                devname: eth4
+                physical_network: physnet6
+        linux:
+          system:
+            kernel:
+              sriov: True
+              unsafe_interrupts: False
+            rc:
+              local: |
+                #!/bin/sh -e
+                # Enabling 7 VFs on eth1 PF
+                echo 7 > /sys/class/net/eth1/device/sriov_numvfs; sleep 2; ip link set eth1 up
+                # Enabling 15 VFs on eth2 PF
+                echo 15 > /sys/class/net/eth2/device/sriov_numvfs; sleep 2; ip link set eth2 up
+                # Enabling 15 VFs on eth3 PF
+                echo 15 > /sys/class/net/eth3/device/sriov_numvfs; sleep 2; ip link set eth3 up
+                # Enabling 7 VFs on eth4 PF
+                echo 7 > /sys/class/net/eth4/device/sriov_numvfs; sleep 2; ip link set eth4 up
+                exit 0
+
+
+Nagios Monitoring
+=================
+
+Configure Hosts dynamically
+---------------------------
+
+The nagios formula looks up grains.items throught Salt mines to discover hosts.
+There are two different parameters that tell the nagios formula how to determine
+the hosts' IP address:
+
+- nagios_monitoring_network: IP subnet(s) in CIDR notation (can be a list)
+- nagios_monitoring_interface: interface name(s). Default ['eth0', 'ens3'].
+
+'nagios_monitoring_network' parameter takes precedence over 'nagios_monitoring_interface' list.
diff --git a/aodh/server/cluster.yml b/aodh/server/cluster.yml
index 7d11cd4..4743111 100644
--- a/aodh/server/cluster.yml
+++ b/aodh/server/cluster.yml
@@ -1,7 +1,6 @@
 classes:
 - service.aodh.server.cluster
 - system.haproxy.proxy.listen.openstack.aodh
-- service.keepalived.cluster.single
 parameters:
   aodh:
     server:
@@ -11,6 +10,7 @@
       ttl: 86400
       debug: false
       verbose: true
+      region: ${_param:openstack_region}
       database:
         engine: "mysql+pymysql"
         host: ${_param:openstack_database_address}
@@ -37,4 +37,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/aptly/client/publisher.yml b/aptly/client/publisher.yml
new file mode 100644
index 0000000..9aae28b
--- /dev/null
+++ b/aptly/client/publisher.yml
@@ -0,0 +1,9 @@
+classes:
+  - service.aptly.client.publisher
+parameters:
+  aptly:
+    publisher:
+      enabled: true
+      source:
+        engine: docker
+        image: tcpcloud/aptly-publisher
diff --git a/aptly/server/docker.yml b/aptly/server/docker.yml
new file mode 100644
index 0000000..ee8f4a2
--- /dev/null
+++ b/aptly/server/docker.yml
@@ -0,0 +1,28 @@
+classes:
+  - service.aptly.server.single
+parameters:
+  _param:
+    aptly_server_secure: false
+    aptly_gpg_keypair_id: none
+    aptly_gpg_public_key: none
+    aptly_gpg_private_key: none
+  aptly:
+    server:
+      enabled: true
+      secure: ${_param:aptly_server_secure}
+      source:
+        engine: docker
+        image: tcpcloud/aptly
+      user:
+        uid: 501
+        gid: 501
+      home_dir: /srv/volumes/aptly
+      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}
+      api:
+        enabled: false
diff --git a/aptly/server/mirror/ubuntu/trusty/glusterfs.yml b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
new file mode 100644
index 0000000..b83c49f
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/glusterfs.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        glusterfs_upstream_trusty:
+          source: http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu
+          distribution: trusty
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 3FE869A9
+          publisher:
+            component: glusterfs
+            distributions:
+              - ubuntu-trusty/nightly
diff --git a/aptly/server/mirror/ubuntu/trusty/influxdb.yml b/aptly/server/mirror/ubuntu/trusty/influxdb.yml
new file mode 100644
index 0000000..8d30a05
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/influxdb.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        influxdb-trusty:
+          source: https://repos.influxdata.com/ubuntu/
+          distribution: trusty
+          components: stable
+          architectures: amd64
+          gpgkeys:
+            - 2582E0C5
+          publisher:
+            component: influxdb
+            distributions:
+              - trusty/nightly
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk.yml b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk.yml
new file mode 100644
index 0000000..553e6dd
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/apt_mk.yml
@@ -0,0 +1,79 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  aptly:
+    server:
+      mirror:
+        # required for opencontrail formulas
+        mcp_opencontrail_trusty_oc311:
+          source: http://apt-mk.mirantis.com/trusty/
+          distribution: ${_param:apt_mk_version}
+          components: oc311
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: oc311
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
+        mcp_opencontrail_trusty_oc31:
+          source: http://apt-mk.mirantis.com/trusty/
+          distribution: ${_param:apt_mk_version}
+          components: oc31
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: oc31
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
+        mcp_opencontrail_trusty_oc32:
+          source: http://apt-mk.mirantis.com/trusty/
+          distribution: ${_param:apt_mk_version}
+          components: oc32
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            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}
+          components: extra
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: extra
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
+        mirantis_openstack_trusty_salt:
+          source: http://apt-mk.mirantis.com/trusty/
+          distribution: ${_param:apt_mk_version}
+          components: salt
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: salt
+            distributions:
+              - ubuntu-trusty/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml b/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml
new file mode 100644
index 0000000..32e3b90
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/mcp/openstack.yml
@@ -0,0 +1,73 @@
+parameters:
+  _param:
+    mcp_repo_version: 1.0
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_trusty:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
+          distribution: mitaka
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/mitaka
+
+        mirantis_openstack_hotfix_trusty:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
+          distribution: mitaka-hotfix
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/mitaka-hotfix
+
+        mirantis_openstack_security_trusty:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
+          distribution: mitaka-security
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/mitaka-security
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_updates_trusty:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
+          distribution: mitaka-updates
+          components:  main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/mitaka-updates
+
+        # required for salt formulas
+        mirantis_openstack_holdback_trusty:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty
+          distribution: mitaka-holdback
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/trusty/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+          - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-trusty/mitaka-holdback
+
diff --git a/aptly/server/mirror/ubuntu/trusty/mos8.yml b/aptly/server/mirror/ubuntu/trusty/mos8.yml
index e6e6707..c85363f 100644
--- a/aptly/server/mirror/ubuntu/trusty/mos8.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mos8.yml
@@ -13,6 +13,7 @@
             component: main
             distributions:
               - mos8/mos8.0
+        # FIXME, enable hotfix once contain packages, otherwise broke aptly publish
         #mirantis-openstack-8.0-hotfix-trusty:
         #  source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
         #  distribution: mos8.0-hotfix
@@ -37,6 +38,7 @@
             component: main
             distributions:
               - mos8/mos8.0-proposed
+        # FIXME, enable security once contain packages, otherwise broke aptly publish
         #mirantis-openstack-8.0-security-trusty:
         #  source: http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0-mu-3/
         #  distribution: mos8.0-security
diff --git a/aptly/server/mirror/ubuntu/trusty/mos9.yml b/aptly/server/mirror/ubuntu/trusty/mos9.yml
index 20f87b2..29415ab 100644
--- a/aptly/server/mirror/ubuntu/trusty/mos9.yml
+++ b/aptly/server/mirror/ubuntu/trusty/mos9.yml
@@ -37,6 +37,7 @@
             component: main
             distributions:
               - mos9/mos9.0-proposed
+        # FIXME, enable security once contain packages, otherwise broke aptly publish
         #mirantis-openstack-9.0-security-trusty:
         #  source: http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/
         #  distribution: mos9.0-security
@@ -62,7 +63,7 @@
             distributions:
               - mos9/mos9.0-updates
         mirantis-openstack-9.0-extras-murano:
-          source: http://mirror.fuel-infra.org/extras/murano-plugin-repos/release/1.1.0/ubuntu/9.0/
+          source: http://mirror.fuel-infra.org/extras/murano-plugin-repos/release/1.2.0/ubuntu/9.0/
           distribution: mos9.0
           components: main restricted
           architectures: amd64
diff --git a/aptly/server/mirror/ubuntu/trusty/ubuntu.yml b/aptly/server/mirror/ubuntu/trusty/ubuntu.yml
index 22e83df..3cd7c7b 100644
--- a/aptly/server/mirror/ubuntu/trusty/ubuntu.yml
+++ b/aptly/server/mirror/ubuntu/trusty/ubuntu.yml
@@ -1,10 +1,12 @@
 parameters:
+  _param:
+    linux_system_country_code: cz
   aptly:
     server:
       mirror:
         # trusty
         trusty-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty
           components: main
           architectures: amd64
@@ -17,7 +19,7 @@
             distributions:
               - ubuntu/trusty
         trusty-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty
           components: multiverse
           architectures: amd64
@@ -30,7 +32,7 @@
             distributions:
               - ubuntu/trusty
         trusty-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty
           components: restricted
           architectures: amd64
@@ -43,7 +45,7 @@
             distributions:
               - ubuntu/trusty
         trusty-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty
           components: universe
           architectures: amd64
@@ -58,7 +60,7 @@
 
         # trusty-updates
         trusty-updates-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-updates
           components: main
           architectures: amd64
@@ -71,7 +73,7 @@
             distributions:
               - ubuntu/trusty-updates
         trusty-updates-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-updates
           components: multiverse
           architectures: amd64
@@ -84,7 +86,7 @@
             distributions:
               - ubuntu/trusty-updates
         trusty-updates-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-updates
           components: restricted
           architectures: amd64
@@ -97,7 +99,7 @@
             distributions:
               - ubuntu/trusty-updates
         trusty-updates-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-updates
           components: universe
           architectures: amd64
@@ -112,7 +114,7 @@
 
         #trusty-security:
         trusty-security-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-security
           components: main
           architectures: amd64
@@ -125,7 +127,7 @@
             distributions:
               - ubuntu/trusty-security
         trusty-security-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-security
           components: multiverse
           architectures: amd64
@@ -138,7 +140,7 @@
             distributions:
               - ubuntu/trusty-security
         trusty-security-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-security
           components: restricted
           architectures: amd64
@@ -151,7 +153,7 @@
             distributions:
               - ubuntu/trusty-security
         trusty-security-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-security
           components: universe
           architectures: amd64
@@ -166,7 +168,7 @@
 
         #trusty-proposed:
         trusty-proposed-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-proposed
           components: main
           architectures: amd64
@@ -179,7 +181,7 @@
             distributions:
               - ubuntu/trusty-proposed
         trusty-proposed-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-proposed
           components: multiverse
           architectures: amd64
@@ -192,7 +194,7 @@
             distributions:
               - ubuntu/trusty-proposed
         trusty-proposed-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-proposed
           components: restricted
           architectures: amd64
@@ -205,7 +207,7 @@
             distributions:
               - ubuntu/trusty-proposed
         trusty-proposed-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-proposed
           components: universe
           architectures: amd64
@@ -220,7 +222,7 @@
 
         #trusty-backports:
         trusty-backports-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-backports
           components: main
           architectures: amd64
@@ -233,7 +235,7 @@
             distributions:
               - ubuntu/trusty-backports
         trusty-backports-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-backports
           components: multiverse
           architectures: amd64
@@ -246,7 +248,7 @@
             distributions:
               - ubuntu/trusty-backports
         trusty-backports-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-backports
           components: restricted
           architectures: amd64
@@ -259,7 +261,7 @@
             distributions:
               - ubuntu/trusty-backports
         trusty-backports-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: trusty-backports
           components: universe
           architectures: amd64
diff --git a/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
new file mode 100644
index 0000000..3401a4e
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
@@ -0,0 +1,26 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        ubuntu-xenial-ceph-mirantis:
+          source: http://eu.mirror.fuel-infra.org/decapod/ceph/apt
+          distribution: jewel-xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 460F3994
+          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
diff --git a/aptly/server/mirror/ubuntu/xenial/glusterfs.yml b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
new file mode 100644
index 0000000..da48431
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/glusterfs.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        glusterfs_upstream_xenial:
+          source: http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu
+          distribution: xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 3FE869A9
+          publisher:
+            component: glusterfs
+            distributions:
+              - ubuntu-xenial/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/hp.yml b/aptly/server/mirror/ubuntu/xenial/hp.yml
new file mode 100644
index 0000000..5b84417
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/hp.yml
@@ -0,0 +1,18 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        hp-xenial:
+          source: http://downloads.linux.hpe.com/SDR/repo/mcp/Ubuntu
+          distribution: xenial/current
+          components: non-free
+          architectures: amd64
+          gpgkeys:
+            - 26C2B797
+            - B1275EA3
+            - 5CE2D476
+            - 2689B887
+          publisher:
+            component: hp-non-free
+            distributions:
+              - xenial/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/maas.yml b/aptly/server/mirror/ubuntu/xenial/maas.yml
new file mode 100644
index 0000000..1382a09
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/maas.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        maas-xenial:
+          source: http://ppa.launchpad.net/maas/stable/ubuntu
+          distribution: xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 684D4A1C
+          publisher:
+            component: maas
+            distributions:
+              - xenial/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk.yml b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk.yml
new file mode 100644
index 0000000..6272b69
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/apt_mk.yml
@@ -0,0 +1,79 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  aptly:
+    server:
+      mirror:
+        # required for opencontrail formulas
+        mcp_opencontrail_xenial_oc311:
+          source: http://apt-mk.mirantis.com/xenial/
+          distribution: ${_param:apt_mk_version}
+          components: oc311
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: oc311
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
+        mcp_opencontrail_xenial_oc31:
+          source: http://apt-mk.mirantis.com/xenial/
+          distribution: ${_param:apt_mk_version}
+          components: oc31
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: oc31
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
+        mcp_opencontrail_xenial_oc32:
+          source: http://apt-mk.mirantis.com/xenial/
+          distribution: ${_param:apt_mk_version}
+          components: oc32
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            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}
+          components: extra
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: extra
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
+        mirantis_openstack_xenial_salt:
+          source: http://apt-mk.mirantis.com/xenial/
+          distribution: ${_param:apt_mk_version}
+          components: salt
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          gpgkeys:
+            - A76882D3
+          publisher:
+            component: salt
+            distributions:
+              - ubuntu-xenial/${_param:apt_mk_version}
diff --git a/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml b/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml
new file mode 100644
index 0000000..a23ece8
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/mcp/openstack.yml
@@ -0,0 +1,73 @@
+parameters:
+  _param:
+    mcp_repo_version: 1.0
+  aptly:
+    server:
+      mirror:
+        mirantis_openstack_xenial:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
+          distribution: mitaka
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/mitaka
+
+        mirantis_openstack_hotfix_xenial:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
+          distribution: mitaka-hotfix
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/mitaka-hotfix
+
+        mirantis_openstack_security_xenial:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
+          distribution: mitaka-security
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/mitaka-security
+
+        # required for alternative horizon plugins/etc..
+        mirantis_openstack_updates_xenial:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
+          distribution: mitaka-updates
+          components:  main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+            - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/mitaka-updates
+
+        # required for salt formulas
+        mirantis_openstack_holdback_xenial:
+          source: http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial
+          distribution: mitaka-holdback
+          components: main restricted
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/${_param:mcp_repo_version}/xenial/archive-mcp${_param:mcp_repo_version}.key"
+          gpgkeys:
+          - 1FA22B08
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial/mitaka-holdback
+
diff --git a/aptly/server/mirror/ubuntu/xenial/ubuntu.yml b/aptly/server/mirror/ubuntu/xenial/ubuntu.yml
index 10c54a5..4675063 100644
--- a/aptly/server/mirror/ubuntu/xenial/ubuntu.yml
+++ b/aptly/server/mirror/ubuntu/xenial/ubuntu.yml
@@ -1,10 +1,14 @@
 parameters:
+  _param:
+    linux_system_country_code_default: cz
+    linux_system_country_code: ${_param:linux_system_country_code_default}
   aptly:
     server:
       mirror:
         # xenial
         xenial-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial
           components: main
           architectures: amd64
@@ -17,7 +21,8 @@
             distributions:
               - ubuntu/xenial
         xenial-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial
           components: multiverse
           architectures: amd64
@@ -30,7 +35,8 @@
             distributions:
               - ubuntu/xenial
         xenial-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial
           components: restricted
           architectures: amd64
@@ -43,7 +49,8 @@
             distributions:
               - ubuntu/xenial
         xenial-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial
           components: universe
           architectures: amd64
@@ -58,7 +65,8 @@
 
         # xenial-updates
         xenial-updates-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-updates
           components: main
           architectures: amd64
@@ -71,7 +79,8 @@
             distributions:
               - ubuntu/xenial-updates
         xenial-updates-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-updates
           components: multiverse
           architectures: amd64
@@ -84,7 +93,8 @@
             distributions:
               - ubuntu/xenial-updates
         xenial-updates-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-updates
           components: restricted
           architectures: amd64
@@ -97,7 +107,8 @@
             distributions:
               - ubuntu/xenial-updates
         xenial-updates-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-updates
           components: universe
           architectures: amd64
@@ -112,7 +123,8 @@
 
         #xenial-security:
         xenial-security-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-security
           components: main
           architectures: amd64
@@ -125,7 +137,8 @@
             distributions:
               - ubuntu/xenial-security
         xenial-security-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-security
           components: multiverse
           architectures: amd64
@@ -138,7 +151,8 @@
             distributions:
               - ubuntu/xenial-security
         xenial-security-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-security
           components: restricted
           architectures: amd64
@@ -151,7 +165,8 @@
             distributions:
               - ubuntu/xenial-security
         xenial-security-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-security
           components: universe
           architectures: amd64
@@ -166,7 +181,8 @@
 
         #xenial-proposed:
         xenial-proposed-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-proposed
           components: main
           architectures: amd64
@@ -179,7 +195,8 @@
             distributions:
               - ubuntu/xenial-proposed
         xenial-proposed-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-proposed
           components: multiverse
           architectures: amd64
@@ -192,7 +209,7 @@
             distributions:
               - ubuntu/xenial-proposed
         xenial-proposed-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-proposed
           components: restricted
           architectures: amd64
@@ -205,7 +222,7 @@
             distributions:
               - ubuntu/xenial-proposed
         xenial-proposed-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-proposed
           components: universe
           architectures: amd64
@@ -220,7 +237,7 @@
 
         #xenial-backports:
         xenial-backports-main:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-backports
           components: main
           architectures: amd64
@@ -233,7 +250,7 @@
             distributions:
               - ubuntu/xenial-backports
         xenial-backports-multiverse:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-backports
           components: multiverse
           architectures: amd64
@@ -246,7 +263,8 @@
             distributions:
               - ubuntu/xenial-backports
         xenial-backports-restricted:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-backports
           components: restricted
           architectures: amd64
@@ -259,7 +277,8 @@
             distributions:
               - ubuntu/xenial-backports
         xenial-backports-universe:
-          source: http://cz.archive.ubuntu.com/ubuntu/
+          sources: true
+          source: http://${_param:linux_system_country_code}.archive.ubuntu.com/ubuntu/
           distribution: xenial-backports
           components: universe
           architectures: amd64
diff --git a/aptly/server/single.yml b/aptly/server/single.yml
index d5ff8fc..8b71974 100644
--- a/aptly/server/single.yml
+++ b/aptly/server/single.yml
@@ -5,6 +5,7 @@
 parameters:
   _param:
     nginx_aptly_server_host: ${linux:network:fqdn}
+    aptly_server_secure: true
   iptables:
     service:
       enabled: true
@@ -71,7 +72,8 @@
   aptly:
     server:
       enabled: true
-      secure: true
-      gpg_keypair_id: ${_param:aptly_gpg_keypair_id}
-      gpg_public_key: ${_param:aptly_gpg_public_key}
-      gpg_private_key: ${_param:aptly_gpg_private_key}
+      secure: ${_param:aptly_server_secure}
+      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/bind/server/single.yml b/bind/server/single.yml
new file mode 100644
index 0000000..be34143
--- /dev/null
+++ b/bind/server/single.yml
@@ -0,0 +1,9 @@
+classes:
+  - service.bind.server.single
+parameters:
+  bind:
+    server:
+      enabled: true
+      recursion:
+        hosts:
+          - localhost
diff --git a/ceilometer/agent/cluster.yml b/ceilometer/agent/cluster.yml
index d4ec5da..cfd93f7 100644
--- a/ceilometer/agent/cluster.yml
+++ b/ceilometer/agent/cluster.yml
@@ -3,6 +3,7 @@
 parameters:
   ceilometer:
     agent:
+      region: ${_param:openstack_region}
       enabled: true
       version: ${_param:ceilometer_version}
       secret: ${_param:ceilometer_secret_key}
diff --git a/ceilometer/client/init.yml b/ceilometer/client/init.yml
index 3534de7..5a0aaa0 100644
--- a/ceilometer/client/init.yml
+++ b/ceilometer/client/init.yml
@@ -2,4 +2,5 @@
 - system.ceilometer.client.cinder_control
 - system.ceilometer.client.keystone
 - system.ceilometer.client.glance
-- system.ceilometer.client.heat
\ No newline at end of file
+- system.ceilometer.client.heat
+- system.ceilometer.client.nova_control
\ No newline at end of file
diff --git a/ceilometer/client/nova_compute.yml b/ceilometer/client/nova_compute.yml
new file mode 100644
index 0000000..57e900a
--- /dev/null
+++ b/ceilometer/client/nova_compute.yml
@@ -0,0 +1,7 @@
+parameters:
+  nova:
+    compute:
+      notification:
+        driver: messagingv2
+        notify_on:
+          state_change: vm_and_task_state
\ No newline at end of file
diff --git a/ceilometer/client/nova_control.yml b/ceilometer/client/nova_control.yml
new file mode 100644
index 0000000..252c67e
--- /dev/null
+++ b/ceilometer/client/nova_control.yml
@@ -0,0 +1,5 @@
+parameters:
+  nova:
+    controller:
+      notification:
+        driver: messagingv2
diff --git a/ceilometer/server/cluster.yml b/ceilometer/server/cluster.yml
index 63111fd..b5d8013 100644
--- a/ceilometer/server/cluster.yml
+++ b/ceilometer/server/cluster.yml
@@ -1,13 +1,14 @@
 classes:
 - service.ceilometer.server.cluster
 - system.haproxy.proxy.listen.openstack.ceilometer
-- service.keepalived.cluster.single
+- system.keepalived.cluster.instance.openstack_telemetry_vip
 - service.haproxy.proxy.single
 parameters:
   ceilometer:
     server:
       enabled: true
       version: ${_param:ceilometer_version}
+      region: ${_param:openstack_region}
       cluster: true
       secret: ${_param:ceilometer_secret_key}
       ttl: 86400
diff --git a/ceph/client/single.yml b/ceph/client/single.yml
index b01458f..6ff7cd8 100644
--- a/ceph/client/single.yml
+++ b/ceph/client/single.yml
@@ -20,10 +20,18 @@
           osd_journal_size: 7500
         mon:
           mon_debug_dump_transactions: False
+        client:
+          rbd_cache_size: 268435456
+          rbd_cache_max_dirty: 134217728
+          rbd_cache_max_dirty_age: 5
+          rbd_cache: True
+      # TODO: Configure these keys on cluster level
       # keyring:
+      #   images:
+      #     key:
       #   object:
-      #     key: 
+      #     key:
       #   cinder:
-      #     key: 
+      #     key:
       #   nova:
-      #     key: 
\ No newline at end of file
+      #     key:
diff --git a/ceph/radosgw/single.yml b/ceph/radosgw/single.yml
new file mode 100644
index 0000000..31bdc7d
--- /dev/null
+++ b/ceph/radosgw/single.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    radosgw_keyring_path: /etc/ceph/ceph.client.radosgw.keyring
+  ceph:
+    radosgw:
+      enabled: true
+    client:
+      config:
+        client.radosgw.gateway:
+          rgw_keystone_accepted_roles: "_member_, Member, admin, swiftoperator"
+          keyring: /etc/ceph/ceph.client.radosgw.keyring
+          rgw_socket_path: /tmp/radosgw.sock
+          rgw_keystone_revocation_interval: 60
+          rgw_keystone_url: ${_param:keystone_service_host}:5000
+          rgw_keystone_admin_token: ${_param:keystone_service_token}
+          host: ${linux:system:name}
+          rgw_dns_name : ${_param:cluster_domain}
+          rgw_print_continue: True
+          rgw_content_length_compat: true
+          user: www-data
diff --git a/cinder/control/backend/nfs.yml b/cinder/control/backend/nfs.yml
new file mode 100644
index 0000000..1e5d5eb
--- /dev/null
+++ b/cinder/control/backend/nfs.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    cinder_nfs_local_path: /var/lib/cinder/nfs
+  cinder:
+    controller:
+      default_volume_type: nfs-driver
+      backend:
+        nfs-driver:
+          engine: nfs
+          type_name: nfs-driver
+          volume_group: cinder-volume
+          path: ${_param:cinder_nfs_local_path}
+          devices:
+          - ${_param:cinder_nfs_host}:${_param:cinder_nfs_remote_path}
+          options: ${_param:cinder_nfs_mount_options}
\ No newline at end of file
diff --git a/cinder/volume/backend/nfs.yml b/cinder/volume/backend/nfs.yml
new file mode 100644
index 0000000..e78f4fb
--- /dev/null
+++ b/cinder/volume/backend/nfs.yml
@@ -0,0 +1,9 @@
+parameters:
+  cinder:
+    volume:
+      default_volume_type: nfs-driver
+      backend:
+        nfs-driver:
+          engine: nfs
+          type_name: nfs-driver
+          volume_group: cinder-volume
\ No newline at end of file
diff --git a/designate/server/backend/bind.yml b/designate/server/backend/bind.yml
new file mode 100644
index 0000000..2b40424
--- /dev/null
+++ b/designate/server/backend/bind.yml
@@ -0,0 +1,36 @@
+parameters:
+  designate:
+    server:
+      backend:
+        bind9:
+          rndc_key: "${_param:designate_bind9_rndc_key}"
+  bind:
+    server:
+      key:
+        designate:
+          secret: "${_param:designate_bind9_rndc_key}"
+          algorithm: hmac-sha512
+      allow_new_zones: true
+      query: true
+      control:
+        local:
+          enabled: true
+          bind:
+            address: 127.0.0.1
+            port: 953
+          allow:
+            - 127.0.0.1
+            - ${_param:single_address}
+          keys:
+            - designate
+    client:
+      enabled: true
+      option:
+        default:
+          server: 127.0.0.1
+          port: 953
+          key: designate
+      key:
+        designate:
+          secret: "${_param:designate_bind9_rndc_key}"
+          algorithm: hmac-sha512
diff --git a/designate/server/cluster.yml b/designate/server/cluster.yml
new file mode 100644
index 0000000..573ac66
--- /dev/null
+++ b/designate/server/cluster.yml
@@ -0,0 +1,59 @@
+classes:
+- service.designate.server.cluster
+- service.keepalived.cluster.single
+- system.haproxy.proxy.listen.openstack.designate
+- service.haproxy.proxy.single
+parameters:
+  designate:
+    _support:
+      sensu:
+        enabled: false
+    server:
+      enabled: true
+      local_bind: true
+      region: ${_param:openstack_region}
+      domain_id: ${_param:designate_domain_id}
+      version: ${_param:designate_version}
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name:
+          main_database: designate
+          pool_manager: designate_pool_manager
+        user: designate
+        password: ${_param:mysql_designate_password}
+      identity:
+        engine: keystone
+        host: ${_param:openstack_control_address}
+        port: 35357
+        tenant: service
+        user: designate
+        password: ${_param:keystone_designate_password}
+      bind:
+        api:
+          address: ${_param:single_address}
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        members:
+        - host: ${_param:openstack_message_queue_node01_address}
+        - host: ${_param:openstack_message_queue_node02_address}
+        - host: ${_param:openstack_message_queue_node03_address}
+        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}
diff --git a/designate/server/single.yml b/designate/server/single.yml
new file mode 100644
index 0000000..bef6e4d
--- /dev/null
+++ b/designate/server/single.yml
@@ -0,0 +1,37 @@
+classes:
+- service.designate.server.single
+- service.haproxy.proxy.single
+parameters:
+  designate:
+    server:
+      enabled: true
+      local_bind: true
+      region: ${_param:openstack_region}
+      domain_id: ${_param:designate_domain_id}
+      version: ${_param:designate_version}
+      bind:
+        api:
+          address: ${_param:single_address}
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name:
+          main_database: designate
+          pool_manager: designate_pool_manager
+        user: designate
+        password: ${_param:mysql_designate_password}
+      identity:
+        engine: keystone
+        host: ${_param:openstack_control_address}
+        port: 35357
+        tenant: service
+        user: designate
+        password: ${_param:keystone_designate_password}
+      message_queue:
+        engine: rabbitmq
+        host: ${_param:cluster_vip_address}
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
diff --git a/devops_portal/service/elasticsearch.yml b/devops_portal/service/elasticsearch.yml
new file mode 100644
index 0000000..b945af3
--- /dev/null
+++ b/devops_portal/service/elasticsearch.yml
@@ -0,0 +1,10 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        elasticsearch:
+          configure_proxy: true
+          endpoint:
+            address: ${_param:haproxy_elasticsearch_bind_host}
+            port: ${_param:haproxy_elasticsearch_bind_port}
+            https: ${_param:haproxy_elasticsearch_ssl:enabled}
diff --git a/devops_portal/service/gerrit.yml b/devops_portal/service/gerrit.yml
new file mode 100644
index 0000000..6dcad9c
--- /dev/null
+++ b/devops_portal/service/gerrit.yml
@@ -0,0 +1,9 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        gerrit:
+          endpoint:
+            address: ${_param:haproxy_gerrit_bind_host}
+            port: ${_param:haproxy_gerrit_bind_port}
+            https: ${_param:haproxy_gerrit_ssl:enabled}
diff --git a/devops_portal/service/jenkins.yml b/devops_portal/service/jenkins.yml
new file mode 100644
index 0000000..349a707
--- /dev/null
+++ b/devops_portal/service/jenkins.yml
@@ -0,0 +1,9 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        jenkins:
+          endpoint:
+            address: ${_param:haproxy_jenkins_bind_host}
+            port: ${_param:haproxy_jenkins_bind_port}
+            https: ${_param:haproxy_jenkins_ssl:enabled}
diff --git a/devops_portal/service/pushkin.yml b/devops_portal/service/pushkin.yml
new file mode 100644
index 0000000..82a073c
--- /dev/null
+++ b/devops_portal/service/pushkin.yml
@@ -0,0 +1,10 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        pushkin:
+          configure_proxy: true
+          endpoint:
+            address: ${_param:haproxy_pushkin_bind_host}
+            port: ${_param:haproxy_pushkin_bind_port}
+            https: ${_param:haproxy_pushkin_ssl:enabled}
diff --git a/devops_portal/service/rundeck.yml b/devops_portal/service/rundeck.yml
new file mode 100644
index 0000000..1a15473
--- /dev/null
+++ b/devops_portal/service/rundeck.yml
@@ -0,0 +1,13 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        rundeck:
+          configure_proxy: true
+          credentials:
+            username: admin
+            password: ${_param:rundeck_admin_password}
+          endpoint:
+            address: ${_param:haproxy_rundeck_bind_host}
+            port: ${_param:haproxy_rundeck_bind_port}
+            https: ${_param:haproxy_rundeck_ssl:enabled}
diff --git a/docker/client.yml b/docker/client.yml
new file mode 100644
index 0000000..4691ddb
--- /dev/null
+++ b/docker/client.yml
@@ -0,0 +1,10 @@
+classes:
+  - service.docker.client
+parameters:
+  docker:
+    client:
+      enabled: true
+      compose:
+        source:
+          engine: docker
+          image: "docker/compose:1.8.0"
diff --git a/docker/host.yml b/docker/host.yml
new file mode 100644
index 0000000..f7649b5
--- /dev/null
+++ b/docker/host.yml
@@ -0,0 +1,10 @@
+classes:
+  - service.docker.host
+  - system.linux.system.repo.docker
+parameters:
+  docker:
+    host:
+      experimental: true
+      insecure_registries:
+        - ${_param:cluster_vip_address}:5000
+        - ${_param:cluster_public_host}:5000
diff --git a/docker/swarm/manager.yml b/docker/swarm/manager.yml
new file mode 100644
index 0000000..25a7fbe
--- /dev/null
+++ b/docker/swarm/manager.yml
@@ -0,0 +1,11 @@
+classes:
+  - system.docker.swarm.network.gwbridge
+parameters:
+  _param:
+    docker_gwbridge_subnet: 10.20.0.0/16
+  docker:
+    swarm:
+      role: manager
+      advertise_addr: ${_param:single_address}
+      master:
+        host: ${_param:cluster_node01_address}
diff --git a/docker/swarm/master.yml b/docker/swarm/master.yml
new file mode 100644
index 0000000..fba9af3
--- /dev/null
+++ b/docker/swarm/master.yml
@@ -0,0 +1,9 @@
+classes:
+  - system.docker.swarm.network.gwbridge
+parameters:
+  _param:
+    docker_gwbridge_subnet: 10.20.0.0/16
+  docker:
+    swarm:
+      role: master
+      advertise_addr: ${_param:single_address}
diff --git a/docker/swarm/network/gwbridge.yml b/docker/swarm/network/gwbridge.yml
new file mode 100644
index 0000000..8208d3d
--- /dev/null
+++ b/docker/swarm/network/gwbridge.yml
@@ -0,0 +1,10 @@
+parameters:
+  docker:
+    swarm:
+      network:
+        docker_gwbridge:
+          subnet: ${_param:docker_gwbridge_subnet}
+          opt:
+            com.docker.network.bridge.name: docker_gwbridge
+            com.docker.network.bridge.enable_icc: false
+            com.docker.network.bridge.enable_ip_masquerade: true
diff --git a/docker/swarm/service/aptly.yml b/docker/swarm/service/aptly.yml
new file mode 100644
index 0000000..5f6de6e
--- /dev/null
+++ b/docker/swarm/service/aptly.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    docker_image_aptly:
+      api: tcpcloud/aptly-api
+      public: tcpcloud/aptly-public
+  docker:
+    client:
+      service:
+        aptly-api:
+          environment:
+            EMAIL_ADDRESS: ${_param:admin_email}
+          restart:
+            condition: any
+          image: ${_param:docker_image_aptly:api}
+          ports:
+            - 18084:8080
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/aptly
+              destination: /var/lib/aptly
+        aptly-public:
+          replicas: 3
+          restart:
+            condition: any
+          image: ${_param:docker_image_aptly:public}
+          ports:
+            - 18085:80
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/aptly/public
+              destination: /var/www/html
diff --git a/docker/swarm/service/artifactory.yml b/docker/swarm/service/artifactory.yml
new file mode 100644
index 0000000..d7f8626
--- /dev/null
+++ b/docker/swarm/service/artifactory.yml
@@ -0,0 +1,32 @@
+parameters:
+  docker:
+    client:
+      service:
+        artifactory:
+          environment:
+            MYSQL_HOST: ${_param:cluster_vip_address}
+            MYSQL_USERNAME: artifactory
+            MYSQL_PASSWORD: ${_param:mysql_artifactory_password}
+            MYSQL_DATABASE: artifactory
+          restart:
+            condition: any
+          image: ${_param:docker_image_repository:cicd}/artifactory
+          ports:
+            - 18082:8081
+          volume:
+            data:
+              type: bind
+              source: /srv/volumes/artifactory/data
+              destination: /var/opt/jfrog/artifactory/data
+            backup:
+              type: bind
+              source: /srv/volumes/artifactory/backup
+              destination: /var/opt/jfrog/artifactory/backup
+            etc:
+              type: bind
+              source: /srv/volumes/artifactory/etc
+              destination: /var/opt/jfrog/artifactory/etc
+            logs:
+              type: bind
+              source: /srv/volumes/artifactory/logs
+              destination: /var/opt/jfrog/artifactory/logs
diff --git a/docker/swarm/service/dashboard/grafana_server.yml b/docker/swarm/service/dashboard/grafana_server.yml
new file mode 100644
index 0000000..4ed587e
--- /dev/null
+++ b/docker/swarm/service/dashboard/grafana_server.yml
@@ -0,0 +1,13 @@
+parameters:
+  docker:
+    client:
+      service:
+        grafana_server:
+          replica: 1
+          environment:
+            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/devops_portal.yml b/docker/swarm/service/devops_portal.yml
new file mode 100644
index 0000000..6a82aa5
--- /dev/null
+++ b/docker/swarm/service/devops_portal.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    docker_devops_portal_replicas: 1
+    docker_image_devops_portal: docker-sandbox.sandbox.mirantis.net/ikharin/oss/devops-portal:latest
+  docker:
+    client:
+      service:
+        devops-portal:
+          replicas: ${_param:docker_devops_portal_replicas}
+          image: ${_param:docker_image_devops_portal}
+          restart:
+            condition: any
+          ports:
+            - 18800:8000
+          volume:
+            nginx:
+              type: bind
+              source: /srv/volumes/devops_portal/nginx/
+              destination: /etc/nginx/config
+            config:
+              type: bind
+              source: /srv/volumes/devops_portal/config/
+              destination: /opt/devops-portal/config
diff --git a/docker/swarm/service/docker.yml b/docker/swarm/service/docker.yml
new file mode 100644
index 0000000..d20b4db
--- /dev/null
+++ b/docker/swarm/service/docker.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    docker_image_registry: registry:2
+  docker:
+    client:
+      service:
+        registry:
+          replica: 3
+          environment:
+            REGISTRY_HTTP_SECRET: ${_param:docker_registry_http_secret}
+          restart:
+            condition: any
+          image: ${_param:docker_image_registry}
+          ports:
+            - 15000:5000
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/registry
+              destination: /var/lib/registry
diff --git a/docker/swarm/service/elasticsearch.yml b/docker/swarm/service/elasticsearch.yml
new file mode 100644
index 0000000..4d49494
--- /dev/null
+++ b/docker/swarm/service/elasticsearch.yml
@@ -0,0 +1,19 @@
+parameters:
+  _param:
+    elasticsearch_replicas: 1
+    docker_image_oss_elasticsearch: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/elasticsearch:latest
+  docker:
+    client:
+      service:
+        elasticsearch:
+          replicas: ${_param:elasticsearch_replicas}
+          image: ${_param:docker_image_oss_elasticsearch}
+          restart:
+            condition: any
+          ports:
+            - ${_param:haproxy_elasticsearch_exposed_port}:${_param:haproxy_elasticsearch_bind_port}
+          volume:
+            elasticsearch:
+              type: bind
+              source: /srv/volumes/elasticsearch
+              destination: /usr/share/elasticsearch/data
diff --git a/docker/swarm/service/gerrit.yml b/docker/swarm/service/gerrit.yml
new file mode 100644
index 0000000..10e0629
--- /dev/null
+++ b/docker/swarm/service/gerrit.yml
@@ -0,0 +1,43 @@
+parameters:
+  _param:
+    docker_image_gerrit: tcpcloud/gerrit:2.13.6
+    gerrit_ldap_server: ""
+    gerrit_ldap_bind_user: ""
+    gerrit_ldap_bind_password: ""
+    gerrit_ldap_account_base: ""
+    gerrit_ldap_group_base: ""
+
+  docker:
+    client:
+      service:
+        gerrit:
+          environment:
+            #GERRIT_INIT_ARGS: ""
+            DATABASE_TYPE: "mysql"
+            DB_PORT_3306_TCP_ADDR: ${_param:cluster_vip_address}
+            DB_ENV_MYSQL_USER: gerrit
+            DB_ENV_MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+            DB_ENV_MYSQL_DB: gerrit
+            AUTH_TYPE: ${_param:gerrit_auth_type}
+            LDAP_SERVER: ${_param:gerrit_ldap_server}
+            LDAP_ACCOUNTPATTERN: 'uid={username}'
+            LDAP_ACCOUNTBASE: ${_param:gerrit_ldap_account_base}
+            LDAP_GROUPBASE: ${_param:gerrit_ldap_group_base}
+            LDAP_USERNAME: ${_param:gerrit_ldap_bind_user}
+            LDAP_PASSWORD: ${_param:gerrit_ldap_bind_password}
+            WEBURL: ${_param:gerrit_public_host}
+            GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
+            GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
+            GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
+            CANLOADINIFRAME: "true"
+          restart:
+            condition: any
+          image: ${_param:docker_image_gerrit}
+          ports:
+            - 18083:8080
+            - 29417:29418
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/gerrit
+              destination: /var/gerrit/review_site
diff --git a/docker/swarm/service/jenkins.yml b/docker/swarm/service/jenkins.yml
new file mode 100644
index 0000000..b2fdeb6
--- /dev/null
+++ b/docker/swarm/service/jenkins.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    docker_image_jenkins: tcpcloud/jenkins:2.52
+  docker:
+    client:
+      service:
+        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
+          restart:
+            condition: any
+          image: ${_param:docker_image_jenkins}
+          ports:
+            - 18081:8080
+            - 50001:50000
+          volume:
+            home:
+              type: bind
+              source: /srv/volumes/jenkins
+              destination: /var/jenkins_home
+            cacerts:
+              type: bind
+              source: /etc/ssl/certs/java/cacerts
+              destination: /etc/ssl/certs/java/cacerts
diff --git a/docker/swarm/service/monitoring/prometheus_alertmanager.yml b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
new file mode 100644
index 0000000..5d5f237
--- /dev/null
+++ b/docker/swarm/service/monitoring/prometheus_alertmanager.yml
@@ -0,0 +1,24 @@
+include:
+- service.prometheus.alertmanager.container
+parameters:
+  docker:
+    client:
+      service:
+        prometheus_alertmanager:
+          network: monitoring
+          replicas: 2
+          environment:
+            config_dir: /opt/alertmanager/config
+            bind_port: ${prometheus:alertmanager:bind:port}
+            bind_address: ${prometheus:alertmanager:bind:address}
+            discovery_domain: 'prometheus_alertmanager'
+          restart:
+            condition: any
+          image: ${_param:docker_image_alertmanager}
+          ports:
+            - 15011:${prometheus:alertmanager:bind:port}
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/prometheus
+              destination: /opt/alertmanager/config
diff --git a/docker/swarm/service/monitoring/prometheus_pushgateway.yml b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
new file mode 100644
index 0000000..ad159b6
--- /dev/null
+++ b/docker/swarm/service/monitoring/prometheus_pushgateway.yml
@@ -0,0 +1,12 @@
+parameters:
+  docker:
+    client:
+      service:
+        prometheus_pushgateway:
+          network: monitoring
+          replicas: 2
+          restart:
+            condition: any
+          image: ${_param:docker_image_pushgateway}
+          ports:
+            - 15012:9091
diff --git a/docker/swarm/service/monitoring/prometheus_server.yml b/docker/swarm/service/monitoring/prometheus_server.yml
new file mode 100644
index 0000000..37bb6d3
--- /dev/null
+++ b/docker/swarm/service/monitoring/prometheus_server.yml
@@ -0,0 +1,30 @@
+include:
+- service.prometheus.server.container
+parameters:
+  docker:
+    client:
+      service:
+        prometheus_server:
+          network: monitoring
+          replicas: 1
+          environment:
+            config_dir: /opt/prometheus/config
+            bind_port: ${prometheus:server:bind:port}
+            bind_address: ${prometheus:server:bind:address}
+            alertmanager_port: ${prometheus:alertmanager:bind:port}
+            storage_local_engine: ${prometheus:server:storage:local:engine}
+            storage_local_retention: ${prometheus:server:storage:local:retention}
+            storage_local_memory_chunks: ${prometheus:server:storage:local:memory_chunks}
+            storage_local_max_chunks_to_persist: ${prometheus:server:storage:local:max_chunks_to_persist}
+            storage_local_num_fingerprint_mutexes: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+            discovery_domain: 'prometheus_alertmanager'
+          restart:
+            condition: any
+          image: ${_param:docker_image_prometheus}
+          ports:
+            - 15010:${prometheus:server:bind:port}
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/prometheus
+              destination: /opt/prometheus/config
diff --git a/docker/swarm/service/mysql.yml b/docker/swarm/service/mysql.yml
new file mode 100644
index 0000000..f94cf4d
--- /dev/null
+++ b/docker/swarm/service/mysql.yml
@@ -0,0 +1,22 @@
+parameters:
+  _param:
+    docker_image_mysql: mysql:5.6
+  docker:
+    client:
+      service:
+        mysql:
+          environment:
+            MYSQL_USER: gerrit
+            MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+            MYSQL_DATABASE: gerrit
+            MYSQL_ROOT_PASSWORD: ${_param:mysql_admin_password}
+          restart:
+            condition: any
+          image: "${_param:docker_image_mysql}"
+          ports:
+            - 13306:3306
+          volume:
+            data:
+              type: bind
+              source: /srv/volumes/mysql
+              destination: /var/lib/mysql
diff --git a/docker/swarm/service/openldap.yml b/docker/swarm/service/openldap.yml
new file mode 100644
index 0000000..f7f12e2
--- /dev/null
+++ b/docker/swarm/service/openldap.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    docker_image_openldap: osixia/openldap:1.1.8
+  docker:
+    client:
+      service:
+        openldap:
+          restart:
+            condition: any
+          image: ${_param:docker_image_openldap}
+          hostname: ldap01.${_param:openldap_domain}
+          hosts:
+            ldap01:
+              name: ldap01.${_param:openldap_domain}
+              address: 127.0.0.1
+          environment:
+            HOSTNAME: ldap01.${_param:openldap_domain}
+            LDAP_ORGANISATION: "${_param:openldap_organisation}"
+            LDAP_DOMAIN: "${_param:openldap_domain}"
+            LDAP_ADMIN_PASSWORD: ${_param:openldap_admin_password}
+            LDAP_CONFIG_PASSWORD: ${_param:openldap_config_password}
+            LDAP_TLS: "false"
+          ports:
+            - 1389:389
+            - 1636:636
+          volume:
+            database:
+              type: bind
+              source: /srv/volumes/openldap/database
+              destination: /var/lib/ldap
+            config:
+              type: bind
+              source: /srv/volumes/openldap/config
+              destination: /etc/ldap/slapd.d
diff --git a/docker/swarm/service/phpldapadmin.yml b/docker/swarm/service/phpldapadmin.yml
new file mode 100644
index 0000000..25332c7
--- /dev/null
+++ b/docker/swarm/service/phpldapadmin.yml
@@ -0,0 +1,22 @@
+parameters:
+  _param:
+    docker_image_phpldapadmin: tcpcloud/phpldapadmin:0.6.12
+  docker:
+    client:
+      service:
+        phpldapadmin:
+          restart:
+            condition: any
+          image: ${_param:docker_image_phpldapadmin}
+          hosts:
+            ldap:
+              name: ldap.${_param:openldap_domain}
+              address: ${_param:cluster_vip_address}
+          environment:
+            PHPLDAPADMIN_LDAP_HOSTS: "#PYTHON2BASH:[{'ldap.${_param:openldap_domain}': [{'server': [{'tls': False}]},{'login': [{'bind_id': 'cn=admin,${_param:openldap_dn}'},{'bind_pass': '${_param:openldap_admin_password}'}]}]}]"
+            PHPLDAPADMIN_HTTPS: false
+            PHPLDAPADMIN_TRUST_PROXY_SSL: true
+            PHPLDAPADMIN_SERVER_ADMIN: ${_param:admin_email}
+            PHPLDAPADMIN_THEME: mirantis
+          ports:
+            - 18089:80
diff --git a/docker/swarm/service/pushkin.yml b/docker/swarm/service/pushkin.yml
new file mode 100644
index 0000000..d01842d
--- /dev/null
+++ b/docker/swarm/service/pushkin.yml
@@ -0,0 +1,28 @@
+parameters:
+  _param:
+    docker_pushkin_replicas: 1
+    docker_image_pushkin: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkin:latest
+    pushkin_db_password: pushkin
+    pushkin_db_user: pushkin
+    pushkin_db: pushkin
+  docker:
+    client:
+      service:
+        pushkin-backend:
+          environment:
+            POSTGRES_USER: ${_param:pushkin_db_user}
+            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
+            POSTGRES_DB: ${_param:pushkin_db}
+            PUSHKINDBHOST: ${_param:haproxy_pushkin_db_bind_host}
+            PUSHKINELASTICHOST: ${_param:haproxy_elasticsearch_bind_host}
+          replicas: ${_param:docker_pushkin_replicas}
+          image: ${_param:docker_image_pushkin}
+          restart:
+            condition: any
+          ports:
+            - ${_param:haproxy_pushkin_exposed_port}:${_param:haproxy_pushkin_bind_port}
+          volume:
+            pushkin:
+              type: bind
+              source: /srv/volumes/pushkin/logs
+              destination: /var/log/pushkin
\ No newline at end of file
diff --git a/docker/swarm/service/pushkin_db.yml b/docker/swarm/service/pushkin_db.yml
new file mode 100644
index 0000000..9b81778
--- /dev/null
+++ b/docker/swarm/service/pushkin_db.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    docker_pushkin_db_replicas: 1
+    docker_image_pushkin_db: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkindb:latest
+    pushkin_db_password: pushkin
+    pushkin_db_user: pushkin
+    pushkin_db: pushkin
+  docker:
+    client:
+      service:
+        pushkin-db:
+          environment:
+            POSTGRES_USER: ${_param:pushkin_db_user}
+            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
+            POSTGRES_DB: ${_param:pushkin_db}
+          replicas: ${_param:docker_pushkin_db_replicas}
+          image: ${_param:docker_image_pushkin_db}
+          restart:
+            condition: any
+          ports:
+            - ${_param:haproxy_pushkin_db_exposed_port}:${_param:haproxy_pushkin_db_bind_port}
+          volume:
+            pushkin:
+              type: bind
+              source: /srv/volumes/pushkin/data
+              destination: /var/lib/postgresql/data
+
diff --git a/docker/swarm/service/rundeck.yml b/docker/swarm/service/rundeck.yml
new file mode 100644
index 0000000..baad94a
--- /dev/null
+++ b/docker/swarm/service/rundeck.yml
@@ -0,0 +1,47 @@
+parameters:
+  _param:
+    docker_rundeck_replicas: 1
+    docker_image_rundeck: docker-sandbox.sandbox.mirantis.net/ikharin/oss/rundeck:latest
+    rundeck_admin_password: password
+  docker:
+    client:
+      service:
+        rundeck:
+          environment:
+            SERVER_URL: "http://${_param:haproxy_rundeck_bind_host}:${_param:haproxy_rundeck_bind_port}"
+            RUNDECK_ADMIN_PASSWORD: ${_param:rundeck_admin_password}
+          replicas: ${_param:docker_rundeck_replicas}
+          image: ${_param:docker_image_rundeck}
+          restart:
+            condition: any
+          ports:
+            - 14440:4440
+          volume:
+            etc:
+              type: bind
+              source: /srv/volumes/rundeck/etc
+              destination: /etc/rundeck
+            rundeck:
+              type: bind
+              source: /srv/volumes/rundeck/rundeck
+              destination: /var/rundeck
+            mysql:
+              type: bind
+              source: /srv/volumes/rundeck/mysql
+              destination: /var/lib/mysql
+            log:
+              type: bind
+              source: /srv/volumes/rundeck/log
+              destination: /var/log/rundeck
+            logs:
+              type: bind
+              source: /srv/volumes/rundeck/logs
+              destination: /var/lib/rundeck/logs
+            plugins:
+              type: bind
+              source: /srv/volumes/rundeck/plugins
+              destination: /opt/rundeck-plugins
+            storage:
+              type: bind
+              source: /srv/volumes/rundeck/storage
+              destination: /var/lib/rundeck/var/storage
diff --git a/docker/swarm/service/visualizer.yml b/docker/swarm/service/visualizer.yml
new file mode 100644
index 0000000..8519363
--- /dev/null
+++ b/docker/swarm/service/visualizer.yml
@@ -0,0 +1,18 @@
+parameters:
+  _param:
+    docker_image_visualizer: manomarks/visualizer
+  docker:
+    client:
+      service:
+        visualizer:
+          restart:
+            condition: any
+          image: ${_param:docker_image_visualizer}
+          constraint: "node.role==manager"
+          ports:
+            - 18090:8080
+          volume:
+            docker:
+              type: bind
+              source: /var/run/docker.sock
+              destination: /var/run/docker.sock
diff --git a/docker/swarm/stack/aptly.yml b/docker/swarm/stack/aptly.yml
new file mode 100644
index 0000000..5570c40
--- /dev/null
+++ b/docker/swarm/stack/aptly.yml
@@ -0,0 +1,31 @@
+parameters:
+  _param:
+    docker_image_aptly:
+      api: tcpcloud/aptly-api
+      public: tcpcloud/aptly-public
+  docker:
+    client:
+      stack:
+        aptly:
+          environment:
+            EMAIL_ADDRESS: ${_param:admin_email}
+          service:
+            api:
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_aptly:api}
+              ports:
+                - 18084:8080
+              volumes:
+                - /srv/volumes/aptly:/var/lib/aptly
+            public:
+              deploy:
+                replicas: 3
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_aptly:public}
+              ports:
+                - 18085:80
+              volumes:
+                - /srv/volumes/aptly/public:/var/www/html
diff --git a/docker/swarm/stack/artifactory.yml b/docker/swarm/stack/artifactory.yml
new file mode 100644
index 0000000..cda48fe
--- /dev/null
+++ b/docker/swarm/stack/artifactory.yml
@@ -0,0 +1,23 @@
+parameters:
+  docker:
+    client:
+      stack:
+        artifactory:
+          environment:
+            MYSQL_HOST: ${_param:cluster_vip_address}
+            MYSQL_USERNAME: artifactory
+            MYSQL_PASSWORD: ${_param:mysql_artifactory_password}
+            MYSQL_DATABASE: artifactory
+          service:
+            artifactory:
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_repository:cicd}/artifactory
+              ports:
+                - 18082:8081
+              volumes:
+                - /srv/volumes/artifactory/data:/var/opt/jfrog/artifactory/data
+                - /srv/volumes/artifactory/backup:/var/opt/jfrog/artifactory/backup
+                - /srv/volumes/artifactory/etc:/var/opt/jfrog/artifactory/etc
+                - /srv/volumes/artifactory/logs:/var/opt/jfrog/artifactory/logs
diff --git a/docker/swarm/stack/dashboard.yml b/docker/swarm/stack/dashboard.yml
new file mode 100644
index 0000000..5621d8a
--- /dev/null
+++ b/docker/swarm/stack/dashboard.yml
@@ -0,0 +1,16 @@
+parameters:
+  docker:
+    client:
+      stack:
+        dashboard:
+          service:
+            grafana:
+              deploy:
+                replicas: 1
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_grafana}
+              ports:
+                - 15013:3000
+              environment:
+                GF_SECURITY_ADMIN_PASSWORD: ${_param:grafana_admin_password}
diff --git a/docker/swarm/stack/devops_portal.yml b/docker/swarm/stack/devops_portal.yml
new file mode 100644
index 0000000..c894d33
--- /dev/null
+++ b/docker/swarm/stack/devops_portal.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    docker_devops_portal_replicas: 1
+    docker_image_devops_portal: docker-sandbox.sandbox.mirantis.net/ikharin/oss/devops-portal:latest
+  docker:
+    client:
+      stack:
+        devops-portal:
+          service:
+            frontend:
+              image: ${_param:docker_image_devops_portal}
+              deploy:
+                replicas: ${_param:docker_devops_portal_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - 18800:8000
+              volumes:
+                - /srv/volumes/devops_portal/nginx:/etc/nginx/config
+                - /srv/volumes/devops_portal/config:/opt/devops-portal/config
diff --git a/docker/swarm/stack/docker.yml b/docker/swarm/stack/docker.yml
new file mode 100644
index 0000000..a680d4c
--- /dev/null
+++ b/docker/swarm/stack/docker.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    docker_image_registry: registry:2
+    docker_image_visualizer: manomarks/visualizer
+  docker:
+    client:
+      stack:
+        docker:
+          service:
+            registry:
+              environment:
+                REGISTRY_HTTP_SECRET: ${_param:docker_registry_http_secret}
+              deploy:
+                replicas: 3
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_registry}
+              ports:
+                - 15000:5000
+              volumes:
+                - /srv/volumes/registry:/var/lib/registry
+            visualizer:
+              deploy:
+                restart_policy:
+                  condition: any
+                placement:
+                  constraints:
+                    - "node.role == manager"
+              image: ${_param:docker_image_visualizer}
+              ports:
+                - 18090:8080
+              volumes:
+                - /var/run/docker.sock:/var/run/docker.sock
diff --git a/docker/swarm/stack/gerrit.yml b/docker/swarm/stack/gerrit.yml
new file mode 100644
index 0000000..26ffe7f
--- /dev/null
+++ b/docker/swarm/stack/gerrit.yml
@@ -0,0 +1,60 @@
+parameters:
+  _param:
+    docker_image_gerrit: tcpcloud/gerrit:2.13.6
+    docker_image_mysql: mysql:5.6
+    gerrit_ldap_server: ""
+    gerrit_ldap_bind_user: ""
+    gerrit_ldap_bind_password: ""
+    gerrit_ldap_account_base: ""
+    gerrit_ldap_group_base: ""
+
+  docker:
+    client:
+      stack:
+        gerrit:
+          service:
+            server:
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_gerrit}
+              ports:
+                - 18083:8080
+                - 29417:29418
+              volumes:
+                - /srv/volumes/gerrit:/var/gerrit/review_site
+              depends_on:
+                - db
+              environment:
+                #GERRIT_INIT_ARGS: ""
+                DATABASE_TYPE: "mysql"
+                DB_PORT_3306_TCP_ADDR: ${_param:cluster_vip_address}
+                DB_ENV_MYSQL_USER: gerrit
+                DB_ENV_MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+                DB_ENV_MYSQL_DB: gerrit
+                AUTH_TYPE: ${_param:gerrit_auth_type}
+                LDAP_SERVER: ${_param:gerrit_ldap_server}
+                LDAP_ACCOUNTPATTERN: 'uid={username}'
+                LDAP_ACCOUNTBASE: ${_param:gerrit_ldap_account_base}
+                LDAP_GROUPBASE: ${_param:gerrit_ldap_group_base}
+                LDAP_USERNAME: ${_param:gerrit_ldap_bind_user}
+                LDAP_PASSWORD: ${_param:gerrit_ldap_bind_password}
+                WEBURL: ${_param:gerrit_public_host}
+                GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
+                GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
+                GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
+                CANLOADINIFRAME: "true"
+            db:
+              environment:
+                MYSQL_USER: gerrit
+                MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+                MYSQL_DATABASE: gerrit
+                MYSQL_ROOT_PASSWORD: ${_param:mysql_admin_password}
+              deploy:
+                restart_policy:
+                  condition: any
+              image: "${_param:docker_image_mysql}"
+              ports:
+                - 13306:3306
+              volumes:
+                - /srv/volumes/mysql:/var/lib/mysql
diff --git a/docker/swarm/stack/jenkins.yml b/docker/swarm/stack/jenkins.yml
new file mode 100644
index 0000000..acea08b
--- /dev/null
+++ b/docker/swarm/stack/jenkins.yml
@@ -0,0 +1,22 @@
+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/ldap.yml b/docker/swarm/stack/ldap.yml
new file mode 100644
index 0000000..6e94695
--- /dev/null
+++ b/docker/swarm/stack/ldap.yml
@@ -0,0 +1,46 @@
+parameters:
+  _param:
+    docker_image_openldap: osixia/openldap:1.1.8
+    docker_image_phpldapadmin: tcpcloud/phpldapadmin:0.6.12
+  docker:
+    client:
+      stack:
+        ldap:
+          service:
+            server:
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_openldap}
+              hostname: ldap01
+              domainname: ${_param:openldap_domain}
+              ports:
+                - 1389:389
+                - 1636:636
+              volumes:
+                - /srv/volumes/openldap/database:/var/lib/ldap
+                - /srv/volumes/openldap/config:/etc/ldap/slapd.d
+              environment:
+                HOSTNAME: ldap01.${_param:openldap_domain}
+                LDAP_ORGANISATION: "${_param:openldap_organisation}"
+                LDAP_DOMAIN: "${_param:openldap_domain}"
+                LDAP_ADMIN_PASSWORD: ${_param:openldap_admin_password}
+                LDAP_CONFIG_PASSWORD: ${_param:openldap_config_password}
+                LDAP_TLS: "false"
+            admin:
+              deploy:
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_phpldapadmin}
+              depends_on:
+                - server
+              hostname: ldap
+              domainname: ${_param:openldap_domain}
+              environment:
+                PHPLDAPADMIN_LDAP_HOSTS: "#PYTHON2BASH:[{'ldap.${_param:openldap_domain}': [{'server': [{'tls': False}]},{'login': [{'bind_id': 'cn=admin,${_param:openldap_dn}'},{'bind_pass': '${_param:openldap_admin_password}'}]}]}]"
+                PHPLDAPADMIN_HTTPS: "false"
+                PHPLDAPADMIN_TRUST_PROXY_SSL: "true"
+                PHPLDAPADMIN_SERVER_ADMIN: ${_param:admin_email}
+                PHPLDAPADMIN_THEME: mirantis
+              ports:
+                - 18089:80
diff --git a/docker/swarm/stack/monitoring.yml b/docker/swarm/stack/monitoring.yml
new file mode 100644
index 0000000..46a2845
--- /dev/null
+++ b/docker/swarm/stack/monitoring.yml
@@ -0,0 +1,65 @@
+classes:
+- service.prometheus.server.container
+- service.prometheus.alertmanager.container
+- service.prometheus.pushgateway.container
+parameters:
+  docker:
+    client:
+      stack:
+        monitoring:
+          network:
+            monitoring:
+              driver: overlay
+              driver_opts:
+                encrypted: 1
+          service:
+            alertmanager:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 2
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_alertmanager}
+              ports:
+                - 15011:${prometheus:alertmanager:bind:port}
+              volumes:
+                - /srv/volumes/prometheus:/opt/alertmanager/config
+              environment:
+                config_dir: /opt/alertmanager/config
+                bind_port: ${prometheus:alertmanager:bind:port}
+                bind_address: ${prometheus:alertmanager:bind:address}
+                discovery_domain: 'monitoring_alertmanager'
+            pushgateway:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 2
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_pushgateway}
+              ports:
+                - 15012:9091
+            server:
+              networks:
+                - monitoring
+              deploy:
+                replicas: 1
+                restart_policy:
+                  condition: any
+              image: ${_param:docker_image_prometheus}
+              ports:
+                - 15010:${prometheus:server:bind:port}
+              volumes:
+                - /srv/volumes/prometheus:/opt/prometheus/config
+              environment:
+                config_dir: /opt/prometheus/config
+                bind_port: ${prometheus:server:bind:port}
+                bind_address: ${prometheus:server:bind:address}
+                alertmanager_port: ${prometheus:alertmanager:bind:port}
+                storage_local_engine: ${prometheus:server:storage:local:engine}
+                storage_local_retention: ${prometheus:server:storage:local:retention}
+                storage_local_memory_chunks: ${prometheus:server:storage:local:memory_chunks}
+                storage_local_max_chunks_to_persist: ${prometheus:server:storage:local:max_chunks_to_persist}
+                storage_local_num_fingerprint_mutexes: ${prometheus:server:storage:local:num_fingerprint_mutexes}
+                discovery_domain: 'monitoring_alertmanager'
diff --git a/docker/swarm/stack/pushkin.yml b/docker/swarm/stack/pushkin.yml
new file mode 100644
index 0000000..b28b1e9
--- /dev/null
+++ b/docker/swarm/stack/pushkin.yml
@@ -0,0 +1,52 @@
+parameters:
+  _param:
+    docker_pushkin_db_replicas: 1
+    docker_image_pushkin_db: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkindb:latest
+    pushkin_db_password: pushkin
+    pushkin_db_user: pushkin
+    pushkin_db: pushkin
+    docker_pushkin_replicas: 1
+    docker_image_pushkin: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/pushkin:latest
+    elasticsearch_replicas: 1
+    docker_image_oss_elasticsearch: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/elasticsearch:latest
+  docker:
+    client:
+      stack:
+        pushkin:
+          environment:
+            POSTGRES_USER: ${_param:pushkin_db_user}
+            POSTGRES_PASSWORD: ${_param:pushkin_db_password}
+            POSTGRES_DB: ${_param:pushkin_db}
+            PUSHKINDBHOST: ${_param:haproxy_pushkin_db_bind_host}
+            PUSHKINELASTICHOST: ${_param:haproxy_elasticsearch_bind_host}
+          service:
+            db:
+              image: ${_param:docker_image_pushkin_db}
+              deploy:
+                replicas: ${_param:docker_pushkin_db_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_pushkin_db_exposed_port}:${_param:haproxy_pushkin_db_bind_port}
+              volumes:
+                - /srv/volumes/pushkin/data:/var/lib/postgresql/data
+            backend:
+              image: ${_param:docker_image_pushkin}
+              deploy:
+                replicas: ${_param:docker_pushkin_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_pushkin_exposed_port}:${_param:haproxy_pushkin_bind_port}
+              volumes:
+                - /srv/volumes/pushkin/logs:/var/log/pushkin
+            elasticsearch:
+              image: ${_param:docker_image_oss_elasticsearch}
+              deploy:
+                replicas: ${_param:elasticsearch_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_elasticsearch_exposed_port}:${_param:haproxy_elasticsearch_bind_port}
+              volumes:
+                - /srv/volumes/elasticsearch:/usr/share/elasticsearch/data
diff --git a/docker/swarm/stack/rundeck.yml b/docker/swarm/stack/rundeck.yml
new file mode 100644
index 0000000..b0951a4
--- /dev/null
+++ b/docker/swarm/stack/rundeck.yml
@@ -0,0 +1,29 @@
+parameters:
+  _param:
+    docker_rundeck_replicas: 1
+    docker_image_rundeck: docker-sandbox.sandbox.mirantis.net/ikharin/oss/rundeck:latest
+    rundeck_admin_password: password
+  docker:
+    client:
+      stack:
+        rundeck:
+          environment:
+            SERVER_URL: "http://${_param:haproxy_rundeck_bind_host}:${_param:haproxy_rundeck_bind_port}"
+            RUNDECK_ADMIN_PASSWORD: ${_param:rundeck_admin_password}
+          service:
+            rundeck:
+              image: ${_param:docker_image_rundeck}
+              deploy:
+                replicas: ${_param:docker_rundeck_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - 14440:4440
+              volumes:
+                - /srv/volumes/rundeck/etc:/etc/rundeck
+                - /srv/volumes/rundeck/rundeck:/var/rundeck
+                - /srv/volumes/rundeck/mysql:/var/lib/mysql
+                - /srv/volumes/rundeck/log:/var/log/rundeck
+                - /srv/volumes/rundeck/logs:/var/lib/rundeck/logs
+                - /srv/volumes/rundeck/plugins:/opt/rundeck-plugins
+                - /srv/volumes/rundeck/storage:/var/lib/rundeck/var/storage
diff --git a/docker/swarm/worker.yml b/docker/swarm/worker.yml
new file mode 100644
index 0000000..643b207
--- /dev/null
+++ b/docker/swarm/worker.yml
@@ -0,0 +1,11 @@
+classes:
+  - system.docker.swarm.network.gwbridge
+parameters:
+  _param:
+    docker_gwbridge_subnet: 10.20.0.0/16
+  docker:
+    swarm:
+      role: worker
+      advertise_addr: ${_param:single_address}
+      master:
+        host: ${_param:cluster_node01_address}
diff --git a/elasticsearch/client/single.yml b/elasticsearch/client/single.yml
index 8407e2d..d9ce432 100644
--- a/elasticsearch/client/single.yml
+++ b/elasticsearch/client/single.yml
@@ -5,4 +5,4 @@
     client:
       enabled: true
       server:
-        host: ${_param:stacklight_monitor_address}
+        host: ${_param:stacklight_log_address}
diff --git a/freeipa/server/cluster.yml b/freeipa/server/cluster.yml
index 70f13b9..4bcbeb6 100644
--- a/freeipa/server/cluster.yml
+++ b/freeipa/server/cluster.yml
@@ -5,6 +5,7 @@
     server:
       realm: ${_param:freeipa_realm} 
       domain: ${_param:cluster_domain}
+      princimal_user: ${_param:freeipa_principal_user}
       servers:
         - ${_param:infra_freeipa_node01_hostname}.${_param:cluster_domain}
         - ${_param:infra_freeipa_node02_hostname}.${_param:cluster_domain}
@@ -13,8 +14,5 @@
         password: ${_param:freeipa_admin_password}
       ldap:
         password: ${_param:freeipa_ldap_password}
-      dns:
-        zone:
-          # Main zones
-          mb-staging.vw.vwg: ${_param:freeipa_dns_zone}
+
 
diff --git a/galera/server/database/nova.yml b/galera/server/database/nova.yml
index 619c5df..86d4821 100644
--- a/galera/server/database/nova.yml
+++ b/galera/server/database/nova.yml
@@ -24,3 +24,14 @@
             password: ${_param:mysql_nova_password}
             host: ${_param:cluster_local_address}
             rights: all
+        nova_cell0:
+          encoding: utf8
+          users:
+          - name: nova
+            password: ${_param:mysql_nova_password}
+            host: '%'
+            rights: all
+          - name: nova
+            password: ${_param:mysql_nova_password}
+            host: ${_param:cluster_local_address}
+            rights: all
diff --git a/gerrit/client/init.yml b/gerrit/client/init.yml
index ab2860b..25c0b94 100644
--- a/gerrit/client/init.yml
+++ b/gerrit/client/init.yml
@@ -1,36 +1,40 @@
+classes:
+  - service.gerrit.client
 parameters:
+  _param:
+    gerrit_try_login: true
   gerrit:
     client:
       enabled: True
+      try_login: ${_param:gerrit_try_login}
+      source:
+        engine: pip
       dir:
         git: /srv/volumes/gerrit/git
+        gerrit_config: /srv/volumes/gerrit/etc/gerrit.config
+        gerrit_secure_config: /srv/volumes/gerrit/etc/secure.config
       server:
-        host: ${_param:openstack_control_address}
+        host: ${_param:cluster_vip_address}
         user: admin
-        email: root@localhost
-        http_port: 8083
+        email: ${_param:gerrit_admin_email}
+        auth_method: basic
+        http_port: 8080
         ssh_port: 29418
         protocol: http
         password: ${_param:gerrit_admin_password}
         key: ${_param:gerrit_admin_private_key}
+      user:
+        admin:
+          ssh_key: ${_param:gerrit_admin_public_key}
       group:
         Event Streaming Users:
           description: Event Streaming Users
-        mcp_fuel_aio-core:
+        devops-core:
           description: Core maintainers
-        mcp_fuel_aio-release:
+        devops-release:
           description: Release engineers
-        mcp_fuel_aio-contrib:
+        devops-contrib:
           description: Service developers
-      user:
-        jenkins:
-          fullname: Non-Interactive Jenkins
-          email: "jenkins@mirantis.com"
-          ssh_key: ${_param:gerrit_admin_public_key}
-          http_password: password
-          groups:
-          - Event Streaming Users
-          - Non-Interactive Users
       default_access:
         "refs/*":
           actions:
@@ -39,12 +43,12 @@
         "refs/heads/*":
           actions:
           - name: abandon
-            group: ccp-poc-core
+            group: devops-core
           - name: create
-            group: ccp-poc-release
+            group: devops-core
           labels:
           - name: label-Code-Review
-            group: ccp-poc-core
+            group: devops-core
             score: -2..+2
           - name: label-Code-Review
             group: Non-Interactive Users
@@ -53,9 +57,17 @@
             group: Non-Interactive Users
             score: -1..+1
           - name: label-Workflow
-            group: ccp-poc-core
+            group: devops-core
             score: -1..+1
         "refs/tags/*":
           actions:
           - name: pushSignedTag
-            group: ${_param:cluster_name}-release
+            group: devops-core
+          - name: create
+            group: devops-core
+          - name: push
+            group: devops-core
+          - name: forgeCommitter
+            group: devops-core
+          - name: forgeAuthor
+            group: devops-core
diff --git a/gerrit/client/project/ci.yml b/gerrit/client/project/ci.yml
new file mode 100644
index 0000000..f1fdcd1
--- /dev/null
+++ b/gerrit/client/project/ci.yml
@@ -0,0 +1,20 @@
+parameters:
+  gerrit:
+    client:
+      project:
+        mcp-ci/pipeline-library:
+          enabled: true
+          description: Jenkins pipeline libraries
+          upstream: https://github.com/Mirantis/pipeline-library
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
+        mk/mk-pipelines:
+          enabled: true
+          description: Jenkins pipelines
+          upstream: https://github.com/Mirantis/mk-pipelines
+          access: ${gerrit:client:default_access}
+          require_change_id: true
+          require_agreement: false
+          merge_content: true
diff --git a/gerrit/client/project/reclass/reclass_model_cluster.yml b/gerrit/client/project/reclass/reclass_model_cluster.yml
deleted file mode 100644
index 96ddd41..0000000
--- a/gerrit/client/project/reclass/reclass_model_cluster.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        reclass-model-cluster:
-          enabled: true
-          description: Reclass cluster model
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/project/salt/init.yml b/gerrit/client/project/salt/init.yml
deleted file mode 100644
index d9ce6eb..0000000
--- a/gerrit/client/project/salt/init.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
-- gerrit.client.project.salt.salt_formula_linux
-- gerrit.client.project.salt.salt_formula_nova
-- gerrit.client.project.salt.salt_formula_salt
diff --git a/gerrit/client/project/salt/salt_formula_linux.yml b/gerrit/client/project/salt/salt_formula_linux.yml
deleted file mode 100644
index d8d026b..0000000
--- a/gerrit/client/project/salt/salt_formula_linux.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        salt-formula-linux:
-          enabled: true
-          description: Linux formula
-          upstream: https://github.com/tcpcloud/salt-formula-linux.git
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/project/salt/salt_formula_nova.yml b/gerrit/client/project/salt/salt_formula_nova.yml
deleted file mode 100644
index 3424ec0..0000000
--- a/gerrit/client/project/salt/salt_formula_nova.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        salt-formula-nova:
-          enabled: true
-          description: OpenStack Nova formula
-          upstream: https://github.com/openstack/salt-formula-nova.git
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/project/salt/salt_formula_salt.yml b/gerrit/client/project/salt/salt_formula_salt.yml
deleted file mode 100644
index 95668a0..0000000
--- a/gerrit/client/project/salt/salt_formula_salt.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        salt-formula-salt:
-          enabled: true
-          description: Salt formula
-          upstream: https://github.com/tcpcloud/salt-formula-salt.git
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/single.yml b/gerrit/client/single.yml
deleted file mode 100644
index cfabc1d..0000000
--- a/gerrit/client/single.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-parameters:
-  _param:
-    gerrit_server_port: 8082
-  gerrit:
-    client:
-      enabled: True
-      server: 
-        host: ${_param:gerrit_server_host}
-        user: admin
-        email: root@localhost
-        http_port: ${_param:gerrit_server_port}
-        ssh_port: 29418
-        protocol: http
-        password: ${_param:gerrit_admin_password}
-        key: ${_param:gerrit_admin_private_key}
diff --git a/gerrit/client/team/customer.yml b/gerrit/client/team/customer.yml
deleted file mode 100644
index 12ca541..0000000
--- a/gerrit/client/team/customer.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      user: {}
\ No newline at end of file
diff --git a/gerrit/client/team/mirantis.yml b/gerrit/client/team/mirantis.yml
index 0d8a4e1..33e0bed 100644
--- a/gerrit/client/team/mirantis.yml
+++ b/gerrit/client/team/mirantis.yml
@@ -5,24 +5,21 @@
         akomarek:
           fullname: Ales Komarek
           email: "akomarek@mirantis.com"
-          http_password: password
           ssh_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ
           groups:
-          - ${_param:cluster_name}_core
-          - ${_param:cluster_name}_release
+          - devops-core
+          - devops-release
         jpavlik:
           fullname: Jakub Pavlik
           email: "jpavlik@mirantis.com"
-          http_password: password
           ssh_key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAylDZDzgMuEsJQpwFHDW+QivCVhryxXd1/HWqq1TVhJmT9oNAYdhUBnf/9kVtgmP0EWpDJtGSEaSugCmx8KE76I64RhpOTlm7wO0FFUVnzhFtTPx38WHfMjMdk1HF8twZU4svi72Xbg1KyBimwvaxTTd4zxq8Mskp3uwtkqPcQJDSQaZYv+wtuB6m6vHBCOTZwAognDGEvvCg0dgTU4hch1zoHSaxedS1UFHjUAM598iuI3+hMos/5hjG/vuay4cPLBJX5x1YF6blbFALwrQw8ZmTPaimqDUA9WD6KSmS1qg4rOkk4cszIfJ5vyymMrG+G3qk5LeT4VrgIgWQTAHyXw==
           groups:
-          - ${_param:cluster_name}-core
-          - ${_param:cluster_name}-release
+          - devops-core
+          - devops-release
         fpytloun:
           fullname: Filip Pytloun
           email: "fpytloun@mirantis.com"
-          http_password: password
           ssh_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==
           groups:
-          - ${_param:cluster_name}-core
-          - ${_param:cluster_name}-release
+          - devops-core
+          - devops-release
diff --git a/glance/control/storage/ceph.yml b/glance/control/storage/ceph.yml
index ef3c033..d48fb6d 100644
--- a/glance/control/storage/ceph.yml
+++ b/glance/control/storage/ceph.yml
@@ -2,7 +2,7 @@
   glance:
     server:
       storage:
-        engine: rbd
+        engine: rbd,http
         user: ${_param:glance_storage_user}
         pool: ${_param:glance_storage_pool}
         chunk_size: 8
\ No newline at end of file
diff --git a/glance/control/storage/glusterfs.yml b/glance/control/storage/glusterfs.yml
deleted file mode 100644
index ae0e84d..0000000
--- a/glance/control/storage/glusterfs.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-classes:
-- service.glusterfs.server
-- service.glusterfs.client
-parameters:
-  glusterfs:
-    server:
-      peers:
-      - ${_param:cluster_node01_address}
-      - ${_param:cluster_node02_address}
-      - ${_param:cluster_node03_address}
-      volumes:
-        glance:
-          storage: /srv/glusterfs/glance
-          replica: 3
-          bricks:
-            - ${_param:cluster_node01_address}:/srv/glusterfs/glance
-            - ${_param:cluster_node02_address}:/srv/glusterfs/glance
-            - ${_param:cluster_node03_address}:/srv/glusterfs/glance
-          options:
-            cluster.readdir-optimize: On
-            nfs.disable: On
-            network.remote-dio: On
-            diagnostics.client-log-level: WARNING
-            diagnostics.brick-log-level: WARNING
-    client:
-      volumes:
-        glance:
-          path: /var/lib/glance/images
-          server: ${_param:glusterfs_service_host}
-          user: glance
-          group: glance
-  glance:
-    server:
-      storage:
-        engine: file
-      images: []
diff --git a/glusterfs/client/volume/aptly.yml b/glusterfs/client/volume/aptly.yml
new file mode 100644
index 0000000..86a1b40
--- /dev/null
+++ b/glusterfs/client/volume/aptly.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    aptly_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        aptly:
+          path: /srv/volumes/aptly
+          server: ${_param:aptly_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/artifactory.yml b/glusterfs/client/volume/artifactory.yml
index 056ff82..2d36961 100644
--- a/glusterfs/client/volume/artifactory.yml
+++ b/glusterfs/client/volume/artifactory.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    artifactory_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         artifactory:
           path: /srv/volumes/artifactory
-          server: ${_param:cluster_node01_address}
-          opts: 'defaults'
+          server: ${_param:artifactory_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/devops_portal.yml b/glusterfs/client/volume/devops_portal.yml
new file mode 100644
index 0000000..5a0c07a
--- /dev/null
+++ b/glusterfs/client/volume/devops_portal.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    devops_portal_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        devops_portal:
+          path: /srv/volumes/devops_portal
+          server: ${_param:devops_portal_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/elasticsearch.yml b/glusterfs/client/volume/elasticsearch.yml
new file mode 100644
index 0000000..2fad4ba
--- /dev/null
+++ b/glusterfs/client/volume/elasticsearch.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    elasticsearch_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        elasticsearch:
+          path: /srv/volumes/elasticsearch
+          server: ${_param:elasticsearch_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/gerrit.yml b/glusterfs/client/volume/gerrit.yml
index 9cbef86..39e9559 100644
--- a/glusterfs/client/volume/gerrit.yml
+++ b/glusterfs/client/volume/gerrit.yml
@@ -1,10 +1,12 @@
 parameters:
+  _param:
+    gerrit_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         gerrit:
           path: /srv/volumes/gerrit
-          server: ${_param:cluster_node01_address}
-          opts: 'defaults'
+          server: ${_param:gerrit_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
           user: 1000
           group: 1000
diff --git a/glusterfs/client/volume/glance.yml b/glusterfs/client/volume/glance.yml
index 66a4166..25cc988 100644
--- a/glusterfs/client/volume/glance.yml
+++ b/glusterfs/client/volume/glance.yml
@@ -9,3 +9,4 @@
           server: ${_param:glance_glusterfs_service_host}
           user: glance
           group: glance
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/jenkins.yml b/glusterfs/client/volume/jenkins.yml
index 5f804fe..8ca47e2 100644
--- a/glusterfs/client/volume/jenkins.yml
+++ b/glusterfs/client/volume/jenkins.yml
@@ -1,10 +1,12 @@
 parameters:
+  _param:
+    jenkins_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         jenkins:
           path: /srv/volumes/jenkins
-          server: ${_param:cluster_node01_address}
-          opts: 'defaults'
+          server: ${_param:jenkins_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
           user: 1000
           group: 1000
diff --git a/glusterfs/client/volume/keystone.yml b/glusterfs/client/volume/keystone.yml
index 188ea03..415e93f 100644
--- a/glusterfs/client/volume/keystone.yml
+++ b/glusterfs/client/volume/keystone.yml
@@ -8,4 +8,5 @@
           path: /var/lib/keystone/fernet-keys
           server: ${_param:keystone_glusterfs_service_host}
           user: keystone
-          group: keystone
\ No newline at end of file
+          group: keystone
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/mysql.yml b/glusterfs/client/volume/mysql.yml
index ebd91fd..3208a71 100644
--- a/glusterfs/client/volume/mysql.yml
+++ b/glusterfs/client/volume/mysql.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    mysql_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         mysql:
           path: /srv/volumes/mysql
-          server: ${_param:cluster_node01_address}
-          opts: 'defaults'
+          server: ${_param:mysql_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/openldap.yml b/glusterfs/client/volume/openldap.yml
new file mode 100644
index 0000000..0de1d10
--- /dev/null
+++ b/glusterfs/client/volume/openldap.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    openldap_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        openldap:
+          path: /srv/volumes/openldap
+          server: ${_param:openldap_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/postgresql.yml b/glusterfs/client/volume/postgresql.yml
index 1867d82..087afa9 100644
--- a/glusterfs/client/volume/postgresql.yml
+++ b/glusterfs/client/volume/postgresql.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    postgresql_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         postgresql:
           path: /srv/volumes/postgresql
-          server: ${_param:cluster_node01_address}
-          opts: 'defaults'
+          server: ${_param:postgresql_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/prometheus.yml b/glusterfs/client/volume/prometheus.yml
new file mode 100644
index 0000000..49145d3
--- /dev/null
+++ b/glusterfs/client/volume/prometheus.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    prometheus_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        prometheus:
+          path: /srv/volumes/prometheus
+          server: ${_param:prometheus_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/pushkin.yml b/glusterfs/client/volume/pushkin.yml
new file mode 100644
index 0000000..af3ee44
--- /dev/null
+++ b/glusterfs/client/volume/pushkin.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    pushkin_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        pushkin:
+          path: /srv/volumes/pushkin
+          server: ${_param:pushkin_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/registry.yml b/glusterfs/client/volume/registry.yml
new file mode 100644
index 0000000..2bb5019
--- /dev/null
+++ b/glusterfs/client/volume/registry.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    registry_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        registry:
+          path: /srv/volumes/registry
+          server: ${_param:registry_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/rundeck.yml b/glusterfs/client/volume/rundeck.yml
new file mode 100644
index 0000000..05709ea
--- /dev/null
+++ b/glusterfs/client/volume/rundeck.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    rundeck_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        rundeck:
+          path: /srv/volumes/rundeck
+          server: ${_param:rundeck_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/salt.yml b/glusterfs/client/volume/salt.yml
index f94b316..7ed434a 100644
--- a/glusterfs/client/volume/salt.yml
+++ b/glusterfs/client/volume/salt.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    salt_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         saltmaster:
           path: /etc/salt/pki/master
-          server: ${_param:cluster_node01_address}
-          opts: 'defaults'
+          server: ${_param:salt_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/client/volume/salt_pki.yml b/glusterfs/client/volume/salt_pki.yml
new file mode 100644
index 0000000..822a086
--- /dev/null
+++ b/glusterfs/client/volume/salt_pki.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    salt_glusterfs_service_host: ${_param:glusterfs_service_host}
+  glusterfs:
+    client:
+      volumes:
+        salt_pki:
+          path: /srv/salt/pki
+          server: ${_param:salt_glusterfs_service_host}
+          opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}"
diff --git a/glusterfs/server/cluster.yml b/glusterfs/server/cluster.yml
index 60371e2..87aa0e9 100644
--- a/glusterfs/server/cluster.yml
+++ b/glusterfs/server/cluster.yml
@@ -1,6 +1,5 @@
 classes:
 - service.glusterfs.server
-- service.keepalived.cluster.single
 parameters:
   glusterfs:
     _support:
diff --git a/glusterfs/server/volume/aptly.yml b/glusterfs/server/volume/aptly.yml
new file mode 100644
index 0000000..db01638
--- /dev/null
+++ b/glusterfs/server/volume/aptly.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        aptly:
+          storage: /srv/glusterfs/aptly
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/aptly
+            - ${_param:cluster_node02_address}:/srv/glusterfs/aptly
+            - ${_param:cluster_node03_address}:/srv/glusterfs/aptly
+          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/devops_portal.yml b/glusterfs/server/volume/devops_portal.yml
new file mode 100644
index 0000000..0b71b62
--- /dev/null
+++ b/glusterfs/server/volume/devops_portal.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        devops_portal:
+          storage: /srv/glusterfs/devops_portal
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/devops_portal
+            - ${_param:cluster_node02_address}:/srv/glusterfs/devops_portal
+            - ${_param:cluster_node03_address}:/srv/glusterfs/devops_portal
+          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/elasticsearch.yml b/glusterfs/server/volume/elasticsearch.yml
new file mode 100644
index 0000000..73f35c1
--- /dev/null
+++ b/glusterfs/server/volume/elasticsearch.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        elasticsearch:
+          storage: /srv/glusterfs/elasticsearch
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/elasticsearch
+            - ${_param:cluster_node02_address}:/srv/glusterfs/elasticsearch
+            - ${_param:cluster_node03_address}:/srv/glusterfs/elasticsearch
+          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/openldap.yml b/glusterfs/server/volume/openldap.yml
new file mode 100644
index 0000000..d507b44
--- /dev/null
+++ b/glusterfs/server/volume/openldap.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        openldap:
+          storage: /srv/glusterfs/openldap
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/openldap
+            - ${_param:cluster_node02_address}:/srv/glusterfs/openldap
+            - ${_param:cluster_node03_address}:/srv/glusterfs/openldap
+          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/prometheus.yml b/glusterfs/server/volume/prometheus.yml
new file mode 100644
index 0000000..144847a
--- /dev/null
+++ b/glusterfs/server/volume/prometheus.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        prometheus:
+          storage: /srv/glusterfs/prometheus
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/prometheus
+            - ${_param:cluster_node02_address}:/srv/glusterfs/prometheus
+            - ${_param:cluster_node03_address}:/srv/glusterfs/prometheus
+          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/pushkin.yml b/glusterfs/server/volume/pushkin.yml
new file mode 100644
index 0000000..52d393e
--- /dev/null
+++ b/glusterfs/server/volume/pushkin.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        pushkin:
+          storage: /srv/glusterfs/pushkin
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/pushkin
+            - ${_param:cluster_node02_address}:/srv/glusterfs/pushkin
+            - ${_param:cluster_node03_address}:/srv/glusterfs/pushkin
+          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/registry.yml b/glusterfs/server/volume/registry.yml
new file mode 100644
index 0000000..5df7d8a
--- /dev/null
+++ b/glusterfs/server/volume/registry.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        registry:
+          storage: /srv/glusterfs/registry
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/registry
+            - ${_param:cluster_node02_address}:/srv/glusterfs/registry
+            - ${_param:cluster_node03_address}:/srv/glusterfs/registry
+          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/rundeck.yml b/glusterfs/server/volume/rundeck.yml
new file mode 100644
index 0000000..22e5563
--- /dev/null
+++ b/glusterfs/server/volume/rundeck.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        rundeck:
+          storage: /srv/glusterfs/rundeck
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/rundeck
+            - ${_param:cluster_node02_address}:/srv/glusterfs/rundeck
+            - ${_param:cluster_node03_address}:/srv/glusterfs/rundeck
+          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/salt_pki.yml b/glusterfs/server/volume/salt_pki.yml
new file mode 100644
index 0000000..7af39da
--- /dev/null
+++ b/glusterfs/server/volume/salt_pki.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        salt_pki:
+          storage: /srv/glusterfs/salt_pki
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/salt_pki
+            - ${_param:cluster_node02_address}:/srv/glusterfs/salt_pki
+            - ${_param:cluster_node03_address}:/srv/glusterfs/salt_pki
+          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/grafana/server/plugin/piechart.yml b/grafana/server/plugin/piechart.yml
new file mode 100644
index 0000000..090872c
--- /dev/null
+++ b/grafana/server/plugin/piechart.yml
@@ -0,0 +1,6 @@
+parameters:
+  grafana:
+    server:
+      plugins:
+        grafana-piechart-panel:
+          enabled: true
diff --git a/haproxy/proxy/listen/cicd/aptly.yml b/haproxy/proxy/listen/cicd/aptly.yml
new file mode 100644
index 0000000..fb24c1f
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -0,0 +1,55 @@
+parameters:
+  _param:
+    haproxy_aptly_api_bind_host: ${_param:haproxy_bind_address}
+    haproxy_aptly_api_bind_port: 8084
+    haproxy_aptly_public_bind_host: ${_param:haproxy_bind_address}
+    haproxy_aptly_public_bind_port: 8085
+  haproxy:
+    proxy:
+      listen:
+        aptly-api:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_aptly_api_bind_host}
+              port: ${_param:haproxy_aptly_api_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18084
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18084
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18084
+              params: backup check
+        aptly-public:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_aptly_public_bind_host}
+              port: ${_param:haproxy_aptly_public_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18085
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18085
+              params: check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18085
+              params: check
diff --git a/haproxy/proxy/listen/cicd/gerrit.yml b/haproxy/proxy/listen/cicd/gerrit.yml
new file mode 100644
index 0000000..51d494b
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -0,0 +1,58 @@
+parameters:
+  _param:
+    haproxy_gerrit_bind_host: ${_param:haproxy_bind_address}
+    haproxy_gerrit_bind_port: 8080
+    haproxy_gerrit_ssh_bind_host: ${_param:haproxy_gerrit_bind_host}
+    haproxy_gerrit_ssh_bind_port: 29418
+    haproxy_gerrit_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        gerrit:
+          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_gerrit_bind_host}
+              port: ${_param:haproxy_gerrit_bind_port}
+              ssl: ${_param:haproxy_gerrit_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18083
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18083
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18083
+              params: backup check
+        gerrit_ssh:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_gerrit_ssh_bind_host}
+              port: ${_param:haproxy_gerrit_ssh_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 29417
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 29417
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 29417
+              params: backup check
diff --git a/haproxy/proxy/listen/cicd/jenkins.yml b/haproxy/proxy/listen/cicd/jenkins.yml
new file mode 100644
index 0000000..eda12f8
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/jenkins.yml
@@ -0,0 +1,60 @@
+parameters:
+  _param:
+    haproxy_jenkins_bind_host: ${_param:haproxy_bind_address}
+    haproxy_jenkins_bind_port: 8081
+    haproxy_jenkins_jnlp_bind_host: ${_param:haproxy_jenkins_bind_host}
+    haproxy_jenkins_jnlp_bind_port: 50000
+    haproxy_jenkins_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        jenkins:
+          mode: http
+          options:
+            - forwardfor
+#            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          http_response:
+            - action: "del-header X-Frame-Options"
+          binds:
+            - address: ${_param:haproxy_jenkins_bind_host}
+              port: ${_param:haproxy_jenkins_bind_port}
+              ssl: ${_param:haproxy_jenkins_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18081
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18081
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18081
+              params: backup check
+        jenkins_jnlp:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_jenkins_jnlp_bind_host}
+              port: ${_param:haproxy_jenkins_jnlp_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 50001
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 50001
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 50001
+              params: backup check
diff --git a/haproxy/proxy/listen/docker/registry.yml b/haproxy/proxy/listen/docker/registry.yml
new file mode 100644
index 0000000..8d45e97
--- /dev/null
+++ b/haproxy/proxy/listen/docker/registry.yml
@@ -0,0 +1,36 @@
+parameters:
+  _param:
+    haproxy_docker_registry_listen_host: ${_param:haproxy_bind_address}
+    haproxy_docker_registry_listen_port: 5000
+    haproxy_docker_registry_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        registry:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          binds:
+            - address: ${_param:haproxy_docker_registry_listen_host}
+              port: ${_param:haproxy_docker_registry_listen_port}
+              ssl: ${_param:haproxy_docker_registry_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 15000
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 15000
+              params: check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 15000
+              params: check
diff --git a/haproxy/proxy/listen/docker/visualizer.yml b/haproxy/proxy/listen/docker/visualizer.yml
new file mode 100644
index 0000000..409815c
--- /dev/null
+++ b/haproxy/proxy/listen/docker/visualizer.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    haproxy_docker_visualizer_listen_port: 8091
+  haproxy:
+    proxy:
+      listen:
+        visualizer:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_docker_visualizer_listen_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18090
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18090
+              params: check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18090
+              params: check
diff --git a/haproxy/proxy/listen/mysql.yml b/haproxy/proxy/listen/mysql.yml
new file mode 100644
index 0000000..a7ef910
--- /dev/null
+++ b/haproxy/proxy/listen/mysql.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    haproxy_mysql_bind_port: 3306
+    haproxy_mysql_source_port: 3306
+  haproxy:
+    proxy:
+      listen:
+        mysql:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_mysql_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_mysql_source_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_mysql_source_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_mysql_source_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/opencontrail/analytics.yml b/haproxy/proxy/listen/opencontrail/analytics.yml
index 6ed6841..fd20277 100644
--- a/haproxy/proxy/listen/opencontrail/analytics.yml
+++ b/haproxy/proxy/listen/opencontrail/analytics.yml
@@ -24,6 +24,7 @@
         contrail_config_stats:
           type: contrail-config
           service_name: contrail
+          check: false
           format: listen
           binds:
           - address: '*'
@@ -33,6 +34,7 @@
         contrail_openstack_stats:
           type: contrail-config
           service_name: contrail
+          check: false
           format: listen
           binds:
           - address: '*'
@@ -42,6 +44,7 @@
         contrail_collector_stats:
           type: contrail-config
           service_name: contrail
+          check: false
           format: listen
           binds:
           - address: '*'
diff --git a/haproxy/proxy/listen/openldap.yml b/haproxy/proxy/listen/openldap.yml
new file mode 100644
index 0000000..b6f79a0
--- /dev/null
+++ b/haproxy/proxy/listen/openldap.yml
@@ -0,0 +1,46 @@
+parameters:
+  _param:
+    haproxy_openldap_bind_host: ${_param:haproxy_bind_address}
+    haproxy_openldap_bind_port: 389
+    haproxy_openldap_ssl_bind_port: 636
+  haproxy:
+    proxy:
+      listen:
+        openldap:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_openldap_bind_host}
+              port: ${_param:haproxy_openldap_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 1389
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 1389
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 1389
+              params: backup check
+        openldap_ssl:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_openldap_bind_host}
+              port: ${_param:haproxy_openldap_ssl_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 1636
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 1636
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 1636
+              params: backup check
diff --git a/haproxy/proxy/listen/openstack/designate.yml b/haproxy/proxy/listen/openstack/designate.yml
new file mode 100644
index 0000000..7a54af2
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/designate.yml
@@ -0,0 +1,19 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        designate_api:
+          type: openstack-service
+          service_name: designate
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 9001
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: 9001
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: 9001
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/galera.yml b/haproxy/proxy/listen/openstack/galera.yml
index 56182d6..254dc3b 100644
--- a/haproxy/proxy/listen/openstack/galera.yml
+++ b/haproxy/proxy/listen/openstack/galera.yml
@@ -1,6 +1,12 @@
 parameters:
   haproxy:
     proxy:
+      timeout:
+        queue: '10s'
+        connect: '10s'
+        client: '10s'
+        server: '10s'
+        check: '10s'
       listen:
         mysql_cluster:
           type: mysql
@@ -12,12 +18,12 @@
           - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 3306
-            params: check
+            params: check inter 20s fastinter 2s downinter 2s rise 3 fall 3
           - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 3306
-            params: backup check
+            params: backup check inter 20s fastinter 2s downinter 2s rise 3 fall 3
           - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 3306
-            params: backup check
\ No newline at end of file
+            params: backup check inter 20s fastinter 2s downinter 2s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/glare.yml b/haproxy/proxy/listen/openstack/glare.yml
new file mode 100644
index 0000000..a984275
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/glare.yml
@@ -0,0 +1,23 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        glare:
+          type: general-service
+          service_name: glare
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 9494
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 9494
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 9494
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 9494
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/murano.yml b/haproxy/proxy/listen/openstack/murano.yml
new file mode 100644
index 0000000..0427820
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/murano.yml
@@ -0,0 +1,18 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        murano_api:
+          type: openstack-service
+          check: false
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8082
+          servers:
+          - name: ${_param:cluster_node01_hostname}
+            host: ${_param:cluster_node01_address}
+            port: 8082
+            params: check
+          - name: ${_param:cluster_node02_hostname}
+            host: ${_param:cluster_node02_address}
+            port: 8082
\ No newline at end of file
diff --git a/haproxy/proxy/listen/openstack/nova-placement.yml b/haproxy/proxy/listen/openstack/nova-placement.yml
new file mode 100644
index 0000000..e3b72b7
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/nova-placement.yml
@@ -0,0 +1,29 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        nova_placement_api:
+          mode: http
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8778
+          options:
+          - httpclose
+          - httplog
+          health-check:
+            http:
+              options:
+              - expect status 401
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 8778
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 8778
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 8778
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/openstack/novnc.yml b/haproxy/proxy/listen/openstack/novnc.yml
new file mode 100644
index 0000000..78b7d98
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/novnc.yml
@@ -0,0 +1,25 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        nova_novnc:
+          type: general-service
+          service_name: http
+          check: true
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 6080
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 6080
+            params: check
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 6080
+            params: check
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 6080
+            params: check
+
diff --git a/haproxy/proxy/listen/openstack/sahara.yml b/haproxy/proxy/listen/openstack/sahara.yml
new file mode 100644
index 0000000..3bbf809
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/sahara.yml
@@ -0,0 +1,24 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        sahara_api:
+          type: openstack-service
+          options:
+            - httplog
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 8386
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 8386
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 8386
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 8386
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/haproxy/proxy/listen/oss/devops_portal.yml b/haproxy/proxy/listen/oss/devops_portal.yml
new file mode 100644
index 0000000..e5c25cf
--- /dev/null
+++ b/haproxy/proxy/listen/oss/devops_portal.yml
@@ -0,0 +1,37 @@
+parameters:
+  _param:
+    haproxy_devops_portal_bind_host: ${_param:haproxy_bind_address}
+    haproxy_devops_portal_bind_port: 8800
+    haproxy_devops_portal_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        devops_portal:
+          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_devops_portal_bind_host}
+              port: ${_param:haproxy_devops_portal_bind_port}
+              ssl: ${_param:haproxy_devops_portal_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18800
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18800
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18800
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/elasticsearch.yml b/haproxy/proxy/listen/oss/elasticsearch.yml
new file mode 100644
index 0000000..2f5d1ee
--- /dev/null
+++ b/haproxy/proxy/listen/oss/elasticsearch.yml
@@ -0,0 +1,38 @@
+parameters:
+  _param:
+    haproxy_elasticsearch_bind_host: ${_param:haproxy_bind_address}
+    haproxy_elasticsearch_bind_port: 9200
+    haproxy_elasticsearch_exposed_port: 19200
+    haproxy_elasticsearch_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        elasticsearch:
+          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_elasticsearch_bind_host}
+              port: ${_param:haproxy_elasticsearch_bind_port}
+              ssl: ${_param:haproxy_elasticsearch_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_elasticsearch_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_elasticsearch_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_elasticsearch_exposed_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/pushkin.yml b/haproxy/proxy/listen/oss/pushkin.yml
new file mode 100644
index 0000000..db33352
--- /dev/null
+++ b/haproxy/proxy/listen/oss/pushkin.yml
@@ -0,0 +1,37 @@
+parameters:
+  _param:
+    haproxy_pushkin_bind_host: ${_param:haproxy_bind_address}
+    haproxy_pushkin_bind_port: 8887
+    haproxy_pushkin_exposed_port: 18887
+    haproxy_pushkin_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        pushkin:
+          mode: http
+          options:
+          - httpchk GET /apps
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          sticks:
+          - http-check expect status 200
+          binds:
+            - address: ${_param:haproxy_pushkin_bind_host}
+              port: ${_param:haproxy_pushkin_bind_port}
+              ssl: ${_param:haproxy_pushkin_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_pushkin_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_pushkin_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_pushkin_exposed_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/pushkin_db.yml b/haproxy/proxy/listen/oss/pushkin_db.yml
new file mode 100644
index 0000000..c67c591
--- /dev/null
+++ b/haproxy/proxy/listen/oss/pushkin_db.yml
@@ -0,0 +1,32 @@
+parameters:
+  _param:
+    haproxy_pushkin_db_bind_host: ${_param:haproxy_bind_address}
+    haproxy_pushkin_db_bind_port: 5432
+    haproxy_pushkin_db_exposed_port: 15432
+    haproxy_pushkin_db_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        pushkin_db:
+          mode: tcp
+          balance: source
+          options:
+          - tcp-check
+          binds:
+            - address: ${_param:haproxy_pushkin_db_bind_host}
+              port: ${_param:haproxy_pushkin_db_bind_port}
+              ssl: ${_param:haproxy_pushkin_db_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_pushkin_db_exposed_port}
+              params: check port ${_param:haproxy_pushkin_db_exposed_port}
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_pushkin_db_exposed_port}
+              params: backup check port ${_param:haproxy_pushkin_db_exposed_port}
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_pushkin_db_exposed_port}
+              params: backup check port ${_param:haproxy_pushkin_db_exposed_port}
diff --git a/haproxy/proxy/listen/oss/rundeck.yml b/haproxy/proxy/listen/oss/rundeck.yml
new file mode 100644
index 0000000..fbabb38
--- /dev/null
+++ b/haproxy/proxy/listen/oss/rundeck.yml
@@ -0,0 +1,37 @@
+parameters:
+  _param:
+    haproxy_rundeck_bind_host: ${_param:haproxy_bind_address}
+    haproxy_rundeck_bind_port: 4440
+    haproxy_rundeck_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        rundeck:
+          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_rundeck_bind_host}
+              port: ${_param:haproxy_rundeck_bind_port}
+              ssl: ${_param:haproxy_rundeck_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 14440
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 14440
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 14440
+              params: backup check
diff --git a/haproxy/proxy/listen/phpldapadmin.yml b/haproxy/proxy/listen/phpldapadmin.yml
new file mode 100644
index 0000000..b2b7f93
--- /dev/null
+++ b/haproxy/proxy/listen/phpldapadmin.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    haproxy_phpldapadmin_bind_host: ${_param:haproxy_bind_address}
+    haproxy_phpldapadmin_bind_port: 8089
+  haproxy:
+    proxy:
+      listen:
+        phpldapadmin:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_phpldapadmin_bind_host}
+              port: ${_param:haproxy_phpldapadmin_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18089
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18089
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18089
+              params: backup check
diff --git a/haproxy/proxy/listen/salt.yml b/haproxy/proxy/listen/salt.yml
new file mode 100644
index 0000000..ba54c07
--- /dev/null
+++ b/haproxy/proxy/listen/salt.yml
@@ -0,0 +1,31 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        salt:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          timeout:
+            server: 20m
+            client: 20m
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: 8000
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 8000
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 8000
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 8000
+              params: backup check
diff --git a/haproxy/proxy/listen/stacklight/influxdb.yml b/haproxy/proxy/listen/stacklight/influxdb.yml
new file mode 100644
index 0000000..02e25d7
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/influxdb.yml
@@ -0,0 +1,28 @@
+parameters:
+  _param:
+    cluster_influxdb_port: ${_param:influxdb_port}
+  haproxy:
+    proxy:
+      listen:
+        influxdb:
+          mode: http
+          options:
+            - "httpchk GET /ping"
+            - httplog
+            - dontlog-normal
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:cluster_influxdb_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 8086
+              params: 'check'
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 8086
+              params: 'backup check'
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 8086
+              params: 'backup check'
diff --git a/haproxy/proxy/listen/stacklight/redis.yml b/haproxy/proxy/listen/stacklight/redis.yml
new file mode 100644
index 0000000..881e8ed
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/redis.yml
@@ -0,0 +1,32 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        redis:
+          mode: tcp
+          check: False
+          health-check:
+            tcp:
+              options:
+                - send PING\r\n
+                - expect string +PONG
+                - send info\ replication\r\n
+                - expect string role:master
+                - send QUIT\r\n
+                - expect string +OK
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:cluster_redis_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 6379
+              params: 'check'
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 6379
+              params: 'check'
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 6379
+              params: 'check'
diff --git a/haproxy/proxy/listen/stacklight/sensu.yml b/haproxy/proxy/listen/stacklight/sensu.yml
new file mode 100644
index 0000000..33ab5bc
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/sensu.yml
@@ -0,0 +1,28 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        sensu:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: 4567
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 4567
+              params: check
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 4567
+              params: check
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 4567
+              params: check
diff --git a/haproxy/proxy/listen/stacklight/uchiwa.yml b/haproxy/proxy/listen/stacklight/uchiwa.yml
new file mode 100644
index 0000000..3bec0e8
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/uchiwa.yml
@@ -0,0 +1,29 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        uchiwa:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: 3001
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 3001
+              params: check
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 3001
+              params: check
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 3001
+              params: check
+
diff --git a/haproxy/proxy/listen/stats.yml b/haproxy/proxy/listen/stats.yml
new file mode 100644
index 0000000..1d093f1
--- /dev/null
+++ b/haproxy/proxy/listen/stats.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    haproxy_stats_port: 9600
+  haproxy:
+    proxy:
+      listen:
+        stats:
+          type: stats
+          check: false
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_stats_port}
diff --git a/haproxy/proxy/single.yml b/haproxy/proxy/single.yml
index e69de29..dc9c668 100644
--- a/haproxy/proxy/single.yml
+++ b/haproxy/proxy/single.yml
@@ -0,0 +1,4 @@
+parameters:
+  haproxy:
+    proxy:
+      enabled: true
diff --git a/heat/server/cluster.yml b/heat/server/cluster.yml
index 43b1ba3..ee5df33 100644
--- a/heat/server/cluster.yml
+++ b/heat/server/cluster.yml
@@ -4,6 +4,8 @@
 - service.keepalived.cluster.single
 - system.haproxy.proxy.listen.openstack.heat
 parameters:
+  _param:
+    cluster_public_protocol: https
   heat:
     server:
       stack_domain_admin:
@@ -11,7 +13,7 @@
         password: ${_param:heat_domain_admin_password}
         domain: heat
       enabled: true
-      region: RegionOne
+      region: ${_param:openstack_region}
       version: ${_param:heat_version}
       bind:
         api_cfn:
@@ -28,14 +30,17 @@
         user: heat
         password: ${_param:mysql_heat_password}
       metadata:
-        host: ${_param:cluster_vip_address}
+        host: ${_param:cluster_public_host}
         port: 8000
+        protocol: ${_param:cluster_public_protocol}
       waitcondition:
-        host: ${_param:cluster_vip_address}
+        host: ${_param:cluster_public_host}
         port: 8000
+        protocol: ${_param:cluster_public_protocol}
       watch:
-        host: ${_param:cluster_vip_address}
+        host: ${_param:cluster_public_host}
         port: 8003
+        protocol: ${_param:cluster_public_protocol}
       identity:
         engine: keystone
         host: ${_param:cluster_vip_address}
@@ -52,4 +57,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/heka/aggregator/cluster.yml b/heka/aggregator/cluster.yml
index 2913211..1d1e5c7 100644
--- a/heka/aggregator/cluster.yml
+++ b/heka/aggregator/cluster.yml
@@ -2,9 +2,6 @@
 - service.heka.aggregator.cluster
 - system.heka.server
 parameters:
-  _param:
-    nagios_default_host_alarm_clusters: 00-clusters
-    nagios_host_dimension_key: nagios_host
   heka:
     aggregator:
       influxdb_host: ${_param:heka_influxdb_host}
@@ -12,12 +9,6 @@
       influxdb_database: lma
       influxdb_username: lma
       influxdb_password: ${_param:influxdb_stacklight_password}
-      nagios_host: ${_param:nagios_host}
-      nagios_username: ${_param:nagios_username}
-      nagios_password: ${_param:nagios_password}
-      nagios_port: ${_param:nagios_status_port}
-      nagios_default_host_alarm_clusters: ${_param:nagios_default_host_alarm_clusters}
-      nagios_host_dimension_key: ${_param:nagios_host_dimension_key}
       poolsize: 200
   keepalived:
     cluster:
diff --git a/heka/aggregator/output/nagios.yml b/heka/aggregator/output/nagios.yml
new file mode 100644
index 0000000..cbf7654
--- /dev/null
+++ b/heka/aggregator/output/nagios.yml
@@ -0,0 +1,2 @@
+classes:
+- service.heka.aggregator.output.nagios
diff --git a/heka/aggregator/output/sensu.yml b/heka/aggregator/output/sensu.yml
new file mode 100644
index 0000000..58a14a5
--- /dev/null
+++ b/heka/aggregator/output/sensu.yml
@@ -0,0 +1,2 @@
+classes:
+- service.heka.aggregator.output.sensu
diff --git a/heka/aggregator/single.yml b/heka/aggregator/single.yml
index c5ad6ab..5ee3605 100644
--- a/heka/aggregator/single.yml
+++ b/heka/aggregator/single.yml
@@ -2,9 +2,6 @@
 - service.heka.aggregator.single
 - system.heka.server
 parameters:
-  _param:
-    nagios_default_host_alarm_clusters: 00-clusters
-    nagios_host_dimension_key: nagios_host
   heka:
     aggregator:
       influxdb_host: ${_param:heka_influxdb_host}
@@ -12,10 +9,4 @@
       influxdb_database: lma
       influxdb_username: lma
       influxdb_password: ${_param:influxdb_stacklight_password}
-      nagios_host: ${_param:nagios_host}
-      nagios_username: ${_param:nagios_username}
-      nagios_password: ${_param:nagios_password}
-      nagios_port: ${_param:nagios_status_port}
-      nagios_default_host_alarm_clusters: ${_param:nagios_default_host_alarm_clusters}
-      nagios_host_dimension_key: ${_param:nagios_host_dimension_key}
       poolsize: 200
diff --git a/heka/ceilometer_collector/output/sensu.yml b/heka/ceilometer_collector/output/sensu.yml
new file mode 100644
index 0000000..56dee92
--- /dev/null
+++ b/heka/ceilometer_collector/output/sensu.yml
@@ -0,0 +1,3 @@
+classes:
+- service.heka.ceilometer_collector.output.sensu
+
diff --git a/heka/ceilometer_collector/single.yml b/heka/ceilometer_collector/single.yml
index 4670ade..a1fd11c 100644
--- a/heka/ceilometer_collector/single.yml
+++ b/heka/ceilometer_collector/single.yml
@@ -6,7 +6,7 @@
     ceilometer_collector:
       enabled: true
       influxdb_database: ceilometer
-      influxdb_host: ${_param:stacklight_monitor_node01_address}
+      influxdb_host: ${_param:stacklight_telemetry_address}
       influxdb_password: ${_param:ceilometer_influxdb_password}
       influxdb_port: 8086
       influxdb_username: ceilometer
diff --git a/heka/log_collector/output/sensu.yml b/heka/log_collector/output/sensu.yml
new file mode 100644
index 0000000..e7bf79d
--- /dev/null
+++ b/heka/log_collector/output/sensu.yml
@@ -0,0 +1,3 @@
+classes:
+- service.heka.log_collector.output.sensu
+
diff --git a/heka/metric_collector/output/nagios.yml b/heka/metric_collector/output/nagios.yml
new file mode 100644
index 0000000..89d981f
--- /dev/null
+++ b/heka/metric_collector/output/nagios.yml
@@ -0,0 +1,2 @@
+classes:
+- service.heka.metric_collector.output.nagios
diff --git a/heka/metric_collector/output/sensu.yml b/heka/metric_collector/output/sensu.yml
new file mode 100644
index 0000000..a68a2ab
--- /dev/null
+++ b/heka/metric_collector/output/sensu.yml
@@ -0,0 +1,2 @@
+classes:
+- service.heka.metric_collector.output.sensu
diff --git a/heka/metric_collector/single.yml b/heka/metric_collector/single.yml
index 443a4e9..b4167f0 100644
--- a/heka/metric_collector/single.yml
+++ b/heka/metric_collector/single.yml
@@ -12,7 +12,3 @@
       influxdb_port: 8086
       influxdb_time_precision: ms
       influxdb_username: lma
-      nagios_host: ${_param:nagios_host}
-      nagios_username: ${_param:nagios_username}
-      nagios_password: ${_param:nagios_password}
-      nagios_port: ${_param:nagios_status_port}
diff --git a/heka/remote_collector/output/sensu.yml b/heka/remote_collector/output/sensu.yml
new file mode 100644
index 0000000..c7c66e9
--- /dev/null
+++ b/heka/remote_collector/output/sensu.yml
@@ -0,0 +1,3 @@
+classes:
+- service.heka.remote_collector.output.sensu
+
diff --git a/horizon/server/single.yml b/horizon/server/single.yml
index 5a83b2a..c20de5a 100644
--- a/horizon/server/single.yml
+++ b/horizon/server/single.yml
@@ -1,6 +1,5 @@
 classes:
 - service.horizon.server.single
-- system.horizon.server.plugin.theme
 parameters:
   _param:
     horizon_site_branding: OpenStack Dashboard
diff --git a/jenkins/client/approved_scripts.yml b/jenkins/client/approved_scripts.yml
new file mode 100644
index 0000000..d947687
--- /dev/null
+++ b/jenkins/client/approved_scripts.yml
@@ -0,0 +1,96 @@
+parameters:
+  jenkins:
+    client:
+      approved_scripts:
+        - field java.lang.String value
+        - field java.util.ArrayList size
+        - method com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey getPrivateKey
+        - method com.cloudbees.plugins.credentials.common.IdCredentials getId
+        - method com.cloudbees.plugins.credentials.common.PasswordCredentials getPassword
+        - method com.cloudbees.plugins.credentials.common.UsernameCredentials getUsername
+        - method groovy.json.JsonBuilder toPrettyString
+        - method groovy.json.JsonSlurperClassic parseText java.lang.String
+        - method groovy.lang.GString getBytes
+        - method groovy.lang.GroovyObject getProperty java.lang.String
+        - method hudson.PluginManager getPlugins
+        - method hudson.PluginWrapper getShortName
+        - method hudson.model.Item getName
+        - method hudson.model.ItemGroup getItem java.lang.String
+        - method hudson.model.ItemGroup getItems
+        - method hudson.model.Job getBuilds
+        - method hudson.model.Job getLastBuild
+        - method hudson.model.Run getEnvironment
+        - method hudson.model.Run getResult
+        - method hudson.model.Run getTimeInMillis
+        - method hudson.model.Run isBuilding
+        - method java.io.File getAbsolutePath
+        - method java.io.File getName
+        - method java.io.File getParent
+        - method java.io.Writer write java.lang.String
+        - method java.lang.AutoCloseable close
+        - method java.lang.Class isInstance java.lang.Object
+        - method java.lang.Iterable iterator
+        - method java.net.HttpURLConnection getResponseCode
+        - method java.net.HttpURLConnection setRequestMethod java.lang.String
+        - method java.net.URI getHost
+        - method java.net.URI getPort
+        - method java.net.URL openConnection
+        - method java.net.URLConnection getHeaderField java.lang.String
+        - method java.net.URLConnection getInputStream
+        - method java.net.URLConnection getOutputStream
+        - 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.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.Matcher matches
+        - method java.util.regex.Pattern matcher java.lang.CharSequence
+        - method jenkins.model.Jenkins getPluginManager
+        - method org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
+        - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper build
+        - new groovy.json.JsonBuilder java.lang.Object
+        - new groovy.json.JsonSlurperClassic
+        - new java.io.File java.lang.String
+        - new java.io.OutputStreamWriter java.io.OutputStream
+        - new java.lang.Exception java.lang.String
+        - new java.lang.InterruptedException
+        - new java.net.URI java.lang.String
+        - new java.util.Date
+        - staticField groovy.io.FileType FILES
+        - staticMethod com.cloudbees.plugins.credentials.CredentialsProvider lookupCredentials java.lang.Class hudson.model.ItemGroup
+        - staticMethod java.lang.Integer valueOf java.lang.String
+        - staticMethod java.lang.String format java.lang.String java.lang.Object[]
+        - 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 quote java.lang.String
+        - 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
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods find java.util.Collection groovy.lang.Closure
+        - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods findAll java.util.List groovy.lang.Closure
+        - 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 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 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.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
diff --git a/jenkins/client/credential/gerrit.yml b/jenkins/client/credential/gerrit.yml
new file mode 100644
index 0000000..b42f5af
--- /dev/null
+++ b/jenkins/client/credential/gerrit.yml
@@ -0,0 +1,9 @@
+parameters:
+  _param:
+    gerrit_admin_user: admin
+  jenkins:
+    client:
+      credential:
+        gerrit:
+          username: ${_param:gerrit_admin_user}
+          key: ${_param:gerrit_admin_private_key}
diff --git a/jenkins/client/credential/salt.yml b/jenkins/client/credential/salt.yml
new file mode 100644
index 0000000..5285c77
--- /dev/null
+++ b/jenkins/client/credential/salt.yml
@@ -0,0 +1,7 @@
+parameters:
+  jenkins:
+    client:
+      credential:
+        salt:
+          username: salt
+          password: ${_param:salt_api_password}
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
new file mode 100644
index 0000000..ab057df
--- /dev/null
+++ b/jenkins/client/init.yml
@@ -0,0 +1,65 @@
+classes:
+  - service.jenkins.support
+  - service.jenkins.client
+  - system.jenkins.client.approved_scripts
+parameters:
+  _param:
+    jenkins_client_user: none
+    jenkins_client_password: none
+    jenkins_master_host: ${_param:control_vip_address}
+    jenkins_master_port: 8081
+  jenkins:
+    client:
+      master:
+        host: ${_param:jenkins_master_host}
+        port: ${_param:jenkins_master_port}
+        user: ${_param:jenkins_client_user}
+        password: ${_param:jenkins_client_password}
+      plugin:
+        ansicolor: {}
+        build-blocker-plugin: {}
+        build-monitor-plugin: {}
+        build-user-vars-plugin: {}
+        categorized-view: {}
+        description-setter: {}
+        discard-old-build: {}
+        docker-workflow: {}
+        extended-choice-parameter: {}
+        extensible-choice-parameter: {}
+        gerrit-trigger: {}
+        git: {}
+        heavy-job: {}
+        ldap: {}
+        matrix-auth: {}
+        monitoring: {}
+        pipeline-utility-steps: {}
+        rebuild: {}
+        simple-theme-plugin: {}
+        slack: {}
+        test-stability: {}
+        timestamper: {}
+        workflow-cps: {}
+        workflow-remote-loader: {}
+        workflow-scm-step:
+          restart: true
+      lib:
+        pipeline-library:
+          enabled: true
+          url: ${_param:jenkins_gerrit_url}/mcp-ci/pipeline-library
+          credential_id: gerrit
+      view:
+        Mirrors:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "git-mirror-.*"
+          categories:
+            - group_regex: "git-mirror-2way-.*"
+              naming_rule: "2way"
+            - group_regex: "git-mirror-(?!upstream-|2way-).*"
+              naming_rule: "Downstream"
+            - group_regex: "git-mirror-upstream-.*"
+              naming_rule: "Upstream"
+        Tests:
+          enabled: true
+          type: ListView
+          include_regex: "test-.*"
diff --git a/jenkins/client/job/aptly.yml b/jenkins/client/job/aptly.yml
new file mode 100644
index 0000000..c6a5755
--- /dev/null
+++ b/jenkins/client/job/aptly.yml
@@ -0,0 +1,91 @@
+parameters:
+  jenkins:
+    client:
+      view:
+        Aptly:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "aptly-.*"
+          categories:
+            - group_regex: "aptly-.*-nightly-testing"
+              naming_rule: "Nightly -> Testing"
+            - group_regex: "aptly-.*-testing-stable"
+              naming_rule: "Testing -> Stable"
+      job_template:
+        aptly:
+          name: aptly-{{operation}}-{{dist}}-{{source}}-{{target}}
+          jobs:
+            - operation: promote
+              diff_only: false
+              dist: trusty
+              source: nightly
+              target: testing
+            - operation: promote
+              dist: trusty
+              source: testing
+              target: stable
+            - operation: promote
+              dist: xenial
+              source: nightly
+              target: testing
+            - operation: promote
+              dist: xenial
+              source: testing
+              target: stable
+            - operation: diff
+              diff_only: true
+              dist: trusty
+              source: nightly
+              target: testing
+            - operation: diff
+              diff_only: true
+              dist: trusty
+              source: testing
+              target: stable
+            - operation: diff
+              diff_only: true
+              dist: xenial
+              source: nightly
+              target: testing
+            - operation: diff
+              diff_only: true
+              dist: xenial
+              source: testing
+              target: stable
+          template:
+            discard:
+              build:
+                keep_num: 25
+              artifact:
+                keep_num: 25
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: aptly-promote-pipeline.groovy
+            param:
+              SOURCE:
+                type: string
+                default: "{{dist}}/{{source}}"
+              TARGET:
+                type: string
+                default: "{{dist}}/{{target}}"
+              RECREATE:
+                type: boolean
+                default: 'false'
+              DIFF_ONLY:
+                type: boolean
+                default: '{{diff_only}}'
+              APTLY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_api_url}"
+              COMPONENTS:
+                type: string
+                default: "all"
+                description: "Comma separated list (,)"
+              PACKAGES:
+                type: string
+                default: "all"
+                description: "Comma separated list (,)"
diff --git a/jenkins/client/job/debian/init.yml b/jenkins/client/job/debian/init.yml
new file mode 100644
index 0000000..f24cccc
--- /dev/null
+++ b/jenkins/client/job/debian/init.yml
@@ -0,0 +1,15 @@
+classes:
+  - system.jenkins.client.job.debian.packages
+parameters:
+  jenkins:
+    client:
+      view:
+        Debian:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "build-debian-(?!salt-formula-).*"
+          categories:
+            - group_regex: ".*-ubuntu-trusty"
+              naming_rule: "Ubuntu Trusty"
+            - group_regex: ".*-ubuntu-xenial"
+              naming_rule: "Ubuntu Xenial"
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
new file mode 100644
index 0000000..15d0bc4
--- /dev/null
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -0,0 +1,126 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        build-debian:
+          name: build-debian-{{package}}-ubuntu-{{dist}}
+          jobs:
+            - package: librdkafka
+              dist: trusty
+            - package: python-kafka
+              dist: trusty
+            - package: liburcu
+              dist: trusty
+            - package: python-kazoo
+              dist: trusty
+            - package: python-pathlib
+              dist: trusty
+            - package: kafka
+              dist: trusty
+            - package: python-geventhttpclient
+              dist: trusty
+            - package: python-consistent-hash
+              dist: trusty
+            - package: libipfix
+              dist: trusty
+            - package: python-ncclient
+              dist: trusty
+            - package: python-pycassa
+              dist: trusty
+            - package: python-xmltodict
+              dist: trusty
+            - package: python-backports.ssl-match-hostname
+              dist: trusty
+            - package: python-certifi
+              dist: trusty
+            - package: python-docker
+              dist: trusty
+            - package: python-cassandra-driver
+              dist: trusty
+            - package: python-redis
+              dist: trusty
+            - package: python-tabulate
+              dist: trusty
+            - package: cassandra-cpp-driver
+              dist: trusty
+            - package: libuv1
+              dist: trusty
+            - package: python-sseclient
+              dist: trusty
+            - package: librdkafka
+              dist: xenial
+            - package: python-kafka
+              dist: xenial
+            - package: python-geventhttpclient
+              dist: xenial
+            - package: python-docker
+              dist: xenial
+            - package: python-consistent-hash
+              dist: xenial
+            - package: libipfix
+              dist: xenial
+            - package: cassandra-cpp-driver
+              dist: xenial
+            - package: python-sseclient
+              dist: xenial
+          template:
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: build-debian-packages-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  debian/{{package}}:
+                    branches:
+                      - debian/{{dist}}
+                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}/debian/{{package}}.git"
+              SOURCE_BRANCH:
+                type: string
+                default: "debian/{{dist}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              EXTRA_REPO_URL:
+                type: string
+                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing extra"
+              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: 'true'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/debian/packages/horizon/init.yml b/jenkins/client/job/debian/packages/horizon/init.yml
new file mode 100644
index 0000000..a899680
--- /dev/null
+++ b/jenkins/client/job/debian/packages/horizon/init.yml
@@ -0,0 +1,3 @@
+classes:
+  - system.jenkins.client.job.debian.packages.horizon.modules
+  - system.jenkins.client.job.debian.packages.horizon.themes
diff --git a/jenkins/client/job/debian/packages/horizon/modules.yml b/jenkins/client/job/debian/packages/horizon/modules.yml
new file mode 100644
index 0000000..2b6477b
--- /dev/null
+++ b/jenkins/client/job/debian/packages/horizon/modules.yml
@@ -0,0 +1,97 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        build-debian-horizon-module:
+          name: build-debian-horizon-module-{{name}}-{{os_version}}-{{os}}-{{dist}}
+          jobs:
+            # Trusty
+            - name: horizon-overrides-plugin
+              os: ubuntu
+              dist: trusty
+              os_version: mitaka
+              branch: master
+            # Xenial
+            - name: horizon-overrides-plugin
+              os: ubuntu
+              dist: xenial
+              os_version: mitaka
+              branch: master
+            # Trusty
+            - name: horizon-contrail-panels
+              os: ubuntu
+              dist: trusty
+              os_version: mitaka
+              branch: stable/mitaka
+            # Xenial
+            - name: horizon-contrail-panels
+              os: ubuntu
+              dist: xenial
+              os_version: mitaka
+              branch: stable/mitaka
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: build-debian-packages-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  salt-formulas/{{name}}:
+                    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}/horizon-modules/{{name}}.git"
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              DEBIAN_SNAPSHOT:
+                type: boolean
+                default: 'true'
+              REVISION_POSTFIX:
+                type: string
+                default: '~{{os_version}}1{{dist}}1'
+              EXTRA_REPO_URL:
+                type: string
+                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing extra {{os_version}}"
+              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: "{{os}}-{{dist}}-{{os_version}}"
+              OS:
+                type: string
+                default: "{{os}}"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/debian/packages/horizon/themes.yml b/jenkins/client/job/debian/packages/horizon/themes.yml
new file mode 100644
index 0000000..b96a0c6
--- /dev/null
+++ b/jenkins/client/job/debian/packages/horizon/themes.yml
@@ -0,0 +1,85 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        build-debian-horizon-theme:
+          name: build-debian-horizon-theme-{{name}}-{{os_version}}-{{os}}-{{dist}}
+          jobs:
+            # Trusty
+            - name: horizon-mirantis-theme
+              os: ubuntu
+              dist: trusty
+              os_version: mitaka
+              branch: master
+            # Xenial
+            - name: horizon-mirantis-theme
+              os: ubuntu
+              dist: xenial
+              os_version: mitaka
+              branch: master
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: build-debian-packages-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  salt-formulas/{{name}}:
+                    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}/horizon-themes/{{name}}.git"
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              DEBIAN_SNAPSHOT:
+                type: boolean
+                default: 'true'
+              REVISION_POSTFIX:
+                type: string
+                default: '~{{os_version}}1{{dist}}1'
+              EXTRA_REPO_URL:
+                type: string
+                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing extra {{os_version}}"
+              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: "{{os}}-{{dist}}-{{os_version}}"
+              OS:
+                type: string
+                default: "{{os}}"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
\ No newline at end of file
diff --git a/jenkins/client/job/debian/packages/init.yml b/jenkins/client/job/debian/packages/init.yml
new file mode 100644
index 0000000..cb4c245
--- /dev/null
+++ b/jenkins/client/job/debian/packages/init.yml
@@ -0,0 +1,17 @@
+classes:
+  - system.jenkins.client.job.debian.packages.extra
+  - system.jenkins.client.job.debian.packages.salt
+  - system.jenkins.client.job.debian.packages.salt-multi
+  - system.jenkins.client.job.debian.packages.horizon
+parameters:
+  jenkins:
+    client:
+      view:
+        Xenial:
+          enabled: true
+          type: ListView
+          include_regex: "build-.*-ubuntu-xenial.*"
+        Trusty:
+          enabled: true
+          type: ListView
+          include_regex: "build-.*-ubuntu-trusty.*"
\ No newline at end of file
diff --git a/jenkins/client/job/debian/packages/salt-multi.yml b/jenkins/client/job/debian/packages/salt-multi.yml
new file mode 100644
index 0000000..d216e9d
--- /dev/null
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -0,0 +1,120 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        build-debian-salt-multibranch:
+          name: build-debian-salt-formula-{{name}}-ubuntu-{{dist}}
+          jobs:
+            - name: ceilometer
+              dist: trusty
+            - name: cinder
+              dist: trusty
+            - name: glance
+              dist: trusty
+            - name: heat
+              dist: trusty
+            - name: horizon
+              dist: trusty
+            - name: keystone
+              dist: trusty
+            - name: kubernetes
+              dist: trusty
+            - name: neutron
+              dist: trusty
+            - name: nova
+              dist: trusty
+            - name: swift
+              dist: trusty
+            - name: ceilometer
+              dist: xenial
+            - name: cinder
+              dist: xenial
+            - name: glance
+              dist: xenial
+            - name: heat
+              dist: xenial
+            - name: horizon
+              dist: xenial
+            - name: keystone
+              dist: xenial
+            - name: kubernetes
+              dist: xenial
+            - name: neutron
+              dist: xenial
+            - name: nova
+              dist: xenial
+            - name: swift
+              dist: xenial
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: build-debian-packages-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  salt-formulas/{{name}}:
+                    branches:
+                      - master
+                      - debian/{{dist}}
+                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}/salt-formulas/{{name}}.git"
+              SOURCE_BRANCH:
+                type: string
+                default: "master"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              DEBIAN_BRANCH:
+                type: string
+                default: 'debian/{{dist}}'
+              DEBIAN_SNAPSHOT:
+                type: boolean
+                default: 'true'
+              EXTRA_REPO_URL:
+                type: string
+                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt salt-latest"
+              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}}-salt"
+              OS:
+                type: string
+                default: "ubuntu"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              PPA:
+                type: string
+                default: "salt-formulas/ppa"
+              UPLOAD_PPA:
+                type: boolean
+                default: 'true'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
\ No newline at end of file
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
new file mode 100644
index 0000000..5e6665c
--- /dev/null
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -0,0 +1,439 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        build-debian-salt-formula:
+          name: build-debian-salt-formula-{{name}}-ubuntu-{{dist}}
+          jobs:
+            - name: aodh
+              dist: trusty
+            - name: apache
+              dist: trusty
+            - name: aptcacher
+              dist: trusty
+            - name: aptly
+              dist: trusty
+            - name: artifactory
+              dist: trusty
+            - name: avinetworks
+              dist: trusty
+            - name: backupninja
+              dist: trusty
+            - name: billometer
+              dist: trusty
+            - name: bind
+              dist: trusty
+            - name: bird
+              dist: trusty
+            - name: cadf
+              dist: trusty
+            - name: calico
+              dist: trusty
+            - name: cassandra
+              dist: trusty
+            - name: ccp
+              dist: trusty
+            - name: ceph
+              dist: trusty
+            - name: chrony
+              dist: trusty
+            - name: collectd
+              dist: trusty
+            - name: dekapod
+              dist: trusty
+            - name: devops-portal
+              dist: trusty
+            - name: docker
+              dist: trusty
+            - name: dovecot
+              dist: trusty
+            - name: elasticsearch
+              dist: trusty
+            - name: etcd
+              dist: trusty
+            - name: foreman
+              dist: trusty
+            - name: freeipa
+              dist: trusty
+            - name: galera
+              dist: trusty
+            - name: gerrit
+              dist: trusty
+            - name: git
+              dist: trusty
+            - name: gitlab
+              dist: trusty
+            - name: glusterfs
+              dist: trusty
+            - name: grafana
+              dist: trusty
+            - name: graphite
+              dist: trusty
+            - name: haproxy
+              dist: trusty
+            - name: heka
+              dist: trusty
+            - name: influxdb
+              dist: trusty
+            - name: iptables
+              dist: trusty
+            - name: isc-dhcp
+              dist: trusty
+            - name: java
+              dist: trusty
+            - name: jenkins
+              dist: trusty
+            - name: kedb
+              dist: trusty
+            - name: keepalived
+              dist: trusty
+            - name: kibana
+              dist: trusty
+            - name: letsencrypt
+              dist: trusty
+            - name: libvirt
+              dist: trusty
+            - name: linux
+              dist: trusty
+            - name: logrotate
+              dist: trusty
+            - name: maas
+              dist: trusty
+            - name: magnum
+              dist: trusty
+            - name: memcached
+              dist: trusty
+            - name: midonet
+              dist: trusty
+            - name: monasca
+              dist: trusty
+            - name: mongodb
+              dist: trusty
+            - name: murano
+              dist: trusty
+            - name: mysql
+              dist: trusty
+            - name: nagios
+              dist: trusty
+            - name: network
+              dist: trusty
+            - name: nfs
+              dist: trusty
+            - name: nginx
+              dist: trusty
+            - name: nodejs
+              dist: trusty
+            - name: ntp
+              dist: trusty
+            - name: opencontrail
+              dist: trusty
+            - name: openldap
+              dist: trusty
+            - name: openssh
+              dist: trusty
+            - name: openvpn
+              dist: trusty
+            - name: openvstorage
+              dist: trusty
+            - name: owncloud
+              dist: trusty
+            - name: postfix
+              dist: trusty
+            - name: postgresql
+              dist: trusty
+            - name: pritunl
+              dist: trusty
+            - name: prometheus
+              dist: trusty
+            - name: python
+              dist: trusty
+            - name: rabbitmq
+              dist: trusty
+            - name: reclass
+              dist: trusty
+            - name: redis
+              dist: trusty
+            - name: roundcube
+              dist: trusty
+            - name: rsync
+              dist: trusty
+            - name: rsyslog
+              dist: trusty
+            - name: rundeck
+              dist: trusty
+            - name: sahara
+              dist: trusty
+            - name: salt
+              dist: trusty
+            - name: sensu
+              dist: trusty
+            - name: sentry
+              dist: trusty
+            - name: sphinx
+              dist: trusty
+            - name: spinnaker
+              dist: trusty
+            - name: statsd
+              dist: trusty
+            - name: supervisor
+              dist: trusty
+            - name: taiga
+              dist: trusty
+            - name: telegraf
+              dist: trusty
+            - name: varnish
+              dist: trusty
+            - name: zookeeper
+              dist: trusty
+            - name: aodh
+              dist: xenial
+            - name: apache
+              dist: xenial
+            - name: aptcacher
+              dist: xenial
+            - name: aptly
+              dist: xenial
+            - name: artifactory
+              dist: xenial
+            - name: avinetworks
+              dist: xenial
+            - name: backupninja
+              dist: xenial
+            - name: billometer
+              dist: xenial
+            - name: bind
+              dist: xenial
+            - name: bird
+              dist: xenial
+            - name: cadf
+              dist: xenial
+            - name: calico
+              dist: xenial
+            - name: cassandra
+              dist: xenial
+            - name: ccp
+              dist: xenial
+            - name: ceph
+              dist: xenial
+            - name: chrony
+              dist: xenial
+            - name: collectd
+              dist: xenial
+            - name: dekapod
+              dist: xenial
+            - name: devops-portal
+              dist: xenial
+            - name: docker
+              dist: xenial
+            - name: dovecot
+              dist: xenial
+            - name: elasticsearch
+              dist: xenial
+            - name: etcd
+              dist: xenial
+            - name: foreman
+              dist: xenial
+            - name: freeipa
+              dist: xenial
+            - name: galera
+              dist: xenial
+            - name: gerrit
+              dist: xenial
+            - name: git
+              dist: xenial
+            - name: gitlab
+              dist: xenial
+            - name: glusterfs
+              dist: xenial
+            - name: grafana
+              dist: xenial
+            - name: graphite
+              dist: xenial
+            - name: haproxy
+              dist: xenial
+            - name: heka
+              dist: xenial
+            - name: influxdb
+              dist: xenial
+            - name: iptables
+              dist: xenial
+            - name: isc-dhcp
+              dist: xenial
+            - name: java
+              dist: xenial
+            - name: jenkins
+              dist: xenial
+            - name: kedb
+              dist: xenial
+            - name: keepalived
+              dist: xenial
+            - name: kibana
+              dist: xenial
+            - name: letsencrypt
+              dist: xenial
+            - name: libvirt
+              dist: xenial
+            - name: linux
+              dist: xenial
+            - name: logrotate
+              dist: xenial
+            - name: maas
+              dist: xenial
+            - name: magnum
+              dist: xenial
+            - name: memcached
+              dist: xenial
+            - name: midonet
+              dist: xenial
+            - name: monasca
+              dist: xenial
+            - name: mongodb
+              dist: xenial
+            - name: murano
+              dist: xenial
+            - name: mysql
+              dist: xenial
+            - name: nagios
+              dist: xenial
+            - name: network
+              dist: xenial
+            - name: nfs
+              dist: xenial
+            - name: nginx
+              dist: xenial
+            - name: nodejs
+              dist: xenial
+            - name: ntp
+              dist: xenial
+            - name: opencontrail
+              dist: xenial
+            - name: openldap
+              dist: xenial
+            - name: openssh
+              dist: xenial
+            - name: openvpn
+              dist: xenial
+            - name: openvstorage
+              dist: xenial
+            - name: owncloud
+              dist: xenial
+            - name: postfix
+              dist: xenial
+            - name: postgresql
+              dist: xenial
+            - name: pritunl
+              dist: xenial
+            - name: prometheus
+              dist: xenial
+            - name: python
+              dist: xenial
+            - name: rabbitmq
+              dist: xenial
+            - name: reclass
+              dist: xenial
+            - name: redis
+              dist: xenial
+            - name: roundcube
+              dist: xenial
+            - name: rsync
+              dist: xenial
+            - name: rundeck
+              dist: xenial
+            - name: rsyslog
+              dist: xenial
+            - name: sahara
+              dist: xenial
+            - name: salt
+              dist: xenial
+            - name: sensu
+              dist: xenial
+            - name: sentry
+              dist: xenial
+            - name: sphinx
+              dist: xenial
+            - name: spinnaker
+              dist: xenial
+            - name: statsd
+              dist: xenial
+            - name: supervisor
+              dist: xenial
+            - name: taiga
+              dist: xenial
+            - name: telegraf
+              dist: xenial
+            - name: varnish
+              dist: xenial
+            - name: zookeeper
+              dist: xenial
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: build-debian-packages-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  salt-formulas/{{name}}:
+                    branches:
+                      - master
+                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}/salt-formulas/{{name}}.git"
+              SOURCE_BRANCH:
+                type: string
+                default: "master"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              DEBIAN_SNAPSHOT:
+                type: boolean
+                default: 'true'
+              REVISION_POSTFIX:
+                type: string
+                default: '~{{dist}}1'
+              EXTRA_REPO_URL:
+                type: string
+                default: "deb ${_param:jenkins_aptly_url}/{{dist}}/ testing salt salt-latest"
+              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}}-salt"
+              OS:
+                type: string
+                default: "ubuntu"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              PPA:
+                type: string
+                default: "salt-formulas/ppa"
+              UPLOAD_PPA:
+                type: boolean
+                default: 'true'
+              UPLOAD_APTLY:
+                type: boolean
+                default: 'true'
diff --git a/jenkins/client/job/deploy/init.yml b/jenkins/client/job/deploy/init.yml
new file mode 100644
index 0000000..f25086d
--- /dev/null
+++ b/jenkins/client/job/deploy/init.yml
@@ -0,0 +1,21 @@
+classes:
+  - system.jenkins.client.job.deploy.lab
+  - system.jenkins.client.job.deploy.update
+  - system.jenkins.client.job.deploy.openstack
+parameters:
+  jenkins:
+    client:
+      view:
+        Deploy:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "deploy-.*"
+          categories:
+            - group_regex: "deploy-(heat|physical)-"
+              naming_rule: ""
+            - group_regex: "deploy-update-*"
+              naming_rule: "support"
+            - group_regex: "(mcp)[0-9]+"
+              naming_rule: ""
+            - group_regex: "(mk)[0-9]+"
+              naming_rule: ""
diff --git a/jenkins/client/job/deploy/lab/cicd.yml b/jenkins/client/job/deploy/lab/cicd.yml
new file mode 100644
index 0000000..0aa442e
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/cicd.yml
@@ -0,0 +1,77 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        deploy_heat_cicd:
+          name: deploy-heat-{{name}}
+          jobs:
+            - name: 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: "git@github.com:Mirantis/mk-lab-heat-templates.git"
+              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: "tcpisek"
+              HEAT_STACK_ZONE:
+                type: string
+                default: "mirantis-zone-qa"
+              HEAT_STACK_PUBLIC_NET:
+                type: string
+                default: "mirantis-private"
+              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://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"
diff --git a/jenkins/client/job/deploy/lab/demo.yml b/jenkins/client/job/deploy/lab/demo.yml
new file mode 100644
index 0000000..3ea8a40
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/demo.yml
@@ -0,0 +1,20 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy_kafka_demo:
+          type: workflow-scm
+          concurrent: false
+          display_name: "Kafka demo"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: kafka-demo.groovy
+          param:
+              # salt master
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "salt-qa-credentials"
+              SALT_URL:
+                type: string
diff --git a/jenkins/client/job/deploy/lab/init.yml b/jenkins/client/job/deploy/lab/init.yml
new file mode 100644
index 0000000..5fc4401
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/init.yml
@@ -0,0 +1,15 @@
+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.cicd
+  - system.jenkins.client.job.deploy.lab.demo
+
+parameters:
+  jenkins:
+    client:
+      view:
+        Labs:
+          enabled: true
+          type: ListView
+          include_regex: "deploy-(physical|heat).*(mk|mcp).*"
diff --git a/jenkins/client/job/deploy/lab/mk/cleanup.yml b/jenkins/client/job/deploy/lab/mk/cleanup.yml
new file mode 100644
index 0000000..72e40f5
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/cleanup.yml
@@ -0,0 +1,37 @@
+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"
+            # heat
+            HEAT_STACK_NAME:
+              type: string
+              description: This stack will be deleted.
diff --git a/jenkins/client/job/deploy/lab/mk/init.yml b/jenkins/client/job/deploy/lab/mk/init.yml
new file mode 100644
index 0000000..17dca28
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/init.yml
@@ -0,0 +1,111 @@
+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}}"
+              INSTALL:
+                type: string
+                default: "{{install}}"
+              TEST:
+                type: string
+                default: "{{test}}"
+
+              # heat
+              HEAT_TEMPLATE_URL:
+                type: string
+                default: "git@github.com:Mirantis/mk-lab-heat-templates.git"
+              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: "tcpisek"
+              HEAT_STACK_ZONE:
+                type: string
+                default: "mirantis-zone-qa"
+              HEAT_STACK_PUBLIC_NET:
+                type: string
+                default: "mirantis-private"
+              HEAT_STACK_DELETE:
+                type: boolean
+                default: 'true'
+                description: "Don't enable it if you need to use the lab after"
+              HEAT_STACK_REUSE:
+                type: boolean
+                default: 'false'
+
+              # 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"
+
+              # 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
new file mode 100644
index 0000000..0767359
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/physical.yml
@@ -0,0 +1,21 @@
+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
+      - lab: mcp10_opencontrail_nfv
+        install: core,kvm,openstack,nfv
+        stack_type: physical
+        test: openstack
+      - lab: mcp10_dvr
+        install: core,kvm,openstack,dvr
+        stack_type: physical
+        test: openstack
+      - lab: mcp10_non_dvr
+        install: core,kvm,openstack
+        stack_type: physical
+        test: openstack
diff --git a/jenkins/client/job/deploy/lab/mk/virtual.yml b/jenkins/client/job/deploy/lab/mk/virtual.yml
new file mode 100644
index 0000000..8e82f76
--- /dev/null
+++ b/jenkins/client/job/deploy/lab/mk/virtual.yml
@@ -0,0 +1,65 @@
+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
+      - lab: virtual_mk20_basic
+        install: core,openstack
+        stack_type: heat
+        test: openstack
+      # mk22
+      - lab: virtual_mk22_advanced
+        install: core,openstack
+        stack_type: heat
+        test: openstack
+      - lab: virtual_mk22_basic
+        install: core,openstack
+        stack_type: heat
+        test: openstack
+      # mcp05
+      - lab: virtual_mcp05_dvr
+        install: core,openstack,dvr
+        stack_type: heat
+        test: openstack
+      - lab: virtual_mcp05_ovs
+        install: core,openstack,ovs
+        stack_type: heat
+        test: openstack
+      # mcp10
+      - lab: virtual_mcp10_contrail
+        install: core,openstack,contrail
+        stack_type: heat
+        test: openstack
+        timer: "H H(0-6) * * *"
+      - lab: virtual_mcp10_dvr
+        install: core,openstack,dvr
+        stack_type: heat
+        test: openstack
+        timer: "H H(0-6) * * *"
+      - lab: virtual_mcp10_ovs
+        install: core,openstack,ovs
+        stack_type: heat
+        test: openstack
+        timer: "H H(0-6) * * *"
+      # mcp11
+      - lab: virtual_mcp11_contrail
+        install: core,openstack,contrail
+        stack_type: heat
+        test: openstack
+      - lab: virtual_mcp11_dvr
+        install: core,openstack,dvr
+        stack_type: heat
+        test: openstack
+      - lab: virtual_mcp11_ovs
+        install: core,openstack,ovs
+        stack_type: heat
+        test: openstack
+      - lab: virtual_mcp11_k8s
+        install: core,k8s
+        stack_type: heat
+        test: k8s
diff --git a/jenkins/client/job/deploy/openstack.yml b/jenkins/client/job/deploy/openstack.yml
new file mode 100644
index 0000000..644b16b
--- /dev/null
+++ b/jenkins/client/job/deploy/openstack.yml
@@ -0,0 +1,36 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy_openstack:
+          type: workflow-scm
+          name: deploy-openstack
+          display_name: "Deploy - OpenStack"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: lab-pipeline.groovy
+          param:
+            # deployments and test settings
+            STACK_TYPE:
+              type: string
+              default: "physical"
+            INSTALL:
+              type: string
+              default: "core,kvm,openstack,stacklight"
+
+            # salt master
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            SALT_MASTER_URL:
+              type: string
+              default: ""
+            ASK_ON_ERROR:
+                type: boolean
+                default: 'false'
diff --git a/jenkins/client/job/deploy/update/config.yml b/jenkins/client/job/deploy/update/config.yml
new file mode 100644
index 0000000..9beabfb
--- /dev/null
+++ b/jenkins/client/job/deploy/update/config.yml
@@ -0,0 +1,45 @@
+#
+# Jobs to run given states on given Salt master environment's
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+  jenkins:
+    client:
+      job:
+        deploy-update-service-config:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update service(s) config"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: change-config.groovy
+          param:
+            SALT_MASTER_URL:
+              type: string
+              default: "${_param:jenkins_salt_api_url}"
+              description: Full Salt API address [https://10.10.10.1:8000].
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+              description: Credentials to the Salt API.
+            TARGET_SERVERS:
+              type: string
+              default: "*"
+              description: Salt compound target to match nodes to be updated [*, G@osfamily:debian].
+            TARGET_STATES:
+              type: string
+              description: Config changes to be applied, empty string means running highstate [linux, linux,openssh, salt.minion.grains].
+            TARGET_SUBSET_TEST:
+              type: string
+              description: Number of nodes to test config changes, empty string means all targetted nodes.
+            TARGET_SUBSET_LIVE:
+              type: string
+              default: '1'
+              description: Number of selected noded to live apply selected config changes.
+            TARGET_BATCH_LIVE:
+              type: string
+              description: Batch size for the complete live config changes on all nodes, empty string means apply to all targetted nodes.
+
diff --git a/jenkins/client/job/deploy/update/init.yml b/jenkins/client/job/deploy/update/init.yml
new file mode 100644
index 0000000..af87dcf
--- /dev/null
+++ b/jenkins/client/job/deploy/update/init.yml
@@ -0,0 +1,4 @@
+classes:
+  - system.jenkins.client.job.deploy.update.package
+  - system.jenkins.client.job.deploy.update.config
+  - system.jenkins.client.job.deploy.update.saltenv
diff --git a/jenkins/client/job/deploy/update/package.yml b/jenkins/client/job/deploy/update/package.yml
new file mode 100644
index 0000000..273796c
--- /dev/null
+++ b/jenkins/client/job/deploy/update/package.yml
@@ -0,0 +1,42 @@
+#
+# 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-update-package:
+          type: workflow-scm
+          concurrent: true
+          display_name: "Deploy - update system package(s)"
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: update-package.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].
+            TARGET_PACKAGES:
+              type: string
+              description: Space delimited list of packages to be updates [package1=version package2=version], empty string means all updating all packages to the latest version.
+            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 noded 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/saltenv.yml b/jenkins/client/job/deploy/update/saltenv.yml
new file mode 100644
index 0000000..0303aea
--- /dev/null
+++ b/jenkins/client/job/deploy/update/saltenv.yml
@@ -0,0 +1,32 @@
+#
+# Following job is about to simply execute Jenkinsfile of given Reclass model
+#
+parameters:
+  _param:
+    jenkins_salt_api_url: "http://${_param:salt_master_host}:6969"
+    jenkins_salt_model_name: "salt"
+  jenkins:
+    client:
+      job_template:
+        update_salt_env:
+          name: deploy-update-{{name}}
+          jobs:
+            - name: ${_param:jenkins_salt_model_name}
+              salt_url: "${_param:jenkins_salt_api_url}"
+              salt_credentials: salt
+          template:
+            display_name: "Deploy - update {{name}} environment"
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+              credentials: "gerrit"
+              script: Jenkinsfile
+            param:
+              SALT_MASTER_URL:
+                type: string
+                default: "{{salt_url}}"
+              SALT_MASTER_CREDENTIALS:
+                type: string
+                default: "{{salt_credentials}}"
diff --git a/jenkins/client/job/docker/aptly.yml b/jenkins/client/job/docker/aptly.yml
new file mode 100644
index 0000000..98ef8af
--- /dev/null
+++ b/jenkins/client/job/docker/aptly.yml
@@ -0,0 +1,48 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        docker-build-images-aptly:
+          name: docker-build-images-aptly
+          discard:
+            build:
+              keep_num: 25
+            artifact:
+              keep_num: 25
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/docker-aptly"
+            credentials: "gerrit"
+          trigger:
+            gerrit:
+              project:
+                "mk/docker-aptly":
+                  branches:
+                    - master
+              event:
+                ref:
+                  - updated: {}
+          param:
+            IMAGE_GIT_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/mk/docker-aptly"
+            IMAGE_BRANCH:
+              type: string
+              default: "master"
+            IMAGE_CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            IMAGE_TAGS:
+              type: string
+              default: "latest"
+            REGISTRY_URL:
+              type: string
+              default: ""
+            REGISTRY_CREDENTIALS_ID:
+              type: string
+              default: "dockerhub"
+            DOCKER_GIT_TAG:
+              type: boolean
+              default: "true"
diff --git a/jenkins/client/job/docker/init.yml b/jenkins/client/job/docker/init.yml
new file mode 100644
index 0000000..2f1f49a
--- /dev/null
+++ b/jenkins/client/job/docker/init.yml
@@ -0,0 +1,86 @@
+parameters:
+  jenkins:
+    client:
+      view:
+        Docker:
+          enabled: true
+          type: ListView
+          include_regex: ".*-docker-.*"
+      job_template:
+        docker-build-image:
+          name: docker-build-image-{{name}}-{{branch}}
+          jobs:
+            - name: gerrit
+              branch: "2.12.7"
+              tags: "2.12.7"
+              dockerfile: "Dockerfile"
+            - name: gerrit
+              branch: "2.13.6"
+              tags: "2.13.6 latest"
+              dockerfile: "Dockerfile"
+            - name: jenkins
+              branch: "2.32.3"
+              tags: "2.32"
+              dockerfile: "Dockerfile"
+            - name: jenkins
+              branch: "2.52"
+              tags: "2.52 latest"
+              dockerfile: "Dockerfile"
+            - name: phpldapadmin
+              branch: "master"
+              tags: "latest"
+              dockerfile: "image/Dockerfile"
+            - name: openldap
+              branch: "master"
+              tags: "latest"
+              dockerfile: "image/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:
+              gerrit:
+                project:
+                  "mk/docker-{{name}}":
+                    branches:
+                      - "{{branch}}"
+                event:
+                  ref:
+                    - updated: {}
+            param:
+              IMAGE_NAME:
+                type: string
+                default: "tcpcloud/{{name}}"
+              IMAGE_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/mk/docker-{{name}}"
+              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: ""
+              REGISTRY_CREDENTIALS_ID:
+                type: string
+                default: "dockerhub"
+              DOCKER_GIT_TAG:
+                type: boolean
+                default: "true"
\ No newline at end of file
diff --git a/jenkins/client/job/gating.yml b/jenkins/client/job/gating.yml
new file mode 100644
index 0000000..6b6d620
--- /dev/null
+++ b/jenkins/client/job/gating.yml
@@ -0,0 +1,66 @@
+parameters:
+  jenkins:
+    client:
+      view:
+        Gating:
+          enabled: true
+          type: ListView
+          include_regex: "gate-.*"
+      job_template:
+        gate-gerrit-namespace:
+          name: gate-gerrit-{{name}}
+          jobs:
+            - name: mk
+              regex: 'mk\/.*'
+            - name: debian
+              regex: 'debian\/.*'
+            - name: contrail
+              regex: 'contrail\/.*'
+            - name: salt-models
+              regex: 'salt-models\/.*'
+            - name: salt-formulas
+              regex: 'salt-formulas\/.*'
+            - name: oss
+              regex: 'oss\/devops-portal'
+          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: gating-pipeline.groovy
+            quiet_period: 60
+            trigger:
+              gerrit:
+                project:
+                  '{{regex}}':
+                    compare_type: REG_EXP
+                    branches:
+                      - master
+                skip_vote:
+                  - successful
+                  - failed
+                  - unstable
+                  - not_built
+                silent_start_mode: "true"
+                event:
+                  comment:
+                    - added:
+                        verdictCategory: 'Workflow'
+                        commentAddedTriggerApprovalValue: '+1'
+            param:
+              JOBS_NAMESPACE:
+                type: string
+                default: "{{name}}"
+              SKIP_TEST:
+                type: string
+                default: false
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
diff --git a/jenkins/client/job/git-mirrors/downstream/docker_images.yml b/jenkins/client/job/git-mirrors/downstream/docker_images.yml
new file mode 100644
index 0000000..2471280
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/docker_images.yml
@@ -0,0 +1,9 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.downstream
+parameters:
+  _param:
+    jenkins_git_mirror_downstream_jobs:
+      - name: docker-aptly
+        downstream: mk/docker-aptly
+        upstream: "https://github.com/tcpcloud/docker-aptly"
+        branches: master
\ No newline at end of file
diff --git a/jenkins/client/job/git-mirrors/downstream/init.yml b/jenkins/client/job/git-mirrors/downstream/init.yml
new file mode 100644
index 0000000..0ddc0ce
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/init.yml
@@ -0,0 +1,39 @@
+parameters:
+  _param:
+    jenkins_git_mirror_downstream_jobs: []
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        git_mirror_downstream_common:
+          name: git-mirror-downstream-{{name}}
+          jobs: ${_param:jenkins_git_mirror_downstream_jobs}
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-pipeline.groovy
+            trigger:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+            param:
+              SOURCE_URL:
+                type: string
+                default: "{{upstream}}"
+              TARGET_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/{{downstream}}"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
diff --git a/jenkins/client/job/git-mirrors/downstream/pipelines.yml b/jenkins/client/job/git-mirrors/downstream/pipelines.yml
new file mode 100644
index 0000000..7bf366c
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/pipelines.yml
@@ -0,0 +1,13 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.downstream
+parameters:
+  _param:
+    jenkins_git_mirror_downstream_jobs:
+      - name: pipeline-library
+        downstream: mcp-ci/pipeline-library
+        upstream: "https://github.com/Mirantis/pipeline-library"
+        branches: master
+      - name: mk-pipelines
+        downstream: mk/mk-pipelines
+        upstream: "https://github.com/Mirantis/mk-pipelines"
+        branches: master
diff --git a/jenkins/client/job/git-mirrors/downstream/templates.yml b/jenkins/client/job/git-mirrors/downstream/templates.yml
new file mode 100644
index 0000000..ef504af
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/downstream/templates.yml
@@ -0,0 +1,13 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.downstream
+parameters:
+  _param:
+    jenkins_git_mirror_downstream_jobs:
+      - name: cookiecutter-templates
+        downstream: mk/cookiecutter-templates
+        upstream: "git@github.com:Mirantis/mk2x-cookiecutter-reclass-model"
+        branches: master
+      - name: heat-templates
+        downstream: mk/heat-templates
+        upstream: "git@github.com:Mirantis/mk-lab-heat-templates"
+        branches: master
diff --git a/jenkins/client/job/git-mirrors/upstream/docker_images.yml b/jenkins/client/job/git-mirrors/upstream/docker_images.yml
new file mode 100644
index 0000000..2dc60b3
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/docker_images.yml
@@ -0,0 +1,25 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.upstream
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs:
+      - name: docker-aptly
+        downstream: mk/docker-aptly
+        upstream: "git@github.com:tcpcloud/docker-aptly"
+        branches: master
+      - name: docker-gerrit
+        downstream: mk/docker-gerrit
+        upstream: "git@github.com:Mirantis/docker-gerrit"
+        branches: 2.12.3,2.12.6,2.12.7,2.13.6,admin,master
+      - name: docker-jenkins
+        downstream: mk/docker-jenkins
+        upstream: "git@github.com:Mirantis/docker-jenkins"
+        branches: 2.32.3,2.52,2.7.2,master
+      - name: docker-phpldapadmin
+        downstream: mk/docker-phpldapadmin
+        upstream: "git@github.com:Mirantis/docker-phpldapadmin"
+        branches: stable,master
+      - name: docker-openldap
+        downstream: mk/docker-openldap
+        upstream: "git@github.com:Mirantis/docker-openldap"
+        branches: stable,master
\ No newline at end of file
diff --git a/jenkins/client/job/git-mirrors/upstream/init.yml b/jenkins/client/job/git-mirrors/upstream/init.yml
new file mode 100644
index 0000000..e11e63c
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/init.yml
@@ -0,0 +1,48 @@
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs: []
+  jenkins:
+    client:
+      job_template:
+        git_mirror_upstream_common:
+          name: git-mirror-upstream-{{name}}
+          jobs: ${_param:jenkins_git_mirror_upstream_jobs}
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  "{{downstream}}":
+                    branches:
+                      - master
+                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}/{{downstream}}"
+              TARGET_URL:
+                type: string
+                default: "{{upstream}}"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
diff --git a/jenkins/client/job/git-mirrors/upstream/pipelines.yml b/jenkins/client/job/git-mirrors/upstream/pipelines.yml
new file mode 100644
index 0000000..20f7eb6
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/pipelines.yml
@@ -0,0 +1,13 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.upstream
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs:
+      - name: pipeline-library
+        downstream: mcp-ci/pipeline-library
+        upstream: "git@github.com:Mirantis/pipeline-library.git"
+        branches: master
+      - name: mk-pipelines
+        downstream: mk/mk-pipelines
+        upstream: "git@github.com:Mirantis/mk-pipelines.git"
+        branches: master
diff --git a/jenkins/client/job/git-mirrors/upstream/templates.yml b/jenkins/client/job/git-mirrors/upstream/templates.yml
new file mode 100644
index 0000000..12e4a9a
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/templates.yml
@@ -0,0 +1,13 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.upstream
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs:
+      - name: cookiecutter-templates
+        downstream: mk/cookiecutter-templates
+        upstream: "git@github.com:Mirantis/mk2x-cookiecutter-reclass-model"
+        branches: master
+      - name: heat-templates
+        downstream: mk/heat-templates
+        upstream: "git@github.com:Mirantis/mk-lab-heat-templates"
+        branches: master
\ No newline at end of file
diff --git a/jenkins/client/job/image/centos.yml b/jenkins/client/job/image/centos.yml
new file mode 100644
index 0000000..995bfd4
--- /dev/null
+++ b/jenkins/client/job/image/centos.yml
@@ -0,0 +1,74 @@
+classes:
+  - system.jenkins.client.job.image
+parameters:
+  _param:
+    jenkins_packer_pipeline: "${_param:jenkins_gerrit_url}/mk/packer-templates"
+  jenkins:
+    client:
+      job:
+        build-image-centos-7:
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_packer_pipeline}"
+            credentials: "gerrit"
+          display_name: "[Images] Build Centos 7"
+          param:
+            BUILD_OS:
+              type: string
+              default: "centos-7"
+            BUILD_ONLY:
+              type: string
+              default: "qemu"
+            PACKER_DEBUG:
+              type: boolean
+              default: "false"
+            PACKER_URL:
+              type: string
+              default: "https://releases.hashicorp.com/packer/0.8.6/packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP:
+              type: string
+              default: "packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP_MD5:
+              type: string
+              default: "4cda1c44cf666fada495dd8e01522e1c"
+            PACKER_ARGS:
+              type: string
+              default: ""
+            UPLOAD_URL:
+              type: string
+              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox010.10.100.85:8088/"
+            SKIP_UPLOAD:
+              type: boolean
+              default: "false"
+            CLEANUP_OLD:
+              type: boolean
+              default: "true"
+            CLEANUP_KEEP:
+              type: string
+              default: "3"
+            GLANCE_UPLOAD:
+              type: boolean
+              default: "true"
+            GLANCE_IMG_TYPES:
+              type: string
+              default: "qcow2"
+            GLANCE_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            GLANCE_CREDENTIALS_ID:
+              type: string
+              default: "openstack-qa-credentials"
+            GLANCE_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            GLANCE_ARGS:
+              type: string
+              default: ""
+            GLANCE_PUBLIC:
+              type: boolean
+              default: "true"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
diff --git a/jenkins/client/job/image/debian.yml b/jenkins/client/job/image/debian.yml
new file mode 100644
index 0000000..924b34c
--- /dev/null
+++ b/jenkins/client/job/image/debian.yml
@@ -0,0 +1,74 @@
+classes:
+  - system.jenkins.client.job.image
+parameters:
+  _param:
+    jenkins_packer_pipeline: "${_param:jenkins_gerrit_url}/mk/packer-templates"
+  jenkins:
+    client:
+      job:
+        build-image-debian-8:
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_packer_pipeline}"
+            credentials: "gerrit"
+          display_name: "[Images] Build Debian 8 image"
+          param:
+            BUILD_OS:
+              type: string
+              default: "debian-8"
+            BUILD_ONLY:
+              type: string
+              default: "qemu"
+            PACKER_DEBUG:
+              type: boolean
+              default: "false"
+            PACKER_URL:
+              type: string
+              default: "https://releases.hashicorp.com/packer/0.8.6/packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP:
+              type: string
+              default: "packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP_MD5:
+              type: string
+              default: "4cda1c44cf666fada495dd8e01522e1c"
+            PACKER_ARGS:
+              type: string
+              default: ""
+            UPLOAD_URL:
+              type: string
+              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+            SKIP_UPLOAD:
+              type: boolean
+              default: "false"
+            CLEANUP_OLD:
+              type: boolean
+              default: "true"
+            CLEANUP_KEEP:
+              type: string
+              default: "3"
+            GLANCE_UPLOAD:
+              type: boolean
+              default: "true"
+            GLANCE_IMG_TYPES:
+              type: string
+              default: "qcow2"
+            GLANCE_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            GLANCE_CREDENTIALS_ID:
+              type: string
+              default: "openstack-qa-credentials"
+            GLANCE_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            GLANCE_ARGS:
+              type: string
+              default: ""
+            GLANCE_PUBLIC:
+              type: boolean
+              default: "true"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
diff --git a/jenkins/client/job/image/init.yml b/jenkins/client/job/image/init.yml
new file mode 100644
index 0000000..ee7f743
--- /dev/null
+++ b/jenkins/client/job/image/init.yml
@@ -0,0 +1,8 @@
+parameters:
+  jenkins:
+    client:
+      view:
+        Images:
+          enabled: true
+          type: ListView
+          include_regex: "build-image-.*"
\ No newline at end of file
diff --git a/jenkins/client/job/image/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
new file mode 100644
index 0000000..a9f25e5
--- /dev/null
+++ b/jenkins/client/job/image/ubuntu.yml
@@ -0,0 +1,147 @@
+classes:
+  - system.jenkins.client.job.image
+parameters:
+  _param:
+    jenkins_packer_pipeline: "${_param:jenkins_gerrit_url}/mk/packer-templates"
+  jenkins:
+    client:
+      job:
+        build-image-ubuntu-14-04:
+          type: workflow-scm
+          concurrent: false
+          discard:
+            build:
+              keep_num: 5
+              keep_days: 5
+            artifact:
+              keep_num: 6
+              keep_days: 6
+          scm:
+            type: git
+            url: "${_param:jenkins_packer_pipeline}"
+            credentials: "gerrit"
+          display_name: "[Images] Build Ubuntu 14.04 image"
+          param:
+            BUILD_OS:
+              type: string
+              default: "ubuntu-14.04"
+            BUILD_ONLY:
+              type: string
+              default: "qemu"
+            PACKER_DEBUG:
+              type: boolean
+              default: "false"
+            PACKER_URL:
+              type: string
+              default: "https://releases.hashicorp.com/packer/0.8.6/packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP:
+              type: string
+              default: "packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP_MD5:
+              type: string
+              default: "4cda1c44cf666fada495dd8e01522e1c"
+            PACKER_ARGS:
+              type: string
+              default: ""
+            UPLOAD_URL:
+              type: string
+              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+            SKIP_UPLOAD:
+              type: boolean
+              default: "false"
+            CLEANUP_OLD:
+              type: boolean
+              default: "true"
+            CLEANUP_KEEP:
+              type: string
+              default: "3"
+            GLANCE_UPLOAD:
+              type: boolean
+              default: "true"
+            GLANCE_IMG_TYPES:
+              type: string
+              default: "qcow2"
+            GLANCE_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            GLANCE_CREDENTIALS_ID:
+              type: string
+              default: "openstack-qa-credentials"
+            GLANCE_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            GLANCE_ARGS:
+              type: string
+              default: ""
+            GLANCE_PUBLIC:
+              type: boolean
+              default: "true"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
+        build-image-ubuntu-16-04:
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_packer_pipeline}"
+            credentials: "gerrit"
+          display_name: "[Images] Build Ubuntu 16.04 image"
+          param:
+            BUILD_OS:
+              type: string
+              default: "ubuntu-16.04"
+            BUILD_ONLY:
+              type: string
+              default: "qemu"
+            PACKER_DEBUG:
+              type: boolean
+              default: "false"
+            PACKER_URL:
+              type: string
+              default: "https://releases.hashicorp.com/packer/0.8.6/packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP:
+              type: string
+              default: "packer_0.8.6_linux_amd64.zip"
+            PACKER_ZIP_MD5:
+              type: string
+              default: "4cda1c44cf666fada495dd8e01522e1c"
+            PACKER_ARGS:
+              type: string
+              default: ""
+            UPLOAD_URL:
+              type: string
+              default: "http://jenkins:eyoocaiG3ADireK3Eef8gae1roh5oox0@10.10.100.85:8088/"
+            SKIP_UPLOAD:
+              type: boolean
+              default: "false"
+            CLEANUP_OLD:
+              type: boolean
+              default: "true"
+            CLEANUP_KEEP:
+              type: string
+              default: "3"
+            GLANCE_UPLOAD:
+              type: boolean
+              default: "true"
+            GLANCE_IMG_TYPES:
+              type: string
+              default: "qcow2"
+            GLANCE_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            GLANCE_CREDENTIALS_ID:
+              type: string
+              default: "openstack-qa-credentials"
+            GLANCE_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            GLANCE_ARGS:
+              type: string
+              default: ""
+            GLANCE_PUBLIC:
+              type: boolean
+              default: "true"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
diff --git a/jenkins/client/job/kill_stuck_jobs.yml b/jenkins/client/job/kill_stuck_jobs.yml
new file mode 100644
index 0000000..57f0b3f
--- /dev/null
+++ b/jenkins/client/job/kill_stuck_jobs.yml
@@ -0,0 +1,25 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        kill-stuck-jobs:
+          name: kill-stuck-jobs
+          discard:
+            build:
+              keep_num: 3
+            artifact:
+              keep_num: 3
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: abort-long-running-jobs.groovy
+          trigger:
+            timer:
+              spec: "H H * * *"
+          param:
+            MAX_DURATION_IN_HOURS:
+              type: string
+              default: "24"
diff --git a/jenkins/client/job/opencontrail/build/dpdk-extra.yml b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
new file mode 100644
index 0000000..f250a8c
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
@@ -0,0 +1,79 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        build-opencontrail-dpdk-extra:
+          name: build-opencontrail-dpdk-extra-{{branch_name}}-{{os}}-{{dist}}
+          jobs:
+            - os: ubuntu
+              dist: trusty
+              branch_name: kilo
+              branch_real_name: kilo
+            - os: ubuntu
+              dist: trusty
+              branch_name: liberty
+              branch_real_name: liberty-multiqueue
+            - os: ubuntu
+              dist: trusty
+              branch_name: mitaka
+              branch_real_name: mitaka
+            - os: ubuntu
+              dist: xenial
+              branch_name: mitaka
+              branch_real_name: mitaka
+          template:
+            discard:
+             build:
+               keep_num: 5
+             artifact:
+               keep_num: 5
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              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
+                default: "${_param:jenkins_gerrit_url}/contrail/contrail-dpdk-extra-packages.git"
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch_real_name}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              APTLY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_api_url}"
+              APTLY_REPO:
+                type: string
+                default: "{{os}}-{{dist}}-{{branch_name}}"
+              OS:
+                type: string
+                default: "{{os}}"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              BINARY_PACKAGES:
+                description: "binary packages to create"
+                type: string
+                default: "all"
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
new file mode 100644
index 0000000..a26472b
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -0,0 +1,175 @@
+parameters:
+  _param:
+    jenkins_contrail_pipeline: "${_param:jenkins_gerrit_url}/contrail/contrail-pipeline"
+  jenkins:
+    client:
+      job_template:
+        build-opencontrail:
+          name: build-opencontrail-{{buildname}}-{{os}}-{{dist}}
+          jobs:
+            - buildname: oc303
+              os: ubuntu
+              dist: trusty
+              branch: R3.0.3.x
+              ppa: mirantis-opencontrail/opencontrail-3.0.3
+              upload_source_package: false
+            - buildname: oc31
+              os: ubuntu
+              dist: trusty
+              branch: R3.1
+              ppa: mirantis-opencontrail/opencontrail-3.1
+              upload_source_package: true
+            - buildname: oc31
+              os: ubuntu
+              dist: xenial
+              branch: R3.1
+              ppa: mirantis-opencontrail/opencontrail-3.1
+              upload_source_package: true
+            - buildname: oc311
+              os: ubuntu
+              dist: trusty
+              branch: R3.1.1.x
+              ppa: mirantis-opencontrail/opencontrail-3.1.1
+              upload_source_package: true
+            - buildname: oc311
+              os: ubuntu
+              dist: xenial
+              branch: R3.1.1.x
+              ppa: mirantis-opencontrail/opencontrail-3.1.1
+              upload_source_package: true
+            - buildname: oc32
+              os: ubuntu
+              dist: trusty
+              branch: R3.2
+              ppa: mirantis-opencontrail/opencontrail-3.2
+              upload_source_package: true
+            - buildname: oc32
+              os: ubuntu
+              dist: xenial
+              branch: R3.2
+              ppa: mirantis-opencontrail/opencontrail-3.2
+              upload_source_package: true
+            - buildname: oc666
+              os: ubuntu
+              dist: trusty
+              branch: master
+              ppa: mirantis-opencontrail/opencontrail-master
+              upload_source_package: false
+            - buildname: oc666
+              os: ubuntu
+              dist: xenial
+              branch: master
+              ppa: mirantis-opencontrail/opencontrail-master
+              upload_source_package: false
+          template:
+            discard:
+             build:
+               keep_num: 5
+             artifact:
+               keep_num: 5
+            type: workflow-scm
+            concurrent: true
+            quiet_period: 120
+            scm:
+              type: git
+              url: "${_param:jenkins_contrail_pipeline}"
+              credentials: "gerrit"
+              github:
+                url: https://github.com/Mirantis/ccp-contrail-pipeline
+            param:
+              APTLY_URL:
+                type: string
+                default: "${_param:jenkins_aptly_api_url}"
+              APTLY_REPO:
+                type: string
+                default: "{{os}}-{{dist}}-{{buildname}}"
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/contrail"
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              KEEP_REPOS:
+                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"
+              OS:
+                type: string
+                default: "{{os}}"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+              PPA:
+                type: string
+                default: "{{ppa}}"
+              UPLOAD_SOURCE_PACKAGE:
+                type: boolean
+                default: '{{upload_source_package}}'
+            trigger:
+              gerrit:
+                project:
+                   contrail/contrail-pipeline:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-build:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-controller:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-vrouter:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-third-party:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-generateDS:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-sandesh:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-packages:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-nova-vif-driver:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-neutron-plugin:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-nova-extensions:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-heat:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-web-storage:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-web-server-manager:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-web-controller:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-web-core:
+                     branches:
+                       - "{{branch}}"
+                   contrail/contrail-webui-third-party:
+                     branches:
+                       - "{{branch}}"
+                event:
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(buildpackage)'
diff --git a/jenkins/client/job/opencontrail/build/init.yml b/jenkins/client/job/opencontrail/build/init.yml
new file mode 100644
index 0000000..b4853b6
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/init.yml
@@ -0,0 +1,4 @@
+classes:
+  - system.jenkins.client.job.opencontrail.build.generic
+  - system.jenkins.client.job.opencontrail.build.test
+  - system.jenkins.client.job.opencontrail.build.dpdk-extra
diff --git a/jenkins/client/job/opencontrail/build/test.yml b/jenkins/client/job/opencontrail/build/test.yml
new file mode 100644
index 0000000..5a4666a
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/test.yml
@@ -0,0 +1,76 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        test-opencontrail:
+          name: test-opencontrail-{{buildname}}-{{os}}-{{dist}}
+          jobs:
+            - buildname: oc31
+              os: ubuntu
+              dist: trusty
+              branch: R3.1
+            - buildname: oc311
+              os: ubuntu
+              dist: trusty
+              branch: R3.1.1.x
+            - buildname: oc32
+              os: ubuntu
+              dist: trusty
+              branch: R3.2
+          template:
+            discard:
+             build:
+               keep_num: 5
+             artifact:
+               keep_num: 5
+            type: workflow-scm
+            concurrent: true
+            quiet_period: 120
+            scm:
+              type: git
+              url: "https://github.com/chnyda/contrail-unittest"
+            param:
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/contrail"
+              SOURCE_BRANCH:
+                type: string
+                default: "{{branch}}"
+              SOURCE_CREDENTIALS:
+                type: string
+                default: "gerrit"
+              KEEP_REPOS:
+                type: boolean
+                default: 'false'
+                description: "Don't cleanup on failure"
+              OS:
+                type: string
+                default: "{{os}}"
+              DIST:
+                type: string
+                default: "{{dist}}"
+              ARCH:
+                type: string
+                default: "amd64"
+            trigger:
+              gerrit:
+                project:
+                  contrail/contrail-controller:
+                    branches:
+                      - "{{branch}}"
+                  contrail/contrail-vrouter:
+                    branches:
+                      - "{{branch}}"
+                event:
+                  patchset:
+                    - created:
+                        excludeDrafts: false
+                        excludeTrivialRebase: false
+                        excludeNoCodeChange: false
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
+            param:
+              TEST_MODELS:
+                type: string
+                default: "{{clusters}}"
\ No newline at end of file
diff --git a/jenkins/client/job/opencontrail/git-mirrors/2way.yml b/jenkins/client/job/opencontrail/git-mirrors/2way.yml
new file mode 100644
index 0000000..0ecb83f
--- /dev/null
+++ b/jenkins/client/job/opencontrail/git-mirrors/2way.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job:
+        git-mirror-2way-contrail-kubernetes:
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-mirror-2way-pipeline.groovy
+            github:
+              url: "https://github.com/Mirantis/contrail-kubernetes"
+          trigger:
+            github:
+            pollscm:
+              spec: ${_param:jenkins_pollscm_spec}
+          param:
+            SOURCE_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/contrail/contrail-kubernetes.git"
+            TARGET_URL:
+              type: string
+              default: "https://github.com/Mirantis/contrail-kubernetes.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: ${_param:contrail_kubernetes_branches}
diff --git a/jenkins/client/job/opencontrail/git-mirrors/downstream.yml b/jenkins/client/job/opencontrail/git-mirrors/downstream.yml
new file mode 100644
index 0000000..b49a1a0
--- /dev/null
+++ b/jenkins/client/job/opencontrail/git-mirrors/downstream.yml
@@ -0,0 +1,112 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        git-mirror:
+          name: git-mirror-{{name}}
+          jobs:
+            - name: contrail-build
+              branches: ${_param:contrail_branches}
+            - name: contrail-controller
+              branches: ${_param:contrail_branches}
+            - name: contrail-vrouter
+              branches: ${_param:contrail_branches}
+            - name: contrail-third-party
+              branches: ${_param:contrail_branches}
+            - name: contrail-generateDS
+              branches: ${_param:contrail_branches}
+            - name: contrail-sandesh
+              branches: ${_param:contrail_branches}
+            - name: contrail-packages
+              branches: ${_param:contrail_branches}
+            - name: contrail-nova-vif-driver
+              branches: ${_param:contrail_branches}
+            - name: contrail-neutron-plugin
+              branches: ${_param:contrail_branches}
+            - name: contrail-nova-extensions
+              branches: ${_param:contrail_branches}
+            - name: contrail-ceilometer-plugin
+              branches: ${_param:contrail_ceilometer_plugin_branches}
+            - name: contrail-heat
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-storage
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-server-manager
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-controller
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-core
+              branches: ${_param:contrail_branches}
+            - name: contrail-webui-third-party
+              branches: ${_param:contrail_branches}
+            - name: contrail-dpdk-extra-packages
+              branches: ${_param:contrail_dpdk_extra_branches}
+            - name: contrail-kubernetes
+              branches: ${_param:contrail_kubernetes_branches}
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-pipeline.groovy
+              github:
+                url: "https://github.com/Juniper/{{name}}"
+            trigger:
+              github:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+            param:
+              SOURCE_URL:
+                type: string
+                default: "https://github.com/Juniper/{{name}}.git"
+              TARGET_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/contrail/{{name}}.git"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
+      job:
+        git-mirror-ifmap-python-client:
+          discard:
+            build:
+              keep_num: 10
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-mirror-pipeline.groovy
+            github:
+              url: "https://github.com/tcpcloud/ifmap-python-client"
+          trigger:
+            github:
+            pollscm:
+              spec: ${_param:jenkins_pollscm_spec}
+          param:
+            SOURCE_URL:
+              type: string
+              default: "https://github.com/tcpcloud/ifmap-python-client.git"
+            TARGET_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/contrail/ifmap-python-client.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: "master"
diff --git a/jenkins/client/job/opencontrail/git-mirrors/init.yml b/jenkins/client/job/opencontrail/git-mirrors/init.yml
new file mode 100644
index 0000000..4a06885
--- /dev/null
+++ b/jenkins/client/job/opencontrail/git-mirrors/init.yml
@@ -0,0 +1,4 @@
+classes:
+  - system.jenkins.client.job.opencontrail.git-mirrors.downstream
+  - system.jenkins.client.job.opencontrail.git-mirrors.upstream
+  - system.jenkins.client.job.opencontrail.git-mirrors.2way
diff --git a/jenkins/client/job/opencontrail/git-mirrors/upstream.yml b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
new file mode 100644
index 0000000..ece2182
--- /dev/null
+++ b/jenkins/client/job/opencontrail/git-mirrors/upstream.yml
@@ -0,0 +1,189 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+    jenkins_contrail_pipeline: "${_param:jenkins_gerrit_url}/contrail/contrail-pipeline"
+  jenkins:
+    client:
+      job_template:
+        git-mirror-upstream:
+          name: git-mirror-upstream-{{name}}
+          jobs:
+            - name: contrail-build
+              branches: ${_param:contrail_branches}
+            - name: contrail-controller
+              branches: ${_param:contrail_branches}
+            - name: contrail-vrouter
+              branches: ${_param:contrail_branches}
+            - name: contrail-third-party
+              branches: ${_param:contrail_branches}
+            - name: contrail-generateDS
+              branches: ${_param:contrail_branches}
+            - name: contrail-sandesh
+              branches: ${_param:contrail_branches}
+            - name: contrail-packages
+              branches: ${_param:contrail_branches}
+            - name: contrail-nova-vif-driver
+              branches: ${_param:contrail_branches}
+            - name: contrail-neutron-plugin
+              branches: ${_param:contrail_branches}
+            - name: contrail-nova-extensions
+              branches: ${_param:contrail_branches}
+            - name: contrail-ceilometer-plugin
+              branches: ${_param:contrail_ceilometer_plugin_branches}
+            - name: contrail-heat
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-storage
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-server-manager
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-controller
+              branches: ${_param:contrail_branches}
+            - name: contrail-web-core
+              branches: ${_param:contrail_branches}
+            - name: contrail-webui-third-party
+              branches: ${_param:contrail_branches}
+            - name: contrail-dpdk-extra-packages
+              branches: ${_param:contrail_dpdk_extra_branches}
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-pipeline.groovy
+              github:
+                url: "https://github.com/Mirantis/{{name}}"
+            trigger:
+              github:
+            param:
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/contrail/{{name}}.git"
+              TARGET_URL:
+                type: string
+                default: "git@github.com:Mirantis/{{name}}.git"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "{{branches}}"
+      job:
+        git-mirror-upstream-ifmap-python-client:
+          discard:
+            build:
+              keep_num: 10
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-mirror-pipeline.groovy
+            github:
+              url: "https://github.com/tcpcloud/ifmap-python-client"
+          param:
+            SOURCE_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/contrail/ifmap-python-client.git"
+            TARGET_URL:
+              type: string
+              default: "git@github.com:Mirantis/ifmap-python-client.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: "master"
+        # XXX: this one ccp- prefixed is kind-of obsolete and should be
+        # removed
+        git-mirror-upstream-ccp-contrail-pipeline:
+          discard:
+            build:
+              keep_num: 10
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-mirror-pipeline.groovy
+            github:
+              url: https://github.com/Mirantis/ccp-contrail-pipeline
+          trigger:
+            gerrit:
+              project:
+                contrail/contrail-pipeline:
+                  branches:
+                    - master
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                ref:
+                  - updated
+          param:
+            SOURCE_URL:
+              type: string
+              default: "${_param:jenkins_contrail_pipeline}"
+            TARGET_URL:
+              type: string
+              default: "git@github.com:Mirantis/ccp-contrail-pipeline.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: master
+        git-mirror-upstream-contrail-pipeline:
+          discard:
+            build:
+              keep_num: 10
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: git-mirror-pipeline.groovy
+            github:
+              url: https://github.com/Mirantis/contrail-pipeline
+          trigger:
+            gerrit:
+              project:
+                contrail/contrail-pipeline:
+                  branches:
+                    - master
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                ref:
+                  - updated
+          param:
+            SOURCE_URL:
+              type: string
+              default: "${_param:jenkins_contrail_pipeline}"
+            TARGET_URL:
+              type: string
+              default: "git@github.com:Mirantis/contrail-pipeline.git"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            BRANCHES:
+              type: string
+              default: master
diff --git a/jenkins/client/job/opencontrail/init.yml b/jenkins/client/job/opencontrail/init.yml
new file mode 100644
index 0000000..63e4215
--- /dev/null
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -0,0 +1,28 @@
+classes:
+  - system.jenkins.client.job.opencontrail.build
+  - 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,master"
+    contrail_kubernetes_branches: "master,release-1.2"
+    contrail_dpdk_extra_branches: "mitaka,kilo,liberty-multiqueue"
+    contrail_ceilometer_plugin_branches: "master"
+    contrail_kubernetes_branches: "master,origin-1.1,origin-1.1.3,release-1.1,release-1.2"
+  jenkins:
+    client:
+      view:
+        Opencontrail:
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "build-opencontrail-.*"
+          categories:
+            - group_regex: "build-opencontrail-dpdk-extra-.*"
+              naming_rule: "DPDK Extras"
+            - group_regex: "build-opencontrail-oc303-.*"
+              naming_rule: "R3.0.3.x"
+            - group_regex: "build-opencontrail-oc31-.*"
+              naming_rule: "R3.1"
+            - group_regex: "build-opencontrail-oc311-.*"
+              naming_rule: "R3.1.1.x"
+            - group_regex: "build-opencontrail-oc32-.*"
+              naming_rule: "R3.2"
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/2way.yml b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
new file mode 100644
index 0000000..73609c4
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -0,0 +1,140 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        git-mirror-2way-salt-formula:
+          name: git-mirror-2way-salt-formula-{{name}}
+          jobs:
+            - name: aodh
+            - name: apache
+            - name: aptcacher
+            - name: aptly
+            - name: artifactory
+            - name: backupninja
+            - name: avinetworks
+            - name: billometer
+            - name: bind
+            - name: bird
+            - name: cadf
+            - name: calico
+            - name: cassandra
+            - name: ccp
+            - name: ceilometer
+            - name: ceph
+            - name: chrony
+            - name: cinder
+            - name: collectd
+            - name: dekapod
+            - name: devops-portal
+            - name: docker
+            - name: dovecot
+            - name: elasticsearch
+            - name: etcd
+            - name: foreman
+            - name: freeipa
+            - name: galera
+            - name: gerrit
+            - name: git
+            - name: gitlab
+            - name: glance
+            - name: glusterfs
+            - name: grafana
+            - name: graphite
+            - name: haproxy
+            - name: heat
+            - name: heka
+            - name: horizon
+            - name: influxdb
+            - name: iptables
+            - name: isc-dhcp
+            - name: java
+            - name: jenkins
+            - name: kedb
+            - name: keepalived
+            - name: keystone
+            - name: kibana
+            - name: kubernetes
+            - name: letsencrypt
+            - name: libvirt
+            - name: linux
+            - name: logrotate
+            - name: maas
+            - name: magnum
+            - name: memcached
+            - name: midonet
+            - name: monasca
+            - name: mongodb
+            - name: murano
+            - name: mysql
+            - name: nagios
+            - name: network
+            - name: neutron
+            - name: nfs
+            - name: nginx
+            - name: nodejs
+            - name: nova
+            - name: ntp
+            - name: opencontrail
+            - name: openldap
+            - name: openssh
+            - name: openvpn
+            - name: openvstorage
+            - name: owncloud
+            - name: postfix
+            - name: postgresql
+            - name: pritunl
+            - name: prometheus
+            - name: python
+            - name: rabbitmq
+            - name: reclass
+            - name: redis
+            - name: roundcube
+            - name: rsync
+            - name: rsyslog
+            - name: sahara
+            - name: salt
+            - name: sensu
+            - name: sentry
+            - name: sphinx
+            - name: spinnaker
+            - name: statsd
+            - name: supervisor
+            - name: swift
+            - name: taiga
+            - name: telegraf
+            - name: varnish
+            - name: zookeeper
+          template:
+            discard:
+              build:
+                keep_num: 10
+              artifact:
+                keep_num: 10
+            type: workflow-scm
+            concurrent: false
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-2way-pipeline.groovy
+              github:
+                url: "https://github.com/salt-formulas/salt-formula-{{name}}"
+            trigger:
+              github:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+            param:
+              SOURCE_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/salt-formulas/{{name}}.git"
+              TARGET_URL:
+                type: string
+                default: "git@github.com:salt-formulas/salt-formula-{{name}}.git"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: ${_param:salt_formulas_branches}
diff --git a/jenkins/client/job/salt-formulas/git-mirrors/init.yml b/jenkins/client/job/salt-formulas/git-mirrors/init.yml
new file mode 100644
index 0000000..9b1d77d
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/git-mirrors/init.yml
@@ -0,0 +1,5 @@
+classes:
+  - system.jenkins.client.job.salt-formulas.git-mirrors.2way
+parameters:
+  _param:
+    salt_formulas_branches: master
diff --git a/jenkins/client/job/salt-formulas/init.yml b/jenkins/client/job/salt-formulas/init.yml
new file mode 100644
index 0000000..8c8c2e2
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/init.yml
@@ -0,0 +1,17 @@
+classes:
+  - system.jenkins.client.job.salt-formulas.git-mirrors
+  - system.jenkins.client.job.salt-formulas.tests
+  - system.jenkins.client.job.salt-formulas.release
+parameters:
+  jenkins:
+    client:
+      view:
+        "Salt formulas":
+          enabled: true
+          type: CategorizedJobsView
+          include_regex: "build-debian-salt-formula-.*"
+          categories:
+            - group_regex: ".*-ubuntu-trusty"
+              naming_rule: "Ubuntu Trusty"
+            - group_regex: ".*-ubuntu-xenial"
+              naming_rule: "Ubuntu Xenial"
diff --git a/jenkins/client/job/salt-formulas/release.yml b/jenkins/client/job/salt-formulas/release.yml
new file mode 100644
index 0000000..c686e6e
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/release.yml
@@ -0,0 +1,26 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        release-salt-formulas:
+          type: workflow-scm
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: release-salt-formulas-pipeline.groovy
+            github:
+              url: "https://github.com/salt-formulas/salt-formulas"
+          param:
+            TAG:
+              type: string
+            SOURCE_URL:
+              type: string
+              default: "https://github.com/salt-formulas/salt-formulas.git"
+            GERRIT_BASE:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/salt-formulas"
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
diff --git a/jenkins/client/job/salt-formulas/tests.yml b/jenkins/client/job/salt-formulas/tests.yml
new file mode 100644
index 0000000..1bb0363
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -0,0 +1,151 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        test-salt-formula:
+          name: test-salt-formula-{{name}}-latest
+          jobs:
+            - name: aodh
+            - name: apache
+            - name: aptcacher
+            - name: aptly
+            - name: artifactory
+            - name: backupninja
+            - name: avinetworks
+            - name: billometer
+            - name: bind
+            - name: bird
+            - name: cadf
+            - name: calico
+            - name: cassandra
+            - name: ccp
+            - name: ceilometer
+            - name: ceph
+            - name: chrony
+            - name: cinder
+            - name: collectd
+            - name: dekapod
+            - name: devops-portal
+            - name: docker
+            - name: dovecot
+            - name: elasticsearch
+            - name: etcd
+            - name: foreman
+            - name: freeipa
+            - name: galera
+            - name: gerrit
+            - name: git
+            - name: gitlab
+            - name: glance
+            - name: glusterfs
+            - name: grafana
+            - name: graphite
+            - name: haproxy
+            - name: heat
+            - name: heka
+            - name: horizon
+            - name: influxdb
+            - name: iptables
+            - name: isc-dhcp
+            - name: java
+            - name: jenkins
+            - name: kedb
+            - name: keepalived
+            - name: keystone
+            - name: kibana
+            - name: kubernetes
+            - name: letsencrypt
+            - name: libvirt
+            - name: linux
+            - name: logrotate
+            - name: maas
+            - name: magnum
+            - name: memcached
+            - name: midonet
+            - name: monasca
+            - name: mongodb
+            - name: murano
+            - name: mysql
+            - name: nagios
+            - name: network
+            - name: neutron
+            - name: nfs
+            - name: nginx
+            - name: nodejs
+            - name: nova
+            - name: ntp
+            - name: opencontrail
+            - name: openldap
+            - name: openssh
+            - name: openvpn
+            - name: openvstorage
+            - name: owncloud
+            - name: postfix
+            - name: postgresql
+            - name: pritunl
+            - name: prometheus
+            - name: python
+            - name: rabbitmq
+            - name: reclass
+            - name: redis
+            - name: roundcube
+            - name: rsync
+            - name: rsyslog
+            - name: sahara
+            - name: salt
+            - name: sensu
+            - name: sentry
+            - name: sphinx
+            - name: spinnaker
+            - name: statsd
+            - name: supervisor
+            - name: swift
+            - name: taiga
+            - name: telegraf
+            - name: varnish
+            - name: zookeeper
+          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-salt-formulas-pipeline.groovy
+            trigger:
+              gerrit:
+                project:
+                  salt-formulas/{{name}}:
+                    branches:
+                      - master
+                event:
+                  patchset:
+                    - created:
+                        excludeDrafts: false
+                        excludeTrivialRebase: false
+                        excludeNoCodeChange: false
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
+            param:
+              SALT_VERSION:
+                type: string
+                default: "latest"
+              SALT_OPTS:
+                type: string
+                default: "--force-color"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              DEFAULT_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/salt-formulas/{{name}}"
+              DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/salt-models/generate.yml b/jenkins/client/job/salt-models/generate.yml
new file mode 100644
index 0000000..967de8c
--- /dev/null
+++ b/jenkins/client/job/salt-models/generate.yml
@@ -0,0 +1,59 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        generate-salt-model:
+          name: generate-salt-model-{{cookiecutter_template}}
+          param:
+            cookiecutter_template:
+            - separated-products
+          template:
+            type: workflow-scm
+            concurrent: true
+            display_name: "Generate reclass cluster {{cookiecutter_template}}"
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "jenkins-mk"
+              script: generate-cookiecutter-products.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_INSTALL_CICD:
+                type: boolean
+                default: false
+              COOKIECUTTER_INSTALL_CONTRAIL:
+                type: boolean
+                default: false
+              COOKIECUTTER_INSTALL_KUBERNETES:
+                type: boolean
+                default: false
+              COOKIECUTTER_INSTALL_OPENSTACK:
+                type: boolean
+                default: false
+              COOKIECUTTER_INSTALL_STACKLIGHT:
+                type: boolean
+                default: false
+              COOKIECUTTER_TEMPLATE_CONTEXT:
+                type: text
+              RECLASS_MODEL_URL:
+                type: string
+              RECLASS_MODEL_CREDENTIALS:
+                type: string
+                default: gerrit
+              RECLASS_MODEL_BRANCH:
+                type: string
+                default: master
+              COMMIT_CHANGES:
+                type: boolean
+                default: false
diff --git a/jenkins/client/job/salt-models/git-mirrors.yml b/jenkins/client/job/salt-models/git-mirrors.yml
new file mode 100644
index 0000000..7ee7b94
--- /dev/null
+++ b/jenkins/client/job/salt-models/git-mirrors.yml
@@ -0,0 +1,53 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      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
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: git-mirror-2way-pipeline.groovy
+              github:
+                url: "https://github.com/Mirantis/{{name}}-salt-model"
+            trigger:
+              github:
+              pollscm:
+                spec: ${_param:jenkins_pollscm_spec}
+              gerrit:
+                project:
+                  salt-models/{{name}}:
+                    branches:
+                      - master
+                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}/salt-models/{{name}}.git"
+              TARGET_URL:
+                type: string
+                default: "git@github.com:Mirantis/{{name}}-salt-model.git"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+              BRANCHES:
+                type: string
+                default: "master"
diff --git a/jenkins/client/job/salt-models/init.yml b/jenkins/client/job/salt-models/init.yml
new file mode 100644
index 0000000..7e5039a
--- /dev/null
+++ b/jenkins/client/job/salt-models/init.yml
@@ -0,0 +1,14 @@
+classes:
+  - system.jenkins.client.job.salt-models.git-mirrors
+  - system.jenkins.client.job.salt-models.tests
+  - system.jenkins.client.job.salt-models.generate
+parameters:
+  _param:
+    salt_formulas_branches: master
+  jenkins:
+    client:
+      view:
+        "Salt models":
+          enabled: true
+          type: ListView
+          include_regex: ".*-salt-model-.*"
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
new file mode 100644
index 0000000..1545eff
--- /dev/null
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -0,0 +1,86 @@
+parameters:
+  _param:
+  jenkins:
+    client:
+      job_template:
+        test_salt_model:
+          name: test-salt-model-{{name}}
+          param:
+            name:
+              - mcp-baremetal-lab
+              - mcp-virtual-lab
+              - mk-ci
+              - qa
+              - stacklight
+              - training
+          template:
+            type: workflow-scm
+            scm:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              credentials: "gerrit"
+              script: test-salt-models-pipeline.groovy
+            concurrent: true
+            trigger:
+              gerrit:
+                project:
+                  salt-models/{{name}}:
+                    branches:
+                      - master
+                event:
+                  patchset:
+                    - created:
+                        excludeDrafts: false
+                        excludeTrivialRebase: false
+                        excludeNoCodeChange: false
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
+            param:
+              SALT_OPTS:
+                type: string
+                default: "--force-color"
+              DEFAULT_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+              DEFAULT_GIT_REF:
+                type: string
+                default: master
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
+        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:
+              type: git
+              url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+              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
+                default: "{{clusters}}"
+              DEFAULT_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/salt-models/reclass-system"
+              DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/test_devops_portal.yml b/jenkins/client/job/test_devops_portal.yml
new file mode 100644
index 0000000..711f42a
--- /dev/null
+++ b/jenkins/client/job/test_devops_portal.yml
@@ -0,0 +1,52 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-oss-devops-portal:
+          name: test-oss-devops-portal
+          discard:
+            build:
+              keep_num: 10
+            artifact:
+              keep_num: 10
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            credentials: "gerrit"
+            script: test-nodejs-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/devops-portal":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            NODE_IMAGE:
+              type: string
+              default: "docker-sandbox.sandbox.mirantis.net/ikharin/ci/node-firefox:6.10"
+            COMMANDS:
+              type: text
+              default: |
+                npm run lint
+                npm run test:unit
+                npm run test:functional
+            DEFAULT_GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/oss/devops-portal"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
new file mode 100644
index 0000000..5d58f20
--- /dev/null
+++ b/jenkins/client/job/test_pipelines.yml
@@ -0,0 +1,50 @@
+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:
+                type: string
+                description: "Run against alternate system reclass"
+                default: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            DEFAULT_GIT_REF:
+                type: string
+                default: master
diff --git a/jenkins/client/security/ldap.yml b/jenkins/client/security/ldap.yml
new file mode 100644
index 0000000..ba53570
--- /dev/null
+++ b/jenkins/client/security/ldap.yml
@@ -0,0 +1,18 @@
+parameters:
+  _param:
+    jenkins_security_ldap_manager_dn: ''
+    jenkins_security_ldap_manager_password: ''
+    jenkins_security_ldap_user_search_filter: 'uid={0}'
+    jenkins_security_ldap_user_search_base: ''
+    jenkins_security_ldap_group_search_base: ''
+  jenkins:
+    client:
+      security:
+        ldap:
+          server: ${_param:jenkins_security_ldap_server}
+          root_dn: ${_param:jenkins_security_ldap_root_dn}
+          manager_dn: ${_param:jenkins_security_ldap_manager_dn}
+          manager_password: ${_param:jenkins_security_ldap_manager_password}
+          user_search: ${_param:jenkins_security_ldap_user_search_filter}
+          user_search_base: ${_param:jenkins_security_ldap_user_search_base}
+          group_search_base: ${_param:jenkins_security_ldap_group_search_base}
diff --git a/jenkins/client/security/matrix.yml b/jenkins/client/security/matrix.yml
new file mode 100644
index 0000000..b08aefd
--- /dev/null
+++ b/jenkins/client/security/matrix.yml
@@ -0,0 +1,49 @@
+parameters:
+  _param:
+    # Full admin access
+    jenkins_security_matrix_admins:
+      - ${_param:jenkins_client_user}
+      - admins
+    # Read only access
+    jenkins_security_matrix_read: []
+    # Read + permissions to build jobs
+    jenkins_security_matrix_build: []
+    # Build permissions + create/delete, whatever.
+    jenkins_security_matrix_write:
+      - ${_param:jenkins_client_user}
+
+  jenkins:
+    client:
+      security:
+        matrix:
+          permissions:
+            Jenkins:
+              ADMINISTER: ${_param:jenkins_security_matrix_admins}
+              READ: ${_param:jenkins_security_matrix_read}
+            hudson:
+              model:
+                Item:
+                  BUILD: ${_param:jenkins_security_matrix_build}
+                  CANCEL: ${_param:jenkins_security_matrix_build}
+                  CONFIGURE: ${_param:jenkins_security_matrix_write}
+                  CREATE: ${_param:jenkins_security_matrix_write}
+                  DELETE: ${_param:jenkins_security_matrix_write}
+                  DISCOVER: ${_param:jenkins_security_matrix_build}
+                  EXTENDED_READ: ${_param:jenkins_security_matrix_build}
+                  WIPEOUT: ${_param:jenkins_security_matrix_write}
+                  WORKSPACE: ${_param:jenkins_security_matrix_write}
+                  READ: ${_param:jenkins_security_matrix_read}
+                Run:
+                  DELETE: ${_param:jenkins_security_matrix_write}
+                  ARTIFACTS: ${_param:jenkins_security_matrix_write}
+                  UPDATE: ${_param:jenkins_security_matrix_write}
+                View:
+                  READ: ${_param:jenkins_security_matrix_read}
+            com:
+              sonyericsson:
+                hudson:
+                  plugins:
+                    gerrit:
+                      trigger:
+                        PluginImpl:
+                          RETRIGGER: ${_param:jenkins_security_matrix_build}
diff --git a/jenkins/client/single.yml b/jenkins/client/single.yml
deleted file mode 100644
index 21d0cb2..0000000
--- a/jenkins/client/single.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      enabled: True
\ No newline at end of file
diff --git a/jenkins/client/user/admin.yml b/jenkins/client/user/admin.yml
new file mode 100644
index 0000000..ce775f8
--- /dev/null
+++ b/jenkins/client/user/admin.yml
@@ -0,0 +1,7 @@
+parameters:
+  jenkins:
+    client:
+      user:
+        admin:
+          password: ${_param:jenkins_admin_password}
+          admin: true
diff --git a/jenkins/master/config.yml b/jenkins/master/config.yml
new file mode 100644
index 0000000..41e3ffb
--- /dev/null
+++ b/jenkins/master/config.yml
@@ -0,0 +1,11 @@
+parameters:
+  linux:
+    system:
+      config:
+        jenkins_master:
+          grains:
+            fqdn: dummy
+          pillar:
+            jenkins:
+              master:
+                home: /srv/volumes/jenkins
\ No newline at end of file
diff --git a/jenkins/master/single.yml b/jenkins/master/single.yml
index ceb6766..e69de29 100644
--- a/jenkins/master/single.yml
+++ b/jenkins/master/single.yml
@@ -1,44 +0,0 @@
-classes:
-- service.git.client
-- service.java.environment
-- service.jenkins.master.single
-parameters:
-  _param:
-    java_environment_platform: openjdk
-    java_environment_version: '8'
-  jenkins:
-    master:
-      enabled: true
-      sudo: false
-      mode: "NORMAL"
-      update_site_url: 'http://updates.jenkins-ci.org/experimental/update-center.json'
-      views:
-      - name: "Build"
-        regex: "build-.*"
-      admin:
-        email: autobuild@domain.com
-      http:
-        network: any
-        port: 8080
-        protocol: http
-      plugins:
-      - name: extended-choice-parameter
-      - name: rebuild
-      - name: test-stability
-      - name: build-blocker-plugin
-      - name: heavy-job
-      - name: workflow-aggregator
-      - name: git
-      - name: metadata
-      - name: envinject
-      - name: ansicolor
-      - name: greenballs
-      - name: gitlab-hook
-      - name: copyartifact
-      - name: ws-cleanup
-      user:
-        admin:
-          api_token: ${_param:jenkins_admin_token}
-          password: ${_param:jenkins_admin_password}
-          password_hash: ${_param:jenkins_admin_password_hash}
-          email: root@domain.com
diff --git a/jenkins/slave/debian.yml b/jenkins/slave/debian.yml
new file mode 100644
index 0000000..af3c719
--- /dev/null
+++ b/jenkins/slave/debian.yml
@@ -0,0 +1,8 @@
+classes:
+  - system.jenkins.slave
+parameters:
+  linux:
+    system:
+      package:
+        devscripts:
+          version: latest
diff --git a/jenkins/slave/docker.yml b/jenkins/slave/docker.yml
new file mode 100644
index 0000000..b134225
--- /dev/null
+++ b/jenkins/slave/docker.yml
@@ -0,0 +1,9 @@
+classes:
+  - system.jenkins.slave
+parameters:
+  linux:
+    system:
+      user:
+        jenkins:
+          groups:
+            - docker
diff --git a/jenkins/slave/init.yml b/jenkins/slave/init.yml
new file mode 100644
index 0000000..c445c14
--- /dev/null
+++ b/jenkins/slave/init.yml
@@ -0,0 +1,37 @@
+applications:
+  - jenkins
+classes:
+  - service.java.environment
+parameters:
+  _param:
+    java_environment_version: "8"
+    java_environment_platform: openjdk
+    jenkins_slave_user: none
+    jenkins_slave_password: none
+    jenkins_master_host: ${_param:control_vip_address}
+    jenkins_master_port: 8081
+    jenkins_master_protocol: http
+  java:
+    environment:
+      headless: true
+  jenkins:
+    slave:
+      enabled: true
+      pkgs: false
+      sudo: false
+      scripts: []
+      master:
+        host: ${_param:jenkins_master_host}
+        port: ${_param:jenkins_master_port}
+        protocol: ${_param:jenkins_master_protocol}
+      user:
+        name: ${_param:jenkins_slave_user}
+        password: ${_param:jenkins_slave_password}
+  linux:
+    system:
+      user:
+        jenkins:
+          enabled: true
+          name: jenkins
+          home: /var/lib/jenkins
+          sudo: false
diff --git a/jenkins/slave/libvirt.yml b/jenkins/slave/libvirt.yml
new file mode 100644
index 0000000..e40b841
--- /dev/null
+++ b/jenkins/slave/libvirt.yml
@@ -0,0 +1,25 @@
+classes:
+  - system.jenkins.slave
+  - service.iptables.server
+parameters:
+  linux:
+    system:
+      user:
+        jenkins:
+          groups:
+            - kvm
+            - libvirtd
+      package:
+        qemu:
+          version: latest
+        libvirt-bin:
+          version: latest
+  # Ensure FORWARD chain to be ACCEPT to avoid issue when running with docker
+  # 1.13 and newer that sets chain to DROP, see:
+  #   https://github.com/docker/docker/pull/28257
+  iptables:
+    service:
+      enabled: true
+      chain:
+        FORWARD:
+          policy: ACCEPT
diff --git a/jenkins/slave/single.yml b/jenkins/slave/single.yml
deleted file mode 100644
index 14540a5..0000000
--- a/jenkins/slave/single.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-classes:
-- service.jenkins.slave.single
-- service.java.environment
-- service.git.client
-parameters:
-  _param:
-    java_environment_version: "8"
-    java_environment_platform: openjdk
-  linux:
-    system:
-      package:
-        python-dev:
-          version: latest
-        build-essential:
-          version: latest
-      user:
-        jenkins:
-          enabled: true
-          name: jenkins
-          home: /var/lib/jenkins
-          sudo: false
-  java:
-    environment:
-      headless: true
-  jenkins:
-    slave:
-      enabled: true
-      pkgs: false
-      sudo: false
-      scripts: []
-      master:
-        host: ${_param:jenkins_slave_master}
-        port: 8080
-        protocol: http
-      user:
-        name: admin
-        password: ${_param:jenkins_admin_password}
diff --git a/keepalived/cluster/instance/cicd_control_vip.yml b/keepalived/cluster/instance/cicd_control_vip.yml
new file mode 100644
index 0000000..ab7f413
--- /dev/null
+++ b/keepalived/cluster/instance/cicd_control_vip.yml
@@ -0,0 +1,15 @@
+applications:
+  - keepalived
+classes:
+  - service.keepalived.support
+parameters:
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        cicd_control_vip:
+          address: ${_param:cluster_vip_address}
+          password: ${_param:keepalived_vip_password}
+          interface: ${_param:keepalived_vip_interface}
+          virtual_router_id: ${_param:keepalived_vip_virtual_router_id}
+          priority: ${_param:keepalived_vip_priority}
diff --git a/keepalived/cluster/instance/openstack_telemetry_vip.yml b/keepalived/cluster/instance/openstack_telemetry_vip.yml
new file mode 100644
index 0000000..91155e7
--- /dev/null
+++ b/keepalived/cluster/instance/openstack_telemetry_vip.yml
@@ -0,0 +1,19 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  _param:
+    keepalived_openstack_telemetry_vip_address: ${_param:cluster_vip_address}
+    keepalived_openstack_telemetry_vip_password: password
+    keepalived_openstack_telemetry_vip_interface: eth1
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        openstack_telemetry_vip:
+          address: ${_param:keepalived_openstack_telemetry_vip_address}
+          password: ${_param:keepalived_openstack_telemetry_vip_password}
+          interface: ${_param:keepalived_openstack_telemetry_vip_interface}
+          virtual_router_id: 230
+          priority: 101
diff --git a/keepalived/cluster/instance/openstack_web_public_vip.yml b/keepalived/cluster/instance/openstack_web_public_vip.yml
new file mode 100644
index 0000000..8279b65
--- /dev/null
+++ b/keepalived/cluster/instance/openstack_web_public_vip.yml
@@ -0,0 +1,19 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  _param:
+    keepalived_openstack_web_public_vip_address: ${_param:cluster_vip_address}
+    keepalived_openstack_web_public_vip_password: password
+    keepalived_openstack_web_public_vip_interface: eth1
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        openstack_web_public_vip:
+          address: ${_param:keepalived_openstack_web_public_vip_address}
+          password: ${_param:keepalived_openstack_web_public_vip_password}
+          interface: ${_param:keepalived_openstack_web_public_vip_interface}
+          virtual_router_id: 132
+          priority: ${_param:keepalived_vip_priority}
diff --git a/keepalived/cluster/instance/prometheus_server_vip.yml b/keepalived/cluster/instance/prometheus_server_vip.yml
new file mode 100644
index 0000000..7bde702
--- /dev/null
+++ b/keepalived/cluster/instance/prometheus_server_vip.yml
@@ -0,0 +1,18 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  _param:
+    keepalived_vip_priority: 101
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        prometheus_server_vip:
+          address: ${_param:keepalived_prometheus_vip_address}
+          password: ${_param:keepalived_prometheus_vip_password}
+          interface: ${_param:keepalived_prometheus_vip_interface}
+          virtual_router_id: 105
+          priority: ${_param:keepalived_vip_priority}
+
diff --git a/keepalived/cluster/instance/stacklight_log_vip.yml b/keepalived/cluster/instance/stacklight_log_vip.yml
new file mode 100644
index 0000000..caa6754
--- /dev/null
+++ b/keepalived/cluster/instance/stacklight_log_vip.yml
@@ -0,0 +1,15 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        stacklight_log_vip:
+          address: ${_param:keepalived_stacklight_log_vip_address}
+          password: ${_param:keepalived_stacklight_log_vip_password}
+          interface: ${_param:keepalived_stacklight_log_vip_interface}
+          virtual_router_id: 110
+          priority: 101
diff --git a/keepalived/cluster/instance/stacklight_telemetry_vip.yml b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
new file mode 100644
index 0000000..e7d31a5
--- /dev/null
+++ b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
@@ -0,0 +1,15 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        stacklight_telemetry_vip:
+          address: ${_param:keepalived_stacklight_telemetry_vip_address}
+          password: ${_param:keepalived_stacklight_telemetry_vip_password}
+          interface: ${_param:keepalived_stacklight_telemetry_vip_interface}
+          virtual_router_id: 120
+          priority: 101
diff --git a/keystone/client/service/aodh.yml b/keystone/client/service/aodh.yml
index c91a354..51de0ca 100644
--- a/keystone/client/service/aodh.yml
+++ b/keystone/client/service/aodh.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Alarming Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:aodh_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8042
                 public_path: '/'
                 internal_address: ${_param:aodh_service_host}
@@ -24,4 +27,4 @@
                 internal_path: '/'
                 admin_address: ${_param:aodh_service_host}
                 admin_port: 8042
-                admin_path: '/'
\ No newline at end of file
+                admin_path: '/'
diff --git a/keystone/client/service/billometer.yml b/keystone/client/service/billometer.yml
index 86a153f..3728aa5 100644
--- a/keystone/client/service/billometer.yml
+++ b/keystone/client/service/billometer.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Billing Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:billometer_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9753
                 public_path: '/v1'
                 internal_address: ${_param:billometer_service_host}
diff --git a/keystone/client/service/ceilometer.yml b/keystone/client/service/ceilometer.yml
index c40383a..4c59f80 100644
--- a/keystone/client/service/ceilometer.yml
+++ b/keystone/client/service/ceilometer.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Telemetry Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:ceilometer_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8777
                 public_path: '/'
                 internal_address: ${_param:ceilometer_service_host}
diff --git a/keystone/client/service/cinder.yml b/keystone/client/service/cinder.yml
index 329c7ac..335985f 100644
--- a/keystone/client/service/cinder.yml
+++ b/keystone/client/service/cinder.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Volume Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cinder_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
                 public_path: '/v1/$(tenant_id)s'
                 internal_address: ${_param:cinder_service_host}
diff --git a/keystone/client/service/cinder2.yml b/keystone/client/service/cinder2.yml
index a24f06a..cc150ff 100644
--- a/keystone/client/service/cinder2.yml
+++ b/keystone/client/service/cinder2.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Volume Service v2
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cinder_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
                 public_path: '/v2/$(tenant_id)s'
                 internal_address: ${_param:cinder_service_host}
diff --git a/keystone/client/service/cinder3.yml b/keystone/client/service/cinder3.yml
new file mode 100644
index 0000000..caf24c2
--- /dev/null
+++ b/keystone/client/service/cinder3.yml
@@ -0,0 +1,31 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                cinder:
+                  is_admin: true
+                  password: ${_param:keystone_cinder_password}
+                  email: ${_param:admin_email}
+          service:
+            cinderv3:
+              type: volumev3
+              description: OpenStack Volume Service v3
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 8776
+                public_path: '/v3/$(tenant_id)s'
+                internal_address: ${_param:cinder_service_host}
+                internal_port: 8776
+                internal_path: '/v3/$(tenant_id)s'
+                admin_address: ${_param:cinder_service_host}
+                admin_port: 8776
+                admin_path: '/v3/$(tenant_id)s'
+
diff --git a/keystone/client/service/designate.yml b/keystone/client/service/designate.yml
new file mode 100644
index 0000000..4018712
--- /dev/null
+++ b/keystone/client/service/designate.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                designate:
+                  is_admin: true
+                  password: ${_param:keystone_designate_password}
+                  email: ${_param:admin_email}
+          service:
+            designate:
+                type: dns
+                description: OpenStack DNS service
+                endpoints:
+                  - region: ${_param:openstack_region}
+                    public_address: ${_param:cluster_public_host}
+                    public_protocol: ${_param:cluster_public_protocol}
+                    public_port: 9001
+                    public_path: '/'
+                    internal_address: ${_param:designate_service_host}
+                    internal_port: 9001
+                    internal_path: '/'
+                    admin_address: ${_param:designate_service_host}
+                    admin_port: 9001
+                    admin_path: '/'
diff --git a/keystone/client/service/glance.yml b/keystone/client/service/glance.yml
index 33d90c7..365917b 100644
--- a/keystone/client/service/glance.yml
+++ b/keystone/client/service/glance.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Image Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:glance_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9292
                 public_path: ''
                 internal_address: ${_param:glance_service_host}
diff --git a/keystone/client/service/glare.yml b/keystone/client/service/glare.yml
new file mode 100644
index 0000000..78c7d1f
--- /dev/null
+++ b/keystone/client/service/glare.yml
@@ -0,0 +1,31 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                glance:
+                  is_admin: true
+                  password: ${_param:keystone_glance_password}
+                  email: ${_param:admin_email}
+          service:
+            glare:
+              type: artifact
+              description: OpenStack Image Artifact Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 9494
+                public_path: ''
+                internal_address: ${_param:glance_service_host}
+                internal_port: 9494
+                internal_path: ''
+                admin_address: ${_param:glance_service_host}
+                admin_port: 9494
+                admin_path: ''
+
diff --git a/keystone/client/service/heat-cfn.yml b/keystone/client/service/heat-cfn.yml
index 3bb5449..343ff46 100644
--- a/keystone/client/service/heat-cfn.yml
+++ b/keystone/client/service/heat-cfn.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack CloudFormation Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:heat_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8000
                 public_path: '/v1'
                 internal_address: ${_param:heat_service_host}
diff --git a/keystone/client/service/heat.yml b/keystone/client/service/heat.yml
index 233cc75..692ceee 100644
--- a/keystone/client/service/heat.yml
+++ b/keystone/client/service/heat.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -19,7 +21,8 @@
               description: OpenStack Orchestration Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:heat_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8004
                 public_path: '/v1/%(tenant_id)s'
                 internal_address: ${_param:heat_service_host}
diff --git a/keystone/client/service/keystone.yml b/keystone/client/service/keystone.yml
index 914777c..af3acfc 100644
--- a/keystone/client/service/keystone.yml
+++ b/keystone/client/service/keystone.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack Identity Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:keystone_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 5000
                 public_path: '/v2.0'
                 internal_address: ${_param:keystone_service_host}
diff --git a/keystone/client/service/keystone3.yml b/keystone/client/service/keystone3.yml
index 9aaedc2..9dd9eef 100644
--- a/keystone/client/service/keystone3.yml
+++ b/keystone/client/service/keystone3.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack Identity Service v3
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:keystone_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 5000
                 public_path: '/v3'
                 internal_address: ${_param:keystone_service_host}
diff --git a/keystone/client/service/murano.yml b/keystone/client/service/murano.yml
new file mode 100644
index 0000000..5e65038
--- /dev/null
+++ b/keystone/client/service/murano.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                murano:
+                  is_admin: true
+                  password: ${_param:keystone_murano_password}
+                  email: ${_param:admin_email}
+          service:
+            murano:
+              type: application-catalog
+              description: Application Catalog for OpenStack
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8082
+                  public_path: ''
+                  internal_address: ${_param:murano_service_host}
+                  internal_port: 8082
+                  internal_path: ''
+                  admin_address: ${_param:murano_service_host}
+                  admin_port: 8082
+                  admin_path: ''
diff --git a/keystone/client/service/neutron.yml b/keystone/client/service/neutron.yml
index 48ca372..12fe9fe 100644
--- a/keystone/client/service/neutron.yml
+++ b/keystone/client/service/neutron.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Networking Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:neutron_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9696
                 public_path: '/'
                 internal_address: ${_param:neutron_service_host}
diff --git a/keystone/client/service/nova-ec2.yml b/keystone/client/service/nova-ec2.yml
index b729061..586701c 100644
--- a/keystone/client/service/nova-ec2.yml
+++ b/keystone/client/service/nova-ec2.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack EC2 Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8773
                 public_path: '/services/Cloud'
                 internal_address: ${_param:nova_service_host}
diff --git a/keystone/client/service/nova-placement.yml b/keystone/client/service/nova-placement.yml
new file mode 100644
index 0000000..61b5455
--- /dev/null
+++ b/keystone/client/service/nova-placement.yml
@@ -0,0 +1,23 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          service:
+            placement:
+              type: placement
+              description: OpenStack Placement API
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: '8778'
+                public_path: ''
+                internal_address: ${_param:nova_service_host}
+                internal_port: '8778'
+                internal_path: ''
+                admin_address: ${_param:nova_service_host}
+                admin_port: '8778'
+                admin_path: ''
diff --git a/keystone/client/service/nova.yml b/keystone/client/service/nova.yml
index 1497d69..ed703d0 100644
--- a/keystone/client/service/nova.yml
+++ b/keystone/client/service/nova.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Compute Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
                 public_path: '/v2/$(tenant_id)s'
                 internal_address: ${_param:nova_service_host}
diff --git a/keystone/client/service/nova21.yml b/keystone/client/service/nova21.yml
index e09a9df..48767de 100644
--- a/keystone/client/service/nova21.yml
+++ b/keystone/client/service/nova21.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Compute Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
                 public_path: '/v2/$(tenant_id)s'
                 internal_address: ${_param:nova_service_host}
@@ -30,7 +33,8 @@
               description: OpenStack Compute Service v2.1
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
                 public_path: '/v2.1'
                 internal_address: ${_param:nova_service_host}
diff --git a/keystone/client/service/radosgw-s3.yml b/keystone/client/service/radosgw-s3.yml
new file mode 100644
index 0000000..6b0b764
--- /dev/null
+++ b/keystone/client/service/radosgw-s3.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+          service:
+            radosgw-s3:
+              type: s3
+              description: S3 Service (radosgw)
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8081
+                  public_path: '/' # /$(tenant_id)s
+                  internal_address: ${_param:radosgw_service_host}
+                  internal_port: 8081
+                  internal_path: '/'
+                  admin_address: ${_param:radosgw_service_host}
+                  admin_port: 8081
+                  admin_path: '/'
diff --git a/keystone/client/service/radosgw-swift.yml b/keystone/client/service/radosgw-swift.yml
new file mode 100644
index 0000000..52c911c
--- /dev/null
+++ b/keystone/client/service/radosgw-swift.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+          service:
+            radosgw-swift:
+              type: object-store
+              description: Swift Service (radosgw)
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8081
+                  public_path: '/swift/v1' # /$(tenant_id)s
+                  internal_address: ${_param:radosgw_service_host}
+                  internal_port: 8081
+                  internal_path: '/swift/v1'
+                  admin_address: ${_param:radosgw_service_host}
+                  admin_port: 8081
+                  admin_path: '/swift/v1'
diff --git a/keystone/client/service/sahara.yml b/keystone/client/service/sahara.yml
new file mode 100644
index 0000000..d727049
--- /dev/null
+++ b/keystone/client/service/sahara.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                sahara:
+                  is_admin: true
+                  password: ${_param:keystone_sahara_password}
+                  email: ${_param:admin_email}
+          service:
+            swift:
+              type: data-processing
+              description: Sahara Data Processing
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8386
+                  public_path: '/v1.1/%(tenant_id)s'
+                  internal_address: ${_param:sahara_service_host}
+                  internal_port: 8386
+                  internal_path: '/v1.1/%(tenant_id)s'
+                  admin_address: ${_param:sahara_service_host}
+                  admin_port: 8386
+                  admin_path: '/v1.1/%(tenant_id)s'
diff --git a/keystone/client/service/swift-s3.yml b/keystone/client/service/swift-s3.yml
new file mode 100644
index 0000000..b909ceb
--- /dev/null
+++ b/keystone/client/service/swift-s3.yml
@@ -0,0 +1,31 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+          service:
+            swift-s3:
+              type: object-store
+              description: S3 Service (swift)
+              region: ${_param:keystone_region}
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8080
+                  public_path: '/v1/AUTH_%(tenant_id)s'
+                  internal_address: ${_param:swift_service_host}
+                  internal_port: 8080
+                  internal_path: '/v1/AUTH_%(tenant_id)s'
+                  admin_address: ${_param:swift_service_host}
+                  admin_port: 8080
+                  admin_path: '/'
diff --git a/keystone/client/service/swift.yml b/keystone/client/service/swift.yml
new file mode 100644
index 0000000..0fcb555
--- /dev/null
+++ b/keystone/client/service/swift.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+          service:
+            swift:
+              type: object-store
+              description: Swift Service
+              endpoints:
+                - region: ${_param:openstack_region}
+                  public_address: ${_param:cluster_public_host}
+                  public_protocol: ${_param:cluster_public_protocol}
+                  public_port: 8080
+                  public_path: '/v1/AUTH_%(tenant_id)s'
+                  internal_address: ${_param:swift_service_host}
+                  internal_port: 8080
+                  internal_path: '/v1/AUTH_%(tenant_id)s'
+                  admin_address: ${_param:swift_service_host}
+                  admin_port: 8080
+                  admin_path: '/'
diff --git a/keystone/server/storage/glusterfs.yml b/keystone/server/storage/glusterfs.yml
deleted file mode 100644
index 54a4197..0000000
--- a/keystone/server/storage/glusterfs.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-classes:
-- service.glusterfs.server
-- service.glusterfs.client
-parameters:
-  glusterfs:
-    server:
-      peers:
-      - ${_param:cluster_node01_address}
-      - ${_param:cluster_node02_address}
-      - ${_param:cluster_node03_address}
-      volumes:
-        keystone-keys:
-          storage: /srv/glusterfs/keystone-keys
-          replica: 3
-          bricks:
-            - ${_param:cluster_node01_address}:/srv/glusterfs/keystone-keys
-            - ${_param:cluster_node02_address}:/srv/glusterfs/keystone-keys
-            - ${_param:cluster_node03_address}:/srv/glusterfs/keystone-keys
-          options:
-            cluster.readdir-optimize: On
-            nfs.disable: On
-            network.remote-dio: On
-            diagnostics.client-log-level: WARNING
-            diagnostics.brick-log-level: WARNING
-    client:
-      volumes:
-        keystone-keys:
-          path: /var/lib/keystone/fernet-keys
-          server: ${_param:glusterfs_service_host}
-          user: keystone
-          group: keystone
-  keystone:
-    server:
-      tokens:
-        location: /var/lib/keystone/fernet-keys
diff --git a/kibana/client/single.yml b/kibana/client/single.yml
index d2322c6..8342806 100644
--- a/kibana/client/single.yml
+++ b/kibana/client/single.yml
@@ -5,5 +5,5 @@
     client:
       enabled: true
       server:
-        host: ${_param:stacklight_monitor_address}
+        host: ${_param:stacklight_log_address}
         port: 9200
diff --git a/kubernetes/master/single.yml b/kubernetes/master/single.yml
new file mode 100644
index 0000000..5f0dfdc
--- /dev/null
+++ b/kubernetes/master/single.yml
@@ -0,0 +1,8 @@
+classes:
+- service.kubernetes.master.single
+parameters:
+  kubernetes:
+    master:
+      container: false
+      network:
+        engine: calico
\ No newline at end of file
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
new file mode 100644
index 0000000..68e3844
--- /dev/null
+++ b/kubernetes/pool/single.yml
@@ -0,0 +1,9 @@
+classes:
+- service.kubernetes.pool.single
+- service.docker.host
+parameters:
+  kubernetes:
+    pool:
+      container: false
+      network:
+        engine: calico
\ No newline at end of file
diff --git a/linux/system/haveged.yml b/linux/system/haveged.yml
new file mode 100644
index 0000000..5c0be15
--- /dev/null
+++ b/linux/system/haveged.yml
@@ -0,0 +1,5 @@
+parameters:
+  linux:
+    system:
+      haveged:
+        enabled: true
diff --git a/linux/system/motd/dynamic.yml b/linux/system/motd/dynamic.yml
new file mode 100644
index 0000000..9589e8e
--- /dev/null
+++ b/linux/system/motd/dynamic.yml
@@ -0,0 +1,19 @@
+parameters:
+  linux:
+    system:
+      motd:
+        - warning: |
+            #!/bin/sh
+            printf "WARNING: This is private network.\n"
+            printf "  Unauthorized access is strictly prohibited.\n"
+            printf "\n"
+        - info: |
+            #!/bin/sh
+            printf -- "------------------------------------------------------\n"
+            printf " Hostname     |  $(hostname)\n"
+            printf " Domain       |  $(hostname -d)\n"
+            printf " System       |  %s\n" "$(lsb_release -s -d)"
+            printf " Kernel       |  %s\n" "$(uname -r)"
+            printf " Uptime       |  %s\n" "$(uptime -p)"
+            printf " Load Average |  %s\n" "$(cat /proc/loadavg | awk '{print $1", "$2", "$3}')"
+            printf -- "------------------------------------------------------\n"
diff --git a/linux/system/motd/static.yml b/linux/system/motd/static.yml
new file mode 100644
index 0000000..774abc6
--- /dev/null
+++ b/linux/system/motd/static.yml
@@ -0,0 +1,12 @@
+parameters:
+  linux:
+    system:
+      motd: |
+        WARNING: This is private network
+        Unauthorized access is strictly prohibited
+
+        ------------------------------------------------------
+         Hostname     |  ${linux:system:name}
+         Domain       |  ${linux:system:domain}
+        ------------------------------------------------------
+        
diff --git a/linux/system/prompt/init.yml b/linux/system/prompt/init.yml
new file mode 100644
index 0000000..2f0120d
--- /dev/null
+++ b/linux/system/prompt/init.yml
@@ -0,0 +1,7 @@
+parameters:
+  linux:
+    system:
+      prompt:
+        default: \\n\\[\\033[0;37m\\]\\D{%y/%m/%d %H:%M:%S} ${linux:system:name}.${linux:system:domain}\\[\\e[0m\\]\\n\\[\\e[1;39m\\][\\u@\\h:\\w]\\[\\e[0m\\]
+      bash:
+        preserve_history: true
diff --git a/linux/system/prompt/production.yml b/linux/system/prompt/production.yml
new file mode 100644
index 0000000..f878460
--- /dev/null
+++ b/linux/system/prompt/production.yml
@@ -0,0 +1,7 @@
+classes:
+  - system.linux.system.prompt
+parameters:
+  linux:
+    system:
+      prompt:
+        default: \\n\\[\\033[0;37m\\]\\D{%y/%m/%d %H:%M:%S} ${linux:system:name}.${linux:system:domain}\\[\\e[0m\\]\\n\\[\\e[1;31m\\][\\u@\\h:\\w]\\[\\e[0m\\]
diff --git a/linux/system/repo/cassandra.yml b/linux/system/repo/cassandra.yml
new file mode 100644
index 0000000..74fb021
--- /dev/null
+++ b/linux/system/repo/cassandra.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    linux_repo_cassandra_component: 21x
+  linux:
+    system:
+      repo:
+        cassandra:
+          source: "deb http://www.apache.org/dist/cassandra/debian/ ${_param:linux_repo_cassandra_component} main"
+          architectures: amd64
+          key_url: "https://www.apache.org/dist/cassandra/KEYS"
diff --git a/linux/system/repo/elasticsearch.yml b/linux/system/repo/elasticsearch.yml
index 6758f6d..60f6fd0 100644
--- a/linux/system/repo/elasticsearch.yml
+++ b/linux/system/repo/elasticsearch.yml
@@ -2,7 +2,7 @@
   linux:
     system:
       repo:
-        tcpcloud_elasticsearch:
-          source: "deb [arch=amd64] http://apt.tcpcloud.eu/nightly/ xenial elastic"
+        elasticsearch:
+          source: "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main"
           architectures: amd64
-          key_url: "http://apt.tcpcloud.eu/public.gpg"
\ No newline at end of file
+          key_url: "https://packages.elastic.co/GPG-KEY-elasticsearch"
\ No newline at end of file
diff --git a/linux/system/repo/glusterfs.yml b/linux/system/repo/glusterfs.yml
new file mode 100644
index 0000000..3dfa9f9
--- /dev/null
+++ b/linux/system/repo/glusterfs.yml
@@ -0,0 +1,9 @@
+parameters:
+  linux:
+    system:
+      repo:
+        glusterfs-ppa:
+          source: "deb http://ppa.launchpad.net/gluster/glusterfs-3.7/ubuntu ${_param:linux_system_codename} main"
+          architectures: amd64
+          key_id: 3FE869A9
+          key_server: keyserver.ubuntu.com
\ No newline at end of file
diff --git a/linux/system/repo/mcp/contrail.yml b/linux/system/repo/mcp/contrail.yml
new file mode 100644
index 0000000..c0ecc92
--- /dev/null
+++ b/linux/system/repo/mcp/contrail.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    linux_repo_contrail_component: oc311
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mcp_opencontrail:
+          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:apt_mk_version} ${_param:openstack_version} ${_param:linux_repo_contrail_component} extra"
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/extra.yml b/linux/system/repo/mcp/extra.yml
new file mode 100644
index 0000000..00de9ea
--- /dev/null
+++ b/linux/system/repo/mcp/extra.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mcp_extra:
+          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:apt_mk_version} extra"
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/openstack.yml b/linux/system/repo/mcp/openstack.yml
new file mode 100644
index 0000000..9f26821
--- /dev/null
+++ b/linux/system/repo/mcp/openstack.yml
@@ -0,0 +1,54 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mirantis_openstack:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version} main"
+          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}'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_hotfix:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-hotfix main"
+          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}-hotfix'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_security:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-security main"
+          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}-security'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_updates:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-updates main"
+          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'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_holdback:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/${_param:openstack_version}/${_param:linux_system_codename} ${_param:openstack_version}-holdback main"
+          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}-holdback'
+            priority: 1100
+            package: '*'
+        mk_openstack:
+          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:apt_mk_version} ${_param:openstack_version}"
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mcp/salt.yml b/linux/system/repo/mcp/salt.yml
new file mode 100644
index 0000000..d40cc5f
--- /dev/null
+++ b/linux/system/repo/mcp/salt.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mcp_salt:
+          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ ${_param:apt_mk_version} salt"
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+          clean_file: true
+          pin:
+          - pin: 'release a=${_param:apt_mk_version}'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo/mos10.yml b/linux/system/repo/mos10.yml
new file mode 100644
index 0000000..63f6a9d
--- /dev/null
+++ b/linux/system/repo/mos10.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      repo:
+        mirantis_openstack:
+          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/ mos10.0 main restricted"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/archive-mos10.0.key"
+        mirantis_openstack_hotfix:
+          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/ mos10.0-hotfix main restricted"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/archive-mos10.0.key"
+        mirantis_openstack_security:
+          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/ mos10.0-security main restricted"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/archive-mos10.0.key"
+        mirantis_openstack_updates:
+          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/ mos10.0-updates main restricted"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/10.0/archive-mos10.0.key"
\ No newline at end of file
diff --git a/linux/system/repo/mos9.yml b/linux/system/repo/mos9.yml
index 9bc7c8c..3a3abe1 100644
--- a/linux/system/repo/mos9.yml
+++ b/linux/system/repo/mos9.yml
@@ -6,15 +6,27 @@
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0 main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+#          - pin: 'release a=mos9.0'
+#            priority: 1100
+#            package: '*'
         mirantis_openstack_hotfix:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0-hotfix main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+#          - pin: 'release a=mos9.0-hotfix'
+#            priority: 1100
+#            package: '*'
         mirantis_openstack_security:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0-security main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+#          - pin: 'release a=mos9.0-security'
+#            priority: 1100
+#            package: '*'
         mirantis_openstack_updates:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0-updates main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+#          - pin: 'release a=mos9.0-updates'
+#            priority: 1100
+#            package: '*'
diff --git a/linux/system/repo/mos92.yml b/linux/system/repo/mos92.yml
index 999bfde..d19edc2 100644
--- a/linux/system/repo/mos92.yml
+++ b/linux/system/repo/mos92.yml
@@ -6,18 +6,10 @@
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0 main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
-        mirantis_openstack_holdback:
-          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-holdback main restricted"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
         mirantis_openstack_hotfix:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-hotfix main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
-        mirantis_openstack_proposed:
-          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-proposed main restricted"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
         mirantis_openstack_security:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-security main restricted"
           architectures: amd64
diff --git a/linux/system/repo/mos9_galera.yml b/linux/system/repo/mos9_galera.yml
new file mode 100644
index 0000000..f006c5d
--- /dev/null
+++ b/linux/system/repo/mos9_galera.yml
@@ -0,0 +1,48 @@
+parameters:
+  linux:
+    system:
+      package:
+        python-msgpack:
+          version: latest
+        mysql-wsrep-common-5.6:
+          version: 5.6.33-0~u14.04+mos1
+        python-mysqldb:
+          version: 1.2.3-2ubuntu1
+      repo:
+        mirantis_9_0_mos_main_repo:
+          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0 main restricted"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+          pin:
+            # Galera packages should be picked from mos9.0-main
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-server-wsrep-5.6/"
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-client-5.6/"
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-server-wsrep-core-5.6/"
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-client-core-5.6/"
+            # Set lowest priority for remain packages from this repo
+            # as we want use only galera from here
+            - pin: "release a=mos9.0"
+              priority: 700
+              package: "*"
+        mirantis_9_0_mos_updated_repo:
+          source: "deb [arch=amd64] http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0 mos9.0-updates restricted main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+          pin:
+            # Galera packages should be picked from mos9.0-main
+            - pin: "release a=mos9.0-updates"
+              priority: 800
+              package: "/mysql-wsrep-common-5.6/"
+            # Set lowest priority for remain packages from this repo
+            # as we want use only galera from here
+            - pin: "release a=mos9.0-updates"
+              priority: 700
+              package: "*"
diff --git a/linux/system/repo/saltstack/trusty.yml b/linux/system/repo/saltstack/trusty.yml
new file mode 100644
index 0000000..68ce215
--- /dev/null
+++ b/linux/system/repo/saltstack/trusty.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    salt_version: 2016.3
+  linux:
+    system:
+      repo:
+        salt:
+          source: "deb http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version} trusty main"
+          architectures: amd64
+          key_url: "http://repo.saltstack.com/apt/ubuntu/14.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
diff --git a/linux/system/repo/saltstack/xenial.yml b/linux/system/repo/saltstack/xenial.yml
new file mode 100644
index 0000000..aca462a
--- /dev/null
+++ b/linux/system/repo/saltstack/xenial.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    salt_version: 2016.3
+  linux:
+    system:
+      repo:
+        salt:
+          source: "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version} xenial main"
+          architectures: amd64
+          key_url: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
\ No newline at end of file
diff --git a/linux/system/repo/saltstack_2016_3_trusty.yml b/linux/system/repo/saltstack_2016_3_trusty.yml
index 19e4814..c7e03d7 100644
--- a/linux/system/repo/saltstack_2016_3_trusty.yml
+++ b/linux/system/repo/saltstack_2016_3_trusty.yml
@@ -1,3 +1,4 @@
+##Obsolete, please use repo/saltstack/trusty
 parameters:
   linux:
     system:
diff --git a/linux/system/repo/saltstack_2016_3_xenial.yml b/linux/system/repo/saltstack_2016_3_xenial.yml
index 6fed4c5..413294f 100644
--- a/linux/system/repo/saltstack_2016_3_xenial.yml
+++ b/linux/system/repo/saltstack_2016_3_xenial.yml
@@ -1,3 +1,4 @@
+##Obsolete, please use repo/saltstack/xenial
 parameters:
   linux:
     system:
diff --git a/linux/system/repo/sensu.yml b/linux/system/repo/sensu.yml
new file mode 100644
index 0000000..1ea3687
--- /dev/null
+++ b/linux/system/repo/sensu.yml
@@ -0,0 +1,8 @@
+parameters:
+  linux:
+    system:
+      repo:
+        sensu:
+          source: "deb https://sensu.global.ssl.fastly.net/apt ${_param:linux_system_codename} main"
+          architectures: amd64
+          key_url: "https://sensu.global.ssl.fastly.net/apt/pubkey.gpg"
\ No newline at end of file
diff --git a/linux/system/repo/ubuntu.yml b/linux/system/repo/ubuntu.yml
index b4137bd..d36bcc1 100644
--- a/linux/system/repo/ubuntu.yml
+++ b/linux/system/repo/ubuntu.yml
@@ -3,19 +3,19 @@
     system:
       repo:
         ubuntu:
-          source: "deb http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename} main restricted universe"
+          source: "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename} main restricted universe"
           architectures: amd64
           default: true
           key_id: 437D05B5
           key_server: keyserver.ubuntu.com
         ubuntu_updates:
-          source: "deb http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-updates main restricted universe"
+          source: "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-updates main restricted universe"
           architectures: amd64
           default: true
           key_id: 437D05B5
           key_server: keyserver.ubuntu.com
         ubuntu_security:
-          source: "deb http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-security main restricted universe"
+          source: "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${_param:linux_system_codename}-security main restricted universe"
           architectures: amd64
           default: true
           key_id: 437D05B5
diff --git a/linux/system/repo_local/contrail.yml b/linux/system/repo_local/contrail.yml
index c78e68c..902c4d5 100644
--- a/linux/system/repo_local/contrail.yml
+++ b/linux/system/repo_local/contrail.yml
@@ -8,6 +8,6 @@
           refresh_db: ${_param:linux_repo_refresh_db}
           source: "deb [arch=amd64] http://${_param:local_repo_url}/contrail trusty main"
           pin:
-          - pin: 'release l=Local Contrail APT repository'
+          - pin: 'release l=contrail ubuntu-trusty'
             priority: ${_param:contrail_repo_pin_priority}
             package: '*'
diff --git a/linux/system/repo_local/glusterfs.yml b/linux/system/repo_local/glusterfs.yml
new file mode 100644
index 0000000..cb298c4
--- /dev/null
+++ b/linux/system/repo_local/glusterfs.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        glusterfs:
+          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} glusterfs"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/hotfix.yml b/linux/system/repo_local/hotfix.yml
new file mode 100644
index 0000000..cbce62f
--- /dev/null
+++ b/linux/system/repo_local/hotfix.yml
@@ -0,0 +1,14 @@
+parameters:
+  linux:
+    system:
+      repo:
+        local-hotfix:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/local-hotfix/ ${_param:linux_distrib_codename} main"
+          architectures: amd64
+          key_url: "http://${_param:public_key_host}/public.gpg"
+          pin:
+          - pin: 'release l=local-hotfix trusty'
+            priority: 1101
+            package: '*'
+
diff --git a/linux/system/repo_local/maas.yml b/linux/system/repo_local/maas.yml
new file mode 100644
index 0000000..ca65a79
--- /dev/null
+++ b/linux/system/repo_local/maas.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        maas:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/${_param:linux_system_codename}/ ${_param:apt_mk_version} maas"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
diff --git a/linux/system/repo_local/mcp/contrail.yml b/linux/system/repo_local/mcp/contrail.yml
new file mode 100644
index 0000000..89a7236
--- /dev/null
+++ b/linux/system/repo_local/mcp/contrail.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    linux_repo_contrail_component: oc311
+    contrail_repo_pin_priority: 200
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mcp_opencontrail:
+          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} ${_param:linux_repo_contrail_component}"
+          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
new file mode 100644
index 0000000..a0c54d6
--- /dev/null
+++ b/linux/system/repo_local/mcp/extra.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mcp_extra:
+          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} extra"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
diff --git a/linux/system/repo_local/mcp/openstack.yml b/linux/system/repo_local/mcp/openstack.yml
new file mode 100644
index 0000000..29329d1
--- /dev/null
+++ b/linux/system/repo_local/mcp/openstack.yml
@@ -0,0 +1,45 @@
+parameters:
+  linux:
+    system:
+      repo:
+        mirantis_openstack:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version} main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release a=${_param:openstack_version}'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_hotfix:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-hotfix main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release a=m${_param:openstack_version}-hotfix'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_security:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-security main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-security'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_updates:
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-updates main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-updates'
+            priority: 1100
+            package: '*'
+        mirantis_openstack_holdback:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/ubuntu-${_param:linux_system_codename}/ ${_param:openstack_version}-holdback main"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
+          pin:
+          - pin: 'release a=${_param:openstack_version}-holdback'
+            priority: 1100
+            package: '*'
diff --git a/linux/system/repo_local/mcp/salt.yml b/linux/system/repo_local/mcp/salt.yml
new file mode 100644
index 0000000..3abbf92
--- /dev/null
+++ b/linux/system/repo_local/mcp/salt.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    apt_mk_version: stable
+  linux:
+    system:
+      repo:
+        mcp_salt:
+          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} salt"
+          architectures: amd64
+          key_url: "http://${_param:local_repo_url}/public.gpg"
\ No newline at end of file
diff --git a/linux/system/repo_local/mos8.yml b/linux/system/repo_local/mos8.yml
index 29c6636..ddefdb7 100644
--- a/linux/system/repo_local/mos8.yml
+++ b/linux/system/repo_local/mos8.yml
@@ -7,7 +7,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0'
+          - pin: 'release a=mos8.0'
             priority: 1100
             package: '*'
         #mos8_openstack_hotfix:
@@ -15,7 +15,7 @@
         #  architectures: amd64
         #  key_url: "http://${_param:local_repo_url}/public.gpg"
         #  pin:
-        #  - pin: 'release s=mos8.0-hotfix'
+        #  - pin: 'release a=mos8.0-hotfix'
         #    priority: 1100
         #    package: '*'
         mos8_openstack_proposed:
@@ -23,7 +23,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-proposed'
+          - pin: 'release a=mos8.0-proposed'
             priority: 1100
             package: '*'
         #mos8_openstack_security:
@@ -31,7 +31,7 @@
         #  architectures: amd64
         #  key_url: "http://${_param:local_repo_url}/public.gpg"
         #  pin:
-        #  - pin: 'release s=mos8.0-security'
+        #  - pin: 'release a=mos8.0-security'
         #    priority: 1100
         #    package: '*'
         mos8_openstack_updates:
@@ -39,7 +39,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-updates'
+          - pin: 'release a=mos8.0-updates'
             priority: 1100
             package: '*'
         #mos8_murano:
@@ -48,6 +48,6 @@
         #  architectures: amd64
         #  key_url: "http://${_param:local_repo_url}/public.gpg"
         #  pin:
-        #  - pin: 'release s=mos8.0-proposed'
+        #  - pin: 'release a=mos8.0-proposed'
         #    priority: 1100
-        #    package: '*'
\ No newline at end of file
+        #    package: '*'
diff --git a/linux/system/repo_local/mos9.yml b/linux/system/repo_local/mos9.yml
index 6886185..5b6cdac 100644
--- a/linux/system/repo_local/mos9.yml
+++ b/linux/system/repo_local/mos9.yml
@@ -7,7 +7,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos9.0'
+          - pin: 'release a=mos9.0'
             priority: 1100
             package: '*'
         mos9_openstack_hotfix:
@@ -15,7 +15,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos9.0-hotfix'
+          - pin: 'release a=mos9.0-hotfix'
             priority: 1100
             package: '*'
         mos9_openstack_proposed:
@@ -23,7 +23,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos9.0-proposed'
+          - pin: 'release a=mos9.0-proposed'
             priority: 1100
             package: '*'
         mos9_openstack_security:
@@ -31,7 +31,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos9.0-security'
+          - pin: 'release a=mos9.0-security'
             priority: 1100
             package: '*'
         mos9_openstack_updates:
@@ -39,7 +39,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos9.0-updates'
+          - pin: 'release a=mos9.0-updates'
             priority: 1100
             package: '*'
         mos9_murano:
@@ -48,6 +48,6 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-proposed'
+          - pin: 'release a=mos8.0-proposed'
             priority: 1100
             package: '*'
diff --git a/linux/system/repo_local/openstack.yml b/linux/system/repo_local/openstack.yml
index 4754d12..a873afb 100644
--- a/linux/system/repo_local/openstack.yml
+++ b/linux/system/repo_local/openstack.yml
@@ -10,7 +10,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0'
+          - pin: 'release a=mos8.0'
             priority: 1000
             package: '*'
         mirantis_openstack_hotfix:
@@ -19,7 +19,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-hotfix'
+          - pin: 'release a=mos8.0-hotfix'
             priority: 1000
             package: '*'
         mirantis_openstack_proposed:
@@ -28,7 +28,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-proposed'
+          - pin: 'release a=mos8.0-proposed'
             priority: 1000
             package: '*'
         mirantis_openstack_security:
@@ -37,7 +37,7 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-security'
+          - pin: 'release a=mos8.0-security'
             priority: 1000
             package: '*'
         mirantis_openstack_updates:
@@ -46,6 +46,6 @@
           architectures: amd64
           key_url: "http://${_param:local_repo_url}/public.gpg"
           pin:
-          - pin: 'release s=mos8.0-updates'
+          - pin: 'release a=mos8.0-updates'
             priority: 1000
             package: '*'
diff --git a/linux/system/single.yml b/linux/system/single.yml
index fcfa1b1..fad25ae 100644
--- a/linux/system/single.yml
+++ b/linux/system/single.yml
@@ -12,6 +12,8 @@
         cloud-init:
           version: purged
       kernel:
+        modules:
+          - nf_conntrack
         sysctl:
           net.ipv4.tcp_keepalive_intvl: 3
           net.ipv4.tcp_keepalive_time: 30
@@ -27,6 +29,8 @@
           net.ipv4.neigh.default.gc_thresh3: 16384
           net.core.netdev_max_backlog: 261144
           kernel.panic: 60
+      cpu:
+        governor: performance
       timezone: UTC
       locale:
         en_US.UTF-8:
@@ -41,14 +45,14 @@
           limits:
             - type: hard
               item: nofile
-              value: 102400
+              value: 307200
             - type: soft
               item: nofile
-              value: 102400
+              value: 307200
             - type: soft
               item: noproc
-              value: 102400
+              value: 307200
             - type: hard
               item: noproc
-              value: 102400
+              value: 307200
 
diff --git a/linux/system/sudo.yml b/linux/system/sudo.yml
new file mode 100644
index 0000000..cafd360
--- /dev/null
+++ b/linux/system/sudo.yml
@@ -0,0 +1,38 @@
+parameters:
+  _param:
+    sudo_shells:
+    - /bin/sh
+    - /bin/ksh
+    - /bin/bash
+    - /bin/rbash
+    - /bin/dash
+    - /bin/zsh
+    - /bin/csh
+    - /bin/fish
+    - /bin/tcsh
+    - /usr/bin/login
+    - /usr/bin/su
+    - /usr/su
+    sudo_restricted_su:
+    - /bin/vi* /etc/sudoers*
+    - /bin/nano /etc/sudoers*
+    - /bin/emacs /etc/sudoers*
+    - /bin/su - root
+    - /bin/su -
+    - /bin/su
+    - /usr/sbin/visudo
+    sudo_coreutils_safe:
+    - /usr/bin/less
+    sudo_salt_safe:
+    - /usr/bin/salt state*
+    - /usr/bin/salt service*
+    - /usr/bin/salt pillar*
+    - /usr/bin/salt grains*
+    - /usr/bin/salt saltutil*
+    - /usr/bin/salt-call state*
+    - /usr/bin/salt-call service*
+    - /usr/bin/salt-call pillar*
+    - /usr/bin/salt-call grains*
+    - /usr/bin/salt-call saltutil*
+    sudo_salt_trusted:
+    - /usr/bin/salt*
diff --git a/murano/server/cluster.yml b/murano/server/cluster.yml
new file mode 100644
index 0000000..d698e7c
--- /dev/null
+++ b/murano/server/cluster.yml
@@ -0,0 +1,46 @@
+classes:
+- service.murano.server.cluster
+- service.keepalived.cluster.single
+- system.haproxy.proxy.listen.openstack.murano
+- service.rabbitmq.server.single
+parameters:
+  murano:
+    server:
+      enabled: true
+      version: ${_param:murano_version}
+      bind:
+        address: ${_param:single_address}
+        port: 8082
+      network:
+        external: ${_param:murano_external_network}
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name: murano
+        user: murano
+        password: ${_param:mysql_murano_password}
+      identity:
+        engine: keystone
+        host: ${_param:openstack_control_address}
+        port: 35357
+        tenant: service
+        user: murano
+        password: ${_param:keystone_murano_password}
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        members:
+        - host: ${_param:openstack_messaging_queue_node01_address}
+        - host: ${_param:openstack_messaging_queue_node02_address}
+        - host: ${_param:openstack_messaging_queue_node03_address}
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+      murano_agent_queue:
+        engine: rabbitmq
+        host: ${_param:openstack_proxy_address}
+        port: 5673
+        user: openstack
+        password: ${_param:rabbitmq_murano_agent_password}
+        virtual_host: '/catalog'
diff --git a/murano/server/single.yml b/murano/server/single.yml
new file mode 100644
index 0000000..c3da9f8
--- /dev/null
+++ b/murano/server/single.yml
@@ -0,0 +1,41 @@
+classes:
+- service.murano.server.single
+- service.rabbitmq.server.single
+parameters:
+  murano:
+    server:
+      enabled: true
+      version: ${_param:murano_version}
+      bind:
+        address: ${_param:single_address}
+        port: 8082
+      network:
+        external: ${_param:murano_external_network}
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name: murano
+        user: murano
+        password: ${_param:mysql_murano_password}
+      identity:
+        engine: keystone
+        host: ${_param:openstack_control_address}
+        port: 35357
+        tenant: service
+        user: murano
+        password: ${_param:keystone_murano_password}
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        host: ${_param:cluster_vip_address}
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+      murano_agent_queue:
+        engine: rabbitmq
+        host: ${_param:openstack_proxy_address}
+        port: 5673
+        user: openstack
+        password: ${_param:rabbitmq_murano_agent_password}
+        virtual_host: '/catalog'
diff --git a/mysql/client/database/designate.yml b/mysql/client/database/designate.yml
new file mode 100644
index 0000000..cee6ff1
--- /dev/null
+++ b/mysql/client/database/designate.yml
@@ -0,0 +1,17 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            designate:
+              encoding: utf8
+              users:
+              - name: designate
+                password: ${_param:mysql_designate_password}
+                host: '%'
+                rights: all
+              - name: designate
+                password: ${_param:mysql_designate_password}
+                host: ${_param:single_address}
+                rights: all
\ No newline at end of file
diff --git a/mysql/client/database/designate_pool_manager.yml b/mysql/client/database/designate_pool_manager.yml
new file mode 100644
index 0000000..6913bd4
--- /dev/null
+++ b/mysql/client/database/designate_pool_manager.yml
@@ -0,0 +1,17 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            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:single_address}
+                rights: all
diff --git a/mysql/client/database/murano.yml b/mysql/client/database/murano.yml
new file mode 100644
index 0000000..561ea3d
--- /dev/null
+++ b/mysql/client/database/murano.yml
@@ -0,0 +1,17 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            murano:
+              encoding: utf8
+              users:
+              - name: murano
+                password: ${_param:mysql_murano_password}
+                host: '%'
+                rights: all
+              - name: murano
+                password: ${_param:mysql_murano_password}
+                host: ${_param:single_address}
+                rights: all
\ No newline at end of file
diff --git a/mysql/client/database/nova_api.yml b/mysql/client/database/nova_api.yml
index 9380445..a8fbd59 100644
--- a/mysql/client/database/nova_api.yml
+++ b/mysql/client/database/nova_api.yml
@@ -15,3 +15,14 @@
                 password: ${_param:mysql_nova_password}
                 host: ${_param:single_address}
                 rights: all
+            nova_cell0:
+              encoding: utf8
+              users:
+              - name: nova
+                password: ${_param:mysql_nova_password}
+                host: '%'
+                rights: all
+              - name: nova
+                password: ${_param:mysql_nova_password}
+                host: ${_param:single_address}
+                rights: all
diff --git a/mysql/client/database/sahara.yml b/mysql/client/database/sahara.yml
new file mode 100644
index 0000000..86497d8
--- /dev/null
+++ b/mysql/client/database/sahara.yml
@@ -0,0 +1,17 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            sahara:
+              encoding: utf8
+              users:
+              - name: sahara
+                password: ${_param:mysql_sahara_password}
+                host: '%'
+                rights: all
+              - name: sahara
+                password: ${_param:mysql_sahara_password}
+                host: ${_param:single_address}
+                rights: all
diff --git a/nagios/server/init.yml b/nagios/server/init.yml
index e495915..3a027a2 100644
--- a/nagios/server/init.yml
+++ b/nagios/server/init.yml
@@ -3,6 +3,10 @@
     nagios_notification_email: root@localhost
     nagios_host_dimension_key: nagios_host
     nagios_default_host_alarm_clusters: 00-clusters
+    nagios_monitoring_network: []
+    nagios_monitoring_interface:
+    - eth0
+    - ens3
   nagios :
     server:
       enabled: true
@@ -45,9 +49,9 @@
         grain_hostname: 'host'
         hostname_suffix: ${_param:stacklight_environment}
         hostgroups:
-          - target: '*'
+          - target: 'G@services:openssh'
             name: All
-            expr_from: glob
+            expr_from: compound
           - target: 'G@roles:nova.controller'
             expr_from: compound # the default
             name: Nova Controller
@@ -63,10 +67,8 @@
           - target: 'G@services:openssh'
             contact_groups: Operator
             use: generic_host_tpl
-            interface:
-            - eth0
-            - ens3
-            - p4p1.602
+            interface: ${_param:nagios_monitoring_interface}
+            network: ${_param:nagios_monitoring_network}
         services:
           - target: 'G@roles:openssh.server'
             name: SSH
diff --git a/neutron/compute/nfv/dpdk.yml b/neutron/compute/nfv/dpdk.yml
new file mode 100644
index 0000000..90f9095
--- /dev/null
+++ b/neutron/compute/nfv/dpdk.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    compute_dpdk_driver: uio
+  linux:
+    network:
+      bridge: openvswitch
+      dpdk:
+        enabled: true
+        driver: "${_param:compute_dpdk_driver}"
+      openvswitch:
+        pmd_cpu_mask: "${_param:compute_ovs_pmd_cpu_mask}"
+        dpdk_socket_mem: "${_param:compute_ovs_dpdk_socket_mem}"
+        dpdk_lcore_mask: "${_param:compute_ovs_dpdk_lcore_mask}"
+        memory_channels: "${_param:compute_ovs_memory_channels}"
+  neutron:
+    compute:
+      dpdk: True
diff --git a/neutron/compute/nfv/sriov.yml b/neutron/compute/nfv/sriov.yml
new file mode 100644
index 0000000..882e703
--- /dev/null
+++ b/neutron/compute/nfv/sriov.yml
@@ -0,0 +1,8 @@
+parameters:
+  neutron:
+    compute:
+      backend:
+        sriov:
+          sriov_nic01:
+            devname: ${_param:sriov_nic01_device_name}
+            physical_network: ${_param:sriov_nic01_physical_network}
diff --git a/neutron/control/opencontrail/cluster.yml b/neutron/control/opencontrail/cluster.yml
index 05b7e33..caaaf6d 100644
--- a/neutron/control/opencontrail/cluster.yml
+++ b/neutron/control/opencontrail/cluster.yml
@@ -20,33 +20,13 @@
             rights: all
   neutron:
     server:
-      enabled: true
       dns_domain: ${_param:cluster_domain}
-      version: ${_param:neutron_version}
-      bind:
-        address: ${_param:cluster_local_address}
-        port: 9696
       database:
-        engine: mysql
         host: ${_param:openstack_database_address}
-        port: 3306
-        name: neutron
-        user: neutron
-        password: ${_param:mysql_neutron_password}
       identity:
-        engine: keystone
-        region: RegionOne
+        region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
-        port: 35357
-        user: neutron
-        password: ${_param:keystone_neutron_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}
@@ -54,13 +34,11 @@
       compute:
         host: ${_param:openstack_control_address}
         region: ${_param:openstack_region}
-        user: nova
-        password: ${_param:keystone_nova_password}
-        tenant: service
-      plugin: contrail
-      tunnel_type: vxlan
-      public_networks: []
-      contrail:
-        version: ${_param:opencontrail_version}
-
-      
+      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 dfc3c82..dc8e0c5 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -22,8 +22,12 @@
         mechanism:
           ovs:
             driver: openvswitch
+      compute:
+        region: ${_param:openstack_region}
       database:
         host: ${_param:openstack_database_address}
+      identity:
+        region: ${_param:openstack_region}
       message_queue:
         members:
           - host: ${_param:openstack_message_queue_node01_address}
@@ -64,4 +68,4 @@
           - name: ctl03
             host: ${_param:cluster_node03_address}
             port: 9696
-            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
\ No newline at end of file
+            params: check inter 10s fastinter 2s downinter 3s rise 3 fall 3
diff --git a/neutron/control/openvswitch/dpdk.yml b/neutron/control/openvswitch/dpdk.yml
new file mode 100644
index 0000000..f7191c7
--- /dev/null
+++ b/neutron/control/openvswitch/dpdk.yml
@@ -0,0 +1,4 @@
+parameters:
+  neutron:
+    server:
+      dpdk: True
\ No newline at end of file
diff --git a/neutron/control/openvswitch/sriov.yml b/neutron/control/openvswitch/sriov.yml
new file mode 100644
index 0000000..38f5d29
--- /dev/null
+++ b/neutron/control/openvswitch/sriov.yml
@@ -0,0 +1,7 @@
+parameters:
+  neutron:
+    server:
+      backend:
+        mechanism:
+          sriov:
+            driver: sriovnicswitch
diff --git a/nginx/server/proxy/ceph_radosgw.yml b/nginx/server/proxy/ceph_radosgw.yml
new file mode 100644
index 0000000..fe90201
--- /dev/null
+++ b/nginx/server/proxy/ceph_radosgw.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    nginx_proxy_radosgw_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        ceph_radosgw:
+          enabled: true
+          type: ceph
+          name: ceph_radosgw
+          host:
+            name: ${_param:nginx_proxy_radosgw_host}
+            port: 8080
+          ssl: ${_param:nginx_proxy_ssl}
\ No newline at end of file
diff --git a/nginx/server/proxy/grafana_web.yml b/nginx/server/proxy/grafana_web.yml
index a1c7c49..66fa46b 100644
--- a/nginx/server/proxy/grafana_web.yml
+++ b/nginx/server/proxy/grafana_web.yml
@@ -1,18 +1,2 @@
-parameters:
-  nginx:
-    server:
-      enabled: true
-      site:
-        nginx_proxy_grafana:
-          enabled: true
-          type: nginx_proxy
-          name: grafana
-          proxy:
-            host: ${_param:stacklight_monitor_address}
-            port: 3000
-            protocol: http
-          host:
-            name: ${_param:cluster_public_host}
-            port: 8084
-            protocol: https
-          ssl: ${_param:nginx_proxy_ssl}
+classes:
+- system.nginx.server.proxy.stacklight.grafana
diff --git a/nginx/server/proxy/kibana_web.yml b/nginx/server/proxy/kibana_web.yml
index 1120c9c..0f3f41e 100644
--- a/nginx/server/proxy/kibana_web.yml
+++ b/nginx/server/proxy/kibana_web.yml
@@ -1,18 +1,2 @@
-parameters:
-  nginx:
-    server:
-      enabled: true
-      site:
-        nginx_proxy_kibana:
-          enabled: true
-          type: nginx_proxy
-          name: kibana
-          proxy:
-            host: ${_param:stacklight_monitor_address}
-            port: 5601
-            protocol: http
-          host:
-            name: ${_param:cluster_public_host}
-            port: 5601
-            protocol: https
-          ssl: ${_param:nginx_proxy_ssl}
+classes:
+- system.nginx.server.proxy.stacklight.kibana
diff --git a/nginx/server/proxy/monitoring/prometheus_alertmanager.yml b/nginx/server/proxy/monitoring/prometheus_alertmanager.yml
new file mode 100644
index 0000000..2430104
--- /dev/null
+++ b/nginx/server/proxy/monitoring/prometheus_alertmanager.yml
@@ -0,0 +1,16 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_prometheus_alertmanager:
+          enabled: true
+          type: nginx_proxy
+          name: prometheus_alertmanager
+          proxy:
+            host: ${_param:prometheus_control_address}
+            port: 15011
+            protocol: http
+          host:
+            name: ${_param:cluster_public_host}
+            port: 15011
diff --git a/nginx/server/proxy/monitoring/prometheus_server.yml b/nginx/server/proxy/monitoring/prometheus_server.yml
new file mode 100644
index 0000000..76ff56a
--- /dev/null
+++ b/nginx/server/proxy/monitoring/prometheus_server.yml
@@ -0,0 +1,16 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_prometheus_server:
+          enabled: true
+          type: nginx_proxy
+          name: prometheus_server
+          proxy:
+            host: ${_param:prometheus_control_address}
+            port: 15010
+            protocol: http
+          host:
+            name: ${_param:cluster_public_host}
+            port: 15010
diff --git a/nginx/server/proxy/nagios_web.yml b/nginx/server/proxy/nagios_web.yml
index 8b57929..919c74a 100644
--- a/nginx/server/proxy/nagios_web.yml
+++ b/nginx/server/proxy/nagios_web.yml
@@ -1,18 +1,2 @@
-parameters:
-  nginx:
-    server:
-      enabled: true
-      site:
-        nginx_proxy_nagios:
-          enabled: true
-          type: nginx_proxy
-          name: nagios
-          proxy:
-            host: ${_param:stacklight_monitor_address}
-            port: 80
-            protocol: http
-          host:
-            name: ${_param:cluster_public_host}
-            port: 8001
-            protocol: https
-          ssl: ${_param:nginx_proxy_ssl}
+classes:
+- system.nginx.server.proxy.stacklight.nagios
diff --git a/nginx/server/proxy/openstack/aodh.yml b/nginx/server/proxy/openstack/aodh.yml
new file mode 100644
index 0000000..bfdb4d6
--- /dev/null
+++ b/nginx/server/proxy/openstack/aodh.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_aodh:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_aodh
+          check: false
+          proxy:
+            host: ${_param:aodh_service_host}
+            port: 8042
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8042
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/ceilometer.yml b/nginx/server/proxy/openstack/ceilometer.yml
new file mode 100644
index 0000000..57315fe
--- /dev/null
+++ b/nginx/server/proxy/openstack/ceilometer.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_ceilometer:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_ceilometer
+          check: false
+          proxy:
+            host: ${_param:ceilometer_service_host}
+            port: 8777
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8777
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/designate.yml b/nginx/server/proxy/openstack/designate.yml
new file mode 100644
index 0000000..2b8ffce
--- /dev/null
+++ b/nginx/server/proxy/openstack/designate.yml
@@ -0,0 +1,19 @@
+  parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_designate:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_designate
+          proxy:
+            host: ${_param:nginx_proxy_openstack_api_proxy_host}
+            port: 9001
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 9001
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/horizon.yml b/nginx/server/proxy/openstack/horizon.yml
new file mode 100644
index 0000000..13df5cb
--- /dev/null
+++ b/nginx/server/proxy/openstack/horizon.yml
@@ -0,0 +1,18 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_horizon:
+          enabled: true
+          type: nginx_proxy
+          name: horizon
+          proxy:
+            host: ${_param:openstack_proxy_address}
+            port: 443
+            protocol: https
+          host:
+            name: ${_param:cluster_public_host}
+            port: 443
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/murano.yml b/nginx/server/proxy/openstack/murano.yml
new file mode 100644
index 0000000..a93b07e
--- /dev/null
+++ b/nginx/server/proxy/openstack/murano.yml
@@ -0,0 +1,19 @@
+  parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_murano:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_murano
+          proxy:
+            host: ${_param:nginx_proxy_openstack_api_proxy_host}
+            port: 8082
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8082
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/sahara.yml b/nginx/server/proxy/openstack/sahara.yml
new file mode 100644
index 0000000..17ae236
--- /dev/null
+++ b/nginx/server/proxy/openstack/sahara.yml
@@ -0,0 +1,17 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_sahara:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_sahara
+          proxy:
+            host: ${_param:nginx_proxy_openstack_api_proxy_host}
+            port: 8386
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8386
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index a3182e5..5c4a1fa 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -9,86 +9,82 @@
           enabled: true
           type: nginx_proxy
           name: openstack_api_keystone
+          check: false
           proxy:
             host: ${_param:keystone_service_host}
             port: 5000
             protocol: http
-            filter:
-              search: ${_param:keystone_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 5000
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_keystone_private:
           enabled: true
           type: nginx_proxy
           name: openstack_api_keystone_private
+          check: false
           proxy:
             host: ${_param:keystone_service_host}
             port: 35357
             protocol: http
-            filter:
-              search: ${_param:keystone_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 35357
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_nova:
           enabled: true
           type: nginx_proxy
           name: openstack_api_nova
+          check: false
           proxy:
             host: ${_param:nova_service_host}
             port: 8774
             protocol: http
-            filter:
-              search: ${_param:nova_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8774
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_cinder:
           enabled: true
           type: nginx_proxy
           name: openstack_api_cinder
+          check: false
           proxy:
             host: ${_param:cinder_service_host}
             port: 8776
             protocol: http
-            filter:
-              search: ${_param:cinder_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8776
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_glance:
           enabled: true
           type: nginx_proxy
           name: openstack_api_glance
+          check: false
+          underscores_in_headers: true
           proxy:
             host: ${_param:glance_service_host}
             port: 9292
             protocol: http
-            filter:
-              search: ${_param:glance_service_host}
-              replace: '$server_addr'
+            size: 30000m
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9292
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_neutron:
           enabled: true
           type: nginx_proxy
           name: openstack_api_neutron
+          check: false
           proxy:
             host: ${_param:neutron_service_host}
             port: 9696
             protocol: http
-            filter:
-              search: ${_param:neutron_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9696
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_heat_cfn:
           enabled: true
           type: nginx_proxy
@@ -97,37 +93,33 @@
             host: ${_param:heat_service_host}
             port: 8000
             protocol: http
-            filter:
-              search: ${_param:neutron_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8000
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_heat:
           enabled: true
           type: nginx_proxy
           name: openstack_api_heat
+          check: false
           proxy:
             host: ${_param:heat_service_host}
             port: 8004
             protocol: http
-            filter:
-              search: ${_param:heat_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8004
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_nova_ec2:
           enabled: true
           type: nginx_proxy
           name: openstack_api_nova_ec2
+          check: false
           proxy:
             host: ${_param:nova_service_host}
             port: 8773
             protocol: http
-            filter:
-              search: ${_param:nova_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8773
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_vnc.yml b/nginx/server/proxy/openstack_vnc.yml
index f53e40e..526f0db 100644
--- a/nginx/server/proxy/openstack_vnc.yml
+++ b/nginx/server/proxy/openstack_vnc.yml
@@ -7,6 +7,7 @@
           enabled: true
           type: nginx_proxy
           name: novnc
+          check: false
           proxy:
             host: ${_param:openstack_control_address}
             port: 6080
@@ -15,3 +16,4 @@
           host:
             name: ${_param:cluster_public_host}
             port: 6080
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_web.yml b/nginx/server/proxy/openstack_web.yml
index 0165ff2..ad5ffea 100644
--- a/nginx/server/proxy/openstack_web.yml
+++ b/nginx/server/proxy/openstack_web.yml
@@ -2,7 +2,9 @@
   _param:
     nginx_proxy_openstack_web_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_web_proxy_host: ${_param:cluster_vip_address}
-    nginx_proxy_openstack_web_buffer_size: 
+    nginx_proxy_openstack_web_buffer_size:
+      number: 4
+      size: 256
   nginx:
     server:
       enabled: true
@@ -12,11 +14,16 @@
           type: nginx_proxy
           name: openstack_web
           proxy:
-            size: 5000m
-            host: prx
+            host: localhost
+            # TODO: port must be configurable, as some deployments might have HAproxy over prx nodes
             port: 8078
+            size: 10000m
+            timeout: 43200
             protocol: http
             websocket: true
+            request_buffer: false
+            buffer:
+              ${_param:nginx_proxy_openstack_web_buffer_size}
           host:
             name: ${_param:nginx_proxy_openstack_web_host}
             port: 443
diff --git a/nginx/server/proxy/stacklight/uchiwa.yml b/nginx/server/proxy/stacklight/uchiwa.yml
new file mode 100644
index 0000000..38016c9
--- /dev/null
+++ b/nginx/server/proxy/stacklight/uchiwa.yml
@@ -0,0 +1,18 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_uchiwa:
+          enabled: true
+          type: nginx_proxy
+          name: uchiwa
+          proxy:
+            host: ${_param:stacklight_monitor_address}
+            port: 3001
+            protocol: http
+          host:
+            name: ${_param:cluster_public_host}
+            port: 3001
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nova/compute/cluster.yml b/nova/compute/cluster.yml
index b27ac38..4d07a3e 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -2,8 +2,10 @@
 - service.nova.compute.kvm
 parameters:
   _param:
-    nova_vncproxy_url: http://${_param:cluster_vip_address}:6080
+    nova_vncproxy_url: https://${_param:cluster_public_host}:6080
     nova_compute_virtualization: kvm
+    nova_compute_avail_zone:
+    nova_aggregates: []
     nova_compute_ssh_public: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCltIn93BcTMzNK/n2eBze6PyTkmIgdDkeXNR9X4DqE48Va80ojv2pq8xuaBxiNITJzyl+4p4UvTTXo+HmuX8qbHvqgMGXvuPUCpndEfb2r67f6vpMqPwMgBrUg2ZKgN4OsSDHU+H0dia0cEaTjz5pvbUy9lIsSyhrqOUVF9reJq+boAvVEedm8fUqiZuiejAw2D27+rRtdEPgsKMnh3626YEsr963q4rjU/JssV/iKMNu7mk2a+koOrJ+aHvcVU8zJjfA0YghoeVT/I3GLU/MB/4tD/RyR8GM+UYbI4sgAC7ZOCdQyHdJgnEzx3SJIwcS65U0T2XYvn2qXHXqJ9iGZ root@mirantis.com
     nova_compute_ssh_private: |
       -----BEGIN RSA PRIVATE KEY-----
@@ -43,6 +45,8 @@
       version: ${_param:nova_version}
       enabled: true
       virtualization: ${_param:nova_compute_virtualization}
+      availability_zone: ${_param:nova_compute_avail_zone}
+      aggregates: ${_param:nova_aggregates}
       heal_instance_info_cache_interval: 60
       vncproxy_url: ${_param:nova_vncproxy_url}
       bind:
diff --git a/nova/compute/nfv/cpu_pinning.yml b/nova/compute/nfv/cpu_pinning.yml
new file mode 100644
index 0000000..3e97838
--- /dev/null
+++ b/nova/compute/nfv/cpu_pinning.yml
@@ -0,0 +1,8 @@
+parameters:
+  nova:
+    compute:
+      vcpu_pin_set: ${_param:nova_cpu_pinning}
+  linux:
+    system:
+      kernel:
+        isolcpu: ${_param:compute_kernel_isolcpu}
\ No newline at end of file
diff --git a/nova/compute/nfv/hugepages.yml b/nova/compute/nfv/hugepages.yml
new file mode 100644
index 0000000..6778f94
--- /dev/null
+++ b/nova/compute/nfv/hugepages.yml
@@ -0,0 +1,18 @@
+parameters:
+  _param:
+    compute_hugepages_size: 1G
+    compute_hugepages_mount: /mnt/hugepages_1G
+  linux:
+    system:
+      kernel:
+        hugepages:
+          large:
+            default: true
+            size: ${_param:compute_hugepages_size}
+            count: ${_param:compute_hugepages_count}
+            mount_point: ${_param:compute_hugepages_mount}
+  nova:
+    compute:
+      hugepages:
+        mount_points:
+        - path: ${_param:compute_hugepages_mount}
\ No newline at end of file
diff --git a/nova/compute/nfv/sriov.yml b/nova/compute/nfv/sriov.yml
new file mode 100644
index 0000000..b93363c
--- /dev/null
+++ b/nova/compute/nfv/sriov.yml
@@ -0,0 +1,21 @@
+parameters:
+  _param:
+    sriov_nic01_physical_network: physnet1
+    sriov_unsafe_interrupts: False
+  nova:
+    compute:
+      sriov:
+        sriov_nic01:
+          devname: ${_param:sriov_nic01_device_name}
+          physical_network: ${_param:sriov_nic01_physical_network}
+  linux:
+    system:
+      kernel:
+        sriov: True
+        unsafe_interrupts: ${_param:sriov_unsafe_interrupts}
+      rc:
+        local: |
+          #!/bin/sh -e
+          # Enabling ${_param:sriov_nic01_numvfs} VFs on ${_param:sriov_nic01_device_name} PF
+          echo ${_param:sriov_nic01_numvfs} > /sys/class/net/${_param:sriov_nic01_device_name}/device/sriov_numvfs; sleep 2; ip link set ${_param:sriov_nic01_device_name} up
+          exit 0
\ No newline at end of file
diff --git a/nova/compute/single.yml b/nova/compute/single.yml
index 4ac99b1..f50b937 100644
--- a/nova/compute/single.yml
+++ b/nova/compute/single.yml
@@ -4,7 +4,9 @@
 - service.nova.compute.kvm
 parameters:
   _param:
+    nova_vncproxy_url: https://${_param:cluster_public_host}:6080
     nova_compute_ssh_public: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCltIn93BcTMzNK/n2eBze6PyTkmIgdDkeXNR9X4DqE48Va80ojv2pq8xuaBxiNITJzyl+4p4UvTTXo+HmuX8qbHvqgMGXvuPUCpndEfb2r67f6vpMqPwMgBrUg2ZKgN4OsSDHU+H0dia0cEaTjz5pvbUy9lIsSyhrqOUVF9reJq+boAvVEedm8fUqiZuiejAw2D27+rRtdEPgsKMnh3626YEsr963q4rjU/JssV/iKMNu7mk2a+koOrJ+aHvcVU8zJjfA0YghoeVT/I3GLU/MB/4tD/RyR8GM+UYbI4sgAC7ZOCdQyHdJgnEzx3SJIwcS65U0T2XYvn2qXHXqJ9iGZ root@mirantis.com
+    nova_compute_avail_zone:
     nova_compute_ssh_private: |
       -----BEGIN RSA PRIVATE KEY-----
       MIIEpAIBAAKCAQEApbSJ/dwXEzMzSv59ngc3uj8k5JiIHQ5HlzUfV+A6hOPFWvNK
@@ -44,7 +46,8 @@
       disable_flow_collection: true
       enabled: true
       virtualization: kvm
-      vncproxy_url: http://${_param:control_address}:6080
+      availability_zone: ${_param:nova_compute_avail_zone}
+      vncproxy_url: ${_param:nova_vncproxy_url}
       bind:
         vnc_address: ${_param:control_address}
         vnc_port: 6080
diff --git a/nova/compute/storage/ceph.yml b/nova/compute/storage/ceph.yml
index c271952..7cb24cb 100644
--- a/nova/compute/storage/ceph.yml
+++ b/nova/compute/storage/ceph.yml
@@ -6,5 +6,5 @@
         ephemeral: yes
         rbd_pool: ${_param:nova_storage_pool}
         secret_uuid: ${_param:nova_storage_secret_uuid}
-        client_cinder_key: ${_param:nova_storage_secret_uuid}
+        client_cinder_key: ${_param:nova_storage_client_key}
         rbd_user: ${_param:nova_storage_user}
\ No newline at end of file
diff --git a/nova/control/cluster.yml b/nova/control/cluster.yml
index ac08d43..1bcc8b9 100644
--- a/nova/control/cluster.yml
+++ b/nova/control/cluster.yml
@@ -3,9 +3,13 @@
 - service.nova.control.cluster
 - service.keepalived.cluster.single
 - system.haproxy.proxy.listen.openstack.nova
+- system.haproxy.proxy.listen.openstack.novnc
 parameters:
   _param:
     nova_vncproxy_url: http://${_param:cluster_vip_address}:6080
+    nova_cpu_allocation_ratio: 16.0
+    nova_ram_allocation_ratio: 1.5
+    nova_disk_allocation_ratio: 1.0
   nova:
     controller:
       enabled: true
@@ -13,10 +17,10 @@
       vncproxy_url: ${_param:nova_vncproxy_url}
       security_group: false
       dhcp_domain: novalocal
-      scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter"
-      cpu_allocation_ratio: 16.0
-      ram_allocation_ratio: 1.5
-      disk_allocation_ratio: 1.0
+      scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
+      cpu_allocation_ratio: ${_param:nova_cpu_allocation_ratio}
+      ram_allocation_ratio: ${_param:nova_ram_allocation_ratio}
+      disk_allocation_ratio: ${_param:nova_disk_allocation_ratio}
       workers: 8
       logging:
       - engine: syslog
@@ -27,6 +31,7 @@
         private_address: ${_param:cluster_local_address}
         public_address: ${_param:cluster_vip_address}
         public_name: ${_param:cluster_vip_address}
+        novncproxy_address: ${_param:cluster_local_address}
         novncproxy_port: 6080
       database:
         engine: mysql
@@ -66,4 +71,4 @@
         mtu: 1500
         tenant: service
       metadata:
-        password: metadataPass
+        password: ${_param:metadata_password}
diff --git a/opencontrail/client/cluster.yml b/opencontrail/client/cluster.yml
new file mode 100644
index 0000000..c0db6fc
--- /dev/null
+++ b/opencontrail/client/cluster.yml
@@ -0,0 +1,2 @@
+classes:
+- service.opencontrail.client.cluster
diff --git a/opencontrail/client/resource/analytics_node.yml b/opencontrail/client/resource/analytics_node.yml
new file mode 100644
index 0000000..46e69eb
--- /dev/null
+++ b/opencontrail/client/resource/analytics_node.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    cluster_node01_hostname: nal01
+    cluster_node02_hostname: nal02
+    cluster_node03_hostname: nal03
+  opencontrail:
+    client:
+      analytics_node:
+        member01:
+          name: ${_param:cluster_node01_hostname}
+          ip_address: ${_param:cluster_node01_address}
+        member02:
+          name: ${_param:cluster_node02_hostname}
+          ip_address: ${_param:cluster_node02_address}
+        member03:
+          name: ${_param:cluster_node03_hostname}
+          ip_address: ${_param:cluster_node03_address}
diff --git a/opencontrail/client/resource/config_node.yml b/opencontrail/client/resource/config_node.yml
new file mode 100644
index 0000000..85d08f8
--- /dev/null
+++ b/opencontrail/client/resource/config_node.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    cluster_node01_hostname: ntw01
+    cluster_node02_hostname: ntw02
+    cluster_node03_hostname: ntw03
+  opencontrail:
+    client:
+      config_node:
+        member01:
+          name: ${_param:cluster_node01_hostname}
+          ip_address: ${_param:cluster_node01_address}
+        member02:
+          name: ${_param:cluster_node02_hostname}
+          ip_address: ${_param:cluster_node02_address}
+        member03:
+          name: ${_param:cluster_node03_hostname}
+          ip_address: ${_param:cluster_node03_address}
diff --git a/opencontrail/client/resource/control_node.yml b/opencontrail/client/resource/control_node.yml
new file mode 100644
index 0000000..8e84864
--- /dev/null
+++ b/opencontrail/client/resource/control_node.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    cluster_node01_hostname: ntw01
+    cluster_node02_hostname: ntw02
+    cluster_node03_hostname: ntw03
+    opencontrail_asn: 64512
+  opencontrail:
+    client:
+      bgp_router:
+        member01:
+          name: ${_param:cluster_node01_hostname}
+          type: control-node
+          ip_address: ${_param:cluster_node01_address}
+          asn: ${_param:opencontrail_asn}
+        member02:
+          name: ${_param:cluster_node02_hostname}
+          type: control-node
+          ip_address: ${_param:cluster_node02_address}
+          asn: ${_param:opencontrail_asn}
+        member03:
+          name: ${_param:cluster_node03_hostname}
+          type: control-node
+          ip_address: ${_param:cluster_node03_address}
+          asn: ${_param:opencontrail_asn}
diff --git a/opencontrail/client/resource/database_node.yml b/opencontrail/client/resource/database_node.yml
new file mode 100644
index 0000000..1dd6377
--- /dev/null
+++ b/opencontrail/client/resource/database_node.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    cluster_node01_hostname: ntw01
+    cluster_node02_hostname: ntw02
+    cluster_node03_hostname: ntw03
+  opencontrail:
+    client:
+      database_node:
+        member01:
+          name: ${_param:cluster_node01_hostname}
+          ip_address: ${_param:cluster_node01_address}
+        member02:
+          name: ${_param:cluster_node02_hostname}
+          ip_address: ${_param:cluster_node02_address}
+        member03:
+          name: ${_param:cluster_node03_hostname}
+          ip_address: ${_param:cluster_node03_address}
diff --git a/opencontrail/client/resource/edge_router.yml b/opencontrail/client/resource/edge_router.yml
new file mode 100644
index 0000000..89bf642
--- /dev/null
+++ b/opencontrail/client/resource/edge_router.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    opencontrail_asn: 64512
+    opencontrail_router01_hostname: mx01
+  opencontrail:
+    client:
+      bgp_router:
+        router01:
+          name: ${_param:opencontrail_router01_hostname}
+          type: router
+          ip_address: ${_param:opencontrail_router01_address}
+          asn: ${_param:opencontrail_asn}
diff --git a/opencontrail/client/resource/edge_routers.yml b/opencontrail/client/resource/edge_routers.yml
new file mode 100644
index 0000000..a24fd9a
--- /dev/null
+++ b/opencontrail/client/resource/edge_routers.yml
@@ -0,0 +1,18 @@
+parameters:
+  _param:
+    opencontrail_asn: 64512
+    opencontrail_router01_hostname: mx01
+    opencontrail_router02_hostname: mx02
+  opencontrail:
+    client:
+      bgp_router:
+        router01:
+          name: ${_param:opencontrail_router01_hostname}
+          type: router
+          ip_address: ${_param:opencontrail_router01_address}
+          asn: ${_param:opencontrail_asn}
+        router02:
+          name: ${_param:opencontrail_router02_hostname}
+          type: router
+          ip_address: ${_param:opencontrail_router02_address}
+          asn: ${_param:opencontrail_asn}
diff --git a/opencontrail/client/resource/virtual_router.yml b/opencontrail/client/resource/virtual_router.yml
new file mode 100644
index 0000000..0333c8f
--- /dev/null
+++ b/opencontrail/client/resource/virtual_router.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    contrail_compute_dpdk_enabled: False
+  opencontrail:
+    client:
+      virtual_router:
+        local_compute:
+          name: ${linux:system:name}
+          ip_address: ${_param:single_address}
+          dpdk_enabled: ${_param:contrail_compute_dpdk_enabled}
\ No newline at end of file
diff --git a/opencontrail/client/single.yml b/opencontrail/client/single.yml
new file mode 100644
index 0000000..8be67db
--- /dev/null
+++ b/opencontrail/client/single.yml
@@ -0,0 +1,2 @@
+classes:
+- service.opencontrail.client.single
\ No newline at end of file
diff --git a/opencontrail/compute/cluster.yml b/opencontrail/compute/cluster.yml
index 1f6eaf3..375e600 100644
--- a/opencontrail/compute/cluster.yml
+++ b/opencontrail/compute/cluster.yml
@@ -1,3 +1,5 @@
+applications:
+- opencontrail
 parameters:
   _param:
     opencontrail_compute_iface_mask: 24
diff --git a/opencontrail/compute/dpdk.yml b/opencontrail/compute/dpdk.yml
new file mode 100644
index 0000000..b0d8e0c
--- /dev/null
+++ b/opencontrail/compute/dpdk.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    contrail_compute_dpdk_enabled: True
+  nova:
+    compute:
+      libvirt_service: libvirt-bin
+  opencontrail:
+    compute:
+      dpdk:
+        enabled: ${_param:contrail_compute_dpdk_enabled}
+        taskset: "${_param:compute_vrouter_taskset}"
+        socket_mem: "${_param:compute_vrouter_socket_mem}"
+      interface:
+        mac_address: ${_param:compute_vrouter_dpdk_mac_address}
+        pci: ${_param:compute_vrouter_dpdk_pci}
+  linux:
+    system:
+      package:
+        liburcu4:
+          version: 0.9.1-3+tcp1
+    network:
+      interface:
+        vhost0:
+          pre_up_cmds:
+          - /usr/lib/contrail/if-vhost0
+          post_up_cmds:
+          - ip link set vhost0 address ${_param:compute_vrouter_dpdk_mac_address}
diff --git a/opencontrail/control/analytics.yml b/opencontrail/control/analytics.yml
index 6fbc85a..8cbd166 100644
--- a/opencontrail/control/analytics.yml
+++ b/opencontrail/control/analytics.yml
@@ -10,46 +10,19 @@
       package:
         librdkafka1:
           version: 0.9.0-0contrail0
+          hold: true
         python-kafka:
           version: 1.0.1-0contrail1
+          hold: true
   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:opencontrail_control_address}
-        port: 9696
     collector:
-      version: ${_param:opencontrail_version}
-      enabled: true
-      bind:
-        address: ${_param:cluster_local_address}
-        port: 9081
-      master:
-        host: ${_param:cluster_local_address}
       discovery:
         host: ${_param:opencontrail_control_address}
-      data_ttl: 1
     database:
-      version: ${_param:opencontrail_version}
-      cassandra:
-        version: 2
-      enabled: true
-      name: 'Contrail'
-      minimum_disk: 10
-      original_token: 0
-      data_dirs:
-      - /var/lib/cassandra
-      id: ${_param:opencontrail_database_id}
       discovery:
         host: ${_param:opencontrail_control_address}
-      bind:
-        host: ${_param:cluster_local_address}
-        port: 9042
-        rpc_port: 9160
\ No newline at end of file
diff --git a/opencontrail/control/cluster.yml b/opencontrail/control/cluster.yml
index b3f1052..4ffe081 100644
--- a/opencontrail/control/cluster.yml
+++ b/opencontrail/control/cluster.yml
@@ -3,6 +3,7 @@
 - service.keepalived.cluster.single
 - service.opencontrail.control.cluster
 - system.haproxy.proxy.listen.opencontrail.control
+- system.haproxy.proxy.listen.opencontrail.analytics
 parameters:
 # Temprorary fix for MOS9 packages to pin old version of kafka
   linux:
@@ -14,3 +15,7 @@
           version: 1.0.1-0contrail1
         contrail-api-cli:
           version: latest
+  opencontrail:
+    web:
+      database:
+        port: 9042
diff --git a/opencontrail/control/control.yml b/opencontrail/control/control.yml
index e7b045e..794682d 100644
--- a/opencontrail/control/control.yml
+++ b/opencontrail/control/control.yml
@@ -7,96 +7,31 @@
     multi_tenancy: false  
   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:cluster_vip_address}
-        port: 9696
     config:
-      version: ${_param:opencontrail_version}
-      enabled: true
       multi_tenancy: ${_param:multi_tenancy}
       network:
-        engine: neutron
-        host: ${_param:cluster_vip_address}
-        port: 9696
-      discovery:
         host: ${_param:cluster_vip_address}
       analytics:
         host: ${_param:opencontrail_analytics_address}
       bind:
         address: ${_param:cluster_local_address}
-        api_port: 9100
-        discovery_port: 9110
       message_queue:
-        engine: rabbitmq
         host: ${_param:openstack_message_queue_address}
-        port: 5672
       identity:
-        engine: keystone
-        version: '2.0'
-        region: RegionOne
+        region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
-        port: 35357
-        user: admin
-        password: '${_param:keystone_admin_password}'
-        token: '${_param:keystone_service_token}'
-        tenant: admin
-    control:
-      version: ${_param:opencontrail_version}
-      enabled: true
-      id: ${_param:opencontrail_database_id}
-      bind:
-        address: ${_param:cluster_local_address}
-      discovery:
-        host: ${_param:cluster_vip_address}
-      master:
-        host: ${_param:cluster_local_address}
-    database:
-      version: ${_param:opencontrail_version}
-      cassandra:
-        version: 2
-      enabled: true
-      name: 'Contrail'
-      minimum_disk: 10
-      original_token: 0
-      data_dirs:
-      - /var/lib/cassandra
-      id: ${_param:opencontrail_database_id}
-      discovery:
-        host: ${_param:cluster_vip_address}
-      bind:
-        host: ${_param:cluster_local_address}
-        port: 9042
-        rpc_port: 9160
     web:
-      version: ${_param:opencontrail_version}
-      enabled: True
-      bind:
-        address: ${_param:cluster_local_address}
       analytics:
         host: ${_param:opencontrail_analytics_address}
-      master:
-        host: ${_param:cluster_vip_address}
       cache:
-        engine: redis
         host: 127.0.0.1
-        port: 6379
       identity:
-        engine: keystone
-        version: '2.0'
         host: ${_param:openstack_control_address}
-        port: 35357
-        user: admin
-        password: '${_param:keystone_admin_password}'
-        token: '${_param:keystone_service_token}'
-        tenant: admin
+      database:
+        port: 9042
       network:
-        engine: neutron
-        host: ${_param:cluster_vip_address}
\ No newline at end of file
+        host: ${_param:cluster_vip_address}
diff --git a/opencontrail/control/single.yml b/opencontrail/control/single.yml
index 5d3a32d..efdc267 100644
--- a/opencontrail/control/single.yml
+++ b/opencontrail/control/single.yml
@@ -65,3 +65,7 @@
             port: 5938
           user: haproxy
           password: ${_param:opencontrail_stats_password}
+  opencontrail:
+    web:
+      database:
+        port: 9042
diff --git a/openldap/client/groups/admins.yml b/openldap/client/groups/admins.yml
new file mode 100644
index 0000000..36eac5f
--- /dev/null
+++ b/openldap/client/groups/admins.yml
@@ -0,0 +1,20 @@
+classes:
+  - system.openldap.client.groups
+parameters:
+  openldap:
+    client:
+      entry:
+        groups:
+          entry:
+            admins:
+              attr:
+                description: Administrators
+                gidNumber: 20001
+                memberUid:
+                  - admin
+              classes:
+                - posixGroup
+                - top
+              # TODO: Cannot set memberOf attributes in our LDAP yet
+              # member:
+              #   - cn=admin,ou=people
diff --git a/openldap/client/groups/init.yml b/openldap/client/groups/init.yml
new file mode 100644
index 0000000..a419001
--- /dev/null
+++ b/openldap/client/groups/init.yml
@@ -0,0 +1,9 @@
+parameters:
+  openldap:
+    client:
+      entry:
+        groups:
+          type: ou
+          classes:
+            - top
+            - organizationalUnit
diff --git a/openldap/client/init.yml b/openldap/client/init.yml
new file mode 100644
index 0000000..25812f6
--- /dev/null
+++ b/openldap/client/init.yml
@@ -0,0 +1,15 @@
+classes:
+  - service.openldap.client
+parameters:
+  _param:
+    openldap_server: ${_param:cluster_vip_address}
+    openldap_tls: false
+  openldap:
+    client:
+      server:
+        basedn: ${_param:openldap_dn}
+        host: ${_param:openldap_server}
+        tls: ${_param:openldap_tls}
+        auth:
+          user: cn=admin,${_param:openldap_dn}
+          password: ${_param:openldap_admin_password}
diff --git a/openldap/client/people/admin.yml b/openldap/client/people/admin.yml
new file mode 100644
index 0000000..fa1a2c8
--- /dev/null
+++ b/openldap/client/people/admin.yml
@@ -0,0 +1,26 @@
+classes:
+  - system.openldap.client.people
+  - system.openldap.client.groups.admins
+parameters:
+  openldap:
+    client:
+      entry:
+        people:
+          entry:
+            admin:
+              attr:
+                uid: admin
+                userPassword: ${_param:openldap_admin_password}
+                uidNumber: 20001
+                gidNumber: ${openldap:client:entry:groups:entry:admins:attr:gidNumber}
+                gecos: Administrator
+                givenName: Charlie
+                sn: Root
+                homeDirectory: /home/admin
+                loginShell: /bin/bash
+                mail: ${_param:admin_email}
+              classes:
+                - posixAccount
+                - inetOrgPerson
+                - top
+                - shadowAccount
diff --git a/openldap/client/people/init.yml b/openldap/client/people/init.yml
new file mode 100644
index 0000000..a4ae94d
--- /dev/null
+++ b/openldap/client/people/init.yml
@@ -0,0 +1,9 @@
+parameters:
+  openldap:
+    client:
+      entry:
+        people:
+          type: ou
+          classes:
+            - top
+            - organizationalUnit
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
new file mode 100644
index 0000000..d0be2ed
--- /dev/null
+++ b/openssh/server/team/l1_support.yml
@@ -0,0 +1,45 @@
+classes:
+- system.linux.system.sudo
+# L1
+- system.openssh.server.team.members.aleksandrdobdin
+- system.openssh.server.team.members.aleksandrrubtsov
+- system.openssh.server.team.members.anatoliineliubin
+- system.openssh.server.team.members.antonrodionov
+- system.openssh.server.team.members.daniillapshin
+- system.openssh.server.team.members.danilakhmetov
+- system.openssh.server.team.members.deniskostriukov
+- system.openssh.server.team.members.dmitrygoloshubov
+- system.openssh.server.team.members.javierdiaz
+- system.openssh.server.team.members.josuepalmerin
+- system.openssh.server.team.members.krzysztoffranckowski
+- system.openssh.server.team.members.matthewroark
+- system.openssh.server.team.members.maximefimov
+- system.openssh.server.team.members.michaelpetersen
+- system.openssh.server.team.members.mikhailkraynov
+- system.openssh.server.team.members.nadezhdakabanova
+- system.openssh.server.team.members.renesoto
+- system.openssh.server.team.members.rudymccomb
+- system.openssh.server.team.members.scottmachtmes
+- system.openssh.server.team.members.zahedkhurasani
+parameters:
+  linux:
+    system:
+      group:
+        support:
+          enabled: true
+          name: support
+      sudo:
+        enabled: true
+        aliases:
+          command:
+            L1_SUPPORT_SALT: ${_param:sudo_salt_safe}
+            L1_SUPPORT_COREUTILS: ${_param:sudo_coreutils_safe}
+            L1_SUPPORT_SALT_TRUSTED: ${_param:sudo_salt_trusted}
+            L1_SUPPORT_RESTRICTED_SHELLS: ${_param:sudo_shells}
+            L1_SUPPORT_RESTRICTED: ${_param:sudo_restricted_su}
+        groups:
+          support:
+            commands:
+                - L1_SUPPORT_SALT
+                - '!L1_SUPPORT_RESTRICTED_SHELLS'
+                - '!L1_SUPPORT_RESTRICTED'
diff --git a/openssh/server/team/l2_support.yml b/openssh/server/team/l2_support.yml
new file mode 100644
index 0000000..6c54999
--- /dev/null
+++ b/openssh/server/team/l2_support.yml
@@ -0,0 +1,38 @@
+classes:
+- system.linux.system.sudo
+# L2
+- system.openssh.server.team.members.aepifanov
+- system.openssh.server.team.members.apetrenko
+- system.openssh.server.team.members.ashishkin
+- system.openssh.server.team.members.atarasov
+- system.openssh.server.team.members.dklepikov
+- system.openssh.server.team.members.dsutyagin
+- system.openssh.server.team.members.ekozhemyakin
+- system.openssh.server.team.members.enikanorov
+- system.openssh.server.team.members.fsoppelsa
+- system.openssh.server.team.members.manashkin
+- system.openssh.server.team.members.nkondra
+- system.openssh.server.team.members.obryndzii
+- system.openssh.server.team.members.oliemieshko
+- system.openssh.server.team.members.sovsianikov
+parameters:
+  linux:
+    system:
+      group:
+        supportl2:
+          enabled: true
+          name: supportl2
+      sudo:
+        enabled: true
+        aliases:
+          command:
+            L2_SUPPORT_SALT: ${_param:sudo_salt_safe}
+            L2_SUPPORT_SALT_TRUSTED: ${_param:sudo_salt_trusted}
+            L2_SUPPORT_RESTRICTED_SHELLS: ${_param:sudo_shells}
+            L2_SUPPORT_RESTRICTED: ${_param:sudo_restricted_su}
+        groups:
+          supportl2:
+            commands:
+                - ALL
+                - '!L2_SUPPORT_RESTRICTED_SHELLS'
+                - '!L2_SUPPORT_RESTRICTED'
diff --git a/openssh/server/team/mcp_qa.yml b/openssh/server/team/mcp_qa.yml
index eef4e3f..5fc30d4 100644
--- a/openssh/server/team/mcp_qa.yml
+++ b/openssh/server/team/mcp_qa.yml
@@ -20,6 +20,126 @@
           sudo: true
           full_name: Tatyanka Leontovich
           home: /home/tleontovich
+        okosse:
+          enabled: true
+          name: okosse
+          sudo: true
+          full_name: Oleksandr Kosse
+          home: /home/okosse
+        yshapovalov:
+          enabled: true
+          name: yshapovalov
+          sudo: true
+          full_name: Yevgeniy Shapovalov
+          home: /home/yshapovalov
+        dderyabin:
+          enabled: true
+          name: dderyabin
+          sudo: true
+          full_name: Denis Deryabin
+          home: /home/dderyabin
+        ababich:
+          enabled: true
+          name: ababich
+          sudo: true
+          full_name: Anna Babich
+          home: /home/ababich
+        esikachev:
+          enabled: true
+          name: esikachev
+          sudo: true
+          full_name: Evgeny Sikachev
+          home: /home/esikachev
+        akalach:
+          enabled: true
+          name: akalach
+          sudo: true
+          full_name: Andrew Kalach
+          home: /home/akalach
+        aheczko:
+          enabled: true
+          name: aheczko
+          sudo: true
+          full_name: Adam Heczko
+          home: /home/aheczko
+        ssokolov:
+          enabled: true
+          name: ssokolov
+          sudo: true
+          full_name: Sergey Sokolov
+          home: /home/ssokolov
+        mshalamov:
+          enabled: true
+          name: mshalamov
+          sudo: true
+          full_name: Maksym Shalamov
+          home: /home/mshalamov
+        schipiga:
+          enabled: true
+          name: schipiga
+          sudo: true
+          full_name: Sergey Chipiga
+          home: /home/schipiga
+        obutenko:
+          enabled: true
+          name: obutenko
+          sudo: true
+          full_name: Oleksii Butenko
+          home: /home/obutenko
+        ylobankov:
+          enabled: true
+          name: ylobankov
+          sudo: true
+          full_name: Yaroslav Lobankov
+          home: /home/ylobankov
+        vryzhenkin:
+          enabled: true
+          name: vryzhenkin
+          sudo: true
+          full_name: Victor Ryzhenkin
+          home: /home/vryzhenkin
+        dkalashnik:
+          enabled: true
+          name: dkalashnik
+          sudo: true
+          full_name: Dmitry Kalashnik
+          home: /home/dkalashnik
+          email: dkalashnik@mirantis.com
+        rpromyshlennikov:
+          enabled: true
+          name: rpromyshlennikov
+          sudo: true
+          full_name: Rodion Promyshlennikov
+          home: /home/rpromyshlennikov
+          email: rpromyshlennikov@mirantis.com
+        vgusev:
+          enabled: true
+          name: vgusev
+          sudo: true
+          full_name: Vitaly Gusev
+          home: /home/vgusev
+          email: vgusev@mirantis.com
+        rkhozinov:
+          enabled: true
+          name: rkhozinov
+          sudo: true
+          full_name: Ruslan Khozinov
+          home: /home/rkhozinov
+          email: rkhozinov@mirantis.com
+        vnaumov:
+          enabled: true
+          name: vnaumov
+          sudo: true
+          full_name: Vlad Naumov
+          home: /home/vnaumov
+          email: vnaumov@mirantis.com
+        ekhomyakova:
+          enabled: true
+          name: ekhomyakova
+          sudo: true
+          full_name: Ekaterina Khomyakova
+          home: /home/ekhomyakova
+          email: ekhomyakova@mirantis.com
       group:
         libvirtd:
           enabled: true
@@ -43,6 +163,101 @@
           public_keys:
           - ${public_keys:tleontovich}
           user: ${linux:system:user:tleontovich}
+        okosse:
+          enabled: true
+          public_keys:
+          - ${public_keys:okosse}
+          user: ${linux:system:user:okosse}
+        yshapovalov:
+          enabled: true
+          public_keys:
+          - ${public_keys:yshapovalov}
+          user: ${linux:system:user:yshapovalov}
+        dderyabin:
+          enabled: true
+          public_keys:
+          - ${public_keys:dderyabin}
+          user: ${linux:system:user:dderyabin}
+        ababich:
+          enabled: true
+          public_keys:
+          - ${public_keys:ababich}
+          user: ${linux:system:user:ababich}
+        esikachev:
+          enabled: true
+          public_keys:
+          - ${public_keys:esikachev}
+          user: ${linux:system:user:esikachev}
+        akalach:
+          enabled: true
+          public_keys:
+          - ${public_keys:akalach}
+          user: ${linux:system:user:akalach}
+        aheczko:
+          enabled: true
+          public_keys:
+          - ${public_keys:aheczko}
+          user: ${linux:system:user:aheczko}
+        ssokolov:
+          enabled: true
+          public_keys:
+          - ${public_keys:ssokolov}
+          user: ${linux:system:user:ssokolov}
+        mshalamov:
+          enabled: true
+          public_keys:
+          - ${public_keys:mshalamov}
+          user: ${linux:system:user:mshalamov}
+        schipiga:
+          enabled: true
+          public_keys:
+          - ${public_keys:schipiga}
+          user: ${linux:system:user:schipiga}
+        obutenko:
+          enabled: true
+          public_keys:
+          - ${public_keys:obutenko}
+          user: ${linux:system:user:obutenko}
+        ylobankov:
+          enabled: true
+          public_keys:
+          - ${public_keys:ylobankov}
+          user: ${linux:system:user:ylobankov}
+        vryzhenkin:
+          enabled: true
+          public_keys:
+          - ${public_keys:vryzhenkin}
+          user: ${linux:system:user:vryzhenkin}
+        dkalashnik:
+          enable: true
+          public_keys:
+          - ${public_keys:dkalashnik}
+          user: ${linux:system:user:dkalashnik}
+        rpromyshlennikov:
+          enable: true
+          public_keys:
+          - ${public_keys:rpromyshlennikov}
+          user: ${linux:system:user:rpromyshlennikov}
+        vgusev:
+          enable: true
+          public_keys:
+          - ${public_keys:vgusev}
+          user: ${linux:system:user:vgusev}
+        rkhozinov:
+          enable: true
+          public_keys:
+          - ${public_keys:rkhozinov}
+          user: ${linux:system:user:rkhozinov}
+        vnaumov:
+          enable: true
+          public_keys:
+          - ${public_keys:vnaumov}
+          user: ${linux:system:user:vnaumov}
+        ekhomyakova:
+          enable: true
+          public_keys:
+          - ${public_keys:ekhomyakova}
+          user: ${linux:system:user:ekhomyakova}
   public_keys:
     ddmitriev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuD4wJ8hzkchQ0pfgdwWukQyps1xYRfHOsjosmDu/mmgaXVud5mnpwb2q35E2YYTox2mx+ulJqyS+099gz6MPg4P8D5qdMuRbAsJqbceLaaIGQhdT8qgSo7ESrl5pwvYnfWzKLKF0z5s7nrW0nvArC40zhV9o9XpvzzzSFByepWfkwA8ReldGUYVvTKp8YXaCrqEdMZrU42adPM2nl+fYBbGF+h4/Ka247aVjPeER0blV3znFXbv2Kf38G+i/TEGaktgpBdtGGDi1tX2loMypmTJeqZRJnM0Eoly0BnynB7CSxn11eoIXBUe1mVYNqmQd1hw6uh59iymhK5j939v9J ddmitriev@dis_xcom
@@ -50,3 +265,41 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhf5ysfuTmOO1975vUCag59tL+lQwfmWSQglZvKnMLnhO1P39VXDHCMla0Uh2IXI5abSrsq4xVXNfD3R5cnzPW8rG1h3528tSpszwZp28LSMkMfEZReEWVq2XoseRfzd7b3AaWN283NbQGPL6NRwyg9hLRG5dipdRxnDSutvDg/J4gbzeuS+QjXP6ymIs9vBhrpvHlQ6POI7Zedp2FOmqbGf3OK9wuBkD1Dhf+hTXvFSq1PFxmKB7w5CWvAOGGuapb+IYspPlDwd8lVWbvp+D3DchkhyL36gQyl2In/NKG2NR4z6dETX8JON5OMe0UipeKAsXInoVbyZfs3uZgdKDB dtyzhnenko
     tleontovich:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLtOIkzqNA3wdLQyQxLRaRwi4oXnRCPCsrn8oaAyxDXHhU3+ATGvXBdbkA6xU3d4hAohru5DwxGzyikzAAtrv79GWA9/ryXPcplmxBiJcN36GyfW6eX89hI1VIJMKMG3cUs0ONf2D+hENhbaO0pu4hNAb5HFcHAuqecQNOFFrJ3RqnWM8RWgJPY3iF1A9JnXwVrUgME962VPlydYvlL5mLk+h+4DgHuPipw/Qana5a2JfdErsPYeAdDwG8frCdA9wvMzVVZv78s0lA6BritQdd0SyZejbOlT9KVHhSOhqnWdCtd8+nZXzXgjV7GAiv7H9yE4Ee6QYSHUQHwJxZs3ZT tleontovich@tleontovich-pc
+    okosse:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmb5FWl6dgK09TmxVYuvmfLyy6G9x2ed6dvXf0kfpMaaP37CST7t0UZ2m23qGF4T0ZGYbCkIdr+6zWG+a5ozuJiqoJwE3dLun8pnCwAjkmUxRyVIi9M6f3us4z+ooBZTBGWTGe7/ryqePpzyAjlw4om23pDTt09YQq5WDirdrFBNJ9ZlTwubbEWMTtHW5XMEui7s1IiggYmHI4cVh0lg7k/neoAk/5ZD9LI9+p2sISCOpD/f7C/BkgVd/4iCFNxXsPmMwRadBVYo8diB0OOekM6qsW5rfPCczCi9oavxjy62Z2XZ6wHPZ3HgeK8MhVJaRGge6zMTnB98aYh9LWfXFv okosse@okosse-pc
+    yshapovalov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCWvKNMfHlugrEUMtDDJzZb3T1UzThOp/UtvQvyFTf1rlKN/i14b1cCVmbPaSKR6W4bqZ4YLnRfb5Z66ktEACL02RdC4FkCiGa8yFDAGXLbM2WJhHyA3ksu91z3wK2QRuKJuZuvjmelds1shTK1a31LgTqa7CNPfkfE9h+CsAizZfAhHg1yVqg0/CGKP8+iV8owR5MP9t8+JXTC40G6Qkjzrf/vuA13bT1X+JSWzLoI2OefezZ+X128fLkssPkr4IS1Jg+cbRvSRmGTVjvtk4dnDo3QxF5lUl6JZAUjPslMCxaqDvRFXn86UZ74g6iJ5dZjrU0vn6X+Ov+KVYmZ5znd yshapovalov@ys-pc
+    dderyabin:
+      key: AAAAB3NzaC1yc2EAAAADAQABAAABAQCljOKDvsoOsQFOsabL68kVTlzZOObP9d13Oqc7Lafew1MJx0uaCjabpfcaSOrLrqYu42akkpnHQ0ypQbzRWDREYWKciKmE1TKzRUTXZIF1FNNoFrDT7FfjrKVP42alk4isB0Yj9mvA6AhJGFM7pAy55dVEII30Rc0wKW6XCBAX8fIq3rHDnDYq7KuaSAtxkqj6u/C9eUcGBB+JIQ0NRhTVyIZlqjNeojXoM7py8pGDnGj54bIbpFtYiLU1hbowKfVVcJgHIE+17KsNvR7HwwZZ5lbUxzrOiOnoBq1JKF15JHQ3el358aKw3Ee7rqmVrHszohEBLfxRbWbACoTUem75 denis@usvbox
+    ababich:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDo2CJRAQeUeZbjDLdcE7GxQM82kL41YIyuOpNbpzFXphK4gljSMoKH9TJRdlx5S/AGDJltosDym9lY7gi3DqW4z/+k9pHBLQSdr4yDp0iCJcZc8LG3KUbZkZwwCYjf8FTz5tAWgS9z8IKNRMcfReJCkeaFI29p0PVgPqchNaQHUG40iiIl51uLsF4pCF2GbF/10drBCubENlWLoGv/+OwiNzeOvGANeX8jBivevfus2hZbTh1Zf8HsXqd5HLTMRn/BJOJRbLFd74BauAY/J/wOM9SJOaFZU201A2eYgMsamXT159O8e1Q5GMtL4uhseXZzQgKwF9tW/EFBDPwXvC+n ababich@ababich-pc
+    esikachev:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9zHSDorWIKSB5QH4y8bcdzsx0yE7cA/Eg3M98+qPkZPAJl1FgFXYo8XcMod52tVDsfap/mLg1k0pwmmocUGSoESAUs7Wdo5wKhRdsEo+SYxjfL3QVIlKpocho7DmBgudkRLk9mjzcjNBdWyuw9dH6/hy+FK77i5xUqIwJR0koc1WcvzyzZcacMZLYG26rxO0CMC9aTWIZcEFrv4hk7CSb+KFNfbvRN0vHjdp31GuEWDVZ6oSv8V5ipGCJS/HCuTzb/Wqjxgwh5OAqZoepdBaiqNhEmLbFBqQ0vtBwTjWixDRLry06s4J5WWFSGu6GrRbgHnd08752o2TiB28Af4F/ esikachev@Evgenys-MacBook-Pro.local
+    akalach:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOGQ6j4Fy1Lm00UihYbmJ88ctLGaVXlSPys8lk1gUsT8lR2oOZvERl8FIsSlN47Z2wbvcTCq3aOlxvuV/UyT8+r8LEGM5Wk1XSsDMRsvc92qfeRQhAJDp8f+2pUkNfc8rXaPKUDkz0iI6iwANOIR+P7Xx11w//0itDBBKX7sEBsxJbSjm6DLyfs1yn6tT5S4kqAcq5jpX3YMH0MqhcWPS0tK1W6QW13KDt317CIWmoVQMvdmzF/QenXIbV6PZjBy2DvkFVOThdH+OZDMgo4mggGqnsokjy6ZjT0LzKAptKrFKd/xRQUUelWY5XvXtH8RxVtg92Xqh2CjdA4OfYPn6x
+    aheczko:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGGRD/zStceB/CAJu8bnsWs9VPWY8W1F6fz2AvX2BiyEXCE2W4uMY11In+qHQtIaWeyWVR/XmoCw0mZxk7emTz91Y1FioinEgumkhpNPLY0fPdDHzwu3atCjAc7B3ZCCXusiUC6k99aCa9YXIZ0/0/75kqilRmIcxGeneL9S2+iuFn/HSpNR7IZN03AEzWgIfXEhB4lyNs9n3RHf+XXy2wxAKkcKpMyocEO9gc3uLY5OdUhGFHRKhEZwgz3K6ysDOCIOTkiiJ8KXMM07FIDLjs5pjUjnVkZ1kWq+virLMbhhyCbMR8zrPvWMjP5oYGm9U9aEeUMA5iMCa7K+qs2AM3 adamheczko@Adams-MacBook-Pro.local
+    ssokolov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHuIo/dLh5qt+8jV4UUPqDo6ktJc12HVFg10S3hinjJUlAOxq8554l0LMvxmiZSrIjxGE/qUr8PlRgjLi4x4zQDggBdNGC/S4zcYNEiTQ7HaOFOjEJ0si6ODZfssQsr/A/bXdNOZE/nIZTUhTddJG+3nKUvuPnTeOQLqEOp4IFJwwvwnD2Wo4I1nc6+yDSJLuG8ANLtLlStzpMKr8wHvPWCUcB9B1oeeOVtw9+vEKxuUBkheXnXMh7shiyt4vmaFVbcgcHGPg8DjP8alKeAbIk0AYhiuNHV/rFzL+/kfImS94gU93A8vt0U2vCj8golqt2huxJblKDr4Abq1lDXLwn ssm@n104309
+    mshalamov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDISS6h3QAYC7u5njMks8Wsb6dHd/+HnU4nCEkqn7At5V7IdhD8K7m/9woyEdsDEPEHfqIkS7VAtjZbWlpUdNDFFos6yDFusOqLOoEOVdhuVZISUQZpsZExQ7poUN+w2Z9wmxSZ5sAL5iaamMDKhxR/ANL+olnXRxl4qmWSm4RYgQ5z4+Md1gorsy1Lnz1rEalhbUFPtfwiQgWZzNiTat0oMuRVOTASHjvE7+Tu8yt3nZ63OzGGzCBIq94PITh9wjRqoRn71PM8Q4U/UWhMApQSh/GWB0Y5VaCfIHdvnI0V+OIVGecd6sMgqVIy3DH+P4afZ6xIJ5jjeAi27HhuM/Tqr0yHn5TRa95WoH/zp8GVIdNxiBGZdhxEwzUctKzXN9LKmWRd37xywmrnLWdFtDWgE4I4xxadAU1qQqENeGoNnHofalrMPF95VZApkA7kDMNedrPha0bwbErX8gjtVs0K8QCLSc2n94obOCSQKTBx/NEq2Nq28mr9FKcmtFmu5sQYab4AbUmh7e+CHZYUCg0TIWcSEfPjSjur3AwvTq+4rJ0vUCqhthQspgLhkomzaWG1bhSeNs3Tq2Pq9l1kBsaMao2zu0uYu4Na2YzptsqAue7MybHLQW8O7TyMycfGNGv23i1g/EZWUhVyGQswEThkvafymZi5EUm5AbYf7ud0FQ== mshalamov@mirantis.com
+    schipiga:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDamKTbqCQCGW1JLo+4PgntC1TkRrwbDOELyRVHxAlc56CcJE9QjrNnCOTqvgRoAmIC+P86nzUQxwSREMd0qgVCefAxKQVFVQ38oym9G90TF0nx4fFT3hUhEQwjMBjHhR2Vo+uUwbT2Hg51U1gBPx/WFa0U5Cf7V6+XNJ3r22W4XG8OrbuAoapwl4WN1346HEj3d0U6Z8Unsqjx9pRpZ1eYCeng4emLZ1UOhvLBfw22vSTkujjjRdfY6g52Gv4hRsgsS+JWulO+z/qd1GFcUp9j+yIvur+eeTWHelAbXq4kRNQfQjAs6nMM8Hp8gPa5jLYqMz2GgD96p8wOQCdK2nyL schipiga@mirantis.com
+    obutenko:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1AfAmTtaBkg+8osdkG37KSHGc1r7k0ZWIgTR+COgPBnGGySRFrL3paG8PJ+JaEtZwj0git/Kufr+Mlcdln3x21kI3V4Jol0bgfx3d+AVZ2niyjwEHEl1vN6ffevzJUPVvLlUWlykKrEnGp1+RXKT3MEaoDcexzRLRgZB/FLaX79i1tE/AqB35rH5MZLBGCRYJdisUrpj70UHwIsqgikwr3P/JNr5gJzYTewPM8ls9Y9BtFNbFHmU8L9b8jFjmhOnCJmXXJPoLxQYRX+MQbcov7r2omZ95xulRnJsvY6xY2BSe8FAVmT8UzXnkWi3CrXwqPBdutu9GUCsQmH934vdJ obutenko@obutenko-pc
+    ylobankov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDiBwStgCHjvPFYOAJgFXAFSFZaf57fJoSJV2Ijeg3uC3owsfQCgp6xd0aqSAUPYwnyV88IiDhNESeltJc3HmrA7kHWzziKCe4H7HEIg3IPGUKcnG7HF9izkmVTxqI/sXoyPvFoel5mJhtSes3A8Nk8IfWOexTy8NBfh2Te4PWqsYqEmHn2AdJ4oVBBrRDoxH8jac8vimOCZ742qMvF9lRWtItWatuEA8+moOyzAxLc0k1e7E8Myp37jE7LeXdoCE97rNp3OX7JHnfCYsthbRytA3Xjh8WLTdAaI1RCj0GqnVS3jdPS/Qzreit1gh7c74HWH/h/aj/U2wjHK1X63fJx/ZhzyqCwHjJ3spDPcIZ0tujZhw0ZjD/MiVxRze1EpmVJ3Zt0S6sgrOFXPSeC+3BEW6LD+jVIb33kS5y3bN1CXikv18WdCaLYjOGHolYF18Z5VgrxQh6hq94cSuJCYTDnbhkbww8XXCPiB2JKVF6KlD3MwfqlGKD+pyUWXKF0ZC8J4IO+keMnGGuausOFoRxg0vmpJ0fb0HODGofNIcwqnXSGmTYucBxWVs1Y4vs7NQPNJyzTcXcM8NyPpsG2uy1pwvDo+rTZ/nWFdu1mvW11hfInkNXTXjWljlNwhJCfRyNFvoUbahfRaNaBRIhy4GlGYjAHaMfkdYTYm0Dqt00YjQ== ylobankov@ylobankov
+    vryzhenkin:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDwqFlEKeZDHKPSwIRXN7Bprc9G8HRvuq2ht+XPFixkX3H/GLrsy781PkE9CM3ZVhz7h68Rmyt3n6B1d0ewvcCHj2m/rixJj8rayNOuQN7v8yflTB/iKFZW7BZ9yxu3OSkQScrjQ6YRcifDYBMDFTkMrKsrIkfMBasvOGcK6BoPx1s3diupG8gN0fpGZ/BPIia+mGz+3jRk6aFBI9n5G1bbFikUPonhjlEoHoQv2ngKGvmDr8FWoItuvzQ7HH9mEwRTqVMzCNdeVxvNNNTLJ72ikig1FaCyAxGViVCa2Xidug9iRHE6dUWsqvaxNtXIrGX4E5lvNXHiJYi/mVcQR+Dx freerunner@pegasus
+    dkalashnik:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAyz5ovMK/rRxlhiy7x4dVwFkUqN/hhdVIpsQRQoGgTOjVhH6Y+eTE3si0RRq/HKZMwkcClJIqzMgjoajT5eQQphQrAAn2pwuCyZj0mXJJ1RSXQm+nSnhoqyB1r7Nl3keopgxrDlBLWyvyS3dJM9RJy4TimIwhuSA3qdhmfeqRm5M=
+    rpromyshlennikov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3dCFNCYVxHQQD+/X1JJ9auAzpj15AkEl6yO4lJ1XL43ljxJbzWXXl3RN9vAjiBE1tvxEfuPEIxF7kO2sc1xPKtkw40RIwXrDIGfjlVCaBLtnxCPnCQX349UMSJl/AXpkHqKGVeAW+AO4zbeI8XnS9aDNMuX6ncgrLRMxWCxETL3J/IIE1LZ5v0QvyQBHuJc5jbyODVb4onff296SbjzYm96elJZcRFo4FzFaIcKtis+Sm4+6OAGCNDIXxfB9e5TK579x+L+ci/W1k83Fcz6NpQU/OM1R1CZVMap/Xet424aRMFPmA8sTF4hdYvWd6adBihco2isaW51b1Gkc+K9N9wELiEBMpdKQtqkPOvm98UhoRk7Wp+8+zSamj1uEs/7m6VCGFebq8V3xqTexWH2dCUznxZ5+KS6WLBh+3f4P6wG8VuWfgFjIUf7jjYKjidBXfSXFDxRkhf/LV8V0jLv+Ma1mjKBUX+rk7IFxm0X/PkjqNhVFlg3rH4Wre0+9WdsTCyzWS0HEaTxIKdPtwwULLEiwClO1LLebdlVjx9yhen0czXxMAHONbZeTvxN8ULfei+b7c07oYm16T8T9JAdiWn5nGxiT8TAUrCPBJMpbE4xQJLztYhAbMpfhFSdkKfTotFxTK9AKpTg4TZFY0NYOktFtV2R9ZnzP7hHZDSIg2Bw== rpromyshlennikov@mirantis.com
+    vgusev:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrCyaZjs8hiwx38LfpeQ2z9n9ptwQ7gFrhq2z5sK9q/LQMCubbnp5xhyF0SMY1jmQUewBOKXhnq3QSX+DmtNsnhitnZBw2BE5PBXllCBWMMiWULfAYvB0of728Q3EEjrtyfHkt7o2E+CvreVJcVI4kBwjKh5WpVBZ8mmkW/sexLGMuYu0bUWjCddu6ZlhUa+y14VZKOKp44auemza1VL/UzqOVZkBAfR2gPV2pBG3Im+SlnOlDRxKPEXQbsn3u/sNeZq0wSY++khY86AU7jAKfL2NiNsoA7CyB0jTEKwYO3vOWOhECifZuHwY/TNWyRFWM2ImW3mT9aO7nE4w4jXXJ vgusev@vgusev
+    rkhozinov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCti9e5kyNEtX3MEns+eehUCzaxZmI8FWkWrLeRQY3jLUGzI3+N12tA7gKffczGIDP/ttnDg1hl98Yw28mkrIfYYMwRMqsBkGmYZyu6EXccyde6/5U/dgKVFGYLjWmbAAcaIaO2YoxqUJKvIanfLNHTRI29KwgxpaMCtjB7+jHiw/V0MF2xKi8yJgajZgh8iXPiv50BGjICx1BuqgqZb5jjxouV0FpU28mBOobqtaphOHeFPHk1Uool9MBt+2ocAjLbFhozmx0xryBVG4FGreovK60Zz4PuGCUL98rSTt8fbebfVokqkCG+sjykTcEQ8h5/0BUR4sPXw5mxATHD/AOv rkhozinov@rkhw
+    vnaumov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDno7VX9jiveRCF7d1C/FK24WLZwCArdrBBOQ1uHqpkUfUYtG6vrYgt/K2n2FXoX55lbeoJAwuNC9HviaY+vQAekCI4W2s02iD+j/GRUwitpv+lJZXSmt/q2PgLz3OFUIsJV0EwyNl+bexM4+2jYTmHeDMrXAsHL4I2GUv5sFycA11UhxZ/Qm2QMKlRZhje/IJieX9u2BhgYuPYffASVl4AhwtDagYdqquwUXrfu/dQRt/U9w0Di9alApcyPqiW9LbXUgwha1G9+ScQnxmp8WvmaV8YR+nf2OFxQHvOZPYjCzniRnYpaQUMeUAkJKxDwqR1dAKYnaQY5TfXtFwfzsjN vnaumov@vnaumov
+    ekhomyakova:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEaWwPVtsj39s0A2efRQ1ejL5B7ZetFPmXJDi/8W/gTWIIII3xP750H8QWZfvbjiJ+KBCxOndDL8aL3SHC/iRCvmzrVkgXBgf5J9vTu8uas7BNGf7oiDBuB75fryDtkg57Pam/A47IlgxJTCwYz+ofUGHb6WrWwQ+MUTEWAk9PB+RPyxjwNC4XxEwtULkKQMgFmg52kauESpx0R0ni8/LLKUJucdse7NCcUTvEcafppnXsxdZ640G0K82ADS1neg1CDwdtCPKLG57GZYs4iL3sPcOhQxnVUoONXsRpBD8kQTKOMl5R6hTDJHBd3oimUPEXlPqeb/XeGKatVraRA6nJ ekhomyakova@ekhomyakova
diff --git a/openssh/server/team/members/aepifanov.yml b/openssh/server/team/members/aepifanov.yml
new file mode 100644
index 0000000..cb7c8e9
--- /dev/null
+++ b/openssh/server/team/members/aepifanov.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        aepifanov:
+          enabled: true
+          name: aepifanov
+          sudo: false
+          full_name: Andrey Epifanov
+          home: /home/aepifanov
+          email: aepifanov@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        aepifanov:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkat3pSeBI83ZtYOJ6Pg5DKD97hMNvwJc8KAL7QPxYj/h8QaVs0EvRZnjXAmr8H7MBRoF6SZJjCPdKab7zDrlimc2Z6KmorBYjv2TMBLPq1xC4j3hEf7V6ATUTh19APKiaF8yUD/bVSB2Qpwg7P3buI/VgXinxZbFfOjllaqYyjqhnnTM842XmdyikvlJYhBNbOXPD/v1Rdw+b50Aa2CgRz6m8J+PjQfz2Rb8oZ4UUgXuDttp8oPcFpWEWJGmnJ3FeGpS8a6KGTO4DQZf+F0lO3A+y7121qbz9Uypxo6znbAHa77OiyzX625WwHeeH8HxF9ANLgKv9AlE2fAk6btS/ aepifanov@aepifanov-nb
+          user: ${linux:system:user:aepifanov}
diff --git a/openssh/server/team/members/aleksandrdobdin.yml b/openssh/server/team/members/aleksandrdobdin.yml
new file mode 100644
index 0000000..7739e45
--- /dev/null
+++ b/openssh/server/team/members/aleksandrdobdin.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        adobdin:
+          enabled: true
+          name: adobdin
+          sudo: false
+          full_name: Aleksandr Dobdin
+          home: /home/adobdin
+          email: adobdin@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        adobdin:
+          enabled: true
+          public_keys: ${public_keys:adobdin}
+          user: ${linux:system:user:adobdin}
+  public_keys:
+    adobdin:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYuMN95aiH6BDEvPPS2vD7/2/bE0hG6KvfJL4TD3TBs/BGtyeFWUyz25obYxYdyMfzVZIrpv8+Ib1ClREEHiLxOepANvFbw9s2B5SzVoDW8lI0l9hM6jByg4zheoZOOZf4kXQeygoa9fsJi0nB+kLP3oqIiNtKBa/xB2gmBC1O/V3I0lE9lY6Rx9xs6N5+yr+2t1ngIqLMxQRDcahTDp+kMvJeobzsQiQvL7dc6qxeqglGmUwvCXEvZad6Avp6EwEvRl+f7Yy7fTyI5uiOA/SieDRFc//VwzgAy6aXYDVzfdWMFRCDXiV3+p63G23YsnhJXeZM0lb15RKST5E7I5yP
+
diff --git a/openssh/server/team/members/aleksandrrubtsov.yml b/openssh/server/team/members/aleksandrrubtsov.yml
new file mode 100644
index 0000000..e9fb4a5
--- /dev/null
+++ b/openssh/server/team/members/aleksandrrubtsov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        arubtsov:
+          enabled: true
+          name: arubtsov
+          sudo: false
+          full_name: Aleksandr Rubtsov
+          home: /home/arubtsov
+          email: arubtsov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        arubtsov:
+          enabled: true
+          public_keys: ${public_keys:arubtsov}
+          user: ${linux:system:user:arubtsov}
+  public_keys:
+    arubtsov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDceCojbryph3bYRePvIrnS05jyukYkP/ZAgTSuIqn8Lzm7speEnKvoPXz28uc1UklxI125vXwAnrxf/Ogtw0qASJd1NGTk+0Qal+jFdRSamszHvlvEmL0Eh0yFIpDGJQRStXrTdryRumr3g7xF+vFgoh9nlb7vHNj/14PWBWrDNSVCtH2/gskYRVSrydgxpHSi4CA7bRpC0FD3X7fLSnAzDRFld/XPkPxM6Tpg+Dajlk62DzP2cLfM0OAR6PoTu31kT4W4fwnhYwoT0uNwJNQ28uiyHutUwioX3evb0Dys2tSK3w7i7bHpn0PdPClHz/xgg6PB8HdxpMApq/Z56FZx
+
diff --git a/openssh/server/team/members/anatoliineliubin.yml b/openssh/server/team/members/anatoliineliubin.yml
new file mode 100644
index 0000000..a86785c
--- /dev/null
+++ b/openssh/server/team/members/anatoliineliubin.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        aneliubin:
+          enabled: true
+          name: aneliubin
+          sudo: false
+          full_name: Anatolii Neliubin
+          home: /home/aneliubin
+          email: aneliuubin@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        aneliubin:
+          enabled: true
+          public_keys: ${public_keys:aneliubin}
+          user: ${linux:system:user:aneliubin}
+  public_keys:
+    aneliubin:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCSj7OItCm3z4PerRp+KIh50YpYMzE2QV6xq+PnqrK4otDqjrXWRSEXiimsyWM7s3a9XsgGC9Tc1SUPX2r1ZLsKZUVpP0V8Amz1YTKAw9dJ43rhTMQEIPCsr5Bk3/b/criaWSWly7jsRDonqGor+EJAfQg/mEyYpa04wRZ2TYQKhM0o2mx7BKDV/Xc2QqskT4Vqimp91F/OXwDsLUP+NDSPtyG/AalNBez0p7PDPV1J/S8MipgPUGvQLddvvJ8VYxH66WpNt4IJVrc5YBp0ty8lj+WPFFxgaQ0yWHvjmlatGeAI70F8M/szdbIyn3ph9t7aXaGhOnWumqZkwqSWvY0F
+
diff --git a/openssh/server/team/members/antonrodionov.yml b/openssh/server/team/members/antonrodionov.yml
new file mode 100644
index 0000000..a4347f4
--- /dev/null
+++ b/openssh/server/team/members/antonrodionov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        arodionov:
+          enabled: true
+          name: arodionov
+          sudo: false
+          full_name: Anton Rodionov
+          home: /home/arodionov
+          email: arodionov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        arodionov:
+          enabled: true
+          public_keys: ${public_keys:arodionov}
+          user: ${linux:system:user:arodionov}
+  public_keys:
+    arodionov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDR4n6F0zmhsB3SutXA74bWANA5DZVekZKB50UVuT5aBXDpAiTPWHq+OUmF1Ptmh+T7jSJClHeaPQTcWnN7Z0knKqGNynMsL560Cp6z3cHh40FLodVSCcoHyqPiFS9kGjOsgM5+VsKAUDy9Dgh7lg8YJBVUSnpRu2f3PnLiKTh656oe2+xBHmYWCZEKTS2Qu60e4cDtBvpWbvsB+89FKM5oNArJyd7SQzpuIj071qbQoRla/nG8J2mOZUVCfXGNl6+JsbDxh6C1aeEgyjm5yy3ODpeY2eKMwlaIKoYtzolwshkcJw240q49PKE8OI2gIAt95rVXRuYpC9gm61Wlf91Z
+
diff --git a/openssh/server/team/members/apetrenko.yml b/openssh/server/team/members/apetrenko.yml
new file mode 100644
index 0000000..e754a8e
--- /dev/null
+++ b/openssh/server/team/members/apetrenko.yml
@@ -0,0 +1,23 @@
+parameters:
+  linux:
+    system:
+      user:
+        apetrenko:
+          enabled: true
+          name: apetrenko
+          sudo: false
+          full_name: Andrii Petrenko
+          home: /home/apetrenko
+          email: apetrenko@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        apetrenko:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU7eLohJKXXB57H/buBlUcBTQXgsXmGXxMao0PQthdfDWhFKXc9fI+1rdsNjA8NPmq8gYdqldOgoIFAmBSwK/+z12ihIGmQJY8vRhr5jnsxee8VZczEj1bhYq/72mpN2KMxiL7Sv2l+WknviqitLzLgYZr17nJtqRdbhiqhEVQOZWKIngRZb4HIdRyA8qCpCFFbUN1etgsVuQaPMwcPdHKHHUzf2hBaELDBF+liVAJzwYlxBQ7m183K6zZ7Gs+wMKphVA5PjyPQbpA3ascF3fdottsat9QJOjrQsXlu+gekPy+fK8GkzDCrCWVcg5LHO+hj3ZnFIjEPxcPPEFo/NRF apl@MMO.mirantis.com
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC9cTDTzDVzIhZi/2F4tdEEIqewAOr8YY55Hk+zhuNZSZeI47eKVBvn09p0uiBLQIjrtO3TNh/93Bd+ts/wqwyembXdx5/hW+WdbpneRr8dRI03VEkLomHQqSsXMkr+VvegMc7i+266i5yDC1u4awX5+pR9WWzqaJrybNItmVucRGLGucx7qownV+Kp+8xXIG3lgT2fJw0qbv6hTbdvl7uw1JJ7bKhVxdeyeiv9blWLdQ7oCzQbjrQq8wlJvUfzNOGURMaFRQO4MHvecsBO99EgAaSqRmsDSLGQ/90RMH72BfP8YU/zSRwZNZDDq091oRhowgB1zfy1VgKm0/At1sswcsmfH+H/aC/RBB3NmG5GZq5uqRvgjlC4dz0GXalcJLN/NqQYywQ5WlOp518C5m2Is6t8mNvZh+is2GrmvCX97Y1gvzn65lUdfCP+Ee397mBi8XP5QZ4ojZ+SDt9efgpFUbmhbei2mNF9hpt2fhvLCv3HCayG9M/1QA9m3WdKo3gZKTBbMfKxU5mlTWsSLOt/44zMxdBLFq5gyhof7GxZiMeEllMF9v1cX0MCFlqbRSxfpqJv/0qsU3w9xRwDjWnm51uVeo69apRTlSNOyuXOsLyxzBS3n5cvlJ8L6r1cikmd0sx9LlrNw1ENxELDDIxj77BTcXNQVLfOfrEnSDIt+Q== apetrenko@mirantis.com
+          user: ${linux:system:user:apetrenko}
diff --git a/openssh/server/team/members/ashishkin.yml b/openssh/server/team/members/ashishkin.yml
new file mode 100644
index 0000000..e9a132e
--- /dev/null
+++ b/openssh/server/team/members/ashishkin.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        ashishkin:
+          enabled: true
+          name: ashishkin
+          sudo: false
+          full_name: Aleksei Shishkin
+          home: /home/ashishkin
+          email: ashishkin@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        ashishkin:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWlGbkhGN+DPrs3S/szWdwieH3Zu/E5bXnm8OCNSSS/xHbeSimqCIoAlZny58GYYabvsOmwh6qjiFmLmZq0MIlEc1RjMR95XLBWmhtpvYABRzMnUZUoFQ+cq1Lzo3ina4mLZAs2u27eEFmLLtV3sCcRAiDUnc6VoUne55NwjP4Ns+OL0Yin46Fr6SFxh6NUwi6woH58DWm1bfaisRyHzCBQJNmI3k0XKB9L9inpPMdmjzbdbitlrokHhDHE+ospLjZMBcV+8h1pK0yq/klT04ClJ58KXJeWJq2dz4nNyyVFNE2+DKwk18YUmtKLz/+BZxiaYY4Z5o6tXIttjfzf6Bn ashishkin@m83.local
+          user: ${linux:system:user:ashishkin}
diff --git a/openssh/server/team/members/atarasov.yml b/openssh/server/team/members/atarasov.yml
new file mode 100644
index 0000000..deada75
--- /dev/null
+++ b/openssh/server/team/members/atarasov.yml
@@ -0,0 +1,23 @@
+parameters:
+  linux:
+    system:
+      user:
+        atarasov:
+          enabled: true
+          name: atarasov
+          sudo: false
+          full_name: Anton Tarasov
+          home: /home/atarasov
+          email: atarasov@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        atarasov:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSY2GXoKjTudh4iB8rXj6LP5nARndPoh4WeRYxcz57BdT9Xl9gN4E7wGn81kXoJOue5mYUNhjAvUCzKHOB2I6m/zSp5Fv6YDn6oeuD50vKhA6DkMllTVDX+UAegNRVNRRaTCeiqFlqym+2WbxaPjpuWvxuMcR9aZU5MT8H+UMWKbFpuvS83c/nD9QMC0s80bfz9e8OV/ysHsAvXmgQrkl3T0aKpV6IGU597li9k2z2DO9vLxd61rEsYsedPXpUGVn9l3NGW3Ix7dIOQPDFc/rOHVpwLu8V/Lq9zeo8g/12/50RewQ5TIOA3NPeO0D4FUUfj+yBvSjTDj4v6oTY+dyn tonyco@Tonys-MBP
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI9aXXUufNBbexFsXVPSoaZ8S1gX9gdMGFZUNz9yGdkO5AtGp8A925UCYXZyENB1ZOO7GRFrfeWG2HZEGkcAANw/mWewdNZ1ESnLHSJa/VLtkhOp50647QdaSS5N9jvWbfJOepF6qxfuOpcSZjMj06cfFTXkv65A8jFq4iU/HV6V31csYl00WRF6aFX5u1sgpg4QzklvM4gJykNn8cw2Igi7UhjIvo74HG0UlVFt6qc4yahD2YURn8ZF8A62KVwZ26HbFejzD0S48DivldFGF4AH+tY81CCOrCfJSPs1nemoORwp9J20AnjZ7tGZR5KA9+Op+klvaJxsP4K/y1rBUH tonyco@atarasov-pc
+          user: ${linux:system:user:atarasov}
diff --git a/openssh/server/team/members/daniillapshin.yml b/openssh/server/team/members/daniillapshin.yml
new file mode 100644
index 0000000..da1a274
--- /dev/null
+++ b/openssh/server/team/members/daniillapshin.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        dlapshin:
+          enabled: true
+          name: dlapshin
+          sudo: false
+          full_name: Daniil Lapshin
+          home: /home/dlapshin
+          email: dlapshin@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        dlapshin:
+          enabled: true
+          public_keys: ${public_keys:dlapshin}
+          user: ${linux:system:user:dlapshin}
+  public_keys:
+    dlapshin:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDD8H0HjsSYujNEyR9xTM55l0mpdXyvvjKHAVqRbmep7xvRgY6fdiQmkaAEgcbtGpoopTgwTX7P5GAIbioG4Nfy2pl8l+KwqxA5nCST1AzzxzwL7XJDqpeKUDXzlzNeLZhBS9MuDkuX+NXRCt51s5Dza1wa01asaX1vgTPO42EFfp6a/TNq/db3+8qV7GOK7PHLbGN4fB8KBbPr9ygzby7C4XbDZwLTz7yjr1yTSMLLiRguasGvcun+Q2U9i6J/nHd0Tw1V/FO+CKS0p/L+QVnQ8VhjyiodA6phn4llI6Q0BzIHafFjxqzJ1oiZ30iJSchmVDi9p6Q4VnhkuDxjmNZ6Fukn9SDMEHEgPSIcRSs9yiRXbOd3eBXQaDkAQ++9jFnbyNH5mQQm/hyrwJU6Kwpye168bIl6LT76C+3KIVMSNWTDZQNAU3FWvUXxKRABxoolNrs+rkmOs0rFwWrx+PDX0rydGmwG5QrAHkA1NGZD2dhZCx/NZMfeM8VR/YaiWhL5dOas8Tk1EQpmX1uewEAwCQwQHZTDeenS6mS5AE2wqyYI60meSW1euE9aXjtC0hAlZuxslzAQ9sgShdyBy3sc4Kr3l7fxV/LXlMg/ugb8SMU8vXDgIf3Glz2wFE8jS1T+c27em5L3seTWm/SRIdylewb5GYP8HAPwm6xWLaZZmQ==
+
diff --git a/openssh/server/team/members/danilakhmetov.yml b/openssh/server/team/members/danilakhmetov.yml
new file mode 100644
index 0000000..1835188
--- /dev/null
+++ b/openssh/server/team/members/danilakhmetov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        dakhmetov:
+          enabled: true
+          name: dakhmetov
+          sudo: false
+          full_name: Danil Akhmetov
+          home: /home/dakhmetov
+          email: dakhmetov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        dakhmetov:
+          enabled: true
+          public_keys: ${public_keys:dakhmetov}
+          user: ${linux:system:user:dakhmetov}
+  public_keys:
+    dakhmetov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO//KNaUfZIWgwJBQg8us0uFNoiy9xA5DBlhD9r0ZkRyXSBaOLPpcWwOcfV0+W9d7bp5pchbRNjf2Nrajy+zady4qWBSMqonP8PiDfSVPymxjv8d/KwIhnao2Noe1F4fviHU5TBTWwRiBf53NzNd/uO99hXMUshQ6a3GymfVLsMkrymzyOw7UA9Irdf3K/KRQTbmYyu7Kp6EoIh/Mz8/9wHuFHPmj8e9ynw3T/0050BttgTjAlS5e6CJMq585OsbZvW+YA8H3avR7qXMSb6uRsJs3ZOijDtdj0cWVMvseKgfghq7Q57e0TtApbge1R1apz+zmipkMxVrr40cVRcKvB
+
diff --git a/openssh/server/team/members/deniskostriukov.yml b/openssh/server/team/members/deniskostriukov.yml
new file mode 100644
index 0000000..1f03ef3
--- /dev/null
+++ b/openssh/server/team/members/deniskostriukov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        dkostriukov:
+          enabled: true
+          name: dkostriukov
+          sudo: false
+          full_name: Denis Kostriukov
+          home: /home/dkostriukov
+          email: dkostryukov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        dkostriukov:
+          enabled: true
+          public_keys: ${public_keys:dkostriukov}
+          user: ${linux:system:user:dkostriukov}
+  public_keys:
+    dkostriukov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFjDsPP7Y3cvYo6zI/IG3b9qvFK4b1ehoKk16VooobM9gsuD/goKo9sOVt8+kscxzXuynhwDfn9+7r9SAGnhZ2Bp39KjSPzR9LCk4fkByXlusZZLhHK3wVkjA2QOFqGvECTHZp79KBQWkU9VM3N7xNwEHbfz/5iZM7MK2VpsRG/JjJed8ckJQjL0n3gNKDkMvum0MyDz4/YIIlYy7mG2FV55j8HNJidzedlYATfd9j2OtL73lxN7H7gcf6acw76PXOyYU9V/zLd82AIVuR7LgntVt2GxNmaJzaV0ffaJgoTLqPm3KwsCrxlhgOIikARBt+Oc8O0dEucYsPU3dWXNJH
+
diff --git a/openssh/server/team/members/dklepikov.yml b/openssh/server/team/members/dklepikov.yml
new file mode 100644
index 0000000..e1eeb76
--- /dev/null
+++ b/openssh/server/team/members/dklepikov.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        dklepikov:
+          enabled: true
+          name: dklepikov
+          sudo: false
+          full_name: Denys Klepikov
+          home: /home/dklepikov
+          email: dklepikov@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        dklepikov:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7yxcnhYEf/Gjbxp9T7NiA00UQsl13K8dGDjcc38HAQ0tdFs4SIMpsfAXHO4aOuo6fHH0fZ+f+tpWfmgzPVG8zblRxD6hhydvWMDUCUy/1ASAZaXeWeeikOXSIammoZHQ7oASK1tYpDkfByMyN0vvLJ2bBZlZWqz7H/07EF2eOTqvKhPkdTKX0pei9ezE4F7lrV5AxDfPR1lhuZRkZkVlKz/dEotbwnTTSNvwzVIDMpOi8ufG7kMszUO+QIUd1FwJLvtu8ccSiqzhAG/UfKfe+j4oJbgdNW9Yrg6GyuYshdKUJi5XlVmsmWC3ZuXozMmZXvitCdXOZBZ7muT/xpPnr dklepikov@dlkepikov-ws
+          user: ${linux:system:user:dklepikov}
diff --git a/openssh/server/team/members/dmitrygoloshubov.yml b/openssh/server/team/members/dmitrygoloshubov.yml
new file mode 100644
index 0000000..d9e242c
--- /dev/null
+++ b/openssh/server/team/members/dmitrygoloshubov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        dgoloshubov:
+          enabled: true
+          name: dgoloshubov
+          sudo: false
+          full_name: Dmitry Goloshubov
+          home: /home/dgoloshubov
+          email: dgoloshubov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        dgoloshubov:
+          enabled: true
+          public_keys: ${public_keys:dgoloshubov}
+          user: ${linux:system:user:dgoloshubov}
+  public_keys:
+    dgoloshubov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3k+8GqLyioUc3bEYRHvId62f+KnOvZvVRQH71q1iynbG6ELOZVoxs2AuVjej7weEI7SBsrTKraHkZ7DumKHFMqDG6hiVW2YxJWtX1smcHyapL0k4Tq61MjdwZ6QzNcVstPh/fnbAQCdBEzL8pxbxgRj3xmgPm8pP3RAyBFZOuovfa+VmJXx8kdu8bhieWHTTlrBuhlBc0tM5RBm3WFK0jIK1qO0UJ5Ji0I1hhdg6ti5hEY76Binwzh0A75UDAQ7RmJxWwXiXs/RJOR1c9Wsr4FlLJ5bfMT6bpdYQcPtq3WEkgT0xZTZ5u4hOLsZNJDET+wH/4nL/3/ejtADujQaUJ
+
diff --git a/openssh/server/team/members/dsutyagin.yml b/openssh/server/team/members/dsutyagin.yml
new file mode 100644
index 0000000..66225c0
--- /dev/null
+++ b/openssh/server/team/members/dsutyagin.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        dsutyagin:
+          enabled: true
+          name: dsutyagin
+          sudo: false
+          full_name: Dmitry Sutyagin
+          home: /home/dsutyagin
+          email: dsutyagin@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        dsutyagin:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDdI8HkSB2RUOpkgBhn00UX0Vm78e2JXpMbyi1Qbh2c3dMcXdtY0kIFio/jfuR9rxKmN/oeV+E92YZviq7kg3/2qWfAR5fxlOCe7tDxR5lbkYUye9Y/SGzU5dLPMs4GjLWNk8hX9Wyf49TWC0lEIR05g/aIo7ZrH9sZwdQ9kte9GpID282O0KsJvy/UR3pBKECh/QZ4et4mgzZOFWldJrfs62Y6R4ZUaCxWbHpi+56AqwRSW4+FxepcJDUBC3+o8Xe1Jgcq7bHpHz1StWJmMi4U/b7dtANvp9m1VMe21a5bdt91EkyjL5ArhO7jMB49v7Pm5/EAN7BDtmqs9m/9CQ7vfVrM8XLTH4Ob0MIBwuo1JJR1NqSgWAkxLQWe2KIN6kCwi1z2pZ4iSB78/5RX/ZPBN7I1OHkbO50aFqJO3/2keYpTG5f1eFwDOsslrSzzcrNvQiYo3n75m+Skdv/ziBW504cCgwdAwxSrd+urUuk9KdNAckzR/S8/qrO0Vh4ZDkJ93TtxqDghyvtdqH4VNaWf8BJmVFCoM5jPpEQYsLBdvLRUtKP2CTtxXoZQap6pvl5N84o1zcnDZW74JeOXrpjClgx0KhKJjPjbtl0EtPOB2rsz+92XtU3aocqChwzR2IGrXfdSzXAvHc3PpYWunzRlFO7eJCdOE7vgCSo18iIlAw== dsutyagin@mirantis.com - office laptop
+          user: ${linux:system:user:dsutyagin}
diff --git a/openssh/server/team/members/ekozhemyakin.yml b/openssh/server/team/members/ekozhemyakin.yml
new file mode 100644
index 0000000..5f7e3f8
--- /dev/null
+++ b/openssh/server/team/members/ekozhemyakin.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        ekozhemyakin:
+          enabled: true
+          name: ekozhemyakin
+          sudo: false
+          full_name: Evgeny Kozhemyakin
+          home: /home/ekozhemyakin
+          email: ekozhemyakin@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        ekozhemyakin:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAnQ3OD1g35wYDnHwnNKuA/daYMJ7YmMsGoucOG8Y4HFXv9JXMd7MgqpfgyRc22y3VqV6G7ddGgjI0TDzENAzxUAd6pjIhl8GPtwBRY0q5LDPZwatkX8KH1T/da5EDM3iwekftd50s8hsUKRhmCfuFlgC9R0eVAVbzLMsB+OgtasLygoCrfWa5chZ6exbIkDnQRN+SDxBEHjpAK22OGeDuW4Vuf8DS74cNgX2zZBkcQEwxfzGBi3AsJhUEm91d1JJqYtD4nwcRSIUEEiKLroW/AKACko8GihHXCRxmgLSFNhMLwV9g5LE4E9O/MMN8E7ik2JnmAVuhjttsa4tzj62raAlrUBvA/4KBwwocXgR6lLZ/dLBcCdbSZ8UQJy3IM9rwa/r9v/T6qGWm1GwTqL7MWAp4XKPpUbHvykSh9XqQm0Zs2/eTsa387Oxo40IuLcJk8tOlZwYiu2wdnrhnex90dMweMEHTe9lBi0JOqz48uFDYa3NsNQ6ZhkZGYgGblH1Ip3Z75K69HDZJUrM++4bDRuN2y5BL3K1M2GKZVnSwVvkcw7wCL7KyEMzX5uyHc1IiBtpZjPGorIQvJvmUzNe/IDSwVwu2Lm8YsYyMmboyiQ+NZex9+9ZW7htyREYGKNJZHAB+YIgvXRKJOjw0JyCXDqkNOeMDOlkfwYEcrhsN7A8= evg@ThinkPad
+          user: ${linux:system:user:ekozhemyakin}
diff --git a/openssh/server/team/members/enikanorov.yml b/openssh/server/team/members/enikanorov.yml
new file mode 100644
index 0000000..5697fa7
--- /dev/null
+++ b/openssh/server/team/members/enikanorov.yml
@@ -0,0 +1,22 @@
+parameters:
+  linux:
+    system:
+      user:
+        enikanorov:
+          enabled: true
+          name: enikanorov
+          sudo: false
+          full_name: Eugene Nikanorov
+          home: /home/enikanorov
+          email: enikanorov@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        enikanorov:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUUx8Pv9g12UREG8sXcg2C9F3TQoI8Sc2lcn07+nw5S21BmCe87kD6FtvVPHts7u1n/A3PvAVOjHEq4q5gzRGbbVDiw6Ga2r60Knus4unKW23EeTBLkRTsap6pZkS5qzUeI913iv8pyNjTnhCDa2kYmr5UkZEA/zMwWiZ1jAJPqQ9AL1MSpcbgJYeGCW+3nIASRIyqmBfCyukAZuDUuVMe9tki6fIvlWMASxyLEYg2xbPjTTdX5QAFCraKTC7TjLCen9I3h/eCVxUsb1dBi3+wn9hFPtD+LKaQHrm3PqE3S6FdE4zhh0btH90hXq0v02MFPZzxhpJojoGZqYtoaRB3 eugene@ubuntu-dev
+          user: ${linux:system:user:enikanorov}
diff --git a/openssh/server/team/members/fsoppelsa.yml b/openssh/server/team/members/fsoppelsa.yml
new file mode 100644
index 0000000..6806a0e
--- /dev/null
+++ b/openssh/server/team/members/fsoppelsa.yml
@@ -0,0 +1,24 @@
+parameters:
+  linux:
+    system:
+      user:
+        fsoppelsa:
+          enabled: true
+          name: fsoppelsa
+          sudo: false
+          full_name: Fabrizio Soppelsa
+          home: /home/fsoppelsa
+          email: fsoppelsa@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        fsoppelsa:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs1bA1kgjstOfTVlS5+COuv3U1UYmAkDkTHHCw188XmZKQwmjrHQdbxA91fi/LmGNO87r9S3Sy6bmwYeBd8MUycYKXYPvHaS2JnflgtOy8L1xxubOgA+bpaziHImC0Xf6AQZRbVNlegVG5dVxZ1b1gNIaxufO8BmR4X/apG7TBXAhd+IYRzXsHlZVyrnZyUHNWJWQaUt+640ziR2+1mQZMktgfC9X3G9FxXtCEl6zvkHv8I2XOuzAfHFyoZlv32fo7BF1SjJnMkAhU5jMaliKQNt9Z3G3zcW0yA4D2IruueCJ7HNbXP2wxxiCpTxfpadfglUhm4U0wvTluippKlC1j fsoppelsa@yoda.local
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDTui9BfPuQgiGH0MkOrjWAkveC2J6Kh8zWmPMj3x2QIlHaXoMjnOTsfYqSSzlXIdswU6+46MMOG2jn1D78/hOEqNOFhOp+jtrjAhNUsufDdHclcMQJXPh/m/OaKyJq5UeNdFpq7UdhwA6E8Z9w4Jld/MzoV675RvI2OrzjSw8/K8pxf5YDOPrsxohFTwHaosbqrt/Owjiyqsh8NnJkEnNoFjvVNebpiKDZB2hOTOGjSOmHExQ7rmWNcdUISe/jwLrl5oR7ciwg4BnvcBye1W8l68w5vJ1dlUH8k3NNx010nnKal4MvL0mSYVqd32m5stBLSwZ57UBVVTJl6i3aSQz fsoppelsa@darthvader.local
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkuI6Hfp6dXFHNtL4c3GaIJM13fAJMaUyTatWJ8//qhJz5brbdeF9IQBykPkA59mtWJ6hx81jWgrzp8rHauAQdVEOsn+ZfcTA8zcQaqEv0qe2FxJKN7Ex7YTtXa90uLUiiGTJFy8D9rjKVQLqWjtqo1n94XIvJncw/HmX/RK7lMVmEjUAJmBRo7yCr0N/6i7ITN7Nnn8bB/eKy27TGao5Sw/2fdWKlh+XPvDskpxKL0/jcoBOg5QiB0zT/XTq3ZL6xCTOQ9JUDKmIvHQIJ2ykxyZE/Kh1yHwU0sifz6PLi+z5OhOFpEEFyAtSLeOyZj+gnBtw4DjsglZ10+Q2uJ0Ir fsoppelsa@anakin.msk.mirantis.com
+          user: ${linux:system:user:fsoppelsa}
diff --git a/openssh/server/team/members/javierdiaz.yml b/openssh/server/team/members/javierdiaz.yml
new file mode 100644
index 0000000..8d1e765
--- /dev/null
+++ b/openssh/server/team/members/javierdiaz.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        jdiaz:
+          enabled: true
+          name: jdiaz
+          sudo: false
+          full_name: Javier Diaz
+          home: /home/jdiaz
+          email: jdiaz@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        jdiaz:
+          enabled: true
+          public_keys: ${public_keys:jdiaz}
+          user: ${linux:system:user:jdiaz}
+  public_keys:
+    jdiaz:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/2Kwi/+MO2AowwwQ5S4x3tif+6L8bCHKDV+BNfxezn55j0CMGUNMXSH6p384Zu5DuCWhU8AmdZ+rczGgc9vsdgb8Kukdi19C7vaXLIkjw1ztEkB8xgpXwDrx6O6GNtCmNq2FF1LTHTgs+r6VTKxl3yDGPd01m/fuf7Kq/hb+5out7soXC0eePKwYgFtIngxaFEiGA5sNNETrp8wys4EI2u1Az7C37cchR2qAUILRz01zt7Mp2ma+LNaZx3/bbIHI34EKypCYCFFQq+fodMDiwG15xhsdU8FEVj1NREN1kSOO2xr9IujalNskIfaXsIu7tE/6B4rI0Sl7W/PVw+cFr
+
diff --git a/openssh/server/team/members/josuepalmerin.yml b/openssh/server/team/members/josuepalmerin.yml
new file mode 100644
index 0000000..72f3eda
--- /dev/null
+++ b/openssh/server/team/members/josuepalmerin.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        jpalmerin:
+          enabled: true
+          name: jpalmerin
+          sudo: false
+          full_name: Josue Palmerin
+          home: /home/jpalmerin
+          email: jpalmerin@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        jpalmerin:
+          enabled: true
+          public_keys: ${public_keys:jpalmerin}
+          user: ${linux:system:user:jpalmerin}
+  public_keys:
+    jpalmerin:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKW9yFRdSTlpg2oVDYrg69yPzeG14CoLFvJeU9I4ZHv/d0SkiU12y+zkljWLEaa2aj+Zs8IbJZy+3Av1/uZ/s5UX0KkGJP1oCjH5LYPNbeXpdaCl/1w5uHf43DIebrj6q5XE0ziXLC79lEyXs1rQFV7B5D2rxnjrRPLnCckT4D2G1WoW5bylPezXqoO2YIua5IG/O0EOeV2gSQJAYEVQceJg+Hr6mtjL1AwSADecG5QiY+WV/XdX3OFiafJ5gnS2OpqH5MdNcnqegiXEdaEe07tW99E2j3EXY9nOvorzgB8xO+m3EKM0jAxAbA5LALAijn6ax/cuSMMKD4lkQbTc4b
+
diff --git a/openssh/server/team/members/krzysztoffranckowski.yml b/openssh/server/team/members/krzysztoffranckowski.yml
new file mode 100644
index 0000000..72edd3f
--- /dev/null
+++ b/openssh/server/team/members/krzysztoffranckowski.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        kfranckowski:
+          enabled: true
+          name: kfranckowski
+          sudo: false
+          full_name: Krzysztof Franckowski
+          home: /home/kfranckowski
+          email: kfranckowski@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        kfranckowski:
+          enabled: true
+          public_keys: ${public_keys:kfranckowski}
+          user: ${linux:system:user:kfranckowski}
+  public_keys:
+    kfranckowski:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVoTlgIijwEHGDbkKD3IBQHjHOjaM3z9VtIPxFZx0uTzyQ2qgeCS1Nd4VTFM1u677SspcAeZkgoMhuKqPcD+JypApA9bfmELu7QrDdnzro2bW/Sj5fMbfCR5V2KfqCj4nQmzcBLlx0Lj+JRQgzx4NThveOZHRQfO1tFSRNJMM/DmxCZsUCs3tl3WYyWEZkKYx/vPWoGe+Hf7VU/tsH/Yp1syhfJBNwyuCmfsobrUrvcVL+troX7hefXNJOuum6KvTDAPM9XzJvR0TU63bkGpOpACPr7axXOjJ0Y3X2qrXRRXc+IGaWY1O+MQ55jxOJX7SD74lbdy8WRxdmHt6V6QRL
+
diff --git a/openssh/server/team/members/manashkin.yml b/openssh/server/team/members/manashkin.yml
new file mode 100644
index 0000000..bfce163
--- /dev/null
+++ b/openssh/server/team/members/manashkin.yml
@@ -0,0 +1,24 @@
+parameters:
+  linux:
+    system:
+      user:
+        manashkin:
+          enabled: true
+          name: manashkin
+          sudo: false
+          full_name: Miroslav Anashkin
+          home: /home/manashkin
+          email: manashkin@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        manashkin:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDb1XOAU6ZoU+hSB0SPaypwK1Weu2armLzQrIQ3hhmlpAxFDV50oiF/PyPZ7W5NkJWgEr+DGYuZiKuqTDosrQV5Tt8TA4nt6bSJ9SlhJlNGltrOeWeLcP/Hf2YyWm0e9puzAIgUsKN8Np+CBrpIls4bq2JCshkz/vz9AreaFBMHrhjrh8YNn+yNbETJf9nmxDazVqYp3UI5SU4Wg0KchrFHBPNlREL099SSARfTGIsfbbJmSHx2LUw3Rt6v2fizRslv+Tuxvx2tqRsgbjeF7+NKfOFMBIloab97ag7N9EUdVvOHrjScXQ+nP/kdk3iq7O2WDpAgKYXIbSuaWA0YUk5Z manashkin@mirantis.com
+          user: ${linux:system:user:manashkin}
+          group:
+          - supportl2
diff --git a/openssh/server/team/members/matthewroark.yml b/openssh/server/team/members/matthewroark.yml
new file mode 100644
index 0000000..0a9eb28
--- /dev/null
+++ b/openssh/server/team/members/matthewroark.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        mroark:
+          enabled: true
+          name: mroark
+          sudo: false
+          full_name: Matthew Roark
+          home: /home/mroark
+          email: mroark@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        mroark:
+          enabled: true
+          public_keys: ${public_keys:mroark}
+          user: ${linux:system:user:mroark}
+  public_keys:
+    mroark:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwCoVNR4+UdV2GQDUHYxy34cNFr/mdcHn0LjEzoJfm/qqFzRFOw7KUvBiDgW1J6TKTOu74gZADlwem5hDHlW+Z60CiSCx1xdOxtmMI8667mrtnD8m3LRWVDAoJzGpP8e2qiq7sBA+U973pQH3+5x3aHJXWoA/zDZzCdsweWIDhHiMbs24/flzXsnpS9BRmbyRoh+wrnM7h+iGRCzDuOZYJkcABvXy9Hs9ZZhDL16mqDJv8WdEF28/aUvVE62AJHLQuSy4mvDL+57XkFlSyMbK1jCJaRzU1B/4TBOtsBCbVNP0VonZEh0vK3d1fu83MwYhAvv+tf+cVvZ6Xn+VXpWcn
+
diff --git a/openssh/server/team/members/maximefimov.yml b/openssh/server/team/members/maximefimov.yml
new file mode 100644
index 0000000..2dab7d7
--- /dev/null
+++ b/openssh/server/team/members/maximefimov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        mefimov:
+          enabled: true
+          name: mefimov
+          sudo: false
+          full_name: Maxim Efimov
+          home: /home/mefimov
+          email: mefimov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        mefimov:
+          enabled: true
+          public_keys: ${public_keys:mefimov}
+          user: ${linux:system:user:mefimov}
+  public_keys:
+    mefimov:
+      - key: rsa-key AAAAB3NzaC1yc2EAAAABJQAAAQEAgLfqReVrcsOuG8GaxPF1iSJjhUPsCnoxtAwFU4YPd0qVmLFxZtcKgb29yR/OSKQz3o5RM1OvQhHs080/gfiboMIyVa5gOCcbVj1PoySd8dAAVy9DORKWCU3djWmHcsG76FU1G8UE1w7nSrWqs01KW9/NzLjiHxf/4r3YWZ51UTr/C1AFyPPMfFRbffqq6yqULG+/TfpkgN2maBrotN5trDuGAHKluyboL7+EZazYpgjUsd2cPMH8TzdQZNwYrtrzWDS0YAqSQVyMc2dFh/gptw/QCsWT2IMyQKLKOcaAy2qon1xWDRFL1fVgqjakF+oM5RBAvX1bkJ1Vx883GEnPaQ==
+
diff --git a/openssh/server/team/members/michaelpetersen.yml b/openssh/server/team/members/michaelpetersen.yml
new file mode 100644
index 0000000..8174b6b
--- /dev/null
+++ b/openssh/server/team/members/michaelpetersen.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        mpetersen:
+          enabled: true
+          name: mpetersen
+          sudo: false
+          full_name: Michael Petersen
+          home: /home/mpetersen
+          email: mpetersen@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        mpetersen:
+          enabled: true
+          public_keys: ${public_keys:mpetersen}
+          user: ${linux:system:user:mpetersen}
+  public_keys:
+    mpetersen:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJzKgMddHiRYBewGuS9aIHJWrwoz3lTms0obWttyKCFCr9ULwVvok8NbFQQPPoh0uZIMLh6q7Uu1iJLgrRcPfEuzzwujdy8uZ4EN+xRDpcBJJs8laaRrigwjLEfOjayytHddgS6CnzL4zYmkd2mnvmB6YwWGid0NEAHTHmTS1LOxkn+YYUvHjWi4HZnAyjX0/udDDHYRCE/dcSpG6t2wXmddPJGcgUbniwEDEGlwM0nSEvi4K9hUcP53d8zkn7Klc9NC2DGnFKelTiNoizKGrimB7PKUuVJ38/OMwodMt0VAQmBeObKvNEmsz3thWv2UM21RvPNYDISf1f5YxDpMLQF9A8YwODhLQjS7Gb/7eiZhcEjNKVkKiSyqdohV2ZTZCaBfpeW/yzXaNC1oGDEWJPX3KmBsQaT5w9NSl5oj7qtMTSVH/qY2QQIgz1cNhQDRrH48YRykVt+3iu/qToB8FFe5MPixKvxnGlk0weLCn1liasNDu2LjWALD8WTV+ksi80OwVUtrMkI1d5+doXKtf4+4zNGZT8G2EnenkkFyBfe+T7de9NXGdiMorsukf0Iq6OXMYWIi5nO/bnuU9p0dFCk5U9jfxdlLKFLUI5Web1xVfm5qlYyMjhfkP9JAZViA80+WUUx1cIcI2KR7Sd8uwxdyscF8dWj2ouyluLwHpmsw==
+
diff --git a/openssh/server/team/members/mikhailkraynov.yml b/openssh/server/team/members/mikhailkraynov.yml
new file mode 100644
index 0000000..0019a41
--- /dev/null
+++ b/openssh/server/team/members/mikhailkraynov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        mkraynov:
+          enabled: true
+          name: mkraynov
+          sudo: false
+          full_name: Mikhail Kraynov
+          home: /home/mkraynov
+          email: mkraynov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        mkraynov:
+          enabled: true
+          public_keys: ${public_keys:mkraynov}
+          user: ${linux:system:user:mkraynov}
+  public_keys:
+    mkraynov:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDD2yg5tjwdg+SFPbcm+qIsrYjLcI3qbaqSInA+qY7oyLGj3nO0sC4Wj+6hOQIEzuxXtt7a88Y0ghQrYB5EB6RK7Q6Ll0vT7XdqdVoYiYiKIvaAk7rOt1hhfDb1ogVTXXs7dKCUKmJDMZnALOuh2UJHoRd3G4wyveInNBAHW6PqOIfU0PjEckjDuGhAmYSlawXebNxDgGOvk0TfsxUGiCN3JKKZ6w5956eub6/I+HWpMzZIB1oUsgtPfhTvFnA7vq7JxNVWUv/tXvSI0qKuOCZ+eH8n2/cWtrzOwRUptMGMS7oOMvwEil99BruuB8Xl5Um1iG8qd+H0gAfVeKMnuBkT
+
diff --git a/openssh/server/team/members/nadezhdakabanova.yml b/openssh/server/team/members/nadezhdakabanova.yml
new file mode 100644
index 0000000..6979c5e
--- /dev/null
+++ b/openssh/server/team/members/nadezhdakabanova.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        nkabanova:
+          enabled: true
+          name: nkabanova
+          sudo: false
+          full_name: Nadezhda Kabanova
+          home: /home/nkabanova
+          email: nkabanova@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        nkabanova:
+          enabled: true
+          public_keys: ${public_keys:nkabanova}
+          user: ${linux:system:user:nkabanova}
+  public_keys:
+    nkabanova:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuI74hcXTCbbvWoWHNLkng0nDBBwEzZJu8APmKVBukr9Lldz5r8n4OLRzlMI9oKbzvOuY082Cwp+9f5w5ViF/wmmEBa5sktUOBI5Jsi+g5ulb1i2HQOiaRibFJZZcoW03YRQCqQ8D9H4QcuXkT4oNuL5Wcj0UKPQT5r6N2kvuNXlJfEezQQim4nVRymel2USPt/AhlN4AUfBShR8Ykaky2Me4pt5xi0fLOJ9ZDWlEa4dl19Jd4tPz66+dLPiWql+6dgd9GiN+f7NLdDOv3RfOBH6n/It4y/fI+2/UY57X13dWauQNIQHQHDTpCCRiB+XOHwoCRaV81XTHbR865+/sP
+
diff --git a/openssh/server/team/members/nkondra.yml b/openssh/server/team/members/nkondra.yml
new file mode 100644
index 0000000..77bfde5
--- /dev/null
+++ b/openssh/server/team/members/nkondra.yml
@@ -0,0 +1,24 @@
+parameters:
+  linux:
+    system:
+      user:
+        nkondra:
+          enabled: true
+          name: nkondra
+          sudo: false
+          full_name: Nazarii Kondra
+          home: /home/nkondra
+          email: nkondra@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        nkondra:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9A6qJfHEIegIcHHgbBFONf3Yld5cbvhvylqDsy+Cu0vSkGHjMRATQJcTeMuG9HGOirVFMzmlKZHPJoQyFGo7FsJS81ZHwPCnh4UnQ3AL5CBp2nofeeXjOInA1CBJfqXgPhwjPexN1k/P7a7psmZ6nD61BHHeHR8U8SHy0Q0SxQPW9S2aFUxt1HVeZYTdWsSe4TIANepZomokcNi2s5GbfAzYo11ga0i56+ZHP0plrQXu8HYHPBjpHctFgE1NpE7vvrIo3c8E154jkxPj8vD+snHsQjpwUmK5lbbkOq9clchPtRtiTu83qZO0/es4zwyohrbqiqvKUITnzz/NcKPbD root@nazaros
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4UpJRI+XeVqSU8ENSgQwQyqEKwmuV+xsr1xqd6hm8cIGTImnJQSAKKHErgW0Dm5LIaZFOzYEhrxuFxPymQ5jBCyh9kK/SpeFYZNn7PUo7QLvRE12eze2EfEIS8OeLeyew3UJE+ropP7sZTBUbO9ZeOjVN0sU0GT1XMGOr3AcKB5R6P84ZIzL8KX+vw7VRGoWqgNmM4ZSM1JIp1n6S//2Is78hmoQjaw6SqcDJxqfNT4VtLnV8BDFJyiiu/ufWZ1FwSoFOSUpUYkI+Bg8zF0hHP2mf0gr/8hlTubM5UGtIWO6K849D7H43LF2QxlOXqisMJTYnIzIEVlSz9QWyRmAD nazaros@nazaros
+          user: ${linux:system:user:nkondra}
+
diff --git a/openssh/server/team/members/obryndzii.yml b/openssh/server/team/members/obryndzii.yml
new file mode 100644
index 0000000..85763b3
--- /dev/null
+++ b/openssh/server/team/members/obryndzii.yml
@@ -0,0 +1,23 @@
+parameters:
+  linux:
+    system:
+      user:
+        obryndzii:
+          enabled: true
+          name: obryndzii
+          sudo: false
+          full_name: Oleksandr Bryndzii
+          home: /home/obryndzii
+          email: obryndzii@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        obryndzii:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdHeeCZb+4YOBC925Byc0JkdFiNHnxl1DikrJlvza66n+URnfpTvtYhy70oT4jWruWf5dGAh81LK6SJfcLKqDvSNwAU4utQp1t71VllPB482oUhFSBAPOhWHElFakWcgnayOFVtMKhUZ4d5i+C7vXr+JpporBk6le7LuHD0/vNEG6SywexV3/lDZV1kahPSHblBxaED6nNeAODXXRMAOzgV25+UcDINaVTSzzQtCfUHydkVmw+TmxYc5wbdac1AtUkFmFbC6XTsv4VyZsH563jHNRf4UYPN6MP4SWv8axPiGUU5jr4laaIpDQ0TF/b+0Z+QidDxxTIsQxR0r/auUJp obryndzii@obryndzii-pc
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDD+5Ykrt46voaBAZ4BnYCB7EjRWNd6R+IqLaoQJzHh0joXVyZj/MsV0LcegxVV21Qnecp3qSw9XQiyJ9cghJbN3/AhEFpx7yZzf7sHez7FxRFefBSCO2IYSDBabO4eyv1X8UXtJrZ88lJBmWQr8nVy3E78za1cq0jRKNlGyvTrRtwY69WDhhc6k8CxIGAUrT6uAFeNCfroRKuw3zDm0FIxoq0eExNwBNw0rIXXUowDoCafTYSVpqSQ+Sby/wfRMc12ISmUnOQ2d9A1+YWoZgdHs+G/OK1ADQu/6edaSOWhX0BGLNRig5lWfgbOmAlzIqNqcLDMaBrcwcpi2LN5pIQf obryndzii@obryndzii-pc
+          user: ${linux:system:user:obryndzii}
diff --git a/openssh/server/team/members/oliemieshko.yml b/openssh/server/team/members/oliemieshko.yml
new file mode 100644
index 0000000..fdf52c7
--- /dev/null
+++ b/openssh/server/team/members/oliemieshko.yml
@@ -0,0 +1,24 @@
+parameters:
+  linux:
+    system:
+      user:
+        oliemieshko:
+          enabled: true
+          name: oliemieshko
+          sudo: false
+          full_name: Oleksandr Liemieshko
+          home: /home/oliemieshko
+          email: oliemieshko@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        oliemieshko:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzs6/PozmGRBvr5xL/LfXkAymn93Hh4YSPd3VFkYCDUFMWdlRkQqLImcI44mEW+GpYoXn5pKJGVK7CuE9dmdQCIqI1XkpC3VJJ2BSRuu6S3r1bFDDsS6SFQCn1kgHWi+Fkx3oexMBYHKcpA7WnCIyKewJuXI4LBG/LPiwO9HeNOwluK01U56RzOU/KYofc7UrAEYj3jiplrq7nyuv4MMGrbU5HRAQSnkznISN5ZBsfY7uiPFf5Dr10Y8QSwHFpiTiDxxLrDE5K5CMWSKFexMpmThzdR13t7k4oKU8WRVh8i9jAZRNDY7YcR7Fqdoj58XKPsxQ31KQLgWpj80XAo6fl oliemieshko@oliemieshko-pc
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDj0brDaA7F/Hexk2KblN3bOT8CVozDKT0m12iqosfhth1SH2rzgbbVuOmPyxE9DtGl56LI6B42g4E9t54wwgpdyq6dp+UxOTpUvUgRyRUk7FAObKNn/v2UWFTaGuvsVINxMU5pJe4cWmIO8Skv/2ChG682u4gyEK7shpAf7Jom4tqaayZer//Yqm9c8fM1xpqooEdCWR3X6wzCg91kJqs86BBLI5u4enl2q9d2aqSvQqvj60eDOyVl2zpkgbaWG3sXlQ8FVcam97Y54tidC9GZgRaq3pt2HNqSghLDD4AkDSilfaM20swV0Y54iz3w/vIwnVmkfo38/RezyMC3yf9B oliemieshko@sunnyval
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC918wr3osIqWXuhpGUHTEr7A5VJDfYXcTiIGhvxkAVMdiRAHJIzFd0vx4MnBS8/m8CKKY+Iv8x4zShW2V2juHgLzlg/940SNsSOWApz7QNR+g+fXu1RuBL3Mk+VwA6pNTPNmcMe/asEAAV4tdjpJRgM3YJKIcocK6yU5tH6x0ohdHy7eICa6cXCm3hoBgiiMkf6djuRugzFNvK4JzMpKYBpMgC7ux6qgyXTIy/OQzp65CxM0WsHw6cmOOw4kTiOn77UX/qqOhYg4pD6YiEPApLaNyhxtEwv70Ta/cNYiGiZGs68MJ+xvCmOWMd5i2534NxbNsKguhoApJU0E5HPjHz lemax@shadow
+          user: ${linux:system:user:oliemieshko}
diff --git a/openssh/server/team/members/renesoto.yml b/openssh/server/team/members/renesoto.yml
new file mode 100644
index 0000000..ad76260
--- /dev/null
+++ b/openssh/server/team/members/renesoto.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        rsoto:
+          enabled: true
+          name: rsoto
+          sudo: false
+          full_name: Rene Soto
+          home: /home/rsoto
+          email: rsoto@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        rsoto:
+          enabled: true
+          public_keys: ${public_keys:rsoto}
+          user: ${linux:system:user:rsoto}
+  public_keys:
+    rsoto:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCSmved/uNo6pkce9z52wiapxXXQ6nRadSzQhcYqegltYRbvDbAPe5oh/LGUoxybyIP6OAormVJlb85JojG1s7Aom6YtiFNTlddORWXZ1fuxqg7ue2++wQW3Zf2uJMFGKPAByucF8Oqix5WmLd8X8wpTEhX0x4aP9AwDNg2AdPqCGwb0ulwJ6Q6E8UBtHgFq/xF5mNX6NkefemhdxguQDiC2nGedSBuxXzSs7W6DIgL29N3IP2M9N5SjoFsY9cB/kbESchxnbKi7lQOmF0SsTxsshBjO3quHzYVvbSfeAmGb1stF5QHw1fMDGpBpM+yBLAIByQalpz6nkIT5ZgtlML
+
diff --git a/openssh/server/team/members/rudymccomb.yml b/openssh/server/team/members/rudymccomb.yml
new file mode 100644
index 0000000..6c6c0b8
--- /dev/null
+++ b/openssh/server/team/members/rudymccomb.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        rmccomb:
+          enabled: true
+          name: rmccomb
+          sudo: false
+          full_name: Rudy McComb
+          home: /home/rmccomb
+          email: rmccomb@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        rmccomb:
+          enabled: true
+          public_keys: ${public_keys:rmccomb}
+          user: ${linux:system:user:rmccomb}
+  public_keys:
+    rmccomb:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYhqXhsWyb1VwGKjCeu0jmocrYMQODBxt2qIDjmvt/Qc6Ou78e3EIvZarjNiGczl6fKX3pOUxtZEcqHMZpPciQhyS5TB0hh+7XuBAZy+I0KAT3rM+mHpJ3WRK84hhx/gCHN52qEdiNaS5ofmmrxTk+AcZF9HElPgwi9IC79SKKyIFa2SQxLwNMmrjNab2FQbCcXx34HqsCFi9Sahadpk8Zpk8YKgrH06P+K//lR5mpa8z0svubaLsU+Qde/frjB9xVFeYvm5YcYTJg9GYXubVGqgELFgCqpAGPDCHOIu1T2oQLpTMc4pxqs1EZ6EC9gEE2fMGRfPoSuwacs0WxLzXp
+
diff --git a/openssh/server/team/members/scottmachtmes.yml b/openssh/server/team/members/scottmachtmes.yml
new file mode 100644
index 0000000..6feb7a2
--- /dev/null
+++ b/openssh/server/team/members/scottmachtmes.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        smachtmes:
+          enabled: true
+          name: smachtmes
+          sudo: false
+          full_name: Scott Machtmes
+          home: /home/smachtmes
+          email: smachtmes@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        smachtmes:
+          enabled: true
+          public_keys: ${public_keys:smachtmes}
+          user: ${linux:system:user:smachtmes}
+  public_keys:
+    smachtmes:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHGFStJ/pZhZP1c28yubmxGvkCI6UqcxIYZ4oi1QBP0yir2fib/2K8MJcqmRwYhrhw09DAaTnMWhssBhvvgVKX2wS1VhHDo82yRftgN6boo+55zi9Y9o/8IXme1vVTGp8MZV9UCPJMPYrhGxFwOBWIdIYtI0ayDVic54EsTVHUld0ED5NHOBBTJIIz2nXxX8GKC86qPrAlV28VM+Bq8yTNmj18lBTqNXoTswHALNbG8zeV0s8LiDH8LyHgaF8hlmI9EMfGidVQN5txG7x077SQ8Sgs/UfX3q7INyriAVBA5okNoLb0bR9QcRUtQrynOdPp89PoyzNT9JTwmVUWFYkd
+
diff --git a/openssh/server/team/members/sovsianikov.yml b/openssh/server/team/members/sovsianikov.yml
new file mode 100644
index 0000000..646bde9
--- /dev/null
+++ b/openssh/server/team/members/sovsianikov.yml
@@ -0,0 +1,24 @@
+parameters:
+  linux:
+    system:
+      user:
+        sovsianikov:
+          enabled: true
+          name: sovsianikov
+          sudo: false
+          full_name: Serhii Ovsianikov
+          home: /home/sovsianikov
+          email: sovsianikov@mirantis.com
+          groups:
+          - supportl2
+  openssh:
+    server:
+      enabled: true
+      user:
+        sovsianikov:
+          enabled: true
+          public_keys:
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC728opxEr1QAil48NXPoA1QH4qzbGy8OjEq0s+JuovWYg6eRxf4UEhZgtxW3z3vls0xV5fNpoGa1j2xIDYRIxdZV05X9J+CZ9hxUfE0tIi8iS8/r5x+SFeWQmf4zVOwQMRwXujNsmKBDQVpP/y/2wlYHk3RPrPLGZAH5LkO29W4iTKDciOF4p9uGw55CCR7Iaw/S3fq/CV3rSbtsxXpnYzJ0JZEYIVhO8ZRN9kP1upmTOGeC3g8ahSWgkWOD4xLbrUjoaOTqZjEVIUxDf0bLT2/ztihgqvKG9CTObKrHM8/V3tPqns9Xhu+uDc+h0pplxrVAlVtGiC9yx/R3e3gahJ sovsianikov@sovsianikov-nbook
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqe1+ymHcc750HopiD17J79Yh2P3Bdg7csJi1C/1B8Xk09rOoo5eIGGdo+7EqO2alRqzdan8Um7eSd6sH2sGUakHXApz0ig1xyqDcKpbla+13kJ9bEYyI3+7kXdm5/iAIzRmQVBYbtf6MK7GwLv6+5h+QKA4yiHr1xj2mXgmakU8B5r7GZXCq+DDEDXL+7r9h68DqOuQacKesbQZHPUBLCjINigLHA24Z+8Fglk0BkH+EiuBj91/QBT7Wy003njMz4/ecx0t1jRE6yMImDq62h/L7dS17no2ghVhZbFfDTBoyGuMp200tnhIP9Dwuisy0TuGBjiSVO/QJ2o0aAptwl sovsianikov@sovsianikov-lin
+          - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDd1/kdx3SIx6BxEMpO1+t05ZLVqYGlxxS0oPcpnMAR+t6dBjdmYqMIUb817easmPFDpC38DgClqAzAHoCoPSj5LymiKpkVI0qinyS3b+V/9AK3fdlkE5lUIi7Ij/aCIO197teo1rhUbOjwXVRRqCWPAsAZ1v3ljmHVdBIjva5RraCHM1HDt12c1QdnQdNyQuXXKCx18DpfHcfICVYBXDubEjyGxjomk2nAwF4wH1Zol7I3+djOZcKOw0AVhI8VHb73MIaPSF3/oadsVle6XIlr6HJq8PlmmZ2Bs6cCM8ndRvPycKO+d2Rhm2qGiCWQzz4bLJuEqP9ez1bUQ+1VcJpR sovsianikov@Serhiis-PC.local
+          user: ${linux:system:user:sovsianikov}
diff --git a/openssh/server/team/members/zahedkhurasani.yml b/openssh/server/team/members/zahedkhurasani.yml
new file mode 100644
index 0000000..8504005
--- /dev/null
+++ b/openssh/server/team/members/zahedkhurasani.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        zkhurasani:
+          enabled: true
+          name: zkhurasani
+          sudo: false
+          full_name: Zahed Khurasani
+          home: /home/zkhurasani
+          email: zkhurasani@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        zkhurasani:
+          enabled: true
+          public_keys: ${public_keys:zkhurasani}
+          user: ${linux:system:user:zkhurasani}
+  public_keys:
+    zkhurasani:
+      - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdj43vCWri1SfE0/z24blmTG229kdbwmkK4R5ZzGx63r9Elj1NeOj7Bu7o3QwdtusAEq24dnIs3bSJEgMm+vsYyKcHMoPzrEeD4b42SEZnINBvUTaYHKjZKw9JvaNL8ZibfubiMeDVsefHX0/swAGPosCVNDiTYlIWUT2gKoFcHH8vyRzCC+KOxXvkWQtmJHML5lVHkTVhpgQln8G7aAmyvLMNFzDkOASkMU29uAA/9fWLqtc4T3fA3AUVEcClVI8fFYcDZDP6Y7HZP+hDZYe8vFxHEEpOM7CCq38M22p6nf00ITia60QyYGjpm2cgJPv1DmPZ4cwrbSCpMcvFu7kt
+
diff --git a/openssh/server/team/mmo_de.yml b/openssh/server/team/mmo_devops.yml
similarity index 83%
rename from openssh/server/team/mmo_de.yml
rename to openssh/server/team/mmo_devops.yml
index 4b0c470..2e34f91 100644
--- a/openssh/server/team/mmo_de.yml
+++ b/openssh/server/team/mmo_devops.yml
@@ -38,6 +38,12 @@
           sudo: true
           full_name: Marcin Iwinski
           home: /home/miwinski
+        mrelewicz:
+          enabled: true
+          name: mrelewicz
+          sudo: true
+          full_name: Maciej Relewicz
+          home: /home/mrelewicz
   openssh:
     server:
       enabled: true
@@ -73,6 +79,11 @@
           public_keys:
           - ${public_keys:miwinski}
           user: ${linux:system:user:miwinski}
+        mrelewicz:
+          enabled: true
+          public_keys:
+          - ${public_keys:mrelewicz}
+          user: ${linux:system:user:mrelewicz}
   public_keys:
     dszeluga:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEEFoCOaivah6AjFZmPIDlDlp8mUfsh9UFrjgLL8vqVYoyVnuZ5DQZTeZsCgFCPxodEsgHDkSEFwkB6hbyqEXszGIL8dWwSBR3QfNJD2cjZ8ZYqXsKN63RzHGAjTXMjlCB7TZtcui1SWpKjGd+x3gQ0KkHZI9V9WVYDcC75kyEAHZptM2N9jlwbhr9lXZ77gZacjaGoKN0Agb/ydd1TyhQ1F3g56pnvgZtkOe/bStwjpz2NS0FqiqAR3wOeZZUGsR3TCP70oYfaeJvpCDVRR/gVXqqvcBAiNYTGC/tMlKuECKPtOOAP8Oc+bt1eOrbiPVJ5NfoOIpmMCDUUSnFoNGN damjanek@cocaine.local
@@ -88,3 +99,5 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOdCr32ewiGJKLLwxf0Ic0naFV1j+ZflpfUVjuIPplrLeL5u8CNVlT5adPzgc48ijbee3qpzNvkOC7Ym295xQXUluo/cj2p5wVp70YnHrfhnLjGOCldm/K8B9bHmHbm1XW6hWUp7SWjMwhOdR217iveVLkuOy+hPdpXOC86hO93v7fY12UZDiqSRfrHpUqEaHHqlSyU2Eftn9GsR4UaotkeaQsiv8bi/k5nrwea/ccALZXnhrgTSTpXOVy3rfR5cCFQCA1PjMYvFEjhUofCHBSk+OA8xwOkpBOCfYrWRUmMT7MGEV5Jjm75QUrq1AuqRdFh8SM5lP39Tdwr8FMC+q5 flor3k@MacBook-Pro-Szymon.local
     miwinski:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCydY97fXVWbcUiNaK5KnMHQpLT4acAVXykKqB5hAUPwKn4nFN3dFNw9dpToFpriqNpJTZrEdxVgL9obB4aouHpi+NVH6s8cMZ6ulNTiSTBM0Xkmu7jl66eMhfHNaFwgFC0vsGQ85oI813H7A601tCweKegMUW/mwOKbwHj1isEA+jbyrdRTC64icBa6zbW/G2uF0ajz9dCPe9L0rAbQFE51N1fxrnLeb6BI+5br0H6bRz1kGc5ZsNiUx3EEEOrMFbAbHQAxvD8Te/nUErdlHCiFufKlXLJSUNDPGFrW2mIfvfGlbyrLPgm24RKS6xfcD7BhJOmr54k7QbWChEp/SrX iwi@iwon
+    mrelewicz:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsB8R/Sv7hI7kHnOa7slfRQUhx3uVo3lDT7SLZw6m5Xnc7JVmQBmsO3s0lLHWRcxBUNso8P5xd8XG30VaW2MPrHGEMy6TbwxJmoFb8+zZaETjcaXvXig2RAQe/I3GAplptCz76GFM9SQavXtqb4D7wPi/AGs7yTFBa1rlVPdmhnlQ2woZoF/Hb5vPpFbK8ucR79eopNyd+g9mhLALJGRIUkRh6q66LCUAbMHA/Lm01IV//mGFUS1Sh0lcM34LOl99SyRVKW7kbql4vWE/4ZSxX1GJC4WVxxBitdWAypGuq3PY8L/+JDjXK7hXSrYaVWygrrluQh+ZXY8S1zx1SoPEG8uzyqdei8VxDPJd+3Y+w3YvWiYI2QA7fdtf4AW57OjZJrCgC2SpUuO6TNGcQ3gxV2/IChHQMHUV6IYc+ENaKuFIXVfvFBa/VMVRoTFXKVdE1cycDR3mgygGxE9QWxLmsJf7ZaK6A0zQjxTQs0GJi6Id9dgjDsh90uPIaVJWGKZZqDH+/cbXqN1AOTK3ecVji2fOfL3JQfY4wTFt/WmGa2VrdTfv/d9bcvEvhHYaCUs3sWy3sobJXwYCiXwuZVTTLj4EvN6L+jt8I9nG/6OWILUPVjrx84ikZ3Ig1Tbts2giIuB8JpQRup1mrEtpxoeOga1ts5ZGF8XfIKOpqaBpTsw== mrelewicz@mirantis.com
diff --git a/openssh/server/team/networking.yml b/openssh/server/team/networking.yml
new file mode 100644
index 0000000..df85109
--- /dev/null
+++ b/openssh/server/team/networking.yml
@@ -0,0 +1,93 @@
+parameters:
+  linux:
+    system:
+      user:
+        aignatov:
+          enabled: true
+          name: aignatov
+          sudo: true
+          full_name: Alexander Ignatov
+          home: /home/aignatov
+          email: aignatov@mirantis.com
+        ataraday:
+          enabled: true
+          name: ataraday
+          sudo: true
+          full_name: Anna Taraday
+          home: /home/ataraday
+          email: ataraday@mirantis.com
+        eezhova:
+          enabled: true
+          name: eezhova
+          sudo: true
+          full_name: Elena Ezhova
+          home: /home/eezhova
+          email: eezhova@mirantis.com
+        ichukhnakov:
+          enabled: true
+          name: ichukhnakov
+          sudo: true
+          full_name: Ilya Chukhnakov
+          home: /home/ichukhnakov
+          email: ichukhnakov@mirantis.com
+        ivasilevskaya:
+          enabled: true
+          name: ivasilevskaya
+          sudo: true
+          full_name: Inessa Vasilevskaya
+          home: /home/ivasilevskaya
+          email: ivasilevskaya@mirantis.com
+        obondarev:
+          enabled: true
+          name: obondarev
+          sudo: true
+          full_name: Oleg Bondarev
+          home: /home/obondarev
+          email: obondarev@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        aignatov:
+          enabled: true
+          public_keys:
+          - ${public_keys:aignatov}
+          user: ${linux:system:user:aignatov}
+        ataraday:
+          enabled: true
+          public_keys:
+          - ${public_keys:ataraday}
+          user: ${linux:system:user:ataraday}
+        eezhova:
+          enabled: true
+          public_keys:
+          - ${public_keys:eezhova}
+          user: ${linux:system:user:eezhova}
+        ichukhnakov:
+          enabled: true
+          public_keys:
+          - ${public_keys:ichukhnakov}
+          user: ${linux:system:user:ichukhnakov}
+        ivasilevskaya:
+          enabled: true
+          public_keys:
+          - ${public_keys:ivasilevskaya}
+          user: ${linux:system:user:ivasilevskaya}
+        obondarev:
+          enabled: true
+          public_keys:
+          - ${public_keys:obondarev}
+          user: ${linux:system:user:obondarev}
+  public_keys:
+    aignatov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJFYznIFlCdxu5UXzThjYZlZfvXKCcDN0QxDEn7U7dNkK17SyzIJswQcxF7pTlvcuZ7XEskEqyXC8E6P5XyvBJO2xLGrFDJ4U3vf7MKsfwSFEj3NPUzV5bGTrKeKIHTL94L7lwMm1INE7lZzciiwvTxcKv//A+FgG8o1MDhefK56cBH4a9TSjEd+5ImcnCc5sf8B+csyWFPnksnv1zwu//T9aYXRITocdVzrfRHmEiZDpL3mNwpGT3O3XUTiMwdVpN2ImAqSF6XlQl0HlUkBT2idCIoXUR9lcGUx2Q+LSd62JgcVmQHCOmbUENj7NIDgWixgSJYLzsi//YNqJ9jccR aignatov@mirantis.com
+    ataraday:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9Tl4w3FVLfzTrm+P0ziWlSn74sbwycPUXY2eKdBtzLvvd8Vs7Gh8sEL9q8aeg9hY613LWjPvqgnaoosGJ52ckDnArYfpe3AG1Zamr9/Ncq7qC6U+W8lKwiuiS1QQIILm72+me7jzTanOfbpNl64+tIIcJXgPLtQK4dcpHWMXZQw8Fjp5PP7+k0P35yYNRtoHazxlE/lt/6XsQ+NnldRYB2TCtK3uU1ATHg5Sc7Qr1o+obfxDwWglasxfSd7fGqAZjszrm9q4pmKXTpKNlSqGCs7Hp4Hstr//GKLaXucyTtsb/uU40at6X3INGUU/u9txZkLwAGx8kb4XB6F5MwRH/ akamyshnikova@akamyshnikova
+    eezhova:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WND1z5CWjYrcUmEoao3sR29iqgw+i/osdFeYetGZYCaKSLWHXgvVLf19oYnFSNrsjAhpL6krcMc9luN4Uj1/qoigGQcLnV5KQo8AnkvdCDvBBVg/Y3fbgYmcEx6yPC3bbVB9gsfr8yvgrz3vE3gWApvf9uR2dDljL+TsdrVlWzIFVjKi6PEFErKxExYlQa+BeTmiHVjyKr1l+zNOOZN56nH33G3YYa/vxDO5ejio84LcG0Akul+MI+jZohNsvD/Y9EPm9CB6mmWeqpptVkXP+2HlfjyTG9s+KHvM/wcsW71vT+FR5N0OJAhcjYHsXSKDucD3+VzFTyFjpptRKGTJ eezhova@tiresh.local
+    ichukhnakov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIc4N1/KTRWKoWoM83hqRaSvk+tIX7mt8fWG4HKngB08PxXGBJElGuMvzEa3mYyKptwSYO/5wgRI/+cD+Sgbr2BGs9HJy23eYPRPwcKdcskandBjVNWrDd4op2s3wGOrwGg/P88JaGqhL8mwM/5UUK4P4gP7uoZdEK9ptHzy/OvBB0Jd6/qkzWv29k8x5ExgNehvfL8PZzcFWwajdv2y53nj1lO4Bw1i3gKVOl9DEe0JkLB8ryiJ4hIKmq7zgBcduPF8xOWUt2F7TA6/o9rXR9+NU6EnSYmOszqTHQ6P5itGogp57SGqoG1PZzXapQnZPwzDX4jMkxmdu1Ji+TJhXd
+    ivasilevskaya:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJk2ip+Rn73D4vt47pe/Hv42ylKJv6JIzeF0k3OflH+RyliVelvo05KMcozfsmmvOKhwgDokBj3KjQ10ewDwD7Fz5H3tosa8JFOs36cuHx9aHrsEmj1oIcIyThrIBwSZGFApqJqj27sLtReVLQJPlYR59RJGw61TogkA/QooOABi+KHzuwPFjAcA1SMfFT8LwiaNPkyUdRb5EQeKCOHniRAEPGNIwskA0sxz25qbB1EU2XBFjkxRE1b5GHfUYL+c2YhAwRWTJbD2JbbcHI6HpsmJutzkS6YIkEn1CK4JuA40OQTYFSEutCk2uPPR0G+77Fec2+vD/8H+ncPxPeDqNR ina@ina-ThinkPad-X240
+    obondarev:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDca1gqXe14l9uho3t4mZT52lXmSuUxKVOCcSO9Dy+BAmtaVK39+t7la081S5c0H+oTPIXFb32/kO37+qpEgwyOv1zimWIqcR56xrr42gW/QzVLyY64qVnQ9QFiXlvXXBW4YgBuT//SE8upOshLYnznKHOi4IkoKrAE37K34Cz/DGQzFV6sKQSmP6fjJzli0Nzu+YPdBSZW9VH1m7IKxliGoZcjdIkJ+L92+h/mPuN95Bitfe+aoexBQq3u4WjYVVsCE/9TrwLoGlr3zd7VAyVdADJf6phfIMHGDxn8W8125r9UWp4X/36yAIudVC7kHLyr0AHTfYqCVH10nEJvUwRz obondarev@Olegs-MacBook-Pro.local
diff --git a/openssh/server/team/oss_team.yml b/openssh/server/team/oss_team.yml
new file mode 100644
index 0000000..9d6dce9
--- /dev/null
+++ b/openssh/server/team/oss_team.yml
@@ -0,0 +1,51 @@
+parameters:
+  linux:
+    system:
+      user:
+        ikharin:
+          enabled: true
+          name: ikharin
+          sudo: true
+          full_name: Ilya Kharin
+          home: /home/ikharin
+          email: ikharin@mirantis.com
+        vstoiko:
+          enabled: true
+          name: vstoiko
+          sudo: true
+          full_name: Volodymyr Stoiko
+          home: /home/vstoiko
+          email: vstoiko@mirantis.com
+        mivanov:
+          enabled: true
+          name: mivanov
+          sudo: true
+          full_name: Michael Ivanov
+          home: /home/mivanov
+          email: mivanov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ikharin:
+          enabled: true
+          public_keys:
+          - ${public_keys:ikharin}
+          user: ${linux:system:user:ikharin}
+        vstoiko:
+          enabled: true
+          public_keys:
+          - ${public_keys:vstoiko}
+          user: ${linux:system:user:vstoiko}
+        mivanov:
+          enabled: true
+          public_keys:
+          - ${public_keys:mivanov}
+          user: ${linux:system:user:mivanov}
+  public_keys:
+    ikharin:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0NNCF9Orei3Ls5wa7xNH/2nl4eAUYY/vuAers7as8lQXjUXkurLQUG1YTQhuRiqyLrqLZjokq87l3LcpXsiBaqNybwlg4OAcf7p59FwDwdpCcAfoHeP03vt/FOYgozeExIRxVNHMdZjQJ4o5j75vnwTfGIubSF1eUOwtRVeezAREK1OPA2TRvlSOXCsAinNSZHBFTlYVYIXQEk/zuH7PdwlU2rkN69mNivh1tAUDlhrwZHrR9rcudafp5s3C5MKFtI3W4MhYIqv9ZViEhLwfEhNb0WXiUv+sdGTf8jTcXaYOlw6z9A76Ab/9bfPyOTmI7tli8Pz15+YPj1ymdlIZlQ==
+    vstoiko:
+      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
diff --git a/openssh/server/team/services_qa.yml b/openssh/server/team/services_qa.yml
index 6f7595c..ca75b5a 100644
--- a/openssh/server/team/services_qa.yml
+++ b/openssh/server/team/services_qa.yml
@@ -8,6 +8,12 @@
           sudo: true
           full_name: Nikolay Pliashechnykov
           home: /home/npliashechnikov
+        mchernik:
+          enabled: true
+          name: mchernik
+          sudo: true
+          full_name: Mikhail Chernik
+          home: /home/mchernik
   openssh:
     server:
       enabled: true
@@ -17,6 +23,13 @@
           public_keys:
           - ${public_keys:npliashechnikov}
           user: ${linux:system:user:npliashechnikov}
+        mchernik:
+          enabled: true
+          public_keys:
+          - ${public_keys:mchernik}
+          user: ${linux:system:user:mchernik}
   public_keys:
     npliashechnikov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxy9ZNE+36U1W3vPxzMx++AujS8Ay9ZgJrfaa6YsWl1FeN87VuGucslHjLqFfiIYJLQl3m7tSLiAujQ/izBKDbfA5hd5z7JaCRB1LE+CehmCL0UVwsHflAi0tPn1tDrTcVGf/BRH0FsoZJo+KpOwohYGN8BMOpUIAP2SkGrE7cGbPrd9NbRqPW80iyIzsNIqzVKTcsh0CcJcr05V5n3or0GvteDMxl+mjAi6hpfx06a/bEfPLV10Ftl4+nIkbXr0KWA68uy7XmTlH+qgVUCMGwRP4mFaU63+uX45WboLKQ0aacPX833qvZJTIPe2FhAygoVoBwgOKBzrbnicBa9U+AQ== dkth1p3@lxf01p581
+    mchernik:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiYzcWNIP1K3DnSfztIZdMTl6zSr133eixsHDWWqI71Fj5UOny4kMH2P/qYk0WHhm7P9kwBNDgmJBY/eO5jb00D2w9BGHyvsOnkpAgzw5neL4ivRT7qLWkRdbcLo8AAFQN7VW+bgMb8gFfYWfttHyfkbJOQlU2xmi8fvhQ+2IM/12S0f0lP2uIYgVn8g9f+1OmtXKOWi/cKx0+6NYsuFjM2oVRlBhwlhPD2mI00rSL6zYjz/8GapPPkylQnds09NueNmrScjsPmJl6lPzU8maxHABZ/KctIZW/0ucMolv/3Ybm5FJIsj6YGUdz7AWzdE9o4tSfugFR3P7Ng/scxXpZ migel@mungo
diff --git a/openssh/server/team/stacklight.yml b/openssh/server/team/stacklight.yml
index 90799da..3eafce1 100644
--- a/openssh/server/team/stacklight.yml
+++ b/openssh/server/team/stacklight.yml
@@ -9,13 +9,6 @@
           full_name: Ales Komarek
           home: /home/newt
           email: mail@newt.cz
-        gthouvenin:
-          enabled: true
-          name: gthouvenin
-          sudo: true
-          full_name: Guillaume Thouvenin
-          home: /home/gthouvenin
-          email: gthouvenin@mirantis.com
         spasquier:
           enabled: true
           name: spasquier
@@ -76,11 +69,6 @@
           public_keys:
           - ${public_keys:newt}
           user: ${linux:system:user:newt}
-        gthouvenin:
-          enabled: true
-          public_keys:
-          - ${public_keys:gthouvenin}
-          user: ${linux:system:user:gthouvenin}
         spasquier:
           enabled: true
           public_keys:
@@ -119,8 +107,6 @@
   public_keys:
     newt:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ newt@newt-dev1
-    gthouvenin:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/5rr0LPVsChG0hzpa39JNwX1JdDH/WJL1sFjAG05Y9XDRAri5CYRGWwDdxyN2MA2+ULVojzV5QeV541fnIU6gSpc6Yytm6Ug8DjQ3TwNUY+92GQv5tZj9i/yB8aGpujleVXMDPT5yPDwOnc/q4f/fQWgrXipatkj+lNqL5Z7Ifai0BgmZS1/31LGkGmC1rne6UwszPz6dkswfu6urfKNuQXilcXvYqORlV3U0XD2nLDjNivGVbIArkYGVsgLCGM57cCCF1g1q7QZCNFPzxr+uxMvY2fGgS9ysMkRTr29LtwKMOl8H3cof5alLCIWukpv5qs50NlVEkGu1zKsa9jUj guillaume@Lenovo-PC
     spasquier:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXBHKQaGUNB92DsnyvflmCbmuXnkiuNahZiue3hnyXqLA2q8jmQmzBbxReAJzexnVfJhrUCTw8IPJUpMUP27u3igvGdkhfctdUuxVf9yGJErtGNgHK/aGbeLCvUOmhw6X/xbf3IbyFL1gwxOJ2cmmjlSptYU9E1W2xFY+IMFWBhzO3vso5EABgPVli/UUMfeXUUd++lIZpoyYe2Hkri1QGNhzfbZcFjEO78+vNiLZrvjJEtkXWu7iZTYK6eE365CiFJzqFL7N6Ichb28qakcmVqR/foreuz3cOMqMGssKoOQk1213x8w4fE0yLwf9Ft8L7GMf+vXQvuNt0ZKBPWqn7 spasquier@mirantis.com
     scroiset:
diff --git a/openssh/server/team/tcpcloud.yml b/openssh/server/team/tcpcloud.yml
index 2be2fa5..bdf29be 100644
--- a/openssh/server/team/tcpcloud.yml
+++ b/openssh/server/team/tcpcloud.yml
@@ -80,6 +80,13 @@
           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
@@ -104,6 +111,42 @@
           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
@@ -152,6 +195,11 @@
           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:
@@ -192,6 +240,36 @@
           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
@@ -215,6 +293,8 @@
       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:
@@ -225,3 +305,15 @@
       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
diff --git a/prometheus/server/target/dns.yml b/prometheus/server/target/dns.yml
new file mode 100644
index 0000000..5919a91
--- /dev/null
+++ b/prometheus/server/target/dns.yml
@@ -0,0 +1,15 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        dns:
+          - name: 'pushgateway'
+            domain:
+            - 'tasks.monitoring_pushgateway'
+            type: A
+            port: 9091
+          - name: 'prometheus'
+            domain:
+            - 'tasks.monitoring_server'
+            type: A
+            port: 9090
diff --git a/prometheus/server/target/etcd.yml b/prometheus/server/target/etcd.yml
new file mode 100644
index 0000000..3db134e
--- /dev/null
+++ b/prometheus/server/target/etcd.yml
@@ -0,0 +1,12 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        static:
+          etcd:
+            scheme: https
+            tls_config:
+              skip_verify: true
+              ssl_dir: /opt/prometheus/config
+              cert_name: prometheus-server.crt
+              key_name: prometheus-server.key
diff --git a/prometheus/server/target/kubernetes.yml b/prometheus/server/target/kubernetes.yml
new file mode 100644
index 0000000..8abed5d
--- /dev/null
+++ b/prometheus/server/target/kubernetes.yml
@@ -0,0 +1,9 @@
+parameters:
+  prometheus:
+    server:
+      target:
+        kubernetes:
+          api_ip: ${_param:kubernetes_control_address}
+          ssl_dir: /opt/prometheus/config
+          cert_name: prometheus-server.crt
+          key_name: prometheus-server.key
diff --git a/rabbitmq/server/vhost/catalog.yml b/rabbitmq/server/vhost/catalog.yml
new file mode 100644
index 0000000..23cb0f2
--- /dev/null
+++ b/rabbitmq/server/vhost/catalog.yml
@@ -0,0 +1,20 @@
+parameters:
+  rabbitmq:
+    server:
+      host:
+        '/murano':
+          enabled: true
+          user: openstack
+          password: ${_param:rabbitmq_murano_agent_password}
+          policies:
+          - name: HA
+            pattern: '^(?!amq\.).*'
+            definition: '{"ha-mode": "all", "message-ttl": 120000}'
+      admin:
+        name: admin
+        password: zeQuooQu47eed8esahpie2Lai8En9ohp
+      bind:
+        address: ${_param:single_address}
+      management:
+        bind:
+          address: ${_param:single_address}
diff --git a/rabbitmq/server/vhost/monitoring.yml b/rabbitmq/server/vhost/monitoring.yml
index 84bff97..af272b9 100644
--- a/rabbitmq/server/vhost/monitoring.yml
+++ b/rabbitmq/server/vhost/monitoring.yml
@@ -5,4 +5,4 @@
         '/monitor':
           enabled: true
           user: monitor
-          password: ${_param:rabbitmq_monitoring_password}
+          password: ${_param:rabbitmq_monitor_password}
diff --git a/reclass/storage/system/cicd_control_cluster.yml b/reclass/storage/system/cicd_control_cluster.yml
new file mode 100644
index 0000000..547ba61
--- /dev/null
+++ b/reclass/storage/system/cicd_control_cluster.yml
@@ -0,0 +1,41 @@
+parameters:
+  _param:
+    cicd_control_node01_hostname: cid01
+    cicd_control_node02_hostname: cid02
+    cicd_control_node03_hostname: cid03
+  reclass:
+    storage:
+      node:
+        cicd_control_node01:
+          name: ${_param:cicd_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.cicd.control.leader
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:cicd_control_node01_address}
+            keepalived_vip_priority: 103
+            cicd_database_id: 1
+        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_idm_cluster.yml b/reclass/storage/system/infra_idm_cluster.yml
new file mode 100644
index 0000000..aae2370
--- /dev/null
+++ b/reclass/storage/system/infra_idm_cluster.yml
@@ -0,0 +1,35 @@
+parameters:
+  _param:
+    infra_idm_node01_hostname: idm01
+    infra_idm_node02_hostname: idm02
+    infra_idm_node03_hostname: idm03
+  reclass:
+    storage:
+      node:
+        infra_idm_node01:
+          name: ${_param:infra_idm_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.idm
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: centos
+            single_address: ${_param:infra_idm_node01_address}
+        infra_idm_node02:
+          name: ${_param:infra_idm_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.idm
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: centos
+            single_address: ${_param:infra_idm_node02_address}
+        infra_idm_node03:
+          name: ${_param:infra_idm_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.idm
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: centos
+            single_address: ${_param:infra_idm_node03_address}
\ No newline at end of file
diff --git a/reclass/storage/system/kubernetes_control_single.yml b/reclass/storage/system/kubernetes_control_single.yml
new file mode 100644
index 0000000..c88e3c3
--- /dev/null
+++ b/reclass/storage/system/kubernetes_control_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    kubernetes_control_node01_hostname: ctl01
+  reclass:
+    storage:
+      node:
+        kubernetes_control_node01:
+          name: ${_param:kubernetes_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.kubernetes.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:kubernetes_control_node01_address}
\ No newline at end of file
diff --git a/reclass/storage/system/openstack_benchmark_single.yml b/reclass/storage/system/openstack_benchmark_single.yml
index 4c85d29..a676cc3 100644
--- a/reclass/storage/system/openstack_benchmark_single.yml
+++ b/reclass/storage/system/openstack_benchmark_single.yml
@@ -4,7 +4,7 @@
   reclass:
     storage:
       node:
-        opencontrail_benchmark_node01:
+        openstack_benchmark_node01:
           name: ${_param:openstack_benchmark_node01_hostname}
           domain: ${_param:cluster_domain}
           classes:
diff --git a/reclass/storage/system/openstack_catalog_cluster.yml b/reclass/storage/system/openstack_catalog_cluster.yml
new file mode 100644
index 0000000..332e5d6
--- /dev/null
+++ b/reclass/storage/system/openstack_catalog_cluster.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    openstack_catalog_node01_hostname: asc01
+    openstack_catalog_node02_hostname: asc02
+  reclass:
+    storage:
+      node:
+        openstack_catalog_node01:
+          name: ${_param:openstack_catalog_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.catalog
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_catalog_node01_address}
+            keepalived_vip_priority: 102
+        openstack_catalog_node02:
+          name: ${_param:openstack_catalog_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.catalog
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_catalog_node02_address}
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/openstack_catalog_single.yml b/reclass/storage/system/openstack_catalog_single.yml
new file mode 100644
index 0000000..b48ab27
--- /dev/null
+++ b/reclass/storage/system/openstack_catalog_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    openstack_catalog_node01_hostname: asc01
+  reclass:
+    storage:
+      node:
+        openstack_catalog_node01:
+          name: ${_param:openstack_catalog_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.catalog
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:linux_system_codename}
+            single_address: ${_param:openstack_catalog_node01_address}
diff --git a/reclass/storage/system/openstack_compute_multi.yml b/reclass/storage/system/openstack_compute_multi.yml
index 0340e9c..86092db 100644
--- a/reclass/storage/system/openstack_compute_multi.yml
+++ b/reclass/storage/system/openstack_compute_multi.yml
@@ -12,7 +12,7 @@
           - cluster.${_param:cluster_name}.openstack.compute
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: 172.16.10.105
         openstack_compute_node02:
           name: ${_param:openstack_compute_node02_hostname}
@@ -21,5 +21,5 @@
           - cluster.${_param:cluster_name}.openstack.compute
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: 172.16.10.106
diff --git a/reclass/storage/system/openstack_compute_single.yml b/reclass/storage/system/openstack_compute_single.yml
index 80758c7..215c0e6 100644
--- a/reclass/storage/system/openstack_compute_single.yml
+++ b/reclass/storage/system/openstack_compute_single.yml
@@ -11,5 +11,5 @@
           - cluster.${_param:cluster_name}.openstack.compute
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: 172.16.10.105
diff --git a/reclass/storage/system/openstack_dns_cluster.yml b/reclass/storage/system/openstack_dns_cluster.yml
new file mode 100644
index 0000000..d134c88
--- /dev/null
+++ b/reclass/storage/system/openstack_dns_cluster.yml
@@ -0,0 +1,27 @@
+parameters:
+  _param:
+    openstack_dns_node01_hostname: dns01
+    openstack_dns_node02_hostname: dns02
+  reclass:
+    storage:
+      node:
+        openstack_dns_node01:
+          name: ${_param:openstack_dns_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.dns
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: trusty
+            single_address: ${_param:openstack_dns_node01_address}
+            keepalived_vip_priority: 110
+        openstack_dns_node02:
+          name: ${_param:openstack_dns_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.dns
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: trusty
+            single_address: ${_param:openstack_dns_node02_address}
+            keepalived_vip_priority: 111
diff --git a/reclass/storage/system/openstack_gateway_cluster.yml b/reclass/storage/system/openstack_gateway_cluster.yml
index 72e31c5..f9d4485 100644
--- a/reclass/storage/system/openstack_gateway_cluster.yml
+++ b/reclass/storage/system/openstack_gateway_cluster.yml
@@ -17,7 +17,7 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_node01_address}
             tenant_address: ${_param:openstack_gateway_node01_tenant_address}
         openstack_gateway_node02:
@@ -27,7 +27,7 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_node02_address}
             tenant_address: ${_param:openstack_gateway_node02_tenant_address}
         openstack_gateway_node03:
@@ -37,7 +37,7 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_node03_address}
             tenant_address: ${_param:openstack_gateway_node03_tenant_address}
 
diff --git a/reclass/storage/system/openstack_gateway_single.yml b/reclass/storage/system/openstack_gateway_single.yml
index ebb9195..6f18571 100644
--- a/reclass/storage/system/openstack_gateway_single.yml
+++ b/reclass/storage/system/openstack_gateway_single.yml
@@ -11,5 +11,5 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_address}
\ No newline at end of file
diff --git a/reclass/storage/system/physical_control_cluster.yml b/reclass/storage/system/physical_control_cluster.yml
index 12b83c9..4622e09 100644
--- a/reclass/storage/system/physical_control_cluster.yml
+++ b/reclass/storage/system/physical_control_cluster.yml
@@ -1,57 +1,57 @@
 parameters:
   _param:
-    infra_compute_node01_hostname: kvm01
-    infra_compute_node02_hostname: kvm02
-    infra_compute_node03_hostname: kvm03
+    infra_kvm_node01_hostname: kvm01
+    infra_kvm_node02_hostname: kvm02
+    infra_kvm_node03_hostname: kvm03
 
-    infra_compute_node01_deploy_address: ${_param:infra_compute_node01_address}
-    infra_compute_node02_deploy_address: ${_param:infra_compute_node02_address}
-    infra_compute_node03_deploy_address: ${_param:infra_compute_node03_address}
+    infra_kvm_node01_deploy_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node02_deploy_address: ${_param:infra_kvm_node02_address}
+    infra_kvm_node03_deploy_address: ${_param:infra_kvm_node03_address}
 
-    infra_compute_node01_storage_address: ${_param:infra_compute_node01_address}
-    infra_compute_node02_storage_address: ${_param:infra_compute_node02_address}
-    infra_compute_node03_storage_address: ${_param:infra_compute_node03_address}
+    infra_kvm_node01_storage_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node02_storage_address: ${_param:infra_kvm_node02_address}
+    infra_kvm_node03_storage_address: ${_param:infra_kvm_node03_address}
 
-    infra_compute_node01_public_address: ${_param:infra_compute_node01_address}
-    infra_compute_node02_public_address: ${_param:infra_compute_node02_address}
-    infra_compute_node03_public_address: ${_param:infra_compute_node03_address}
+    infra_kvm_node01_public_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node02_public_address: ${_param:infra_kvm_node02_address}
+    infra_kvm_node03_public_address: ${_param:infra_kvm_node03_address}
 
   reclass:
     storage:
       node:
-        infra_compute_node01:
-          name: ${_param:infra_compute_node01_hostname}
+        infra_kvm_node01:
+          name: ${_param:infra_kvm_node01_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node01_address}
-            deploy_address: ${_param:infra_compute_node01_deploy_address}
-            public_address: ${_param:infra_compute_node01_public_address}
-            storage_address: ${_param:infra_compute_node01_storage_address}
-        infra_compute_node02:
-          name: ${_param:infra_compute_node02_hostname}
+            single_address: ${_param:infra_kvm_node01_address}
+            deploy_address: ${_param:infra_kvm_node01_deploy_address}
+            public_address: ${_param:infra_kvm_node01_public_address}
+            storage_address: ${_param:infra_kvm_node01_storage_address}
+        infra_kvm_node02:
+          name: ${_param:infra_kvm_node02_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node02_address}
-            deploy_address: ${_param:infra_compute_node02_deploy_address}
-            public_address: ${_param:infra_compute_node02_public_address}
-            storage_address: ${_param:infra_compute_node02_storage_address}
-        infra_compute_node03:
-          name: ${_param:infra_compute_node03_hostname}
+            single_address: ${_param:infra_kvm_node02_address}
+            deploy_address: ${_param:infra_kvm_node02_deploy_address}
+            public_address: ${_param:infra_kvm_node02_public_address}
+            storage_address: ${_param:infra_kvm_node02_storage_address}
+        infra_kvm_node03:
+          name: ${_param:infra_kvm_node03_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node03_address}
-            deploy_address: ${_param:infra_compute_node03_deploy_address}
-            public_address: ${_param:infra_compute_node03_public_address}
-            storage_address: ${_param:infra_compute_node03_storage_address}
+            single_address: ${_param:infra_kvm_node03_address}
+            deploy_address: ${_param:infra_kvm_node03_deploy_address}
+            public_address: ${_param:infra_kvm_node03_public_address}
+            storage_address: ${_param:infra_kvm_node03_storage_address}
diff --git a/reclass/storage/system/physical_control_full.yml b/reclass/storage/system/physical_control_full.yml
index 7591113..0f510a4 100644
--- a/reclass/storage/system/physical_control_full.yml
+++ b/reclass/storage/system/physical_control_full.yml
@@ -1,153 +1,153 @@
 parameters:
   _param:
-    infra_compute_node01_hostname: kvm01
-    infra_compute_node02_hostname: kvm02
-    infra_compute_node03_hostname: kvm03
-    infra_compute_node04_hostname: kvm04
-    infra_compute_node05_hostname: kvm05
-    infra_compute_node06_hostname: kvm06
-    infra_compute_node07_hostname: kvm07
-    infra_compute_node08_hostname: kvm08
-    infra_compute_node09_hostname: kvm09
+    infra_kvm_node01_hostname: kvm01
+    infra_kvm_node02_hostname: kvm02
+    infra_kvm_node03_hostname: kvm03
+    infra_kvm_node04_hostname: kvm04
+    infra_kvm_node05_hostname: kvm05
+    infra_kvm_node06_hostname: kvm06
+    infra_kvm_node07_hostname: kvm07
+    infra_kvm_node08_hostname: kvm08
+    infra_kvm_node09_hostname: kvm09
 
-    infra_compute_node01_deploy_address: ${_param:infra_compute_node01_address}
-    infra_compute_node02_deploy_address: ${_param:infra_compute_node02_address}
-    infra_compute_node03_deploy_address: ${_param:infra_compute_node03_address}
-    infra_compute_node04_deploy_address: ${_param:infra_compute_node04_address}
-    infra_compute_node05_deploy_address: ${_param:infra_compute_node05_address}
-    infra_compute_node06_deploy_address: ${_param:infra_compute_node06_address}
-    infra_compute_node07_deploy_address: ${_param:infra_compute_node07_address}
-    infra_compute_node08_deploy_address: ${_param:infra_compute_node08_address}
-    infra_compute_node09_deploy_address: ${_param:infra_compute_node09_address}
+    infra_kvm_node01_deploy_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node02_deploy_address: ${_param:infra_kvm_node02_address}
+    infra_kvm_node03_deploy_address: ${_param:infra_kvm_node03_address}
+    infra_kvm_node04_deploy_address: ${_param:infra_kvm_node04_address}
+    infra_kvm_node05_deploy_address: ${_param:infra_kvm_node05_address}
+    infra_kvm_node06_deploy_address: ${_param:infra_kvm_node06_address}
+    infra_kvm_node07_deploy_address: ${_param:infra_kvm_node07_address}
+    infra_kvm_node08_deploy_address: ${_param:infra_kvm_node08_address}
+    infra_kvm_node09_deploy_address: ${_param:infra_kvm_node09_address}
 
-    infra_compute_node01_storage_address: ${_param:infra_compute_node01_address}
-    infra_compute_node02_storage_address: ${_param:infra_compute_node02_address}
-    infra_compute_node03_storage_address: ${_param:infra_compute_node03_address}
-    infra_compute_node04_storage_address: ${_param:infra_compute_node04_address}
-    infra_compute_node05_storage_address: ${_param:infra_compute_node05_address}
-    infra_compute_node06_storage_address: ${_param:infra_compute_node06_address}
-    infra_compute_node07_storage_address: ${_param:infra_compute_node07_address}
-    infra_compute_node08_storage_address: ${_param:infra_compute_node08_address}
-    infra_compute_node09_storage_address: ${_param:infra_compute_node09_address}
+    infra_kvm_node01_storage_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node02_storage_address: ${_param:infra_kvm_node02_address}
+    infra_kvm_node03_storage_address: ${_param:infra_kvm_node03_address}
+    infra_kvm_node04_storage_address: ${_param:infra_kvm_node04_address}
+    infra_kvm_node05_storage_address: ${_param:infra_kvm_node05_address}
+    infra_kvm_node06_storage_address: ${_param:infra_kvm_node06_address}
+    infra_kvm_node07_storage_address: ${_param:infra_kvm_node07_address}
+    infra_kvm_node08_storage_address: ${_param:infra_kvm_node08_address}
+    infra_kvm_node09_storage_address: ${_param:infra_kvm_node09_address}
 
-    infra_compute_node01_public_address: ${_param:infra_compute_node01_address}
-    infra_compute_node02_public_address: ${_param:infra_compute_node02_address}
-    infra_compute_node03_public_address: ${_param:infra_compute_node03_address}
-    infra_compute_node04_public_address: ${_param:infra_compute_node04_address}
-    infra_compute_node05_public_address: ${_param:infra_compute_node05_address}
-    infra_compute_node06_public_address: ${_param:infra_compute_node06_address}
-    infra_compute_node07_public_address: ${_param:infra_compute_node07_address}
-    infra_compute_node08_public_address: ${_param:infra_compute_node08_address}
-    infra_compute_node09_public_address: ${_param:infra_compute_node09_address}
+    infra_kvm_node01_public_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node02_public_address: ${_param:infra_kvm_node02_address}
+    infra_kvm_node03_public_address: ${_param:infra_kvm_node03_address}
+    infra_kvm_node04_public_address: ${_param:infra_kvm_node04_address}
+    infra_kvm_node05_public_address: ${_param:infra_kvm_node05_address}
+    infra_kvm_node06_public_address: ${_param:infra_kvm_node06_address}
+    infra_kvm_node07_public_address: ${_param:infra_kvm_node07_address}
+    infra_kvm_node08_public_address: ${_param:infra_kvm_node08_address}
+    infra_kvm_node09_public_address: ${_param:infra_kvm_node09_address}
 
   reclass:
     storage:
       node:
-        infra_compute_node01:
-          name: ${_param:infra_compute_node01_hostname}
+        infra_kvm_node01:
+          name: ${_param:infra_kvm_node01_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node01_address}
-            deploy_address: ${_param:infra_compute_node01_deploy_address}
-            public_address: ${_param:infra_compute_node01_public_address}
-            storage_address: ${_param:infra_compute_node01_storage_address}
-        infra_compute_node02:
-          name: ${_param:infra_compute_node02_hostname}
+            single_address: ${_param:infra_kvm_node01_address}
+            deploy_address: ${_param:infra_kvm_node01_deploy_address}
+            public_address: ${_param:infra_kvm_node01_public_address}
+            storage_address: ${_param:infra_kvm_node01_storage_address}
+        infra_kvm_node02:
+          name: ${_param:infra_kvm_node02_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node02_address}
-            deploy_address: ${_param:infra_compute_node02_deploy_address}
-            public_address: ${_param:infra_compute_node02_public_address}
-            storage_address: ${_param:infra_compute_node02_storage_address}
-        infra_compute_node03:
-          name: ${_param:infra_compute_node03_hostname}
+            single_address: ${_param:infra_kvm_node02_address}
+            deploy_address: ${_param:infra_kvm_node02_deploy_address}
+            public_address: ${_param:infra_kvm_node02_public_address}
+            storage_address: ${_param:infra_kvm_node02_storage_address}
+        infra_kvm_node03:
+          name: ${_param:infra_kvm_node03_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node03_address}
-            deploy_address: ${_param:infra_compute_node03_deploy_address}
-            public_address: ${_param:infra_compute_node03_public_address}
-            storage_address: ${_param:infra_compute_node03_storage_address}
-        infra_compute_node04:
-          name: ${_param:infra_compute_node04_hostname}
+            single_address: ${_param:infra_kvm_node03_address}
+            deploy_address: ${_param:infra_kvm_node03_deploy_address}
+            public_address: ${_param:infra_kvm_node03_public_address}
+            storage_address: ${_param:infra_kvm_node03_storage_address}
+        infra_kvm_node04:
+          name: ${_param:infra_kvm_node04_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node04_address}
-            deploy_address: ${_param:infra_compute_node04_deploy_address}
-            public_address: ${_param:infra_compute_node04_public_address}
-            storage_address: ${_param:infra_compute_node04_storage_address}
-        infra_compute_node05:
-          name: ${_param:infra_compute_node05_hostname}
+            single_address: ${_param:infra_kvm_node04_address}
+            deploy_address: ${_param:infra_kvm_node04_deploy_address}
+            public_address: ${_param:infra_kvm_node04_public_address}
+            storage_address: ${_param:infra_kvm_node04_storage_address}
+        infra_kvm_node05:
+          name: ${_param:infra_kvm_node05_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node05_address}
-            deploy_address: ${_param:infra_compute_node05_deploy_address}
-            public_address: ${_param:infra_compute_node05_public_address}
-            storage_address: ${_param:infra_compute_node05_storage_address}
-        infra_compute_node06:
-          name: ${_param:infra_compute_node06_hostname}
+            single_address: ${_param:infra_kvm_node05_address}
+            deploy_address: ${_param:infra_kvm_node05_deploy_address}
+            public_address: ${_param:infra_kvm_node05_public_address}
+            storage_address: ${_param:infra_kvm_node05_storage_address}
+        infra_kvm_node06:
+          name: ${_param:infra_kvm_node06_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node06_address}
-            deploy_address: ${_param:infra_compute_node06_deploy_address}
-            public_address: ${_param:infra_compute_node06_public_address}
-            storage_address: ${_param:infra_compute_node06_storage_address}
-        infra_compute_node07:
-          name: ${_param:infra_compute_node07_hostname}
+            single_address: ${_param:infra_kvm_node06_address}
+            deploy_address: ${_param:infra_kvm_node06_deploy_address}
+            public_address: ${_param:infra_kvm_node06_public_address}
+            storage_address: ${_param:infra_kvm_node06_storage_address}
+        infra_kvm_node07:
+          name: ${_param:infra_kvm_node07_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node07_address}
-            deploy_address: ${_param:infra_compute_node07_deploy_address}
-            public_address: ${_param:infra_compute_node07_public_address}
-            storage_address: ${_param:infra_compute_node07_storage_address}
-        infra_compute_node08:
-          name: ${_param:infra_compute_node08_hostname}
+            single_address: ${_param:infra_kvm_node07_address}
+            deploy_address: ${_param:infra_kvm_node07_deploy_address}
+            public_address: ${_param:infra_kvm_node07_public_address}
+            storage_address: ${_param:infra_kvm_node07_storage_address}
+        infra_kvm_node08:
+          name: ${_param:infra_kvm_node08_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node08_address}
-            deploy_address: ${_param:infra_compute_node08_deploy_address}
-            public_address: ${_param:infra_compute_node08_public_address}
-            storage_address: ${_param:infra_compute_node08_storage_address}
-        infra_compute_node09:
-          name: ${_param:infra_compute_node09_hostname}
+            single_address: ${_param:infra_kvm_node08_address}
+            deploy_address: ${_param:infra_kvm_node08_deploy_address}
+            public_address: ${_param:infra_kvm_node08_public_address}
+            storage_address: ${_param:infra_kvm_node08_storage_address}
+        infra_kvm_node09:
+          name: ${_param:infra_kvm_node09_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node09_address}
-            deploy_address: ${_param:infra_compute_node09_deploy_address}
-            public_address: ${_param:infra_compute_node09_public_address}
-            storage_address: ${_param:infra_compute_node09_storage_address}
\ No newline at end of file
+            single_address: ${_param:infra_kvm_node09_address}
+            deploy_address: ${_param:infra_kvm_node09_deploy_address}
+            public_address: ${_param:infra_kvm_node09_public_address}
+            storage_address: ${_param:infra_kvm_node09_storage_address}
diff --git a/reclass/storage/system/physical_control_single.yml b/reclass/storage/system/physical_control_single.yml
index 1a604f1..32f09c3 100644
--- a/reclass/storage/system/physical_control_single.yml
+++ b/reclass/storage/system/physical_control_single.yml
@@ -1,21 +1,21 @@
 parameters:
   _param:
-    infra_compute_node01_hostname: kvm01
-    infra_compute_node01_deploy_address: ${_param:infra_compute_node01_address}
-    infra_compute_node01_storage_address: ${_param:infra_compute_node01_address}
-    infra_compute_node01_public_address: ${_param:infra_compute_node01_address}
+    infra_kvm_node01_hostname: kvm01
+    infra_kvm_node01_deploy_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node01_storage_address: ${_param:infra_kvm_node01_address}
+    infra_kvm_node01_public_address: ${_param:infra_kvm_node01_address}
   reclass:
     storage:
       node:
-        infra_compute_node01:
-          name: ${_param:infra_compute_node01_hostname}
+        infra_kvm_node01:
+          name: ${_param:infra_kvm_node01_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.infra.kvm
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
-            single_address: ${_param:infra_compute_node01_address}
-            deploy_address: ${_param:infra_compute_node01_deploy_address}
-            public_address: ${_param:infra_compute_node01_public_address}
-            storage_address: ${_param:infra_compute_node01_storage_address}
\ No newline at end of file
+            single_address: ${_param:infra_kvm_node01_address}
+            deploy_address: ${_param:infra_kvm_node01_deploy_address}
+            public_address: ${_param:infra_kvm_node01_public_address}
+            storage_address: ${_param:infra_kvm_node01_storage_address}
diff --git a/reclass/storage/system/rsyslog_single.yml b/reclass/storage/system/rsyslog_single.yml
new file mode 100644
index 0000000..a3eefac
--- /dev/null
+++ b/reclass/storage/system/rsyslog_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    rsyslog_node01_hostname: rsl01
+  reclass:
+    storage:
+      node:
+        rsyslog_node01:
+          name: ${_param:rsyslog_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.rsyslog
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:rsyslog_node01_address}
diff --git a/reclass/storage/system/stacklight_monitor_cluster.yml b/reclass/storage/system/stacklight_monitor_cluster.yml
index 9df1a69..f95cf81 100644
--- a/reclass/storage/system/stacklight_monitor_cluster.yml
+++ b/reclass/storage/system/stacklight_monitor_cluster.yml
@@ -12,6 +12,8 @@
           classes:
           - cluster.${_param:cluster_name}.stacklight.monitor
           params:
+            redis_cluster_role: 'master'
+            rabbitmq_cluster_role: 'master'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node01_address}
@@ -22,6 +24,8 @@
           classes:
           - cluster.${_param:cluster_name}.stacklight.monitor
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node02_address}
@@ -32,6 +36,8 @@
           classes:
           - cluster.${_param:cluster_name}.stacklight.monitor
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node03_address}
diff --git a/reclass/storage/system/stacklight_server_cluster.yml b/reclass/storage/system/stacklight_server_cluster.yml
index 9d40ea9..26b9ebe 100644
--- a/reclass/storage/system/stacklight_server_cluster.yml
+++ b/reclass/storage/system/stacklight_server_cluster.yml
@@ -11,33 +11,40 @@
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.server
-          - system.influxdb.server.single
-          - system.influxdb.database.stacklight
           - system.elasticsearch.client.single
           - system.grafana.client.single
           - system.kibana.client.single
           params:
+            redis_cluster_role: 'master'
+            rabbitmq_cluster_role: 'master'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node01_address}
             keepalived_vip_priority: 103
+            rabbitmq_cluster_role: master
         stacklight_server_node02:
           name: ${_param:stacklight_monitor_node02_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.server
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node02_address}
             keepalived_vip_priority: 102
+            rabbitmq_cluster_role: slave
         stacklight_server_node03:
           name: ${_param:stacklight_monitor_node03_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.server
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node03_address}
             keepalived_vip_priority: 101
+            rabbitmq_cluster_role: slave
diff --git a/reclass/storage/system/stacklight_server_single.yml b/reclass/storage/system/stacklight_server_single.yml
index 6ef1050..2b397f6 100644
--- a/reclass/storage/system/stacklight_server_single.yml
+++ b/reclass/storage/system/stacklight_server_single.yml
@@ -11,8 +11,6 @@
           - cluster.${_param:cluster_name}.stacklight.server
           - system.elasticsearch.client.single
           - system.grafana.client.single
-          - system.influxdb.server.single
-          - system.influxdb.database.stacklight
           - system.kibana.client.single
           params:
             salt_master_host: ${_param:reclass_config_master}
diff --git a/sahara/server/cluster.yml b/sahara/server/cluster.yml
new file mode 100644
index 0000000..cdb7b04
--- /dev/null
+++ b/sahara/server/cluster.yml
@@ -0,0 +1,39 @@
+classes:
+- service.sahara.server.cluster
+- service.keepalived.cluster.single
+- system.haproxy.proxy.listen.openstack.sahara
+- service.haproxy.proxy.single
+parameters:
+  sahara:
+    server:
+      enabled: true
+      version: ${_param:sahara_version}
+      notification: false
+      bind:
+        address: ${_param:single_address}
+        port: 8386
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name: sahara
+        user: sahara
+        password: ${_param:mysql_sahara_password}
+      identity:
+        engine: keystone
+        protocol: http
+        host:  ${_param:openstack_control_address}
+        port: 35357
+        tenant: service
+        user: sahara
+        password: ${_param:keystone_sahara_password}
+      message_queue:
+        engine: rabbitmq
+        port: 5672
+        members:
+        - host: ${_param:openstack_message_queue_node01_address}
+        - host: ${_param:openstack_message_queue_node02_address}
+        - host: ${_param:openstack_message_queue_node03_address}
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
diff --git a/sahara/server/single.yml b/sahara/server/single.yml
new file mode 100644
index 0000000..01e7b38
--- /dev/null
+++ b/sahara/server/single.yml
@@ -0,0 +1,31 @@
+classes:
+- service.sahara.server.single
+parameters:
+  sahara:
+    server:
+      enabled: true
+      version: ${_param:sahara_version}
+      bind:
+        host: ${_param:single_address}
+        port: 8386
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        port: 3306
+        name: sahara
+        user: sahara
+        password: ${_param:mysql_sahara_password}
+      identity:
+        engine: keystone
+        host: ${_param:openstack_control_address}
+        port: 35357
+        user: sahara
+        password: ${_param:keystone_sahara_password}
+        tenant: service
+      message_queue:
+        engine: rabbitmq
+        host: ${_param:cluster_vip_address}
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
diff --git a/salt/control/cluster/cicd_control_cluster.yml b/salt/control/cluster/cicd_control_cluster.yml
new file mode 100644
index 0000000..eb6a8b1
--- /dev/null
+++ b/salt/control/cluster/cicd_control_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        cicd.control:
+          cpu: 8
+          ram: 32768
+          disk_profile: large
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            cid01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: cicd.control
+            cid02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: cicd.control
+            cid03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: cicd.control
diff --git a/salt/control/cluster/infra_idm_cluster.yml b/salt/control/cluster/infra_idm_cluster.yml
new file mode 100644
index 0000000..98d580b
--- /dev/null
+++ b/salt/control/cluster/infra_idm_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        infra.idm:
+          cpu: 4
+          ram: 8192
+          disk_profile: large
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            idm01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_centos7_image}
+              size: infra.idm
+            idm02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_centos7_image}
+              size: infra.idm
+            idm03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_centos7_image}
+              size: infra.idm
diff --git a/salt/control/cluster/openstack_dns_cluster.yml b/salt/control/cluster/openstack_dns_cluster.yml
new file mode 100644
index 0000000..4ca0e00
--- /dev/null
+++ b/salt/control/cluster/openstack_dns_cluster.yml
@@ -0,0 +1,22 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.dns:
+          cpu: 2
+          ram: 4096
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            dns01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.dns
+            dns02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.dns
diff --git a/salt/control/cluster/rsyslog_single.yml b/salt/control/cluster/rsyslog_single.yml
new file mode 100644
index 0000000..4e53747
--- /dev/null
+++ b/salt/control/cluster/rsyslog_single.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    control:
+      size:
+        infra.rsyslog:
+          cpu: 8
+          ram: 8192
+          disk_profile: xxlarge
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            rsl01:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: infra.rsyslog
diff --git a/salt/master/api.yml b/salt/master/api.yml
index 1c0c3fb..b5ede2f 100644
--- a/salt/master/api.yml
+++ b/salt/master/api.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    salt_master_api_port: 8000
+    salt_master_api_port: 6969
     salt_master_api_permissions:
     - '.*'
     - '@local'
diff --git a/salt/master/formula/git/foundation.yml b/salt/master/formula/git/foundation.yml
index 92cb6f6..eaaeea9 100644
--- a/salt/master/formula/git/foundation.yml
+++ b/salt/master/formula/git/foundation.yml
@@ -31,10 +31,22 @@
                   enabled: true
                 jenkins_job.py:
                   enabled: true
+                jenkins_lib.py:
+                  enabled: true
                 jenkins_node.py:
                   enabled: true
+                jenkins_plugin.py:
+                  enabled: true
+                jenkins_security.py:
+                  enabled: true
+                jenkins_slack.py:
+                  enabled: true
+                jenkins_smtp.py:
+                  enabled: true
                 jenkins_user.py:
                   enabled: true
+                jenkins_view.py:
+                  enabled: true
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-jenkins.git'
               revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/monitoring.yml b/salt/master/formula/git/monitoring.yml
new file mode 100644
index 0000000..e0cf30d
--- /dev/null
+++ b/salt/master/formula/git/monitoring.yml
@@ -0,0 +1,14 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            prometheus:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-prometheus.git'
+              revision: ${_param:salt_master_environment_revision}
+            telegraf:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-telegraf.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/openstack.yml b/salt/master/formula/git/openstack.yml
index 78b7d91..36ddfc2 100644
--- a/salt/master/formula/git/openstack.yml
+++ b/salt/master/formula/git/openstack.yml
@@ -8,6 +8,10 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-aodh.git'
               revision: ${_param:salt_master_environment_revision}
+            #avinetworks:
+            #  source: git
+            #  address: '${_param:salt_master_environment_repository}/salt-formula-avinetworks.git'
+            #  revision: ${_param:salt_master_environment_revision}
             billometer:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-billometer.git'
@@ -24,6 +28,10 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-cinder.git'
               revision: ${_param:salt_master_environment_revision}
+            designate:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-designate.git'
+              revision: ${_param:salt_master_environment_revision}
             galera:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-galera.git'
@@ -96,6 +104,10 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-rabbitmq.git'
               revision: ${_param:salt_master_environment_revision}
+            sahara:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-sahara.git'
+              revision: ${_param:salt_master_environment_revision}
             statsd:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-statsd.git'
diff --git a/salt/master/formula/git/oss.yml b/salt/master/formula/git/oss.yml
new file mode 100644
index 0000000..5c9577a
--- /dev/null
+++ b/salt/master/formula/git/oss.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    salt_master_oss_repository: https://gerrit.mcp.mirantis.net/salt-formulas
+    salt_master_oss_revision: master
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            devops_portal:
+              module:
+                devops_utils.py:
+                  enabled: true
+              source: git
+              address: '${_param:salt_master_oss_repository}/devops-portal.git'
+              revision: ${_param:salt_master_oss_revision}
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 4b2b669..ebb2b00 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -4,6 +4,9 @@
       environment:
         prd:
           formula:
+            aptcacher:
+              source: pkg
+              name: salt-formula-aptcacher
             aptly:
               source: pkg
               name: salt-formula-aptly
@@ -16,3 +19,12 @@
             jenkins:
               source: pkg
               name: salt-formula-jenkins
+            freeipa:
+              source: pkg
+              name: salt-formula-freeipa
+            maas:
+              source: pkg
+              name: salt-formula-maas
+            openldap:
+              source: pkg
+              name: salt-formula-openldap
diff --git a/salt/master/formula/pkg/monitoring.yml b/salt/master/formula/pkg/monitoring.yml
new file mode 100644
index 0000000..375cbd8
--- /dev/null
+++ b/salt/master/formula/pkg/monitoring.yml
@@ -0,0 +1,12 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            prometheus:
+              source: pkg
+              name: salt-formula-prometheus
+            telegraf:
+              source: pkg
+              name: salt-formula-telegraf
diff --git a/salt/master/formula/pkg/openstack.yml b/salt/master/formula/pkg/openstack.yml
index 6d9bcab..b1222d1 100644
--- a/salt/master/formula/pkg/openstack.yml
+++ b/salt/master/formula/pkg/openstack.yml
@@ -7,6 +7,9 @@
             aodh:
               source: pkg
               name: salt-formula-aodh
+            #avinetworks:
+            #  source: pkg
+            #  name: salt-formula-avinetworks
             billometer:
               source: pkg
               name: salt-formula-billometer
@@ -28,6 +31,9 @@
             glusterfs:
               source: pkg
               name: salt-formula-glusterfs
+            designate:
+              source: pkg
+              name: salt-formula-designate
             haproxy:
               source: pkg
               name: salt-formula-haproxy
@@ -52,6 +58,9 @@
             mysql:
               source: pkg
               name: salt-formula-mysql
+            murano:
+              source: pkg
+              name: salt-formula-murano
             neutron:
               source: pkg
               name: salt-formula-neutron
@@ -70,6 +79,9 @@
             rabbitmq:
               source: pkg
               name: salt-formula-rabbitmq
+            sahara:
+              source: pkg
+              name: salt-formula-sahara
             statsd:
               source: pkg
               name: salt-formula-statsd
diff --git a/salt/master/formula/pkg/oss.yml b/salt/master/formula/pkg/oss.yml
new file mode 100644
index 0000000..1c0e90a
--- /dev/null
+++ b/salt/master/formula/pkg/oss.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            devops_portal:
+              source: pkg
+              name: salt-formula-devops-portal
diff --git a/salt/master/git.yml b/salt/master/git.yml
index d9bbd80..267bdb1 100644
--- a/salt/master/git.yml
+++ b/salt/master/git.yml
@@ -1,10 +1,13 @@
 classes:
 - system.salt.master.single
+- system.salt.master.formula.git.ccp
+- system.salt.master.formula.git.foundation
+- system.salt.master.formula.git.kubernetes
 - system.salt.master.formula.git.openstack
+- system.salt.master.formula.git.oss
 - system.salt.master.formula.git.saltstack
 - system.salt.master.formula.git.stacklight
-- system.salt.master.formula.git.kubernetes
-- system.salt.master.formula.git.ccp
+- system.salt.master.formula.git.monitoring
 parameters:
   _param:
     salt_master_environment_repository: "https://github.com/salt-formulas"
diff --git a/salt/master/pkg.yml b/salt/master/pkg.yml
index 72325c9..1001d49 100644
--- a/salt/master/pkg.yml
+++ b/salt/master/pkg.yml
@@ -1,8 +1,11 @@
 classes:
 - system.salt.master.single
+- system.salt.master.formula.pkg.ccp
+- system.salt.master.formula.pkg.foundation
+- system.salt.master.formula.pkg.kubernetes
 - system.salt.master.formula.pkg.openstack
+- system.salt.master.formula.pkg.oss
 - system.salt.master.formula.pkg.saltstack
 - system.salt.master.formula.pkg.stacklight
-- system.salt.master.formula.pkg.kubernetes
-- system.salt.master.formula.pkg.ccp
-- system.linux.system.repo.tcp_salt
+- system.salt.master.formula.pkg.monitoring
+- system.linux.system.repo.mcp.salt
diff --git a/salt/minion/ca/salt_master.yml b/salt/minion/ca/salt_master.yml
index 30c9d9b..87cd6e6 100644
--- a/salt/minion/ca/salt_master.yml
+++ b/salt/minion/ca/salt_master.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     salt_minion_ca_common_name: Salt Master CA
-    salt_minion_ca_country: cz 
+    salt_minion_ca_country: cz
     salt_minion_ca_locality: Prague
     salt_minion_ca_organization: Mirantis
     salt_minion_ca_days_valid_authority: 3650
@@ -21,6 +21,9 @@
             cert_client:
               type: v3_edge_cert_client
               minions: '*'
+            cert_open:
+              type: v3_edge_cert_open
+              minions: '*'
           days_valid:
             authority: ${_param:salt_minion_ca_days_valid_authority}
             certificate: ${_param:salt_minion_ca_days_valid_certificate}
diff --git a/salt/minion/cert/ceph/init.yml b/salt/minion/cert/ceph/init.yml
new file mode 100644
index 0000000..8b2e61c
--- /dev/null
+++ b/salt/minion/cert/ceph/init.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    salt_minion_ca_authority: salt_master_ca
+  salt:
+    minion:
+      cert:
+        ceph:
+          host: ${_param:salt_minion_ca_host}
+          signing_policy: cert_server
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${_param:cluster_public_host}
+
diff --git a/salt/minion/cert/ceph/openstack.yml b/salt/minion/cert/ceph/openstack.yml
new file mode 100644
index 0000000..664352d
--- /dev/null
+++ b/salt/minion/cert/ceph/openstack.yml
@@ -0,0 +1,11 @@
+classes:
+- system.salt.minion.cert.ceph
+parameters:
+  _param:
+    salt_pki_ceph_alt_names: IP:${_param:cluster_public_host},DNS:${_param:cluster_public_host}
+  salt:
+    minion:
+      cert:
+        ceph:
+          common_name: ceph
+          alternative_names: IP:127.0.0.1,${_param:salt_pki_ceph_alt_names}
diff --git a/salt/minion/cert/ceph/pki.yml b/salt/minion/cert/ceph/pki.yml
new file mode 100644
index 0000000..259fc38
--- /dev/null
+++ b/salt/minion/cert/ceph/pki.yml
@@ -0,0 +1,8 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        ceph:
+          key_file:  /srv/salt/pki/${_param:cluster_name}/ceph.${_param:cluster_public_host}.key
+          cert_file: /srv/salt/pki/${_param:cluster_name}/ceph.${_param:cluster_public_host}.crt
+          all_file:  /srv/salt/pki/${_param:cluster_name}/ceph-with-key.${_param:cluster_public_host}.pem
diff --git a/salt/minion/cert/etcd_client.yml b/salt/minion/cert/etcd_client.yml
new file mode 100644
index 0000000..90b41da
--- /dev/null
+++ b/salt/minion/cert/etcd_client.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_client:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${linux:system:name}
+          signing_policy: cert_open
+          alternative_names: IP:${_param:cluster_local_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extended_key_usage: clientAuth
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: /var/lib/etcd/etcd-client.key
+          cert_file: /var/lib/etcd/etcd-client.crt
+          all_file: /var/lib/etcd/etcd-client.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/etcd_server.yml b/salt/minion/cert/etcd_server.yml
new file mode 100644
index 0000000..ea26a40
--- /dev/null
+++ b/salt/minion/cert/etcd_server.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${linux:system:name}
+          signing_policy: cert_open
+          alternative_names: IP:127.0.0.1,IP:${_param:cluster_vip_address},IP:${_param:cluster_local_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extended_key_usage: serverAuth,clientAuth
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: /var/lib/etcd/etcd-server.key
+          cert_file: /var/lib/etcd/etcd-server.crt
+          all_file: /var/lib/etcd/etcd-server.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/k8s_client_single.yml b/salt/minion/cert/k8s_client_single.yml
new file mode 100644
index 0000000..179d534
--- /dev/null
+++ b/salt/minion/cert/k8s_client_single.yml
@@ -0,0 +1,13 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        k8s_client:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          key_file: /etc/kubernetes/ssl/kubelet-client.key
+          cert_file: /etc/kubernetes/ssl/kubelet-client.crt
+          ca_file: /etc/kubernetes/ssl/ca-kubernetes.crt
+          common_name: kubelet-client
+          signing_policy: cert_client
+          alternative_names: IP:${_param:control_address},IP:${_param:kubernetes_internal_api_address}
\ No newline at end of file
diff --git a/salt/minion/cert/k8s_server.yml b/salt/minion/cert/k8s_server.yml
index d9b1da6..603d369 100644
--- a/salt/minion/cert/k8s_server.yml
+++ b/salt/minion/cert/k8s_server.yml
@@ -10,4 +10,4 @@
           cert_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.crt
           all_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.pem
           signing_policy: cert_server
-          alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address}
+          alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address},DNS:kubernetes.default,DNS:kubernetes.default.svc
diff --git a/salt/minion/cert/k8s_server_single.yml b/salt/minion/cert/k8s_server_single.yml
new file mode 100644
index 0000000..33637e4
--- /dev/null
+++ b/salt/minion/cert/k8s_server_single.yml
@@ -0,0 +1,13 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        k8s_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: kubernetes-server
+          key_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.key
+          cert_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.crt
+          all_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.pem
+          signing_policy: cert_server
+          alternative_names: IP:${_param:control_address},IP:${_param:kubernetes_internal_api_address}
diff --git a/salt/minion/cert/prometheus_server.yml b/salt/minion/cert/prometheus_server.yml
new file mode 100644
index 0000000..23c4abf
--- /dev/null
+++ b/salt/minion/cert/prometheus_server.yml
@@ -0,0 +1,13 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        prometheus_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          key_file: /srv/volumes/prometheus/prometheus-server.key
+          cert_file: /srv/volumes/prometheus/prometheus-server.crt
+          common_name: prometheus-server
+          signing_policy: cert_client
+          alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address}
+          mode: '0444'
diff --git a/salt/minion/cert/proxy/cicd.yml b/salt/minion/cert/proxy/cicd.yml
new file mode 100644
index 0000000..5fb5b28
--- /dev/null
+++ b/salt/minion/cert/proxy/cicd.yml
@@ -0,0 +1,15 @@
+classes:
+- system.salt.minion.cert.proxy
+parameters:
+  salt:
+    minion:
+      cert:
+        proxy:
+          alternative_names: "DNS:${_param:cluster_public_host}, DNS:*.${_param:cluster_public_host}, IP:${_param:control_vip_address}, IP:${_param:single_address}"
+          key_file: /etc/haproxy/ssl/${_param:cluster_public_host}.key
+          cert_file: /etc/haproxy/ssl/${_param:cluster_public_host}.crt
+          all_file: /etc/haproxy/ssl/${_param:cluster_public_host}-all.pem
+          ca_file: /etc/haproxy/ssl/${_param:salt_minion_ca_authority}-ca.crt
+          user: root
+          group: haproxy
+          mode: 640
\ No newline at end of file
diff --git a/salt/minion/cert/proxy.yml b/salt/minion/cert/proxy/init.yml
similarity index 100%
rename from salt/minion/cert/proxy.yml
rename to salt/minion/cert/proxy/init.yml
diff --git a/salt/minion/cert/proxy/openstack.yml b/salt/minion/cert/proxy/openstack.yml
new file mode 100644
index 0000000..627d96b
--- /dev/null
+++ b/salt/minion/cert/proxy/openstack.yml
@@ -0,0 +1,11 @@
+classes:
+- system.salt.minion.cert.proxy
+parameters:
+  _param:
+    salt_pki_proxy_alt_names: IP:${_param:cluster_public_host},DNS:${_param:cluster_public_host},DNS:proxy.${_param:cluster_public_host},DNS:horizon.${_param:cluster_public_host}
+  salt:
+    minion:
+      cert:
+        proxy:
+          common_name: proxy
+          alternative_names: IP:127.0.0.1,${_param:salt_pki_proxy_alt_names}
diff --git a/salt/minion/cert/proxy/pki.yml b/salt/minion/cert/proxy/pki.yml
new file mode 100644
index 0000000..9a93bbf
--- /dev/null
+++ b/salt/minion/cert/proxy/pki.yml
@@ -0,0 +1,8 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        proxy:
+          key_file:  /srv/salt/pki/${_param:cluster_name}/proxy.${_param:cluster_public_host}.key
+          cert_file: /srv/salt/pki/${_param:cluster_name}/proxy.${_param:cluster_public_host}.crt
+          all_file:  /srv/salt/pki/${_param:cluster_name}/proxy-with-key.${_param:cluster_public_host}.pem
diff --git a/salt/minion/cert/swift/init.yml b/salt/minion/cert/swift/init.yml
new file mode 100644
index 0000000..28859cf
--- /dev/null
+++ b/salt/minion/cert/swift/init.yml
@@ -0,0 +1,11 @@
+parameters:
+  _param:
+    salt_minion_ca_authority: salt_master_ca
+  salt:
+    minion:
+      cert:
+        swift:
+          host: ${_param:salt_minion_ca_host}
+          signing_policy: cert_server
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${_param:cluster_public_host}
diff --git a/salt/minion/cert/swift/openstack.yml b/salt/minion/cert/swift/openstack.yml
new file mode 100644
index 0000000..5560e1b
--- /dev/null
+++ b/salt/minion/cert/swift/openstack.yml
@@ -0,0 +1,11 @@
+classes:
+- system.salt.minion.cert.swift
+parameters:
+  _param:
+    salt_pki_swift_alt_names: IP:${_param:cluster_public_host},DNS:${_param:cluster_public_host}
+  salt:
+    minion:
+      cert:
+        swift:
+          common_name: swift
+          alternative_names: IP:127.0.0.1,${_param:salt_pki_swift_alt_names}
diff --git a/salt/minion/cert/swift/pki.yml b/salt/minion/cert/swift/pki.yml
new file mode 100644
index 0000000..dd24060
--- /dev/null
+++ b/salt/minion/cert/swift/pki.yml
@@ -0,0 +1,8 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        swift:
+          key_file:  /srv/salt/pki/${_param:cluster_name}/swift.${_param:cluster_public_host}.key
+          cert_file: /srv/salt/pki/${_param:cluster_name}/swift.${_param:cluster_public_host}.crt
+          all_file:  /srv/salt/pki/${_param:cluster_name}/swift-with-key.${_param:cluster_public_host}.pem
diff --git a/salt/minion/cert/wildcard/init.yml b/salt/minion/cert/wildcard/init.yml
new file mode 100644
index 0000000..3bc2d52
--- /dev/null
+++ b/salt/minion/cert/wildcard/init.yml
@@ -0,0 +1,16 @@
+parameters:
+  _param:
+    salt_minion_ca_authority: salt_master_ca
+    salt_pki_wildcard_alt_names: IP:${_param:cluster_public_host},DNS:${_param:cluster_public_host},DNS:*.${_param:cluster_public_host},DNS:${_param:cluster_domain},DNS:*.${_param:cluster_domain}
+  salt:
+    minion:
+      cert:
+        proxy:
+          host: ${_param:salt_minion_ca_host}
+          signing_policy: cert_server
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: wildcard
+          alternative_names: IP:127.0.0.1,${_param:salt_pki_wildcard_alt_names}
+          key_file:  /srv/salt/pki/${_param:cluster_name}/wildcard.${_param:cluster_public_host}.key
+          cert_file: /srv/salt/pki/${_param:cluster_name}/wildcard.${_param:cluster_public_host}.crt
+          all_file:  /srv/salt/pki/${_param:cluster_name}/wildcard-with-key.${_param:cluster_public_host}.pem
diff --git a/sensu/client/stacklight.yml b/sensu/client/stacklight.yml
new file mode 100644
index 0000000..b41ee77
--- /dev/null
+++ b/sensu/client/stacklight.yml
@@ -0,0 +1,8 @@
+classes:
+- service.sensu.client
+parameters:
+  _param:
+    sensu_message_queue_host: ${_param:stacklight_monitor_address}
+  sensu:
+    client:
+      metric_handlers: []
diff --git a/sensu/client/unsubscribe/collectd.yml b/sensu/client/unsubscribe/collectd.yml
new file mode 100644
index 0000000..88c883c
--- /dev/null
+++ b/sensu/client/unsubscribe/collectd.yml
@@ -0,0 +1,5 @@
+parameters:
+  sensu:
+    client:
+      unsubscribe:
+        - collectd.client
diff --git a/sensu/server/cluster.yml b/sensu/server/cluster.yml
new file mode 100644
index 0000000..28eb78b
--- /dev/null
+++ b/sensu/server/cluster.yml
@@ -0,0 +1,31 @@
+classes:
+- service.git.client
+- service.redis.server.single
+- service.rabbitmq.server.cluster
+- system.rabbitmq.server.vhost.monitoring
+- service.sensu.server.single
+parameters:
+  _param:
+    rabbitmq_secret_key: secret
+    rabbitmq_admin_password: password
+    rabbitmq_cold_password: password
+    rabbitmq_monitor_password: password
+    sensu_message_queue_host: ${_param:cluster_vip_address}
+  rabbitmq:
+    cluster:
+      name: 'monitoring'
+  redis:
+    server:
+      version: 3.0
+      bind:
+        address: ${_param:single_address}
+    cluster:
+      enabled: True
+      mode: sentinel
+      role: ${_param:redis_cluster_role}
+      quorum: 2
+      master:
+        host: ${_param:cluster_node01_address}
+        port: 6379
+      sentinel:
+        address: ${_param:single_address}
diff --git a/statsd/server/single.yml b/statsd/server/single.yml
index 0aca6c3..c6ecfdf 100644
--- a/statsd/server/single.yml
+++ b/statsd/server/single.yml
@@ -2,5 +2,5 @@
 - service.statsd.server.carbon
 parameters:
   _param:
-    statsd_server_backend_host: locahost
+    statsd_server_backend_host: 127.0.0.1
     statsd_server_backend_port: 2023
diff --git a/telegraf/agent/init.yml b/telegraf/agent/init.yml
new file mode 100644
index 0000000..1faea32
--- /dev/null
+++ b/telegraf/agent/init.yml
@@ -0,0 +1,9 @@
+paramaters:
+  telegraf:
+    agent:
+      output:
+        prometheus_client:
+          bind:
+            address: 0.0.0.0
+            port: 9126
+          engine: prometheus