Merge "Disable useless triggers to MAKE JENKINS WORK"
diff --git a/cassandra/backup/client/single.yml b/cassandra/backup/client/single.yml
index 6c91a90..90fdc5d 100644
--- a/cassandra/backup/client/single.yml
+++ b/cassandra/backup/client/single.yml
@@ -1,6 +1,8 @@
 classes:
 - system.openssh.client.root
 parameters:
+  _param:
+    cassandra_remote_backup_server: cfg01
   cassandra:
     backup:
       client:
@@ -8,6 +10,4 @@
         full_backups_to_keep: 3
         hours_before_full: 24
         target:
-          host: cfg01
-        restore_latest: 1
-        restore_from: local
+          host: ${_param:cassandra_remote_backup_server}
diff --git a/devops_portal/service/janitor_monkey.yml b/devops_portal/service/janitor_monkey.yml
new file mode 100644
index 0000000..73f2e7c
--- /dev/null
+++ b/devops_portal/service/janitor_monkey.yml
@@ -0,0 +1,10 @@
+parameters:
+  devops_portal:
+    config:
+      service:
+        janitormonkey:
+          configure_proxy: true
+          endpoint:
+            address: ${_param:haproxy_janitor_monkey_bind_host}
+            port: ${_param:haproxy_janitor_monkey_bind_port}
+            https: ${_param:haproxy_janitor_monkey_ssl:enabled}
diff --git a/docker/swarm/stack/janitor_monkey.yml b/docker/swarm/stack/janitor_monkey.yml
index 2d5f4a7..426a75c 100644
--- a/docker/swarm/stack/janitor_monkey.yml
+++ b/docker/swarm/stack/janitor_monkey.yml
@@ -4,6 +4,21 @@
     docker_image_mongodb: library/mongo:3.4
     docker_mongodb_admin_username: admin
     docker_mongodb_admin_password: password
+    docker_image_janitor_monkey: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/janitor_monkey:6040
+    janitor_monkey_enabled: true
+    janitor_monkey_dryrun_mode: false
+    janitor_monkey_base_url: http://${_param:haproxy_janitor_monkey_bind_host}:${_param:haproxy_janitor_monkey_bind_port}
+    janitor_monkey_mongodb_host: ${_param:haproxy_mongodb_bind_host}
+    janitor_monkey_mongodb_port: ${_param:haproxy_mongodb_bind_port}
+    janitor_monkey_mongodb_db: mcp_cloud
+    janitor_monkey_mongodb_username: janitor
+    janitor_monkey_mongodb_password: password
+    janitor_monkey_elasticsearch: ${_param:haproxy_elasticsearch_bind_host}:${_param:haproxy_elasticsearch_binary_bind_port}
+    janitor_monkey_cloudfire_region: RegionOne
+    janitor_monkey_cis_clustername: ${_param:elasticsearch_cluster_name}
+    janitor_monkey_openstack:
+      project_domain_name: default
+      project_name: admin
   docker:
     client:
       stack:
@@ -11,6 +26,24 @@
           environment:
             MONGO_INITDB_ROOT_USERNAME: ${_param:docker_mongodb_admin_username}
             MONGO_INITDB_ROOT_PASSWORD: ${_param:docker_mongodb_admin_password}
+            simianarmy.recorder.mongodb.host: ${_param:janitor_monkey_mongodb_host}
+            simianarmy.recorder.mongodb.port: ${_param:janitor_monkey_mongodb_port}
+            simianarmy.recorder.mongodb.database: ${_param:janitor_monkey_mongodb_db}
+            simianarmy.recorder.mongodb.user: ${_param:janitor_monkey_mongodb_username}
+            simianarmy.recorder.mongodb.password: ${_param:janitor_monkey_mongodb_password}
+            simianarmy.base.url: ${_param:janitor_monkey_base_url}
+            simianarmy.janitor.enabled: ${_param:janitor_monkey_enabled}
+            simianarmy.janitor.leashed: ${_param:janitor_monkey_dryrun_mode}
+            simianarmy.calendar.isMonkeyTime: true
+            simianarmy.janitor.resources.sdb.domain: ${_param:janitor_monkey_mongodb_db}
+            simianarmy.client.cloudfire.cis.hosts: ${_param:janitor_monkey_elasticsearch}
+            simianarmy.client.cloudfire.region: ${_param:janitor_monkey_cloudfire_region}
+            simianarmy.client.cloudfire.cis.clustername: ${_param:janitor_monkey_cis_clustername}
+            simianarmy.client.cloudfire.identityEndpoint: ${_param:janitor_monkey_openstack:auth_url}
+            simianarmy.client.cloudfire.accountKey: ${_param:janitor_monkey_openstack:username}
+            simianarmy.client.cloudfire.secretKey: ${_param:janitor_monkey_openstack:password}
+            simianarmy.client.cloudfire.domain: ${_param:janitor_monkey_openstack:project_domain_name}
+            simianarmy.client.cloudfire.project: ${_param:janitor_monkey_openstack:project_name}
           service:
             mongodb:
               image: ${_param:docker_image_mongodb}
@@ -21,4 +54,12 @@
               ports:
                 - ${_param:haproxy_mongodb_exposed_port}:${_param:haproxy_mongodb_bind_port}
               volumes:
-                - /srv/volumes/mongodb:/data
+                - /srv/volumes/mongodb:/data/db
+            api:
+              image: ${_param:docker_image_janitor_monkey}
+              deploy:
+                replicas: ${_param:docker_janitor_monkey_replicas}
+                restart_policy:
+                  condition: any
+              ports:
+                - ${_param:haproxy_janitor_monkey_exposed_port}:8080
diff --git a/docker/swarm/stack/monitoring/init.yml b/docker/swarm/stack/monitoring/init.yml
index 2cbdfdc..e5d11e1 100644
--- a/docker/swarm/stack/monitoring/init.yml
+++ b/docker/swarm/stack/monitoring/init.yml
@@ -1,10 +1,8 @@
 classes:
-- service.prometheus.server.container
-- service.prometheus.alertmanager.container
-- service.prometheus.pushgateway.container
-- service.prometheus.remote_storage_adapter.container
-- system.prometheus.server
-- system.prometheus.alertmanager
+- system.prometheus.alertmanager.container
+- system.prometheus.pushgateway.container
+- system.prometheus.remote_storage_adapter.container
+- system.prometheus.server.container
 - system.telegraf.agent.remote
 parameters:
   docker:
