Merge "Implement X.509 auth for MySQL and Glance"
diff --git a/aodh/server/cluster.yml b/aodh/server/cluster.yml
index fb6839b..fb8f747 100644
--- a/aodh/server/cluster.yml
+++ b/aodh/server/cluster.yml
@@ -8,6 +8,12 @@
     openstack_event_alarm_topic: alarm.all
     # Keep alarm history in database for 30 days
     aodh_alarm_history_ttl: 2592000
+  linux:
+    system:
+      cron:
+        user:
+          aodh:
+            enabled: true
   aodh:
     server:
       enabled: true
diff --git a/aodh/server/single.yml b/aodh/server/single.yml
index 6fec2a6..8442a2d 100644
--- a/aodh/server/single.yml
+++ b/aodh/server/single.yml
@@ -5,6 +5,12 @@
     openstack_event_alarm_topic: alarm.all
     # Keep alarm history in database for 30 days
     aodh_alarm_history_ttl: 2592000
+  linux:
+    system:
+      cron:
+        user:
+          aodh:
+            enabled: true
   aodh:
     server:
       ttl: ${_param:aodh_alarm_history_ttl}
diff --git a/cassandra/backup/server/single.yml b/cassandra/backup/server/single.yml
index ffb43cf..c441529 100644
--- a/cassandra/backup/server/single.yml
+++ b/cassandra/backup/server/single.yml
@@ -3,6 +3,12 @@
 parameters:
   _param:
     cassandra_backup_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzLUiHKAjfFXiZ3fsgx35uXF6VivfC5WFafu4QMalxmj6W+s277oCfdWA8Du5f1wtQXM73VQ5nHkXhM2UIfUMarsyhXK+BxKVrcgEBNHdKlDytaecUPyuOxTDdGWhN/DPv5/vL8NYWweEYBbNbLgU0Td7Rvm52TUXKThIDjeF7XDxX4ShXWipBSwU4boOUBtR8KWfga8fsqeBN+eacuAQFR3MrrOfVvAuWW6Bsf047cmd+V6Qv0raoW73Nu4M/ZAdTsaR5k62a0cHsSRoi3hCmNRqw+CZaQi8prQU6t26eWPEtznjp5EkPF+LLh8LxUoCfWqWT+Lxe8QQwT1nx/LCN
+  linux:
+    system:
+      cron:
+        user:
+          cassandra:
+            enabled: true
   cassandra:
     backup:
       server:
diff --git a/ceph/backup/server/single.yml b/ceph/backup/server/single.yml
index ca36297..896a6cc 100644
--- a/ceph/backup/server/single.yml
+++ b/ceph/backup/server/single.yml
@@ -1,2 +1,9 @@
 classes:
 - service.ceph.backup.server
+parameters:
+  linux:
+    system:
+      cron:
+        user:
+          ceph:
+            enabled: true
diff --git a/elasticsearch/server/curator.yml b/elasticsearch/server/curator.yml
index fe7383d..a73ef44 100644
--- a/elasticsearch/server/curator.yml
+++ b/elasticsearch/server/curator.yml
@@ -2,6 +2,12 @@
   _param:
     elasticsearch_curator_indices_pattern: "^(log|notification)-.*$"
     elasticsearch_curator_retention_period: 31
+  linux:
+    system:
+      cron:
+        user:
+          elasticsearch:
+            enabled: true
   elasticsearch:
     server:
       curator:
diff --git a/glance/control/cluster.yml b/glance/control/cluster.yml
index ae199f1..a9181de 100644
--- a/glance/control/cluster.yml
+++ b/glance/control/cluster.yml
@@ -10,6 +10,10 @@
     galera_ssl_enabled: False
   linux:
     system:
+      cron:
+        user:
+          glance:
+            enabled: true
       package:
         python-pymysql:
           fromrepo: ${_param:openstack_version}
diff --git a/glance/control/single.yml b/glance/control/single.yml
index f641fc6..a036077 100644
--- a/glance/control/single.yml
+++ b/glance/control/single.yml
@@ -7,6 +7,10 @@
     galera_ssl_enabled: False
   linux:
     system:
