Merge pull request #170 from yshapovalov/master

add kyes for qa
diff --git a/aptly/server/docker.yml b/aptly/server/docker.yml
index 4810e7b..6038976 100644
--- a/aptly/server/docker.yml
+++ b/aptly/server/docker.yml
@@ -1,9 +1,12 @@
 classes:
   - service.aptly.server.single
 parameters:
+  _param:
+    aptly_server_secure: true
   aptly:
     server:
       enabled: true
+      secure: ${_param:aptly_server_secure}
       source:
         engine: docker
         image: tcpcloud/aptly
@@ -12,7 +15,6 @@
         gid: 501
       home_dir: /srv/volumes/aptly
       root_dir: /srv/volumes/aptly
-      secure: true
       no_config: true
       gpg:
         keyring: .gnupg/trustdb.gpg
diff --git a/aptly/server/single.yml b/aptly/server/single.yml
index d5ff8fc..095c396 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,7 @@
   aptly:
     server:
       enabled: true
-      secure: true
+      secure: ${_param:aptly_server_secure}
       gpg_keypair_id: ${_param:aptly_gpg_keypair_id}
       gpg_public_key: ${_param:aptly_gpg_public_key}
       gpg_private_key: ${_param:aptly_gpg_private_key}
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/server/cluster.yml b/ceilometer/server/cluster.yml
index 005379d..b5d8013 100644
--- a/ceilometer/server/cluster.yml
+++ b/ceilometer/server/cluster.yml
@@ -8,6 +8,7 @@
     server:
       enabled: true
       version: ${_param:ceilometer_version}
+      region: ${_param:openstack_region}
       cluster: true
       secret: ${_param:ceilometer_secret_key}
       ttl: 86400
diff --git a/designate/server/backend/bind9.yml b/designate/server/backend/bind9.yml
new file mode 100644
index 0000000..fa15ae1
--- /dev/null
+++ b/designate/server/backend/bind9.yml
@@ -0,0 +1,7 @@
+parameters:
+  designate:
+    server:
+      backend:
+        bind9:
+          rndc_key: ${_param:designate_bind9_rndc_key}
+
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/glusterfs/client/volume/aptly.yml b/glusterfs/client/volume/aptly.yml
index c894428..1c252e3 100644
--- a/glusterfs/client/volume/aptly.yml
+++ b/glusterfs/client/volume/aptly.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    aptly_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         aptly:
           path: /srv/volumes/aptly
-          server: ${_param:cluster_node01_address}
+          server: ${_param:aptly_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/artifactory.yml b/glusterfs/client/volume/artifactory.yml
index 056ff82..f9c951e 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}
+          server: ${_param:artifactory_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/gerrit.yml b/glusterfs/client/volume/gerrit.yml
index 9cbef86..6199aa6 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}
+          server: ${_param:gerrit_glusterfs_service_host}
           opts: 'defaults'
           user: 1000
           group: 1000
diff --git a/glusterfs/client/volume/jenkins.yml b/glusterfs/client/volume/jenkins.yml
index 5f804fe..cb6cea7 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}
+          server: ${_param:jenkins_glusterfs_service_host}
           opts: 'defaults'
           user: 1000
           group: 1000