diff --git a/docker/swarm/stack/security_monkey.yml b/docker/swarm/stack/security_monkey.yml
index 143b321..2d06a42 100644
--- a/docker/swarm/stack/security_monkey.yml
+++ b/docker/swarm/stack/security_monkey.yml
@@ -2,13 +2,17 @@
   _param:
     docker_security_monkey_api_replicas: 1
     docker_security_monkey_scheduler_replicas: 1
-    docker_image_security_monkey_api: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-api:4435
-    docker_image_security_monkey_scheduler: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-scheduler:4435
+    docker_image_security_monkey_api: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-api:6700
+    docker_image_security_monkey_scheduler: docker-sandbox.sandbox.mirantis.net/vstoiko/oss/security-monkey-scheduler:6700
     security_monkey_db: secmonkey
     notification_service_url: http://${_param:haproxy_pushkin_bind_host}:${_param:haproxy_pushkin_bind_port}/post_notification_json
     security_monkey_user: devopsportal@devopsportal.local
     security_monkey_password: devopsportal
     security_monkey_role: Justify
+    security_monkey_fqdn: ${_param:haproxy_security_monkey_bind_host}
+    security_monkey_web_port: ${_param:haproxy_security_monkey_bind_port}
+    security_monkey_api_port: ${_param:haproxy_security_monkey_bind_port}
+    security_monkey_nginx_port: ${_param:haproxy_security_monkey_bind_port}
     devops_portal_sm_wtf_csrf_enabled: False
     security_monkey_openstack:
       os_account_id: mcp_cloud
@@ -28,6 +32,10 @@
             SECURITY_MONKEY_POSTGRES_PASSWORD: ${_param:secmonkey_db_user_password}
             SECURITY_MONKEY_POSTGRES_HOST: ${_param:secmonkey_db_host}
             SECURITY_MONKEY_POSTGRES_PORT: ${_param:haproxy_postgresql_bind_port}
+            SECURITY_MONKEY_FQDN: ${_param:security_monkey_fqdn}
+            WEB_PORT: ${_param:security_monkey_web_port}
+            API_PORT: ${_param:security_monkey_api_port}
+            NGINX_PORT: ${_param:security_monkey_nginx_port}
             NOTIFICATIONS_SERVICE_URL: ${_param:notification_service_url}
             DEFAULT_USER: ${_param:security_monkey_user}
             DEFAULT_PASSWORD: ${_param:security_monkey_password}
@@ -41,6 +49,8 @@
             OS_PROJECT_NAME: ${_param:security_monkey_openstack:project_name}
             USER_DOMAIN_NAME: ${_param:security_monkey_openstack:user_domain_name}
             SM_WTF_CSRF_ENABLED: ${_param:devops_portal_sm_wtf_csrf_enabled}
+            SQLALCHEMY_DATABASE_URI: postgresql://${_param:secmonkey_db_user}:${_param:secmonkey_db_user_password}@${_param:secmonkey_db_host}:${_param:haproxy_postgresql_bind_port}/${_param:security_monkey_db}
+            SQLALCHEMY_POOL_RECYCLE: 14400
           service:
             api:
               image: ${_param:docker_image_security_monkey_api}
@@ -59,4 +69,4 @@
                 restart_policy:
                   condition: any
               volumes:
-                - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
\ No newline at end of file
+                - /srv/volumes/security_monkey/logs:/var/log/security_monkey/logs
diff --git a/elasticsearch/client/index/janitor_monkey.yml b/elasticsearch/client/index/janitor_monkey.yml
new file mode 100644
index 0000000..bef92ae
--- /dev/null
+++ b/elasticsearch/client/index/janitor_monkey.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    janitor_monkey_cis_openstack_shards: 5
+    janitor_monkey_cis_openstack_replicas: 1
+  elasticsearch:
+    client:
+      index:
+        cis-openstack:
+          enabled: true
+          force_operation: true
+          definition:
+            template: cis-openstack
+            settings:
+              number_of_shards: ${_param:janitor_monkey_cis_openstack_shards}
+              number_of_replicas: ${_param:janitor_monkey_cis_openstack_replicas}
\ No newline at end of file
diff --git a/elasticsearch/client/pushkin/notifications.yml b/elasticsearch/client/index/pushkin.yml
similarity index 100%
rename from elasticsearch/client/pushkin/notifications.yml
rename to elasticsearch/client/index/pushkin.yml
diff --git a/elasticsearch/client/init.yml b/elasticsearch/client/init.yml
new file mode 100644
index 0000000..d0710ca
--- /dev/null
+++ b/elasticsearch/client/init.yml
@@ -0,0 +1,10 @@
+parameters:
+  _param:
+    elasticsearch_client_host: ${_param:haproxy_elasticsearch_bind_host}
+    elasticsearch_client_port: ${_param:haproxy_elasticsearch_http_bind_port}
+  elasticsearch:
+    client:
+      enabled: true
+      server:
+        host: ${_param:elasticsearch_client_host}
+        port: ${_param:elasticsearch_client_port}
\ No newline at end of file
diff --git a/elasticsearch/client/pushkin/init.yml b/elasticsearch/client/pushkin/init.yml
deleted file mode 100644
index 9f37847..0000000
--- a/elasticsearch/client/pushkin/init.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-parameters:
-  _param:
-    pushkin_elasticsearch_host: ${_param:haproxy_elasticsearch_bind_host}
-    pushkin_elasticsearch_port: ${_param:haproxy_elasticsearch_http_bind_port}
-  elasticsearch:
-    client:
-      enabled: true
-      server:
-        host: ${_param:pushkin_elasticsearch_host}
-        port: ${_param:pushkin_elasticsearch_port}
\ No newline at end of file
diff --git a/glance/client/image/octavia.yml b/glance/client/image/octavia.yml
new file mode 100644
index 0000000..de81f7f
--- /dev/null
+++ b/glance/client/image/octavia.yml
@@ -0,0 +1,29 @@
+classes:
+- system.glance.client
+parameters:
+  _param:
+    amphora_image_url: "https://artifactory.mirantis.com/binary-prod-local/mirantis/openstack/octavia/images/ocata/amphora-x64-haproxy.qcow2"
+    amphora_image_name:  "amphora-x64-haproxy"
+  glance:
+    client:
+      identity:
+        admin_identity:
+          endpoint_type: internalURL
+          image:
+            amphora-x64-haproxy:
+              name: ${_param:amphora_image_name}
+              location: ${_param:amphora_image_url}
+              import_from_format: 'qcow2'
+              container_format: 'bare'
+              disk_format: 'qcow2'
+              tags:
+                - 'amphora'
+              visibility: public
+              wait_timeout: 1000
+  salt:
+    minion:
+      mine:
+        module:
+          glanceng.get_image_owner_id:
+            - ${_param:amphora_image_name}
+            - 'admin_identity'
diff --git a/glance/client/init.yml b/glance/client/init.yml
new file mode 100644
index 0000000..305f9ba
--- /dev/null
+++ b/glance/client/init.yml
@@ -0,0 +1,4 @@
+parameters:
+  glance:
+    client:
+      enabled: true
diff --git a/haproxy/proxy/listen/oss/janitor_monkey.yml b/haproxy/proxy/listen/oss/janitor_monkey.yml
new file mode 100644
index 0000000..c2ff760
--- /dev/null
+++ b/haproxy/proxy/listen/oss/janitor_monkey.yml
@@ -0,0 +1,40 @@
+parameters:
+  _param:
+    haproxy_janitor_monkey_bind_host: ${_param:haproxy_bind_address}
+    haproxy_janitor_monkey_bind_port: 8088
+    haproxy_janitor_monkey_exposed_port: 18088
+    haproxy_janitor_monkey_ssl:
+      enabled: false
+  haproxy:
+    proxy:
+      listen:
+        janitor_monkey:
+          mode: http
+          options:
+          - httpchk get /simianarmy/api/v1/janitor
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          health-check:
+            http:
+              enabled: true
+              options:
+                - expect status 200
+          binds:
+            - address: ${_param:haproxy_janitor_monkey_bind_host}
+              port: ${_param:haproxy_janitor_monkey_bind_port}
+              ssl: ${_param:haproxy_janitor_monkey_ssl}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_janitor_monkey_exposed_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_janitor_monkey_exposed_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_janitor_monkey_exposed_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/oss/postgresql.yml b/haproxy/proxy/listen/oss/postgresql.yml
index 1bc1f44..a356a48 100644
--- a/haproxy/proxy/listen/oss/postgresql.yml
+++ b/haproxy/proxy/listen/oss/postgresql.yml
@@ -7,6 +7,11 @@
       enabled: false
   haproxy:
     proxy:
+      timeout:
+        queue: '8h'
+        client: '8h'
+        server: '8h'
+        check: '10s'
       listen:
         postgresql:
           mode: tcp
diff --git a/heka/log_collector/output/telegraf.yml b/heka/log_collector/output/telegraf.yml
index 94171cb..e6a9488 100644
--- a/heka/log_collector/output/telegraf.yml
+++ b/heka/log_collector/output/telegraf.yml
@@ -6,3 +6,5 @@
       telegraf_host: 127.0.0.1
       telegraf_port: ${_param:log_collector_telegraf_port}
       telegraf_timeout: 2000
+      emit_rates: false
+      alarms_enabled: false
diff --git a/heka/remote_collector/output/telegraf.yml b/heka/remote_collector/output/telegraf.yml
index 7f7a5c0..48da337 100644
--- a/heka/remote_collector/output/telegraf.yml
+++ b/heka/remote_collector/output/telegraf.yml
@@ -6,3 +6,5 @@
       influxdb_host: ${_param:remote_collector_telegraf_host}
       influxdb_port: ${_param:remote_collector_telegraf_port}
       influxdb_timeout: 2000
+      emit_rates: false
+      alarms_enabled: false
diff --git a/jenkins/client/job/debian/packages/salt.yml b/jenkins/client/job/debian/packages/salt.yml
index 80cff31..6ccb432 100644
--- a/jenkins/client/job/debian/packages/salt.yml
+++ b/jenkins/client/job/debian/packages/salt.yml
@@ -19,6 +19,8 @@
               dist: trusty
             - name: backupninja
               dist: trusty
+            - name: baremetal-simulator
+              dist: trusty
             - name: billometer
               dist: trusty
             - name: bind
@@ -211,6 +213,8 @@
               dist: xenial
             - name: avinetworks
               dist: xenial
+            - name: baremetal-simulator
+              dist: xenial
             - name: backupninja
               dist: xenial
             - name: billometer
diff --git a/jenkins/client/job/deploy/lab/mk/cloud.yml b/jenkins/client/job/deploy/lab/mk/cloud.yml
index 5b15f35..4e4080b 100644
--- a/jenkins/client/job/deploy/lab/mk/cloud.yml
+++ b/jenkins/client/job/deploy/lab/mk/cloud.yml
@@ -2,10 +2,6 @@
   _param:
     jenkins_cloud_deploy_pipelines:
       - stack_name: k8s_calico
-        stack_type: heat
-        stack_install: core,k8s,calico
-        job_timer: ""
-      - stack_name: k8s_calico
         stack_type: aws
         stack_install: core,k8s,calico
         job_timer: "H H * * *"
@@ -55,15 +51,15 @@
         job_timer: ""
       - stack_name: stacklight_k8s_calico
         stack_type: heat
-        stack_install: core,k8s,calico,stacklight
+        stack_install: core,k8s,calico,sl-legacy
         job_timer: ""
       - stack_name: stacklight_os_contrail
         stack_type: heat
-        stack_install: core,openstack,contrail,stacklight
+        stack_install: core,openstack,contrail,sl-legacy
         job_timer: ""
       - stack_name: stacklight_os_ovs
         stack_type: heat
-        stack_install: core,openstack,ovs,stacklight
+        stack_install: core,openstack,ovs,sl-legacy
         job_timer: ""
   jenkins:
     client:
@@ -170,7 +166,7 @@
                 default: ""
               OPENSTACK_API_VERSION:
                 type: string
-                default: "2"
+                default: "3"
               OPENSTACK_API_PROJECT_DOMAIN:
                 type: string
                 default: "default"