+      cron:
+        user:
+          glance:
+            enabled: true
       package:
         python-pymysql:
           fromrepo: ${_param:openstack_version}
diff --git a/jenkins/client/job/deploy/lab/component/stacklight.yml b/jenkins/client/job/deploy/lab/component/stacklight.yml
index 94ccce2..2937b9a 100644
--- a/jenkins/client/job/deploy/lab/component/stacklight.yml
+++ b/jenkins/client/job/deploy/lab/component/stacklight.yml
@@ -4,18 +4,24 @@
   _param:
     jenkins_deploy_jobs:
       - stack_name: stacklight_k8s_calico
+        heat_stack_zone_job_param: "mcp-stacklight"
+        openstack_api_projects_job_param: "mcp-stacklight"
         stack_env: devcloud
         stack_type: heat
         stack_install: core,k8s,calico,stacklight
         stack_test: ""
         job_timer: "H H(0-6) * * *"
       - stack_name: stacklight_os_contrail
+        heat_stack_zone_job_param: "mcp-stacklight"
+        openstack_api_projects_job_param: "mcp-stacklight"
         stack_env: devcloud
         stack_type: heat
         stack_install: core,openstack,contrail,stacklight
         stack_test: ""
         job_timer: "H H(0-6) * * *"
       - stack_name: stacklight_os_ovs
+        heat_stack_zone_job_param: "mcp-stacklight"
+        openstack_api_projects_job_param: "mcp-stacklight"
         stack_env: devcloud
         stack_type: heat
         stack_install: core,openstack,ovs,stacklight
diff --git a/jenkins/client/job/docker/cicd/tempest.yml b/jenkins/client/job/docker/cicd/tempest.yml
index 38cc667..e156802 100644
--- a/jenkins/client/job/docker/cicd/tempest.yml
+++ b/jenkins/client/job/docker/cicd/tempest.yml
@@ -22,7 +22,11 @@
                 "mcp/docker-ci-tempest":
                   branches:
                     - master
+                    - queens
                     - pike
+                    - ocata
+                    - newton
+                    - mitaka
               event:
                 patchset:
                   - created:
diff --git a/jenkins/client/job/k8s-test/init.yml b/jenkins/client/job/k8s-test/init.yml
index 4d22797..c26bfce 100644
--- a/jenkins/client/job/k8s-test/init.yml
+++ b/jenkins/client/job/k8s-test/init.yml
@@ -1,4 +1,8 @@
 classes:
 - system.jenkins.client.job.k8s-test.mcp-k8s-test-pipeline
 - system.jenkins.client.job.k8s-test.mcp-k8s-merge-pipeline
+- system.jenkins.client.job.k8s-test.mcp-k8s-dashboard-test-pipeline
+- system.jenkins.client.job.k8s-test.mcp-k8s-dashboard-merge-pipeline
+- system.jenkins.client.job.k8s-test.mcp-k8s-metallb-test-pipeline
+- system.jenkins.client.job.k8s-test.mcp-k8s-metallb-merge-pipeline
 - system.jenkins.client.job.k8s-test.mcp-k8s-formula-test-pipeline