diff --git a/glusterfs/client/volume/mysql.yml b/glusterfs/client/volume/mysql.yml
index ebd91fd..a6458c6 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}
+          server: ${_param:mysql_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/openldap.yml b/glusterfs/client/volume/openldap.yml
index ada164e..792f15f 100644
--- a/glusterfs/client/volume/openldap.yml
+++ b/glusterfs/client/volume/openldap.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    openldap_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         openldap:
           path: /srv/volumes/openldap
-          server: ${_param:cluster_node01_address}
+          server: ${_param:openldap_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/postgresql.yml b/glusterfs/client/volume/postgresql.yml
index 1867d82..d2337e7 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}
+          server: ${_param:postgresql_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/registry.yml b/glusterfs/client/volume/registry.yml
index 4b5d664..875895a 100644
--- a/glusterfs/client/volume/registry.yml
+++ b/glusterfs/client/volume/registry.yml
@@ -1,8 +1,10 @@
 parameters:
+  _param:
+    registry_glusterfs_service_host: ${_param:glusterfs_service_host}
   glusterfs:
     client:
       volumes:
         registry:
           path: /srv/volumes/registry
-          server: ${_param:cluster_node01_address}
+          server: ${_param:registry_glusterfs_service_host}
           opts: 'defaults'
diff --git a/glusterfs/client/volume/salt.yml b/glusterfs/client/volume/salt.yml
index f94b316..c3a9570 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}
+          server: ${_param:salt_glusterfs_service_host}
           opts: 'defaults'
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
index 64115ff..fb24c1f 100644
--- a/haproxy/proxy/listen/cicd/aptly.yml
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -1,6 +1,8 @@
 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:
@@ -13,7 +15,7 @@
             - httplog
           balance: source
           binds:
-            - address: ${_param:haproxy_bind_address}
+            - address: ${_param:haproxy_aptly_api_bind_host}
               port: ${_param:haproxy_aptly_api_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
@@ -36,7 +38,7 @@
             - httplog
           balance: source
           binds:
-            - address: ${_param:haproxy_bind_address}
+            - address: ${_param:haproxy_aptly_public_bind_host}
               port: ${_param:haproxy_aptly_public_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
diff --git a/haproxy/proxy/listen/cicd/gerrit.yml b/haproxy/proxy/listen/cicd/gerrit.yml
index a9f0a3c..51d494b 100644
--- a/haproxy/proxy/listen/cicd/gerrit.yml
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -1,7 +1,11 @@
 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:
@@ -13,9 +17,13 @@
             - httpclose
             - httplog
           balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
           binds:
-            - address: ${_param:haproxy_bind_address}
+            - 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}
@@ -33,7 +41,7 @@
           mode: tcp
           balance: source
           binds:
-            - address: ${_param:haproxy_bind_address}
+            - address: ${_param:haproxy_gerrit_ssh_bind_host}
               port: ${_param:haproxy_gerrit_ssh_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
diff --git a/haproxy/proxy/listen/cicd/jenkins.yml b/haproxy/proxy/listen/cicd/jenkins.yml
index e91d9f2..eda12f8 100644
--- a/haproxy/proxy/listen/cicd/jenkins.yml
+++ b/haproxy/proxy/listen/cicd/jenkins.yml
@@ -1,7 +1,11 @@
 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:
@@ -13,11 +17,15 @@
             - 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_bind_address}
+            - 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}
@@ -35,7 +43,7 @@
           mode: tcp
           balance: source
           binds:
-            - address: ${_param:haproxy_bind_address}
+            - address: ${_param:haproxy_jenkins_jnlp_bind_host}
               port: ${_param:haproxy_jenkins_jnlp_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
diff --git a/haproxy/proxy/listen/docker/registry.yml b/haproxy/proxy/listen/docker/registry.yml
index 2a86aa4..8d45e97 100644
--- a/haproxy/proxy/listen/docker/registry.yml
+++ b/haproxy/proxy/listen/docker/registry.yml
@@ -1,6 +1,9 @@
 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:
@@ -15,9 +18,9 @@
             - action: "add-header X-Forwarded-Proto https"
               condition: "if { ssl_fc }"
           binds:
-            - address: ${_param:haproxy_bind_address}
+            - address: ${_param:haproxy_docker_registry_listen_host}
               port: ${_param:haproxy_docker_registry_listen_port}
-              ssl: ${_param:cluster_ssl_certificate}
+              ssl: ${_param:haproxy_docker_registry_ssl}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
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/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/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/sensu.yml b/heka/metric_collector/output/sensu.yml
new file mode 100644
index 0000000..3143fd9
--- /dev/null
+++ b/heka/metric_collector/output/sensu.yml
@@ -0,0 +1,3 @@
+classes:
+- service.heka.metric_collector.output.sensu
+
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/jenkins/client/credential/gerrit.yml b/jenkins/client/credential/gerrit.yml
index 3b7eb0c..b42f5af 100644
--- a/jenkins/client/credential/gerrit.yml
+++ b/jenkins/client/credential/gerrit.yml
@@ -1,7 +1,9 @@
 parameters:
+  _param:
+    gerrit_admin_user: admin
   jenkins:
     client:
       credential:
         gerrit:
-          username: admin
+          username: ${_param:gerrit_admin_user}
           key: ${_param:gerrit_admin_private_key}
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
index 36da8b6..ce1916a 100644
--- a/jenkins/client/init.yml
+++ b/jenkins/client/init.yml
@@ -2,11 +2,37 @@
   - service.jenkins.support
   - service.jenkins.client
 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:cluster_vip_address}
-        port: 8081
-        # When Jenkins auth is enabled
-        #user: admin
-        #password: dummy
+        host: ${_param:jenkins_master_host}
+        port: ${_param:jenkins_master_port}
+        user: ${_param:jenkins_client_user}
+        password: ${_param:jenkins_client_password}
+      plugin:
+        slack: {}
+        extended-choice-parameter: {}
+        rebuild: {}
+        test-stability: {}
+        build-blocker-plugin: {}
+        heavy-job: {}
+        workflow-cps: {}
+        workflow-remote-loader: {}
+        workflow-scm-step: {}
+        docker-workflow: {}
+        gerrit-trigger: {}
+        pipeline-utility-steps: {}
+        discard-old-build: {}
+        ansicolor: {}
+        timestamper: {}
+        build-user-vars-plugin: {}
+        description-setter: {}
+        build-monitor-plugin: {}
+        categorized-view: {}
+        monitoring: {}
+        matrix-auth: {}
diff --git a/jenkins/client/job/aptly.yml b/jenkins/client/job/aptly.yml
new file mode 100644
index 0000000..c428b84
--- /dev/null
+++ b/jenkins/client/job/aptly.yml
@@ -0,0 +1,73 @@
+parameters:
+  jenkins:
+    client:
+      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}"
diff --git a/jenkins/client/job/debian/init.yml b/jenkins/client/job/debian/init.yml
new file mode 100644
index 0000000..d0b40a0
--- /dev/null
+++ b/jenkins/client/job/debian/init.yml
@@ -0,0 +1,2 @@
+classes:
+  - system.jenkins.client.job.debian.packages
diff --git a/jenkins/client/job/debian/packages/extra.yml b/jenkins/client/job/debian/packages/extra.yml
new file mode 100644
index 0000000..941c9b4
--- /dev/null
+++ b/jenkins/client/job/debian/packages/extra.yml
@@ -0,0 +1,115 @@
+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-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"
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..f63032c
--- /dev/null
+++ b/jenkins/client/job/debian/packages/horizon/modules.yml
@@ -0,0 +1,82 @@
+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
+          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"
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..a8f8ac2
--- /dev/null
+++ b/jenkins/client/job/debian/packages/horizon/themes.yml
@@ -0,0 +1,82 @@
+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"
diff --git a/jenkins/client/job/debian/packages/init.yml b/jenkins/client/job/debian/packages/init.yml
new file mode 100644
index 0000000..56f6f12
--- /dev/null
+++ b/jenkins/client/job/debian/packages/init.yml
@@ -0,0 +1,5 @@
+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
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..f703e7b
--- /dev/null
+++ b/jenkins/client/job/debian/packages/salt-multi.yml
@@ -0,0 +1,111 @@
+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"
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
new file mode 100644
index 0000000..7dd70ea
--- /dev/null
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -0,0 +1,402 @@
+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: 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: 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: 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: 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: sahara
+              dist: trusty
+            - name: salt
+              dist: trusty
+            - name: sensu
+              dist: trusty
+            - name: sentry
+              dist: trusty
+            - name: sphinx
+              dist: trusty
+            - name: statsd
+              dist: trusty
+            - name: supervisor
+              dist: trusty
+            - name: taiga
+              dist: trusty
+            - name: varnish
+              dist: trusty
+            - name: zookeeper
+              dist: trusty
+            - name: aodh
+              dist: xenial
+            - name: apache
+              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: 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: 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: python
+              dist: xenial
+            - name: rabbitmq
+              dist: xenial
+            - name: reclass
+              dist: xenial
+            - name: redis
+              dist: xenial
+            - name: roundcube
+              dist: xenial
+            - name: rsync
+              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: statsd
+              dist: xenial
+            - name: supervisor
+              dist: xenial
+            - name: taiga
+              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"
diff --git a/jenkins/client/job/deploy/cicd_lab.yml b/jenkins/client/job/deploy/cicd_lab.yml
new file mode 100644
index 0000000..0aa442e
--- /dev/null
+++ b/jenkins/client/job/deploy/cicd_lab.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/demo.yml b/jenkins/client/job/deploy/demo.yml
new file mode 100644
index 0000000..3ea8a40
--- /dev/null
+++ b/jenkins/client/job/deploy/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/init.yml b/jenkins/client/job/deploy/init.yml
new file mode 100644
index 0000000..62c92b4
--- /dev/null
+++ b/jenkins/client/job/deploy/init.yml
@@ -0,0 +1,5 @@
+classes:
+  - system.jenkins.client.job.deploy.mk_lab
+  - system.jenkins.client.job.deploy.cicd_lab
+  - system.jenkins.client.job.deploy.demo
+  - system.jenkins.client.job.deploy.reclass_update
diff --git a/jenkins/client/job/deploy/maas_lab.yml b/jenkins/client/job/deploy/maas_lab.yml
new file mode 100644
index 0000000..b4b61e4
--- /dev/null
+++ b/jenkins/client/job/deploy/maas_lab.yml
@@ -0,0 +1,67 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        heat_maas_lab:
+          type: workflow
+          concurrent: false
+          display_name: "[Heat] Deploy MAAS lab"
+          param:
+            HEAT_TEMPLATE_URL:
+              type: string
+              default: "git@github.com:Mirantis/mk-lab-heat-templates.git"
+            HEAT_TEMPLATE_CREDENTIALS:
+              type: string
+              default: "git-qa"
+            HEAT_TEMPLATE_BRANCH:
+              type: string
+              default: "master"
+            OPENSTACK_API_CLIENT:
+              type: string
+              default: "liberty"
+            OPENSTACK_API_VERSION:
+              type: string
+              default: "2"
+            OPENSTACK_API_URL:
+              type: string
+              default: "https://vpc.tcpisek.cz:5000/v2.0"
+            OPENSTACK_API_CREDENTIALS:
+              type: string
+              default: "openstack-qa"
+            OPENSTACK_API_PROJECT:
+              type: string
+              default: "mirantis_mk20_qa"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt-qa-credentials"
+            HEAT_STACK_NAME:
+              type: string
+              default: "maas_gate"
+            HEAT_STACK_TEMPLATE:
+              type: string
+              default: "maas_lab"
+            HEAT_STACK_ENVIRONMENT:
+              type: string
+              default: "tcpisek"
+            HEAT_STACK_ZONE:
+              type: string
+              default: "mirantis-zone-qa"
+            HEAT_STACK_PUBLIC_NET:
+              type: string
+              default: "inet2"
+          libs:
+          - repository: pipeline_libs
+            file: macro/common.groovy
+          - repository: pipeline_libs
+            file: macro/git.groovy
+          - repository: pipeline_libs
+            file: macro/http.groovy
+          - repository: pipeline_libs
+            file: macro/openstack.groovy
+          - repository: pipeline_libs
+            file: macro/python.groovy
+          - repository: pipeline_libs
+            file: macro/salt.groovy
+          script:
+            repository: pipeline_libs
+            file: pipeline/provision/heat_maas_lab.groovy
diff --git a/jenkins/client/job/deploy/mk_lab.yml b/jenkins/client/job/deploy/mk_lab.yml
new file mode 100644
index 0000000..a36d26e
--- /dev/null
+++ b/jenkins/client/job/deploy/mk_lab.yml
@@ -0,0 +1,205 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        deploy-update-package:
+          type: workflow-scm
+          concurrent: true
+          display_name: "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: "http://10.10.10.1:8000"
+            SALT_MASTER_CREDENTIALS:
+              type: string
+              default: "salt"
+            UPDATE_SERVERS:
+              type: string
+              default: "*"
+              description: Salt compound target to match nodes to be updated.
+            UPDATE_PACKAGES:
+              type: string
+              default: ""
+              description: Space delimited list of packages to be updates [package1=version package2=version], empty string means all updating all packages to the latest version.
+            UPDATE_COMMIT:
+              type: boolean
+              default: false
+
+        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.
+
+      job_template:
+        deploy_heat_template:
+          name: deploy-{{stack_type}}-{{lab}}
+          jobs:
+            # virtual
+            - lab: virtual_mcp05_dvr
+              install: core,openstack,dvr
+              stack_type: heat
+            - lab: virtual_mcp05_ovs
+              install: core,openstack,ovs
+              stack_type: heat
+            - lab: virtual_mcp10_contrail
+              install: core,openstack,contrail
+              stack_type: heat
+            - lab: virtual_mcp10_dvr
+              install: core,openstack,dvr
+              stack_type: heat
+            - lab: virtual_mcp10_ovs
+              install: core,openstack,ovs
+              stack_type: heat
+            - lab: virtual_mk20_advanced
+              install: core,openstack
+              stack_type: heat
+            - lab: virtual_mk20_basic
+              install: core,openstack
+              stack_type: heat
+            - lab: virtual_mk22_advanced
+              install: core,openstack
+              stack_type: heat
+            - lab: virtual_mk22_basic
+              install: core,openstack
+              stack_type: heat
+            # physical
+            - lab: mcp10_contrail
+              install: core,kvm,openstack,contrail
+              stack_type: physical
+            - lab: mcp10_opencontrail_nfv
+              install: core,kvm,openstack,nfv
+              stack_type: physical
+            - lab: mcp10_dvr
+              install: core,kvm,openstack,dvr
+              stack_type: physical
+            - lab: mcp10_non_dvr
+              install: core,kvm,openstack
+              stack_type: physical
+          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
+            param:
+              # deployments and test settings
+              STACK_TYPE:
+                type: string
+                default: "{{stack_type}}"
+              INSTALL:
+                type: string
+                default: "{{install}}"
+              TEST:
+                type: string
+                default: ""
+
+              # 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: "composite"
+              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'
+              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"
+
diff --git a/jenkins/client/job/deploy/reclass_update.yml b/jenkins/client/job/deploy/reclass_update.yml
new file mode 100644
index 0000000..1f99ddc
--- /dev/null
+++ b/jenkins/client/job/deploy/reclass_update.yml
@@ -0,0 +1,26 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        reclass_update:
+          name: deploy-update-{{name}}
+          jobs:
+            - name: mk-ci
+              salt_url: "http://10.10.100.81:8000"
+              salt_credentials: salt-mk-ci
+          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/gating.yml b/jenkins/client/job/gating.yml
new file mode 100644
index 0000000..357bc8e
--- /dev/null
+++ b/jenkins/client/job/gating.yml
@@ -0,0 +1,49 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        gate-gerrit-namespace:
+          name: gate-gerrit-{{name}}
+          jobs:
+            - name: mk
+            - name: debian
+            - name: contrail
+            - name: salt-models
+            - name: salt-formulas
+          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
+            trigger:
+              gerrit:
+                project:
+                  '{{name}}\/.*':
+                    compare_type: REG_EXP
+                    branches:
+                      - master
+                skip_vote:
+                  - successful
+                  - failed
+                  - unstable
+                  - not_built
+                event:
+                  comment:
+                    - added:
+                        verdictCategory: 'Workflow'
+                        commentAddedTriggerApprovalValue: '+1'
+            param:
+              JOBS_NAMESPACE:
+                type: string
+                default: "{{name}}"
+              CREDENTIALS_ID:
+                type: string
+                default: "gerrit"
\ No newline at end of file
diff --git a/jenkins/client/job/git-mirrors/upstream.yml b/jenkins/client/job/git-mirrors/upstream.yml
new file mode 100644
index 0000000..f4f7f50
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream.yml
@@ -0,0 +1,54 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        git_mirror_upstream_common:
+          name: git-mirror-upstream-{{name}}
+          jobs:
+            - name: pipeline-library
+              downstream: mcp-ci/pipeline-library.git
+              upstream: "git@github.com:Mirantis/pipeline-library.git"
+              branches: master
+            - name: mk-pipelines
+              downstream: mk/mk-pipelines.git
+              upstream: "git@github.com:Mirantis/mk-pipelines.git"
+              branches: 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: 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/image/centos.yml b/jenkins/client/job/image/centos.yml
new file mode 100644
index 0000000..852f695
--- /dev/null
+++ b/jenkins/client/job/image/centos.yml
@@ -0,0 +1,72 @@
+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..7c996f3
--- /dev/null
+++ b/jenkins/client/job/image/debian.yml
@@ -0,0 +1,72 @@
+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/ubuntu.yml b/jenkins/client/job/image/ubuntu.yml
new file mode 100755
index 0000000..504702c
--- /dev/null
+++ b/jenkins/client/job/image/ubuntu.yml
@@ -0,0 +1,145 @@
+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/opencontrail/build/dpdk-extra.yml b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
new file mode 100644
index 0000000..0ac7b50
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/dpdk-extra.yml
@@ -0,0 +1,75 @@
+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"
diff --git a/jenkins/client/job/opencontrail/build/generic.yml b/jenkins/client/job/opencontrail/build/generic.yml
new file mode 100644
index 0000000..69cb4e7
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/generic.yml
@@ -0,0 +1,162 @@
+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-3.0.3
+              upload_source_package: false
+            - buildname: oc31
+              os: ubuntu
+              dist: trusty
+              branch: R3.1
+              ppa: mirantis/opencontrail-3.1
+              upload_source_package: true
+            - buildname: oc31
+              os: ubuntu
+              dist: xenial
+              branch: R3.1
+              ppa: mirantis/opencontrail-3.1
+              upload_source_package: true
+            - buildname: oc311
+              os: ubuntu
+              dist: trusty
+              branch: R3.1.1.x
+              ppa: mirantis/opencontrail-3.1.1
+              upload_source_package: true
+            - buildname: oc311
+              os: ubuntu
+              dist: xenial
+              branch: R3.1.1.x
+              ppa: mirantis/opencontrail-3.1.1
+              upload_source_package: true
+            - buildname: oc32
+              os: ubuntu
+              dist: trusty
+              branch: R3.2
+              ppa: mirantis/opencontrail-3.2
+              upload_source_package: true
+            - buildname: oc32
+              os: ubuntu
+              dist: xenial
+              branch: R3.2
+              ppa: mirantis/opencontrail-3.2
+              upload_source_package: true
+          template:
+            discard:
+             build:
+               keep_num: 5
+             artifact:
+               keep_num: 5
+            type: workflow-scm
+            concurrent: false
+            quiet_period: 120
+            scm:
+              type: git
+              url: "${_param:jenkins_contrail_pipeline}"
+              credentials: "gerrit"
+              github:
+                url: https://github.com/Mirantis/ccp-contrail-pipeline
+            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}}"
+                message:
+                  build_successful: "Build successful"
+                  build_unstable: "Build unstable"
+                  build_failure: "Build failed"
+                event:
+                  ref:
+                    - updated
+            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"
+              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}}'
diff --git a/jenkins/client/job/opencontrail/build/init.yml b/jenkins/client/job/opencontrail/build/init.yml
new file mode 100644
index 0000000..759d78a
--- /dev/null
+++ b/jenkins/client/job/opencontrail/build/init.yml
@@ -0,0 +1,3 @@
+classes:
+  - system.jenkins.client.job.opencontrail.build.generic
+  - system.jenkins.client.job.opencontrail.build.dpdk-extra
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..0cf3a33
--- /dev/null
+++ b/jenkins/client/job/opencontrail/git-mirrors/downstream.yml
@@ -0,0 +1,93 @@
+parameters:
+  _param:
+    jenkins_pollscm_spec: "H/60 * * * *"
+  jenkins:
+    client:
+      job_template:
+        git-mirror:
+          name: git-mirror-{{name}}
+          jobs:
+            - name: contrail-build
+            - name: contrail-controller
+            - name: contrail-vrouter
+            - name: contrail-third-party
+            - name: contrail-generateDS
+            - name: contrail-sandesh
+            - name: contrail-packages
+            - name: contrail-nova-vif-driver
+            - name: contrail-neutron-plugin
+            - name: contrail-nova-extensions
+            - name: contrail-ceilometer-plugin
+            - name: contrail-heat
+            - name: contrail-web-storage
+            - name: contrail-web-server-manager
+            - name: contrail-web-controller
+            - name: contrail-web-core
+            - name: contrail-webui-third-party
+            - name: contrail-dpdk-extra-packages
+            - name: contrail-kubernetes
+          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: ${_param:contrail_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..72ee4fe
--- /dev/null
+++ b/jenkins/client/job/opencontrail/init.yml
@@ -0,0 +1,9 @@
+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"
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..0ea3d7b
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/git-mirrors/2way.yml
@@ -0,0 +1,134 @@
+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: 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: 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: openssh
+            - name: openvpn
+            - name: openvstorage
+            - name: owncloud
+            - name: postfix
+            - name: postgresql
+            - name: pritunl
+            - 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: statsd
+            - name: supervisor
+            - name: swift
+            - name: taiga
+            - 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..c498032
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/init.yml
@@ -0,0 +1,4 @@
+classes:
+  - system.jenkins.client.job.salt-formulas.git-mirrors
+  - system.jenkins.client.job.salt-formulas.tests
+  - system.jenkins.client.job.salt-formulas.release
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..5d5206b
--- /dev/null
+++ b/jenkins/client/job/salt-formulas/tests.yml
@@ -0,0 +1,138 @@
+parameters:
+  jenkins:
+    client:
+      job_template:
+        test-salt-formula:
+          name: test-salt-formula-{{name}}-latest
+          jobs:
+            - name: aodh
+            - name: apache
+            - 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: 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: openssh
+            - name: openvpn
+            - name: openvstorage
+            - name: owncloud
+            - name: postfix
+            - name: postgresql
+            - name: pritunl
+            - 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: statsd
+            - name: supervisor
+            - name: swift
+            - name: taiga
+            - 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"
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..9a98130
--- /dev/null
+++ b/jenkins/client/job/salt-models/init.yml
@@ -0,0 +1,6 @@
+classes:
+  - system.jenkins.client.job.salt-models.git-mirrors
+  - system.jenkins.client.job.salt-models.tests
+parameters:
+  _param:
+    salt_formulas_branches: master
diff --git a/jenkins/client/job/salt-models/tests.yml b/jenkins/client/job/salt-models/tests.yml
new file mode 100644
index 0000000..e451daf
--- /dev/null
+++ b/jenkins/client/job/salt-models/tests.yml
@@ -0,0 +1,85 @@
+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"
+              GIT_URL:
+                type: string
+                default: "${_param:jenkins_gerrit_url}/salt-models/{{name}}"
+              RECLASS_SYSTEM_GIT_URL:
+                type: string
+                description: "Run against alternate system reclass"
+              RECLASS_SYSTEM_GIT_REF:
+                type: string
+              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:
+                  patchset:
+                    - created:
+                        excludeDrafts: false
+                        excludeTrivialRebase: false
+                        excludeNoCodeChange: false
+                  comment:
+                    - addedContains:
+                        commentAddedCommentContains: '(recheck|reverify)'
+            param:
+              TEST_MODELS:
+                type: string
+                default: "{{clusters}}"
diff --git a/jenkins/client/job/test_pipelines.yml b/jenkins/client/job/test_pipelines.yml
new file mode 100644
index 0000000..3a4149c
--- /dev/null
+++ b/jenkins/client/job/test_pipelines.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-mk-pipelines-pipeline:
+        name: test-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: git-mirror-2way-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
diff --git a/jenkins/client/security/ldap.yml b/jenkins/client/security/ldap.yml
new file mode 100644
index 0000000..8b7b97b
--- /dev/null
+++ b/jenkins/client/security/ldap.yml
@@ -0,0 +1,7 @@
+parameters:
+  jenkins:
+    client:
+      security:
+        ldap:
+          server: ${_param:jenkins_security_ldap_server}
+          root_dn: ${_param:jenkins_security_root_dn}
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
index eb7e112..82fa84f 100644
--- a/jenkins/master/config.yml
+++ b/jenkins/master/config.yml
@@ -40,6 +40,9 @@
                   - method java.net.URLConnection setRequestProperty java.lang.String java.lang.String
                   - method java.util.LinkedHashMap$LinkedHashIterator hasNext
                   - 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 org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
                   - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper build
                   - new groovy.json.JsonBuilder java.lang.Object
@@ -69,3 +72,20 @@
                   - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.util.Collection
                   - 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
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println java.lang.Object java.lang.Object
+                  - method hudson.PluginWrapper getShortName
+                  - method hudson.PluginManager getPlugins
+                  - method jenkins.model.Jenkins getPluginManager
+                  - method hudson.model.ItemGroup getItem java.lang.String
+                  - method hudson.model.Job getLastBuild
+                  - method hudson.model.Run getResult
+                  - method hudson.model.Job getBuilds
+                  - staticMethod java.lang.String format java.lang.String java.lang.Object[]
+                  - staticMethod java.util.regex.Pattern quote java.lang.String
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods findAll java.util.List groovy.lang.Closure
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods find java.util.Collection groovy.lang.Closure
+                  - method java.util.Collection remove java.lang.Object
+                  - staticMethod java.lang.System exit int
+                  - method hudson.model.ItemGroup getItems
+                  - method hudson.model.Item getName
diff --git a/jenkins/slave.yml b/jenkins/slave.yml
deleted file mode 100644
index 42f3ca0..0000000
--- a/jenkins/slave.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-applications:
-  - jenkins
-classes:
-  - service.java.environment
-  - system.docker.host
-parameters:
-  _param:
-    java_environment_version: "8"
-    java_environment_platform: openjdk
-  java:
-    environment:
-      headless: true
-  jenkins:
-    slave:
-      enabled: true
-      pkgs: false
-      sudo: false
-      scripts: []
-      master:
-        host: ${_param:control_vip_address}
-        port: 8081
-        protocol: http
-#      user:
-#        name: admin
-#        password: ${_param:jenkins_admin_password}
-  linux:
-    system:
-      user:
-        jenkins:
-          enabled: true
-          name: jenkins
-          home: /var/lib/jenkins
-          sudo: false
-          groups:
-            - docker
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/keystone/client/service/designate.yml b/keystone/client/service/designate.yml
index 4d95b2e..4018712 100644
--- a/keystone/client/service/designate.yml
+++ b/keystone/client/service/designate.yml
@@ -12,19 +12,19 @@
                   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: '/'
+          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/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/sudo.yml b/linux/system/sudo.yml
new file mode 100644
index 0000000..d5badb8
--- /dev/null
+++ b/linux/system/sudo.yml
@@ -0,0 +1,36 @@
+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_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/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/neutron/control/opencontrail/cluster.yml b/neutron/control/opencontrail/cluster.yml
index 05b7e33..5baa97e 100644
--- a/neutron/control/opencontrail/cluster.yml
+++ b/neutron/control/opencontrail/cluster.yml
@@ -35,7 +35,7 @@
         password: ${_param:mysql_neutron_password}
       identity:
         engine: keystone
-        region: RegionOne
+        region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
         port: 35357
         user: neutron
@@ -63,4 +63,4 @@
       contrail:
         version: ${_param:opencontrail_version}
 
-      
+
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/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/dpdk.yml b/opencontrail/compute/dpdk.yml
index 47464b6..b0d8e0c 100644
--- a/opencontrail/compute/dpdk.yml
+++ b/opencontrail/compute/dpdk.yml
@@ -1,11 +1,13 @@
 parameters:
+  _param:
+    contrail_compute_dpdk_enabled: True
   nova:
     compute:
       libvirt_service: libvirt-bin
   opencontrail:
     compute:
       dpdk:
-        enabled: true
+        enabled: ${_param:contrail_compute_dpdk_enabled}
         taskset: "${_param:compute_vrouter_taskset}"
         socket_mem: "${_param:compute_vrouter_socket_mem}"
       interface:
diff --git a/opencontrail/control/control.yml b/opencontrail/control/control.yml
index 1726029..a3fefc3 100644
--- a/opencontrail/control/control.yml
+++ b/opencontrail/control/control.yml
@@ -41,7 +41,7 @@
       identity:
         engine: keystone
         version: '2.0'
-        region: RegionOne
+        region: ${_param:openstack_region}
         host: ${_param:openstack_control_address}
         port: 35357
         user: admin
@@ -101,4 +101,4 @@
         port: 9042
       network:
         engine: neutron
-        host: ${_param:cluster_vip_address}
\ No newline at end of file
+        host: ${_param:cluster_vip_address}
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
new file mode 100644
index 0000000..206291c
--- /dev/null
+++ b/openssh/server/team/l1_support.yml
@@ -0,0 +1,44 @@
+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_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/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..f1a36a2
--- /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 AAAAB3NzaC1yc2EAAAADAQABAAABAQDIFv/QaKxzK3Y5fRWrq8rgiFIlL1nDnwClyhaxUE08lZ3yxOdMuwyR2+ODcm1+ZX8L3YnXGxVA0avDxAZTbGr/Bo8F0QTTtkv827d/7qrtWwnH0egPqIegWAwvh1nDiSaPJNoq6HbvLVjhIwRO9J+qgFrIfu5Ul8FmvaV9wRmuyI44TbtgmHVcLdVGZEJzFCKZvR8nOPXmWJtVuHzUpgGnMgwx06sPBYBuMkamOdsCWZpV6hXFA9Htk6Yws549LJ3fuHk3lv9prYfJz99m6dhqW+P6sx9YOrZCZT6d03aWZ6KOj43MDQMltPmrCKg1HoeQ8emP6Nere2bLbMg2xY5d
+
diff --git a/reclass/storage/system/cicd_control_cluster.yml b/reclass/storage/system/cicd_control_cluster.yml
new file mode 100644
index 0000000..35a8d15
--- /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.master
+          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.slave
+          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.slave
+          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/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/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/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/master/formula/git/openstack.yml b/salt/master/formula/git/openstack.yml
index 6f296c4..86e23b2 100644
--- a/salt/master/formula/git/openstack.yml
+++ b/salt/master/formula/git/openstack.yml
@@ -28,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'
diff --git a/salt/master/formula/pkg/openstack.yml b/salt/master/formula/pkg/openstack.yml
index b795e06..1269bd1 100644
--- a/salt/master/formula/pkg/openstack.yml
+++ b/salt/master/formula/pkg/openstack.yml
@@ -31,6 +31,9 @@
             glusterfs:
               source: pkg
               name: salt-formula-glusterfs
+            designate:
+              source: pkg
+              name: salt-formula-designate
             haproxy:
               source: pkg
               name: salt-formula-haproxy
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