@@ -203,7 +199,7 @@
                 type: string
                 default: "docker-dev-virtual.docker.mirantis.net/mirantis/kubernetes/k8s-conformance:v1.5.1-3_1482332392819"
 
-              # Openstack settings
+              # openstack settings
               TEMPEST_IMAGE:
                 type: string
                 default: "sandbox-docker-prod-local.docker.mirantis.net/mirantis/rally_tempest:0.1"
diff --git a/jenkins/client/job/docker/cis-collectors.yml b/jenkins/client/job/docker/cis-collectors.yml
index c7d580b..11d8be9 100644
--- a/jenkins/client/job/docker/cis-collectors.yml
+++ b/jenkins/client/job/docker/cis-collectors.yml
@@ -13,9 +13,9 @@
           concurrent: false
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
diff --git a/jenkins/client/job/docker/devops-portal.yml b/jenkins/client/job/docker/devops-portal.yml
index c4db406..3b831d8 100644
--- a/jenkins/client/job/docker/devops-portal.yml
+++ b/jenkins/client/job/docker/devops-portal.yml
@@ -13,9 +13,9 @@
           concurrent: false
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
diff --git a/jenkins/client/job/docker/rundeck.yml b/jenkins/client/job/docker/rundeck.yml
index cb1eadb..9b116fe 100644
--- a/jenkins/client/job/docker/rundeck.yml
+++ b/jenkins/client/job/docker/rundeck.yml
@@ -13,9 +13,9 @@
           concurrent: false
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
-            script: docker-build-to-jfrog.groovy
+            script: docker-build-image-pipeline.groovy
           trigger:
             gerrit:
               project:
diff --git a/jenkins/client/job/git-mirrors/upstream/oss.yml b/jenkins/client/job/git-mirrors/upstream/oss.yml
new file mode 100644
index 0000000..af3f816
--- /dev/null
+++ b/jenkins/client/job/git-mirrors/upstream/oss.yml
@@ -0,0 +1,9 @@
+classes:
+  - system.jenkins.client.job.git-mirrors.upstream
+parameters:
+  _param:
+    jenkins_git_mirror_upstream_jobs:
+      - name: rundeck-cis-jobs
+        downstream: oss/rundeck-cis-jobs
+        upstream: "git@github.com:Mirantis/rundeck-cis-jobs"
+        branches: master
diff --git a/jenkins/client/job/oss/test_security_monkey_openstack.yml b/jenkins/client/job/oss/test_security_monkey_openstack.yml
new file mode 100644
index 0000000..7e9343f
--- /dev/null
+++ b/jenkins/client/job/oss/test_security_monkey_openstack.yml
@@ -0,0 +1,43 @@
+parameters:
+  jenkins:
+    client:
+      job:
+        test-oss-security-monkey-openstack:
+          name: test-oss-security-monkey-openstack
+          discard:
+            build:
+              keep_num: 15
+            artifact:
+              keep_num: 15
+          type: workflow-scm
+          concurrent: true
+          scm:
+            type: git
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
+            credentials: "gerrit"
+            script: test-security-monkey-openstack-pipeline.groovy
+          trigger:
+            gerrit:
+              project:
+                "oss/security-monkey-openstack":
+                  branches:
+                    - master
+              event:
+                patchset:
+                  - created:
+                      excludeDrafts: false
+                      excludeTrivialRebase: false
+                      excludeNoCodeChange: false
+                comment:
+                  - addedContains:
+                      commentAddedCommentContains: '(recheck|reverify)'
+          param:
+            CREDENTIALS_ID:
+              type: string
+              default: "gerrit"
+            DEFAULT_GIT_URL:
+              type: string
+              default: "${_param:jenkins_gerrit_url}/oss/security-monkey-openstack"
+            DEFAULT_GIT_REF:
+              type: string
+              default: master
diff --git a/jenkins/client/job/test_devops_portal.yml b/jenkins/client/job/test_devops_portal.yml
index 3200283..4007010 100644
--- a/jenkins/client/job/test_devops_portal.yml
+++ b/jenkins/client/job/test_devops_portal.yml
@@ -13,7 +13,7 @@
           concurrent: true
           scm:
             type: git
-            url: "${_param:jenkins_gerrit_url}/mk/mk-pipelines"
+            url: "${_param:jenkins_gerrit_url}/oss/jenkins/pipelines"
             credentials: "gerrit"
             script: test-devops-portal-pipeline.groovy
           trigger:
diff --git a/keystone/client/core.yml b/keystone/client/core.yml
index 0614f40..39d28de 100644
--- a/keystone/client/core.yml
+++ b/keystone/client/core.yml
@@ -29,4 +29,12 @@
                   is_admin: true
                   password: ${_param:keystone_admin_password}
                   email: ${_param:admin_email}
-
+        admin_identity:
+          admin:
+            user: admin
+            password: ${_param:keystone_admin_password}
+            project: admin
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
+            use_keystoneauth: true
diff --git a/keystone/client/service/barbican.yml b/keystone/client/service/barbican.yml
new file mode 100644
index 0000000..f83e6ab
--- /dev/null
+++ b/keystone/client/service/barbican.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                barbican:
+                  is_admin: true
+                  password: ${_param:keystone_barbican_password}
+                  email: ${_param:admin_email}
+          service:
+            barbican:
+              type: key-manager
+              description: OpenStack Key-Manager Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 9311
+                public_path: '/'
+                internal_address: ${_param:barbican_service_host}
+                internal_port: 9311
+                internal_path: '/'
+                admin_address: ${_param:barbican_service_host}
+                admin_port: 9311
+                admin_path: '/'
diff --git a/keystone/client/service/congress.yml b/keystone/client/service/congress.yml
new file mode 100644
index 0000000..529d3ee
--- /dev/null
+++ b/keystone/client/service/congress.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                congress:
+                  is_admin: true
+                  password: ${_param:keystone_congress_password}
+                  email: ${_param:admin_email}
+          service:
+            congress:
+              type: policy
+              description: Congress service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 1789
+                public_path: '/'
+                internal_address: ${_param:congress_service_host}
+                internal_port: 1789
+                internal_path: '/'
+                admin_address: ${_param:congress_service_host}
+                admin_port: 1789
+                admin_path: '/'
diff --git a/keystone/client/service/ironic.yml b/keystone/client/service/ironic.yml
index beb99a1..1ab9872 100644
--- a/keystone/client/service/ironic.yml
+++ b/keystone/client/service/ironic.yml
@@ -12,14 +12,6 @@
                   is_admin: true
                   password: ${_param:keystone_ironic_password}
                   email: ${_param:admin_email}