diff --git a/jenkins/client/job/k8s-test/mcp-k8s-dashboard-merge-pipeline.yml b/jenkins/client/job/k8s-test/mcp-k8s-dashboard-merge-pipeline.yml
new file mode 100644
index 0000000..f6b2350
--- /dev/null
+++ b/jenkins/client/job/k8s-test/mcp-k8s-dashboard-merge-pipeline.yml
@@ -0,0 +1,43 @@
+parameters:
+  _param:
+    mcp_docker_registry: 'docker-dev-local.docker.mirantis.net'
+    mcp_prod_docker_registry: 'docker-prod-local.docker.mirantis.net'
+  jenkins:
+    client:
+      job:
+        mcp_k8s_dashboard_merge_pipeline:
+          type: workflow-scm
+          name: mcp-k8s-dashboard-merge-pipeline
+          display_name: "Kubernetes dashboard merge pipeline"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/kubernetes-ci/kubernetes-pipelines"
+            credentials: "gerrit"
+            script: pipelines/mcp-k8s-dashboard-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                kubernetes/kubernetes:
+                  branches:
+                    - compare_type: "ANT"
+                      name: "**mcp**"
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                change:
+                  - merged
+          param:
+            KUBE_DOCKER_REGISTRY:
+              type: string
+              default: ${_param:mcp_docker_registry}
+              description: 'Docker registry for binaries and images'
+            KUBE_PROD_DOCKER_REGISTRY:
+              type: string
+              default: ${_param:mcp_prod_docker_registry}
+              description: 'Prod docker registry for binaries and images'
diff --git a/jenkins/client/job/k8s-test/mcp-k8s-dashboard-test-pipeline.yml b/jenkins/client/job/k8s-test/mcp-k8s-dashboard-test-pipeline.yml
new file mode 100644
index 0000000..ebb4692
--- /dev/null
+++ b/jenkins/client/job/k8s-test/mcp-k8s-dashboard-test-pipeline.yml
@@ -0,0 +1,48 @@
+parameters:
+  _param:
+    mcp_docker_registry: 'docker-dev-local.docker.mirantis.net'
+  jenkins:
+    client:
+      job:
+        mcp_k8s_dashboard_test_pipeline:
+          type: workflow-scm
+          name: mcp-k8s-dashboard-test-pipeline
+          display_name: "Kubernetes dashboard tests pipeline"
+          discard:
+            build:
+              keep_num: 50
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/kubernetes-ci/kubernetes-pipelines"
+            credentials: "gerrit"
+            script: pipelines/mcp-k8s-dashboard-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                kubernetes/dashboard:
+                  branches:
+                    - compare_type: "ANT"
+                      name: "**"
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+              override-votes:
+                gerritBuildUnstableVerifiedValue: 1
+                gerritBuildUnstableCodeReviewValue: 1
+          param:
+            KUBE_DOCKER_REGISTRY:
+              type: string
+              default: ${_param:mcp_docker_registry}
+              description: 'Docker registry for binaries and images'
+
diff --git a/jenkins/client/job/k8s-test/mcp-k8s-metallb-merge-pipeline.yml b/jenkins/client/job/k8s-test/mcp-k8s-metallb-merge-pipeline.yml
new file mode 100644
index 0000000..f6a3162
--- /dev/null
+++ b/jenkins/client/job/k8s-test/mcp-k8s-metallb-merge-pipeline.yml
@@ -0,0 +1,43 @@
+parameters:
+  _param:
+    mcp_docker_registry: 'docker-dev-local.docker.mirantis.net'
+    mcp_prod_docker_registry: 'docker-prod-local.docker.mirantis.net'
+  jenkins:
+    client:
+      job:
+        mcp_k8s_metallb_merge_pipeline:
+          type: workflow-scm
+          name: mcp-k8s-metallb-merge-pipeline
+          display_name: "MetalLB merge pipeline"
+          discard:
+            build:
+              keep_num: 20
+          concurrent: false
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/kubernetes-ci/kubernetes-pipelines"
+            credentials: "gerrit"
+            script: pipelines/mcp-k8s-metallb-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                kubernetes/kubernetes:
+                  branches:
+                    - compare_type: "ANT"
+                      name: "**mcp**"
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                change:
+                  - merged
+          param:
+            KUBE_DOCKER_REGISTRY:
+              type: string
+              default: ${_param:mcp_docker_registry}
+              description: 'Docker registry for binaries and images'
+            KUBE_PROD_DOCKER_REGISTRY:
+              type: string
+              default: ${_param:mcp_prod_docker_registry}
+              description: 'Prod docker registry for binaries and images'
diff --git a/jenkins/client/job/k8s-test/mcp-k8s-metallb-test-pipeline.yml b/jenkins/client/job/k8s-test/mcp-k8s-metallb-test-pipeline.yml
new file mode 100644
index 0000000..8ebd8eb
--- /dev/null
+++ b/jenkins/client/job/k8s-test/mcp-k8s-metallb-test-pipeline.yml
@@ -0,0 +1,48 @@
+parameters:
+  _param:
+    mcp_docker_registry: 'docker-dev-local.docker.mirantis.net'
+  jenkins:
+    client:
+      job:
+        mcp_k8s_metallb_test_pipeline:
+          type: workflow-scm
+          name: mcp-k8s-metallb-test-pipeline
+          display_name: "MetalLB tests pipeline"
+          discard:
+            build:
+              keep_num: 50
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/kubernetes-ci/kubernetes-pipelines"
+            credentials: "gerrit"
+            script: pipelines/mcp-k8s-metallb-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                kubernetes/metallb:
+                  branches:
+                    - compare_type: "ANT"
+                      name: "**"
+              message:
+                build_successful: "Build successful"
+                build_unstable: "Build unstable"
+                build_failure: "Build failed"
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+              override-votes:
+                gerritBuildUnstableVerifiedValue: 1
+                gerritBuildUnstableCodeReviewValue: 1
+          param:
+            KUBE_DOCKER_REGISTRY:
+              type: string
+              default: ${_param:mcp_docker_registry}
+              description: 'Docker registry for binaries and images'
+
diff --git a/keystone/server/fernet_rotation/cluster.yml b/keystone/server/fernet_rotation/cluster.yml
index a4aad33..7da8b5b 100644
--- a/keystone/server/fernet_rotation/cluster.yml
+++ b/keystone/server/fernet_rotation/cluster.yml
@@ -24,6 +24,10 @@
         credential_rotation_driver: ${_param:credential_rotation_driver}
   linux:
     system:
+      cron:
+        user:
+          keystone:
+            enabled: true
       job:
         keystone_fernet_rotate_rsync:
           command: '/var/lib/keystone/keystone_keys_rotate.sh -r -s -t fernet >> /var/log/keystone/keystone-rotate.log 2>> /var/log/keystone/keystone-rotate.log'
diff --git a/keystone/server/fernet_rotation/single.yml b/keystone/server/fernet_rotation/single.yml
index de5ca6a..bb6f234 100644
--- a/keystone/server/fernet_rotation/single.yml
+++ b/keystone/server/fernet_rotation/single.yml
@@ -10,6 +10,10 @@
         credential_rotation_driver: ${_param:credential_rotation_driver}
   linux:
     system:
+      cron:
+        user:
+          keystone:
+            enabled: true
       job:
         keystone_fernet_rotate_rsync:
           command: '/var/lib/keystone/keystone_keys_rotate.sh -r -t fernet >> /var/log/keystone/keystone-rotate.log 2>> /var/log/keystone/keystone-rotate.log'
diff --git a/kubernetes/common.yml b/kubernetes/common.yml
index c178ced..9151987 100644
--- a/kubernetes/common.yml
+++ b/kubernetes/common.yml
@@ -19,6 +19,7 @@
     kubernetes_sriov_repo: https://docker-prod-local.artifactory.mirantis.com/artifactory/binary-prod-local/mirantis/kubernetes/sriov-cni
     kubernetes_cniplugins_repo: https://docker-prod-local.artifactory.mirantis.com/artifactory/binary-prod-local/mirantis/kubernetes/containernetworking-plugins
     kubernetes_dashboard_repo: k8s.gcr.io
+    kubernetes_coredns_repo: coredns
 
     # component docker images
     kubernetes_docker_package: docker-engine=1.13.1-0~ubuntu-xenial
@@ -26,8 +27,8 @@
     kubernetes_calico_image: ${_param:kubernetes_calico_repo}/node:v3.1.3
     kubernetes_calico_cni_image: ${_param:kubernetes_calico_cni_repo}/cni:v3.1.3
     kubernetes_calico_kube_controllers_image: ${_param:kubernetes_calico_kube_ctl_repo}/kube-controllers:v3.1.3
-    kubernetes_hyperkube_image: ${_param:kubernetes_hyperkube_repo}/hyperkube-amd64:v1.10.4-4
-    kubernetes_pause_image: ${_param:kubernetes_hyperkube_repo}/pause-amd64:v1.10.4-4
+    kubernetes_hyperkube_image: ${_param:kubernetes_hyperkube_repo}/hyperkube-amd64:v1.11.2-1
+    kubernetes_pause_image: ${_param:kubernetes_hyperkube_repo}/pause-amd64:v1.11.2-1
     kubernetes_contrail_cni_image: ${_param:kubernetes_contrail_cni_repo}/contrail-cni:v1.2.0
     kubernetes_contrail_network_controller_image: ${_param:kubernetes_contrail_network_controller_repo}/contrail-network-controller:v1.2.0
     kubernetes_virtlet_image: ${_param:kubernetes_virtlet_repo}/virtlet:v1.1.2
@@ -43,8 +44,8 @@
     kubernetes_genie_source: ${_param:kubernetes_genie_repo}/genie_v1.0-138-gbf5dbaa
     kubernetes_genie_source_hash: md5=b024052ed4ecb1d5354e0cc8f51afaca
     kubernetes_flannel_image: ${_param:kubernetes_flannel_repo}/flannel:v0.10.0-amd64
-    kubernetes_metallb_controller_image: ${_param:kubernetes_metallb_repo}/controller:v0.6.2
-    kubernetes_metallb_speaker_image: ${_param:kubernetes_metallb_repo}/speaker:v0.6.2
+    kubernetes_metallb_controller_image: ${_param:kubernetes_metallb_repo}/controller:v0.7.3
+    kubernetes_metallb_speaker_image: ${_param:kubernetes_metallb_repo}/speaker:v0.7.3
     kubernetes_sriov_source: ${_param:kubernetes_sriov_repo}/sriov_v0.3-8-g8b7ed98
     kubernetes_sriov_source_hash: md5=c0cc33202afd02e4cc44b977a8faf6e7
     kubernetes_cniplugins_source: ${_param:kubernetes_cniplugins_repo}/cni-plugins_v0.7.1-48-g696b1f9.tar.gz
@@ -53,12 +54,13 @@
     kubernetes_fluentd_aggregator_image: fluent/fluentd-kubernetes-daemonset:v1.2-debian-elasticsearch
     kubernetes_fluentd_logger_image: fluent/fluentd-kubernetes-daemonset:v1.2-debian-stackdriver
     kubernetes_telegraf_image: docker.io/telegraf:1.5.3
+    kubernetes_coredns_image: ${_param:kubernetes_coredns_repo}/coredns:1.2.0
 
     kubelet_fail_on_swap: true
     kubernetes_dashboard_enabled: true
-    kubernetes_kubedns_enabled: true
+    kubernetes_kubedns_enabled: false
     kubernetes_externaldns_enabled: false
-    kubernetes_coredns_enabled: false
+    kubernetes_coredns_enabled: true
     kubernetes_externaldns_provider: coredns
     kubernetes_virtlet_enabled: false
     kubernetes_flannel_enabled: false
@@ -163,6 +165,7 @@
           provider: ${_param:kubernetes_externaldns_provider}
         coredns:
           enabled: ${_param:kubernetes_coredns_enabled}
+          image: ${_param:kubernetes_coredns_image}
         contrail_network_controller:
           enabled: ${_param:kubernetes_contrail_network_controller_enabled}
           image: ${_param:kubernetes_contrail_network_controller_image}
diff --git a/kubernetes/control/opencontrail.yaml b/kubernetes/control/opencontrail.yml
similarity index 72%
rename from kubernetes/control/opencontrail.yaml
rename to kubernetes/control/opencontrail.yml
index ba22753..dc1bd4f 100644
--- a/kubernetes/control/opencontrail.yaml
+++ b/kubernetes/control/opencontrail.yml
@@ -3,20 +3,23 @@
     opencontrail_identity_user: admin
     opencontrail_identity_password: contrail123
     opencontrail_identity_tenant: admin
+    opencontrail_public_ip_range: 172.17.47.128/25
+    opencontrail_public_ip_network: default-domain:default-project:Public
+    opencontrail_private_ip_range: 10.150.0.0/16
   kubernetes:
     pool:
       network:
-        engine: none
+        ~engine: {}
         opencontrail:
           enabled: false
     master:
       network:
-        engine: none
+        ~engine: {}
         opencontrail:
-          version: {{ cookiecutter.opencontrail_version }}
-          public_ip_range: {{ cookiecutter.opencontrail_public_ip_range }}
-          public_network: {{ cookiecutter.get('opencontrail_public_ip_network', 'default-domain:default-project:Public') }}
-          private_ip_range: {{ cookiecutter.opencontrail_private_ip_range }}
+          version: ${_param:opencontrail_version}
+          public_ip_range: ${_param:opencontrail_public_ip_range }
+          public_network: ${_param:opencontrail_public_ip_network }
+          private_ip_range: ${_param:opencontrail_private_ip_range }
           config:
             api:
               host: ${_param:opencontrail_control_address}
diff --git a/linux/system/single/simple.yml b/linux/system/single/simple.yml
index 2b4e919..45be219 100644
--- a/linux/system/single/simple.yml
+++ b/linux/system/single/simple.yml
@@ -8,6 +8,16 @@
     local_package_repos: false
   linux:
     system:
+      at:
+        enabled: true
+        user:
+          root:
+            enabled: true
+      cron:
+        enabled: true
+        user:
+          root:
+            enabled: true
       local_package_repos: ${_param:local_package_repos}
       timezone: UTC
       locale:
diff --git a/neutron/control/openvswitch/cluster.yml b/neutron/control/openvswitch/cluster.yml
index 3f80a55..5800060 100644
--- a/neutron/control/openvswitch/cluster.yml
+++ b/neutron/control/openvswitch/cluster.yml
@@ -17,6 +17,7 @@
     cluster_internal_protocol: 'http'
   neutron:
     server:
+      role: ${_param:openstack_node_role}
       global_physnet_mtu: ${_param:neutron_global_physnet_mtu}
       l3_ha: ${_param:neutron_l3_ha}
       dvr: ${_param:neutron_control_dvr}