-        admin_identity:
-          admin:
-            user: admin
-            password: ${_param:keystone_admin_password}
-            project: admin
-            host: ${_param:keystone_service_host}
-            port: 5000
-            region_name: ${_param:openstack_region}
           service:
             ironic:
               type: baremetal
@@ -36,3 +28,11 @@
                 admin_address: ${_param:ironic_service_host}
                 admin_port: 6385
                 admin_path: ''
+        admin_identity:
+          admin:
+            user: admin
+            password: ${_param:keystone_admin_password}
+            project: admin
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
diff --git a/keystone/client/single.yml b/keystone/client/single.yml
index 6d7a4c6..0c70390 100644
--- a/keystone/client/single.yml
+++ b/keystone/client/single.yml
@@ -38,3 +38,12 @@
                   is_admin: true
                   password: ${_param:keystone_admin_password}
                   email: ${_param:admin_email}
+        admin_identity:
+          admin:
+            user: admin
+            password: ${_param:keystone_admin_password}
+            project: admin
+            host: ${_param:keystone_service_host}
+            port: 5000
+            region_name: ${_param:openstack_region}
+            use_keystoneauth: true
diff --git a/kubernetes/pool/cluster.yml b/kubernetes/pool/cluster.yml
index 7adb119..05aa1bc 100644
--- a/kubernetes/pool/cluster.yml
+++ b/kubernetes/pool/cluster.yml
@@ -8,6 +8,8 @@
     kubernetes_calico_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/node:latest
     kubernetes_calico_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/cni:latest
     kubernetes_hyperkube_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/hyperkube-amd64:v1.6.2-2
+    kubernetes_contrail_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-cni:v1.0.0
+    kubernetes_contrail_network_controller_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-network-controller:v1.0.0
 
   kubernetes:
     pool:
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
index 4caaa50..9be2164 100644
--- a/kubernetes/pool/single.yml
+++ b/kubernetes/pool/single.yml
@@ -8,6 +8,8 @@
     kubernetes_calico_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/node:latest
     kubernetes_calico_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/projectcalico/calico/cni:latest
     kubernetes_hyperkube_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/hyperkube-amd64:v1.6.2-2
+    kubernetes_contrail_cni_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-cni:v1.0.0
+    kubernetes_contrail_network_controller_image: docker-prod-virtual.docker.mirantis.net/mirantis/kubernetes/contrail-integration/contrail-network-controller:v1.0.0
 
   kubernetes:
     pool:
diff --git a/linux/system/repo/saltstack/rhel.yml b/linux/system/repo/saltstack/rhel.yml
new file mode 100644
index 0000000..b0f28f3
--- /dev/null
+++ b/linux/system/repo/saltstack/rhel.yml
@@ -0,0 +1,14 @@
+parameters:
+  _param:
+    salt_version: 2016.3
+    rhel_releasever: 7
+    rhel_basearch: x86_64
+  linux:
+    system:
+      repo:
+        salt:
+          humanname: "SaltStack repo for RHEL/CentOS ${rhel_repo_releasever}"
+          source: "https://repo.saltstack.com/yum/redhat/${_param:rhel_releasever}/${_param:rhel_basearch}/${_param:salt_version}"
+          gpgkey: "https://repo.saltstack.com/yum/redhat/${_param:rhel_releasever}/${_param:rhel_basearch}/${_param:salt_version}/SALTSTACK-GPG-KEY.pub"
+          gpgcheck: true
+          architectures: amd64
diff --git a/linux/system/repo/saltstack/rhel6.yml b/linux/system/repo/saltstack/rhel6.yml
new file mode 100644
index 0000000..098410c
--- /dev/null
+++ b/linux/system/repo/saltstack/rhel6.yml
@@ -0,0 +1,6 @@
+classes:
+- system.linux.system.repo.saltstack.rhel
+parameters:
+  _param:
+    salt_version: 2016.3
+    rhel_releasever: 6
diff --git a/linux/system/repo/saltstack/rhel7.yml b/linux/system/repo/saltstack/rhel7.yml
new file mode 100644
index 0000000..a216398
--- /dev/null
+++ b/linux/system/repo/saltstack/rhel7.yml
@@ -0,0 +1,6 @@
+classes:
+- system.linux.system.repo.saltstack.rhel
+parameters:
+  _param:
+    salt_version: 2016.3
+    rhel_releasever: 7
diff --git a/openssh/server/team/l1_support.yml b/openssh/server/team/l1_support.yml
index 266bd15..aab98c7 100644
--- a/openssh/server/team/l1_support.yml
+++ b/openssh/server/team/l1_support.yml
@@ -19,6 +19,7 @@
 - system.openssh.server.team.members.mikhailkraynov
 - system.openssh.server.team.members.nadezhdakabanova
 - system.openssh.server.team.members.renesoto
+- system.openssh.server.team.members.rsafonov
 - system.openssh.server.team.members.scottmachtmes
 - system.openssh.server.team.members.zahedkhurasani
 parameters:
diff --git a/openssh/server/team/members/rsafonov.yml b/openssh/server/team/members/rsafonov.yml
new file mode 100644
index 0000000..7e6f206
--- /dev/null
+++ b/openssh/server/team/members/rsafonov.yml
@@ -0,0 +1,25 @@
+parameters:
+  linux:
+    system:
+      user:
+        rsafonov:
+          enabled: true
+          name: rsafonov
+          sudo: false
+          full_name: Roman Safonov
+          home: /home/rsafonov
+          email: rsafonov@mirantis.com
+          groups:
+          - support
+  openssh:
+    server:
+      enabled: true
+      user:
+        rsafonov:
+          enabled: true
+          public_keys: ${public_keys:rsafonov}
+          user: ${linux:system:user:rsafonov}
+  public_keys:
+    rsafonov:
+      - key: ssh-rsa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaVDVMjNUXR+SP4xjH4vX9zfqzYHosQRO4MlVxE8uJPIIQdF1+iPWtggLrsRDZTSQ0JNzCYGXPv8fK6iKBQ/cX5KgMnVPQmFn4Q+Ip/oWotkbVZtR1F0ZVw01KNBYE0LMXrV9dxhX6qUFCO0IV9inbOZ+6zhYOLPddG2WVc8htz8XH7xdWqGbU1GBwyEoRFjITZ9GAYMRNrSjlzPsoBVkQwGKNtvh8uCFZasfAMr2mV1XVFcJlK52T6bNqIXOYPmRc9mSoQoD0UHRRYwlWAZHzW+2e8SABT+NRT1Cc/BoioRC2SBKj9tsZgy9nhq5O0EfuvWVL3ZCM6+RviNxkEL7Z
+
diff --git a/openssh/server/team/oss_team.yml b/openssh/server/team/oss_team.yml
index 9d6dce9..db4dbbd 100644
--- a/openssh/server/team/oss_team.yml
+++ b/openssh/server/team/oss_team.yml
@@ -23,6 +23,27 @@
           full_name: Michael Ivanov
           home: /home/mivanov
           email: mivanov@mirantis.com
+        vkramskikh:
+          enabled: true
+          name: vkramskikh
+          sudo: true
+          full_name: Vitaly Kramskikh
+          home: /home/vkramskikh
+          email: vkramskikh@mirantis.com
+        jkirnosova:
+          enabled: true
+          name: jkirnosova
+          sudo: true
+          full_name: Iuliia Aranovich
+          home: /home/jkirnosova
+          email: jkirnosova@mirantis.com
+        sskripnick:
+          enabled: true
+          name: sskripnick
+          sudo: true
+          full_name: Serhii Skrypnik
+          home: /home/sskripnick
+          email: sskripnick@mirantis.com
   openssh:
     server:
       enabled: true
@@ -42,6 +63,21 @@
           public_keys:
           - ${public_keys:mivanov}
           user: ${linux:system:user:mivanov}
+        vkramskikh:
+          enabled: true
+          public_keys:
+          - ${public_keys:vkramskikh}
+          user: ${linux:system:user:vkramskikh}
+        jkirnosova:
+          enabled: true
+          public_keys:
+          - ${public_keys:jkirnosova}
+          user: ${linux:system:user:jkirnosova}
+        sskripnick:
+          enabled: true
+          public_keys:
+          - ${public_keys:sskripnick}
+          user: ${linux:system:user:sskripnick}
   public_keys:
     ikharin:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0NNCF9Orei3Ls5wa7xNH/2nl4eAUYY/vuAers7as8lQXjUXkurLQUG1YTQhuRiqyLrqLZjokq87l3LcpXsiBaqNybwlg4OAcf7p59FwDwdpCcAfoHeP03vt/FOYgozeExIRxVNHMdZjQJ4o5j75vnwTfGIubSF1eUOwtRVeezAREK1OPA2TRvlSOXCsAinNSZHBFTlYVYIXQEk/zuH7PdwlU2rkN69mNivh1tAUDlhrwZHrR9rcudafp5s3C5MKFtI3W4MhYIqv9ZViEhLwfEhNb0WXiUv+sdGTf8jTcXaYOlw6z9A76Ab/9bfPyOTmI7tli8Pz15+YPj1ymdlIZlQ==
@@ -49,3 +85,9 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDF13qwUbb+lva8KCNE6IppajmGfF3MJIFhIPD7HYwzeIyI3INlc6nMMOk+r4a6IO3okVxgqRi27boebvUpazw0Jw4T4e1oLQpWCxvhTZkukFsrd9DJiCj07VXluua2ofaCRLCSHVLdjAH4WocmZeCXpZF1ldDeNBeuX0iYJiFBslrG/pmOuCm3IEL7GmoIJjF0Idtwo3tkWcvCUXKvBaVqCHS34Q/KJLAvZc95MLESs/kdnhfxhxbpWrRRFcZn/zIxuuptuTBzWOPd7CnsOLo5PCnuxIfDznDYYzQUJq6OmwMZipepTtymXUvFQiqq7xc/HmNR51vowqwoftgHNxYvoaQgXkneWFnq4Cl9WZaLVs90wNgQewPaKmhL8ia1S2C3Cub0ILsbU/091L7adBeZI87pkfx72HhFQRUOcVprgPAEKKTbEvUQKAQ4rZ6GOIU5Tz/fKf1sXLhiTEAgpGpaTyyTP04vpgP5iY4kcXQHpRsPxg1BQ+93S3KqF2XAdXvrA4eZfAHmGhsAOePdnJQZVf8c4exsgkIGEyM9Wgi2ZWlq7oY0tFJLf+Kq7y23QuC6isIqBBIDN/TtmHRpiWNY4zwmGhzSxBdA6zMVy9PblrU71w1xVBS4KKwUqbWbP06pA7V04sp8kGKz5OmN9Z+rdTQJ2v41SSU71kT6XSFFOQ==
     mivanov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLY+5Yc3MMOmxVGrBmvfMX9bwK98RdgW+9E/rj56rh1w5cuIy5qN0xsuU4634EcSLRUjGXBcutDXPEXV1s7BZfeZjXJri37RICLsKfvPZcyiEqtwTbGYkcDDOHH0nmZdfngi0r/qAc5o5k3KA7Eh4CJW+GgqPoShngCKo9YKqbWFUkrGpX7wIUMlqwyuVKsybxD6EU+CB3RAeASG4E0rRq7VYQaTj/+PQq8VrWGUs9QHW8wX+OakDDCI7Or4Ll5q/uPCopaU9r7yz+uEYA1L8P2wEJ4XG9V6dxUMvzrFLBE+wDrHHXcEZMWGbmrPHUy5Yt8UCFPgtYfOl2BvHHHUSp