diff --git a/openssh/server/team/drivetrain.yml b/openssh/server/team/drivetrain.yml
new file mode 100644
index 0000000..a48400a
--- /dev/null
+++ b/openssh/server/team/drivetrain.yml
@@ -0,0 +1,10 @@
+classes:
+- system.openssh.server.team.members.degorenko
+- system.openssh.server.team.members.iberezovskiy
+
+parameters:
+  _param:
+    linux_system_user_sudo: true
+  openssh:
+    server:
+      enabled: true
diff --git a/openssh/server/team/members/asamoylov.yml b/openssh/server/team/members/asamoylov.yml
new file mode 100644
index 0000000..63bfdd3
--- /dev/null
+++ b/openssh/server/team/members/asamoylov.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        asamoylov:
+          enabled: true
+          name: asamoylov
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Anton Samoylov
+          home: /home/asamoylov
+          email: asamoylov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        asamoylov:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwNiivTQ04f2ckhd6Zku7SFav6vAnVhGas3E9JbqIa222YhZdIqeCp7Su1jDmyuMsCe+ibRWNh9z+TnGb40qr2mbR+XyAeXv2kkUy1hc61Si1SWc2n0mrx7xh8aiGqMifra+WojBVVMHnknmdVFqGtq2hJSWrNYikdxKKI241EQ9Grta/iIjzlXmSSetcf54amsMJS8qMWOU7nW65EhSXNH3gUBdUV/85PJaTAChAKeOI3K7/jjogJ9hwYcpTVZCcCxEST6R6Q8Xhm5FXx1Fa6+nuGQYF8j9DF+tqWtoIuwlpNF5jn7ddr4qhVQkNpVEnMORT+2qhtOsvRPySqHbGb
+          user: ${linux:system:user:asamoylov}
diff --git a/openssh/server/team/members/degorenko.yaml b/openssh/server/team/members/degorenko.yaml
new file mode 100644
index 0000000..2f0d09e
--- /dev/null
+++ b/openssh/server/team/members/degorenko.yaml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        degorenko:
+          enabled: true
+          name: degorenko
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Denis Egorenko
+          home: /home/degorenko
+          email: degorenko@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        degorenko:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBUclrfSgL1AGw8gjjAcfD2XP9beQVRcP+FMTsuro/2UXjNN7fQ9oXm0TbIk5u+hgILrgjOkbxb1K7bYzdS7+zF3cFoK5B8GKaQog/frEZ2Y4NdkyK3nm5RX1NfxguND3pzEhr5tar/gi+C59uNWA70FF6lqi2yzqA6cWsBM4lP8ZVCOoKJpJNbXe8HXNDmHbVLP+kXzG7k0j/ifAHaF4Rsp+r9B7NupA28N0VhOaXooDRt8TrbqVPZRKuk2XIvitiw73b7ZoiErfOarkkAR6vI2pMrJLFiXm1J2kZHf1CLCl2EdVuS2ba7LtQo77Qw++YeYM4zdGQ5Xr+yjztgxXX degorenko
+          user: ${linux:system:user:degorenko}
diff --git a/openssh/server/team/members/iberezovskiy.yml b/openssh/server/team/members/iberezovskiy.yml
new file mode 100644
index 0000000..14e868f
--- /dev/null
+++ b/openssh/server/team/members/iberezovskiy.yml
@@ -0,0 +1,20 @@
+parameters:
+  linux:
+    system:
+      user:
+        iberezovskiy:
+          enabled: true
+          name: iberezovskiy
+          sudo: ${_param:linux_system_user_sudo}
+          full_name: Ivan Berezovskiy
+          home: /home/iberezovskiy
+          email: iberezovskiy@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        iberezovskiy:
+          enabled: true
+          public_keys:
+            - key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnn18VJ7z3CIBaQmIRfYltyh/BogwBq4B9KVUZ0Gl1EWd5AutuR00xCOYdFeU7okaURYILC+8W2A7a9qkML9G99sX+KD+7CDsKm33XeCP4YJ9QhOwA+OYPS84lLExvK+9AoVPnB06sEK8CvPdU6byQE/EX1VA9gFFCraOH1D0eABaC01csHI+GaiIA5qSjDMH+ieii1Rv5Zb6NHyYRktaCSHB2asu5Y7VxmL2srweFJonpk4Z80+TWlc2ESRLc9EFMefRt/MixIyFjBgvcsE++eCO6MModCAoP5V1Tmgd+cztcvm/tlQqJirve/64SFLvDbjYLE9QxQ8bY4/d4MjcX iberezovskiy@tests-MacBook-Pro.local
+          user: ${linux:system:user:iberezovskiy}
diff --git a/openssh/server/team/networking.yml b/openssh/server/team/networking.yml
index 9921b5b..219c2ee 100644
--- a/openssh/server/team/networking.yml
+++ b/openssh/server/team/networking.yml
@@ -8,6 +8,7 @@
 - system.openssh.server.team.members.psvimbersky
 - system.openssh.server.team.members.gzimin
 - system.openssh.server.team.members.dpyzhov
+- system.openssh.server.team.members.asamoylov
 parameters:
   _param:
     linux_system_user_sudo: true
diff --git a/panko/server/cluster.yml b/panko/server/cluster.yml
index d641f36..3a4cb65 100644
--- a/panko/server/cluster.yml
+++ b/panko/server/cluster.yml
@@ -11,6 +11,12 @@
     panko_memcached_node03_address: ${_param:cluster_node03_address}
     # Keep events in database for 30 days
     panko_event_time_to_live: 2592000
+  linux:
+    system:
+      cron:
+        user:
+          panko:
+            enabled: true
   panko:
     server:
       role: ${_param:openstack_node_role}
@@ -32,4 +38,4 @@
       expirer:
         cron:
           minute: 0
-          hour: 2
\ No newline at end of file
+          hour: 2
diff --git a/panko/server/single.yml b/panko/server/single.yml
index 497b21e..4ba2787 100644
--- a/panko/server/single.yml
+++ b/panko/server/single.yml
@@ -5,6 +5,12 @@
   _param:
     # Keep events in database for 30 days
     panko_event_time_to_live: 2592000
+  linux:
+    system:
+      cron:
+        user:
+          panko:
+            enabled: true
   panko:
     server:
       role: ${_param:openstack_node_role}