+    vkramskikh:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9eVOmPT/jCS/q/+T5EmKIBol3wovE+qTb4SQI4y9ZUIT+tMGult1dheqXVKIMYdTe/cccPTf5A+b6QpkPEjzQQljn0qmyHM75ya+Gjd3uTWx+1VXSFL42p0+404oVkB+eOtax+Bf8CU14P6sJn+3ypO63VVCJz6V2cgkr14tqkMZb+4OBPJB6zrNAfXhNJlJ8fLV4d5c4guin74hoaor5VIER3hwMPIe0CtudzdjcdDDvVNqXYfoknwMTNR52h1Zfwvomsy5pdFcI5sQKaOxSqWyi3C22yu/ZK0Diq82INskZ1vjHiJHw8QguXLzevCK4BECnjDFr6Hu4J6eRK3YJ
+    jkirnosova:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuW6hvLo7eRwm6WcjJEDW7TsLG2rZrtmffHQ58c4AzlLAxV0tkvvfQRS4f5Pb+Wj1flxt+RW2rq4dSkQCpwNnYdTHHRnQJFJQEAouqNF7cTVrprioXNeoBe8DGVHiUUI8IpeN8hJYQw17NB6hf8oZulZqdZZ9DA7uwnC0HFfQ1E4MuFnfhB0/XyzJMsxrxHyjte+cOdgE9F43ccHInBGowrzOJP8AUdWdC0I2WU0sjvQrGcvlHr7/EqPP1Zh7PblwESyf3muas7iFTCKtCbXM+pT3e687++ueCqrAftVZGCPpXe23U3sSGdiIti0L6CYxBI02VKlsQgfSqWd8z+W1T
+    sskripnick:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbDedH7Aw1g2LDHrCLpxfq5GsdTpqRglDXy9dDSEr08tVVl7gSzPJ5oMlIr9VsNVHsR9vf/THhxghFrV1rQZDny8c6yLqus3Upc7pJfOUztWD4+E29H7qJOafrnuNRHGFaEiaG6aZm3WyyvAdlR1lh/i5zQtdrPBmjYkq5LMJvNQBpj4XqmHYp7gLRNDI30Ne49xxAIGC1Qbx0Xvhmq9/h4gZhI5mB/QeOj4tPcd7g+kSTdc5/fXbBLeQDBZt/HlDr7/LFjYZ4OBumVDOTfClFO5UoIAvHyfysaiWI/qZ7UZI7uU4yAPeI8/s/INOQOIoiqaHyiVnL5BvFklHldMot
diff --git a/openssh/server/team/presales.yml b/openssh/server/team/presales.yml
new file mode 100644
index 0000000..7efc9da
--- /dev/null
+++ b/openssh/server/team/presales.yml
@@ -0,0 +1,51 @@
+parameters:
+  linux:
+    system:
+      user:
+        ivano:
+          enabled: true
+          name: ivano
+          sudo: true
+          full_name: Ivan Ostojic
+          home: /home/ivano
+          email: ivan@mirantis.com
+        asteer:
+          enabled: true
+          name: asteer
+          sudo: true
+          full_name: Adrian Steer
+          home: /home/asteer
+          email: asteer@mirantis.com
+        sbraun:
+          enabled: true
+          name: sbraun
+          sudo: true
+          full_name: Sebastien Braun
+          home: /home/sbraun
+          email: sbraun@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ivano:
+          enabled: true
+          public_keys:
+          - ${public_keys:ivano}
+          user: ${linux:system:user:ivano}
+        asteer:
+          enabled: true
+          public_keys:
+          - ${public_keys:asteer}
+          user: ${linux:system:user:asteer}
+        sbraun:
+          enabled: true
+          public_keys:
+          - ${public_keys:sbraun}
+          user: ${linux:system:user:sbraun}
+  public_keys:
+    ivano:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD94JXgHYTjfPoyYfWe5HgCPUgyal89VlI7ZYLr7RezAl+YQaaeO5adCXnnMDN2BiNf2l1SfbFf/A4Vi6W5eSRLqtSplpdhass7iqmmq+rDoXcELv6BZYnbOFhbFq2vegwcgk35A2uz9x9i3x3wHMLBZI/+dNCjCnW2Uikb/f0nmFqTLT5T9SJ/nmhs5oPd5vGKgFtYdRPLZW/fPxl180psPzBXmOCh50xyydxKPzncyFme+mgb0o1GjyBiJe7cXL/rXShcrFb9btMS+sXZZVQaDveaBHYUE+q+29yqR0c5uUusEzD9BWZVSoKPrFUMy/9YohGwRqbRE7Jh8XVF7Fff ivano@unicorn
+    asteer:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBIXQqD5NH9glU5CBoodFtTuZMd5KgcjPDw0krOBaM0YkzbCGzEecLeqgd1oP2AbUO1nV80O9STatFhJ1NY1x1Xxv/k0n7kMIXpuxyAcVKbg6J/B5GzACsK9tKfnEypz8VvQcBB70h+4Y6G6AiOQxRpLJg4fHv/Q0fF3rl3diQyJZeTa6jjcYettikclZlYYyFh1eLQ7yzjbGL+KNX/ks/N55gl+N6BKYIGvhSUFI7Xex0p6qqpPM+XTsGJFVRBIrHnNiTtHc5SO+oN/J4u2PnO14tP8ZAeX33jF4XejbRvo8kA61KZ+i10wkSbGKFLQeYBrVnxJwo5FG+kOm8WnRF
+    sbraun:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCdvb2aPES+H5+McRueB3EYbpdG/685pIJCH6mbFmTsIHlQobcJSSYtqww7ji/m6/KuMGE/Wc5f06d5v+beslfHKLaaAKXwWBpDgO77zwO42PbFPreFXKg8sNLPmqB+WEyIX7yAaJNxz0bbQgo2Vl3Bhtv/79zZXpzo0DIXNtdi75vwzWpuiyRuhC7pNqz+VXFZAVtkA+EchogDnT7rLa8ullSwuSgk5iPC6/XsuwL5Z5/UGBx4OT9Y8+cjb3g2oE9N3hdJH8wp9ts6stvKgAZ/5EE+LuCVhtKCvQ0sbZY8DmH99HFIP7SQoNQoyD8ALKbyCxGdF4/kxsqSlnLM5bR sebbraun@gmail.com
diff --git a/prometheus/alertmanager/container.yml b/prometheus/alertmanager/container.yml
new file mode 100644
index 0000000..e2fdcf7
--- /dev/null
+++ b/prometheus/alertmanager/container.yml
@@ -0,0 +1,3 @@
+classes:
+- service.prometheus.alertmanager.container
+- system.prometheus.alertmanager
diff --git a/prometheus/pushgateway/container.yml b/prometheus/pushgateway/container.yml
new file mode 100644
index 0000000..d0e986e
--- /dev/null
+++ b/prometheus/pushgateway/container.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.pushgateway.container
diff --git a/prometheus/remote_storage_adapter/container.yml b/prometheus/remote_storage_adapter/container.yml
new file mode 100644
index 0000000..f2afbf7
--- /dev/null
+++ b/prometheus/remote_storage_adapter/container.yml
@@ -0,0 +1,2 @@
+classes:
+- service.prometheus.remote_storage_adapter.container
diff --git a/prometheus/server/container.yml b/prometheus/server/container.yml
new file mode 100644
index 0000000..99873ad
--- /dev/null
+++ b/prometheus/server/container.yml
@@ -0,0 +1,3 @@
+classes:
+- service.prometheus.server.container
+- system.prometheus.server
diff --git a/reclass/storage/system/openstack_baremetal_single.yml b/reclass/storage/system/openstack_baremetal_single.yml
index d823157..3b279b0 100644
--- a/reclass/storage/system/openstack_baremetal_single.yml
+++ b/reclass/storage/system/openstack_baremetal_single.yml
@@ -12,5 +12,5 @@
           params:
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: ${_param:linux_system_codename}
-            single_address: ${_param:openstack_baremetal_address}
+            single_address: ${_param:openstack_baremetal_node01_address}
             baremetal_address: ${_param:openstack_baremetal_node01_baremetal_address}
diff --git a/salt/control/cluster/openstack_baremetal_cluster.yml b/salt/control/cluster/openstack_baremetal_cluster.yml
index 69c3a2b..609be28 100644
--- a/salt/control/cluster/openstack_baremetal_cluster.yml
+++ b/salt/control/cluster/openstack_baremetal_cluster.yml
@@ -13,14 +13,14 @@
           engine: virt
           node:
             bmt01:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
             bmt02:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
             bmt03:
-              provider: kvm03.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.baremetal
diff --git a/salt/control/cluster/openstack_gateway_cluster.yml b/salt/control/cluster/openstack_gateway_cluster.yml
index 84c44ac..efc7215 100644
--- a/salt/control/cluster/openstack_gateway_cluster.yml
+++ b/salt/control/cluster/openstack_gateway_cluster.yml
@@ -13,14 +13,14 @@
           engine: virt
           node:
             gtw01:
-              provider: kvm01.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node01_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
             gtw02:
-              provider: kvm02.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
             gtw03:
-              provider: kvm03.${_param:cluster_domain}
+              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
               image: ${_param:salt_control_xenial_image}
               size: openstack.gateway
diff --git a/salt/master/formula/git/baremetal.yml b/salt/master/formula/git/baremetal.yml
new file mode 100644
index 0000000..80909e4
--- /dev/null
+++ b/salt/master/formula/git/baremetal.yml
@@ -0,0 +1,14 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            ironic:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-ironic.git'
+              revision: ${_param:salt_master_environment_revision}
+            tftpd_hpa:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-tftpd-hpa.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/git/saltstack.yml b/salt/master/formula/git/saltstack.yml
index 55251e1..ebcf96f 100644
--- a/salt/master/formula/git/saltstack.yml
+++ b/salt/master/formula/git/saltstack.yml
@@ -51,3 +51,11 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-xtrabackup.git'
               revision: ${_param:salt_master_environment_revision}
+            zookeeper:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-zookeeper.git'
+              revision: ${_param:salt_master_environment_revision}
+            cassandra:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-cassandra.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/salt/master/formula/pkg/baremetal.yml b/salt/master/formula/pkg/baremetal.yml
new file mode 100644
index 0000000..3899fe7
--- /dev/null
+++ b/salt/master/formula/pkg/baremetal.yml
@@ -0,0 +1,12 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            ironic:
+              source: pkg
+              name: salt-formula-ironic
+            tftpd_hpa:
+              source: pkg
+              name: salt-formula-tftpd-hpa
diff --git a/salt/master/formula/pkg/saltstack.yml b/salt/master/formula/pkg/saltstack.yml
index e4a4c1c..a62a272 100644
--- a/salt/master/formula/pkg/saltstack.yml
+++ b/salt/master/formula/pkg/saltstack.yml
@@ -40,3 +40,9 @@
             xtrabackup:
               source: pkg
               name: salt-formula-xtrabackup
+            zookeeper:
+              source: pkg
+              name: salt-formula-zookeeper
+            cassandra:
+              source: pkg
+              name: salt-formula-cassandra
diff --git a/telegraf/agent/init.yml b/telegraf/agent/init.yml
index 3f6133d..ca7e2b0 100644
--- a/telegraf/agent/init.yml
+++ b/telegraf/agent/init.yml
@@ -1,5 +1,6 @@
 classes:
 - service.telegraf.agent
+- system.telegraf.agent.input.http_listener
 - system.telegraf.sudo
 parameters:
   telegraf:
diff --git a/telegraf/agent/input/http_listener.yml b/telegraf/agent/input/http_listener.yml
index 89720e4..6cdcf3c 100644
--- a/telegraf/agent/input/http_listener.yml
+++ b/telegraf/agent/input/http_listener.yml
@@ -1,13 +1,2 @@
-parameters:
-  _param:
-    telegraf_agent_http_listener_port: 8186
-  telegraf:
-    agent:
-      input:
-        http_listener:
-          bind:
-            address: 127.0.0.1
-            port: ${_param:telegraf_agent_http_listener_port}
-          read_timeout: 10s
-          write_timeout: 10s
-          tagexclude: ['hostname']
+classes:
+- service.telegraf.agent.input.http_listener
diff --git a/zookeeper/backup/client/single.yml b/zookeeper/backup/client/single.yml
index 3b0d04b..0085b79 100644
--- a/zookeeper/backup/client/single.yml
+++ b/zookeeper/backup/client/single.yml
@@ -1,6 +1,8 @@
 classes:
 - system.openssh.client.root
 parameters:
+  _param:
+    zookeeper_remote_backup_server: cfg01
   zookeeper:
     backup:
       client:
@@ -8,6 +10,4 @@
         full_backups_to_keep: 3
         hours_before_full: 24
         target:
-          host: cfg01
-        restore_latest: 1
-        restore_from: local
+          host: ${_param:zookeeper_remote_backup_server}