@@ -13,4 +19,4 @@
       expirer:
         cron:
           minute: 0
-          hour: 2
\ No newline at end of file
+          hour: 2
diff --git a/reclass/storage/system/openstack_barbican_cluster.yml b/reclass/storage/system/openstack_barbican_cluster.yml
new file mode 100644
index 0000000..1b47ee6
--- /dev/null
+++ b/reclass/storage/system/openstack_barbican_cluster.yml
@@ -0,0 +1,42 @@
+parameters:
+  _param:
+    openstack_barbican_node01_hostname: kmn01
+    openstack_barbican_node02_hostname: kmn02
+    openstack_barbican_node03_hostname: kmn03
+    openstack_barbican_system_codename: xenial
+  reclass:
+    storage:
+      node:
+        openstack_barbican_node01:
+          name: ${_param:openstack_barbican_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.barbican
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:openstack_barbican_system_codename}
+            single_address: ${_param:openstack_barbican_node01_address}
+            keepalived_vip_priority: 103
+            openstack_node_role: primary
+        openstack_barbican_node02:
+          name: ${_param:openstack_barbican_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.barbican
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:openstack_barbican_system_codename}
+            single_address: ${_param:openstack_barbican_node02_address}
+            keepalived_vip_priority: 102
+            openstack_node_role: secondary
+        openstack_barbican_node03:
+          name: ${_param:openstack_barbican_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.barbican
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: ${_param:openstack_barbican_system_codename}
+            single_address: ${_param:openstack_barbican_node03_address}
+            keepalived_vip_priority: 101
+            openstack_node_role: secondary
diff --git a/salt/control/cluster/openstack_barbican_cluster.yml b/salt/control/cluster/openstack_barbican_cluster.yml
new file mode 100644
index 0000000..cfa7ba6
--- /dev/null
+++ b/salt/control/cluster/openstack_barbican_cluster.yml
@@ -0,0 +1,29 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.barbican:
+          cpu: 4
+          ram: 8192
+          disk_profile: large
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            kmn01:
+              name: ${_param:openstack_barbican_node01_hostname}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.barbican
+            kmn02:
+              name: ${_param:openstack_barbican_node02_hostname}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.barbican
+            kmn03:
+              name: ${_param:openstack_barbican_node03_hostname}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: openstack.barbican
diff --git a/xtrabackup/server/single.yml b/xtrabackup/server/single.yml
index f72a92a..ad06a94 100644
--- a/xtrabackup/server/single.yml
+++ b/xtrabackup/server/single.yml
@@ -4,3 +4,9 @@
   _param:
     xtrabackup_qpress_source: pkg
     xtrabackup_qpress_source_name: qpress
+  linux:
+    system:
+      cron:
+        user:
+          xtrabackup:
+            enabled: true
diff --git a/zookeeper/backup/server/single.yml b/zookeeper/backup/server/single.yml
index 6796d8a..a97df06 100644
--- a/zookeeper/backup/server/single.yml
+++ b/zookeeper/backup/server/single.yml
@@ -3,6 +3,12 @@
 parameters:
   _param:
     zookeeper_backup_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzLUiHKAjfFXiZ3fsgx35uXF6VivfC5WFafu4QMalxmj6W+s277oCfdWA8Du5f1wtQXM73VQ5nHkXhM2UIfUMarsyhXK+BxKVrcgEBNHdKlDytaecUPyuOxTDdGWhN/DPv5/vL8NYWweEYBbNbLgU0Td7Rvm52TUXKThIDjeF7XDxX4ShXWipBSwU4boOUBtR8KWfga8fsqeBN+eacuAQFR3MrrOfVvAuWW6Bsf047cmd+V6Qv0raoW73Nu4M/ZAdTsaR5k62a0cHsSRoi3hCmNRqw+CZaQi8prQU6t26eWPEtznjp5EkPF+LLh8LxUoCfWqWT+Lxe8QQwT1nx/LCN
+  linux:
+    system:
+      cron:
+        user:
+          zookeeper:
+            enabled: true
   zookeeper:
     backup:
       server: