Merge pull request #102 from Mirantis/add-localhotfixrepo

Add local hotfix repo entry
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..6faf483
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,91 @@
+dist: trusty
+sudo: required
+
+addons:
+  apt:
+    sources:
+    - sourceline: 'deb http://apt.tcpcloud.eu/nightly trusty tcp tcp-salt'
+    - key_url: 'http://apt.tcpcloud.eu/public.gpg'
+    packages:
+    - curl
+    - subversion
+    - git
+    - salt-master
+    - salt-minion
+    - reclass
+    - python-pip
+    - tree
+
+
+#git:
+#  submodules: false
+#
+before_install:
+   - sudo pip install cookiecutter
+#  - test ! -e .gitmodules || sed -i 's,https://\([.a-z0-9_-]*\)/\(.*\),git@\1:\2,' .gitmodules
+#  - test ! -e .gitmodules || git submodule update --init --recursive --remote
+
+env:
+  global:
+    - ENV_DOMAIN=ci.local
+  matrix:
+    - CLUSTER_NAME=openstack_mk_contrail
+    - CLUSTER_NAME=openstack_mk_ovs
+    - CLUSTER_NAME=kubernetes_mk
+
+install:
+  - export RECLASS_SYSTEM=file://$PWD
+  - mkdir ../$CLUSTER_NAME; cd ../$CLUSTER_NAME
+  - export RECLASS_REPO_PATH=$PWD
+  - export RECLASS_REPOSITORY=file://$RECLASS_REPO_PATH
+  - git clone git@github.com:Mirantis/mk2x-cookiecutter-reclass-model.git ../cookiecutter_models; cd ../cookiecutter_models
+  - export COOKIECUTTER_BASE=$PWD
+  - export ENV_DOMAIN=ci.local
+  - COOKIECUTTER_JSON=$COOKIECUTTER_BASE/cluster/$CLUSTER_NAME/cookiecutter.json
+  #- export ENV_DOMAIN=${CLUSTER_NAME//_/-}.$ENV_DOMAIN
+  - export MASTER_HOSTNAME=cfg01.$ENV_DOMAIN
+  - cd $RECLASS_REPO_PATH
+  - git init .
+# CI WORKAROUNDS
+  - export FORMULAS_SOURCE=pkg
+  - sed -i "s/deployment_name/$CLUSTER_NAME/g" $COOKIECUTTER_JSON
+  - sed -i "s/deploy-name.local/$ENV_DOMAIN/g" $COOKIECUTTER_JSON
+  - sed -i 's%.*reclass_repository.*%"reclass_repository":"'$RECLASS_REPOSITORY'",%g' $COOKIECUTTER_JSON
+  - cookiecutter $COOKIECUTTER_BASE/cluster/$CLUSTER_NAME --output-dir ./classes/cluster --no-input
+  - git add ./*
+  - git commit -am "Init, add cluster level"
+  - git submodule add $RECLASS_SYSTEM ./classes/system
+  - |
+    mkdir -p nodes;
+    git branch -a
+    tree -lL 3
+    cat <<-EOF > nodes/cfg01.$ENV_DOMAIN.yml
+    classes:
+      - cluster.$CLUSTER_NAME.infra.config
+    parameters:
+      _param:
+        linux_system_codename: trusty
+        reclass_data_revision: master
+      linux:
+        system:
+          name: cfg01
+          domain: $ENV_DOMAIN
+    # #######################
+
+  - git add ./*
+  - git commit -am "Add system level and salt-master node"
+# CI WORKAROUNDS
+  - export RECLASS_BRANCH=master
+  #- sed -ie "s#\(reclass_data_revision.\).*#\1 $RECLASS_BRANCH#" $(find nodes -name ${MASTER_HOSTNAME}.yml|tail -n1)
+  #- git commit -am "Fake branch update" || true
+# PREREQUSITES
+  - sudo mkdir /srv/salt; sudo cp -a $PWD /srv/salt/reclass
+  - sudo svn export --force https://github.com/salt-formulas/salt-formulas/trunk/deploy/scripts /srv/salt/scripts
+
+script:
+  - cd /srv/salt/scripts
+  - sudo ./salt-master-init.sh || exit 1
+
+after_failure:
+  - tree -lL 3 $RECLASS_REPO_PATH
+  - for i in ls -lta "/tmp/*verify*"; do echo -e "\n\n$i:";tail -n20 $i; done
diff --git a/README.rst b/README.rst
index 94e97dc..99e9d5b 100644
--- a/README.rst
+++ b/README.rst
@@ -9,3 +9,16 @@
 Network configuration
 =====================
 
+Enable SR-IOV support
+---------------------
+
+Include class at `cluster.<name>.openstack.compute`
+
+- system.nova.compute.sriov
+
+and parameters:
+
+- sriov_nic01: Name of the interface
+- sriov_nic01_numvfs: Number of Virtual Functions
+- sriov_nic01_physical_network: Default "physnet1", label for physical network interface belongs to.
+- sriov_unsafe_interrupts: Default False, needs to be set True if your hw platform does not support interrupt remapping
diff --git a/aodh/server/cluster.yml b/aodh/server/cluster.yml
index 7d11cd4..b3fb4fb 100644
--- a/aodh/server/cluster.yml
+++ b/aodh/server/cluster.yml
@@ -1,7 +1,6 @@
 classes:
 - service.aodh.server.cluster
 - system.haproxy.proxy.listen.openstack.aodh
-- service.keepalived.cluster.single
 parameters:
   aodh:
     server:
diff --git a/aptly/client/publisher.yml b/aptly/client/publisher.yml
new file mode 100644
index 0000000..9aae28b
--- /dev/null
+++ b/aptly/client/publisher.yml
@@ -0,0 +1,9 @@
+classes:
+  - service.aptly.client.publisher
+parameters:
+  aptly:
+    publisher:
+      enabled: true
+      source:
+        engine: docker
+        image: tcpcloud/aptly-publisher
diff --git a/aptly/server/docker.yml b/aptly/server/docker.yml
new file mode 100644
index 0000000..4810e7b
--- /dev/null
+++ b/aptly/server/docker.yml
@@ -0,0 +1,23 @@
+classes:
+  - service.aptly.server.single
+parameters:
+  aptly:
+    server:
+      enabled: true
+      source:
+        engine: docker
+        image: tcpcloud/aptly
+      user:
+        uid: 501
+        gid: 501
+      home_dir: /srv/volumes/aptly
+      root_dir: /srv/volumes/aptly
+      secure: true
+      no_config: true
+      gpg:
+        keyring: .gnupg/trustdb.gpg
+        keypair_id: ${_param:aptly_gpg_keypair_id}
+        public_key: ${_param:aptly_gpg_public_key}
+        private_key: ${_param:aptly_gpg_private_key}
+      api:
+        enabled: false
diff --git a/aptly/server/mirror/ubuntu/trusty/influxdb.yml b/aptly/server/mirror/ubuntu/trusty/influxdb.yml
new file mode 100644
index 0000000..8d30a05
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/trusty/influxdb.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        influxdb-trusty:
+          source: https://repos.influxdata.com/ubuntu/
+          distribution: trusty
+          components: stable
+          architectures: amd64
+          gpgkeys:
+            - 2582E0C5
+          publisher:
+            component: influxdb
+            distributions:
+              - trusty/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
new file mode 100644
index 0000000..1bc4341
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/ceph_mirantis.yml
@@ -0,0 +1,26 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        ceph-mirantis-xenial:
+          source: http://eu.mirror.fuel-infra.org/decapod/ceph/apt
+          distribution: jewel-xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 460F3994
+          publisher:
+            component: ceph-mirantis
+            distributions:
+              - xenial/nightly
+        decapod-ceph-mirantis-xenial:
+          source: http://eu.mirror.fuel-infra.org/decapod/ceph/apt
+          distribution: jewel-xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 460F3994
+          publisher:
+            component: main
+            distributions:
+              - ubuntu-xenial-decapod-ceph/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/hp.yml b/aptly/server/mirror/ubuntu/xenial/hp.yml
new file mode 100644
index 0000000..5b84417
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/hp.yml
@@ -0,0 +1,18 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        hp-xenial:
+          source: http://downloads.linux.hpe.com/SDR/repo/mcp/Ubuntu
+          distribution: xenial/current
+          components: non-free
+          architectures: amd64
+          gpgkeys:
+            - 26C2B797
+            - B1275EA3
+            - 5CE2D476
+            - 2689B887
+          publisher:
+            component: hp-non-free
+            distributions:
+              - xenial/nightly
diff --git a/aptly/server/mirror/ubuntu/xenial/maas.yml b/aptly/server/mirror/ubuntu/xenial/maas.yml
new file mode 100644
index 0000000..1382a09
--- /dev/null
+++ b/aptly/server/mirror/ubuntu/xenial/maas.yml
@@ -0,0 +1,15 @@
+parameters:
+  aptly:
+    server:
+      mirror:
+        maas-xenial:
+          source: http://ppa.launchpad.net/maas/stable/ubuntu
+          distribution: xenial
+          components: main
+          architectures: amd64
+          gpgkeys:
+            - 684D4A1C
+          publisher:
+            component: maas
+            distributions:
+              - xenial/nightly
diff --git a/ceilometer/client/init.yml b/ceilometer/client/init.yml
index 3534de7..5a0aaa0 100644
--- a/ceilometer/client/init.yml
+++ b/ceilometer/client/init.yml
@@ -2,4 +2,5 @@
 - system.ceilometer.client.cinder_control
 - system.ceilometer.client.keystone
 - system.ceilometer.client.glance
-- system.ceilometer.client.heat
\ No newline at end of file
+- system.ceilometer.client.heat
+- system.ceilometer.client.nova_control
\ No newline at end of file
diff --git a/ceilometer/client/nova_compute.yml b/ceilometer/client/nova_compute.yml
new file mode 100644
index 0000000..57e900a
--- /dev/null
+++ b/ceilometer/client/nova_compute.yml
@@ -0,0 +1,7 @@
+parameters:
+  nova:
+    compute:
+      notification:
+        driver: messagingv2
+        notify_on:
+          state_change: vm_and_task_state
\ No newline at end of file
diff --git a/ceilometer/client/nova_control.yml b/ceilometer/client/nova_control.yml
new file mode 100644
index 0000000..252c67e
--- /dev/null
+++ b/ceilometer/client/nova_control.yml
@@ -0,0 +1,5 @@
+parameters:
+  nova:
+    controller:
+      notification:
+        driver: messagingv2
diff --git a/ceilometer/server/cluster.yml b/ceilometer/server/cluster.yml
index 63111fd..005379d 100644
--- a/ceilometer/server/cluster.yml
+++ b/ceilometer/server/cluster.yml
@@ -1,7 +1,7 @@
 classes:
 - service.ceilometer.server.cluster
 - system.haproxy.proxy.listen.openstack.ceilometer
-- service.keepalived.cluster.single
+- system.keepalived.cluster.instance.openstack_telemetry_vip
 - service.haproxy.proxy.single
 parameters:
   ceilometer:
diff --git a/ceph/radosgw/single.yml b/ceph/radosgw/single.yml
new file mode 100644
index 0000000..31bdc7d
--- /dev/null
+++ b/ceph/radosgw/single.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    radosgw_keyring_path: /etc/ceph/ceph.client.radosgw.keyring
+  ceph:
+    radosgw:
+      enabled: true
+    client:
+      config:
+        client.radosgw.gateway:
+          rgw_keystone_accepted_roles: "_member_, Member, admin, swiftoperator"
+          keyring: /etc/ceph/ceph.client.radosgw.keyring
+          rgw_socket_path: /tmp/radosgw.sock
+          rgw_keystone_revocation_interval: 60
+          rgw_keystone_url: ${_param:keystone_service_host}:5000
+          rgw_keystone_admin_token: ${_param:keystone_service_token}
+          host: ${linux:system:name}
+          rgw_dns_name : ${_param:cluster_domain}
+          rgw_print_continue: True
+          rgw_content_length_compat: true
+          user: www-data
diff --git a/docker/client.yml b/docker/client.yml
new file mode 100644
index 0000000..4691ddb
--- /dev/null
+++ b/docker/client.yml
@@ -0,0 +1,10 @@
+classes:
+  - service.docker.client
+parameters:
+  docker:
+    client:
+      enabled: true
+      compose:
+        source:
+          engine: docker
+          image: "docker/compose:1.8.0"
diff --git a/docker/host.yml b/docker/host.yml
new file mode 100644
index 0000000..cf19bfd
--- /dev/null
+++ b/docker/host.yml
@@ -0,0 +1,9 @@
+classes:
+  - service.docker.host
+  - system.linux.system.repo.docker
+parameters:
+  docker:
+    host:
+      insecure_registries:
+        - ${_param:cluster_vip_address}:5000
+        - ${_param:cluster_public_host}:5000
diff --git a/docker/swarm/manager.yml b/docker/swarm/manager.yml
new file mode 100644
index 0000000..36f5bcb
--- /dev/null
+++ b/docker/swarm/manager.yml
@@ -0,0 +1,7 @@
+parameters:
+  docker:
+    swarm:
+      role: manager
+      advertise_addr: ${_param:single_address}
+      master:
+        host: ${_param:cluster_node01_address}
diff --git a/docker/swarm/master.yml b/docker/swarm/master.yml
new file mode 100644
index 0000000..bb2d83b
--- /dev/null
+++ b/docker/swarm/master.yml
@@ -0,0 +1,5 @@
+parameters:
+  docker:
+    swarm:
+      role: master
+      advertise_addr: ${_param:single_address}
diff --git a/docker/swarm/service/aptly.yml b/docker/swarm/service/aptly.yml
new file mode 100644
index 0000000..d85b1b4
--- /dev/null
+++ b/docker/swarm/service/aptly.yml
@@ -0,0 +1,29 @@
+parameters:
+  docker:
+    client:
+      service:
+        aptly-api:
+          environment:
+            EMAIL_ADDRESS: ${_param:admin_email}
+          restart:
+            condition: any
+          image: ${_param:docker_image_aptly:api}
+          ports:
+            - 18084:8080
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/aptly
+              destination: /var/lib/aptly
+        aptly-public:
+          replicas: 3
+          restart:
+            condition: any
+          image: ${_param:docker_image_aptly:public}
+          ports:
+            - 18085:80
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/aptly/public
+              destination: /var/www/html
diff --git a/docker/swarm/service/artifactory.yml b/docker/swarm/service/artifactory.yml
new file mode 100644
index 0000000..d7f8626
--- /dev/null
+++ b/docker/swarm/service/artifactory.yml
@@ -0,0 +1,32 @@
+parameters:
+  docker:
+    client:
+      service:
+        artifactory:
+          environment:
+            MYSQL_HOST: ${_param:cluster_vip_address}
+            MYSQL_USERNAME: artifactory
+            MYSQL_PASSWORD: ${_param:mysql_artifactory_password}
+            MYSQL_DATABASE: artifactory
+          restart:
+            condition: any
+          image: ${_param:docker_image_repository:cicd}/artifactory
+          ports:
+            - 18082:8081
+          volume:
+            data:
+              type: bind
+              source: /srv/volumes/artifactory/data
+              destination: /var/opt/jfrog/artifactory/data
+            backup:
+              type: bind
+              source: /srv/volumes/artifactory/backup
+              destination: /var/opt/jfrog/artifactory/backup
+            etc:
+              type: bind
+              source: /srv/volumes/artifactory/etc
+              destination: /var/opt/jfrog/artifactory/etc
+            logs:
+              type: bind
+              source: /srv/volumes/artifactory/logs
+              destination: /var/opt/jfrog/artifactory/logs
diff --git a/docker/swarm/service/docker.yml b/docker/swarm/service/docker.yml
new file mode 100644
index 0000000..a79fc08
--- /dev/null
+++ b/docker/swarm/service/docker.yml
@@ -0,0 +1,18 @@
+parameters:
+  docker:
+    client:
+      service:
+        registry:
+          replica: 3
+          environment:
+            REGISTRY_HTTP_SECRET: ${_param:docker_registry_http_secret}
+          restart:
+            condition: any
+          image: ${_param:docker_image_registry}
+          ports:
+            - 15000:5000
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/registry
+              destination: /var/lib/registry
diff --git a/docker/swarm/service/gerrit.yml b/docker/swarm/service/gerrit.yml
new file mode 100644
index 0000000..d1bdfae
--- /dev/null
+++ b/docker/swarm/service/gerrit.yml
@@ -0,0 +1,28 @@
+parameters:
+  docker:
+    client:
+      service:
+        gerrit:
+          environment:
+            #GERRIT_INIT_ARGS: ""
+            DATABASE_TYPE: "mysql"
+            DB_PORT_3306_TCP_ADDR: ${_param:cluster_vip_address}
+            DB_ENV_MYSQL_USER: gerrit
+            DB_ENV_MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+            DB_ENV_MYSQL_DB: gerrit
+            AUTH_TYPE: ${_param:gerrit_auth_type}
+            WEBURL: ${_param:gerrit_public_host}
+            GERRIT_ADMIN_SSH_PUBLIC: ${_param:gerrit_admin_public_key}
+            GERRIT_ADMIN_PWD: ${_param:gerrit_admin_password}
+            GERRIT_ADMIN_EMAIL: ${_param:gerrit_admin_email}
+          restart:
+            condition: any
+          image: ${_param:docker_image_gerrit}
+          ports:
+            - 18083:8080
+            - 29417:29418
+          volume:
+            site:
+              type: bind
+              source: /srv/volumes/gerrit
+              destination: /var/gerrit/review_site
diff --git a/docker/swarm/service/jenkins.yml b/docker/swarm/service/jenkins.yml
new file mode 100644
index 0000000..c0b0721
--- /dev/null
+++ b/docker/swarm/service/jenkins.yml
@@ -0,0 +1,23 @@
+parameters:
+  docker:
+    client:
+      service:
+        jenkins:
+          environment:
+            JAVA_OPTS: "-Djenkins.install.runSetupWizard=false -Dhudson.footerURL=https://www.mirantis.com"
+            JENKINS_NUM_EXECUTORS: 4
+          restart:
+            condition: any
+          image: ${_param:docker_image_jenkins}
+          ports:
+            - 18081:8080
+            - 50001:50000
+          volume:
+            home:
+              type: bind
+              source: /srv/volumes/jenkins
+              destination: /var/jenkins_home
+            cacerts:
+              type: bind
+              source: /etc/ssl/certs/java/cacerts
+              destination: /etc/ssl/certs/java/cacerts
diff --git a/docker/swarm/service/mysql.yml b/docker/swarm/service/mysql.yml
new file mode 100644
index 0000000..53faa8b
--- /dev/null
+++ b/docker/swarm/service/mysql.yml
@@ -0,0 +1,20 @@
+parameters:
+  docker:
+    client:
+      service:
+        mysql:
+          environment:
+            MYSQL_USER: gerrit
+            MYSQL_PASSWORD: ${_param:mysql_gerrit_password}
+            MYSQL_DATABASE: gerrit
+            MYSQL_ROOT_PASSWORD: ${_param:mysql_admin_password}
+          restart:
+            condition: any
+          image: "mysql:5.6"
+          ports:
+            - 13306:3306
+          volume:
+            data:
+              type: bind
+              source: /srv/volumes/mysql
+              destination: /var/lib/mysql
diff --git a/docker/swarm/service/openldap.yml b/docker/swarm/service/openldap.yml
new file mode 100644
index 0000000..d009ed5
--- /dev/null
+++ b/docker/swarm/service/openldap.yml
@@ -0,0 +1,32 @@
+parameters:
+  docker:
+    client:
+      service:
+        openldap:
+          # XXX: docker service is not able to set hostname
+          # https://github.com/docker/docker/issues/24877
+          restart:
+            condition: any
+          image: osixia/openldap:1.1.7
+          environment:
+            HOSTNAME: ldap01.${_param:cluster_public_host}
+            LDAP_ORGANISATION: "${_param:openldap_organisation}"
+            LDAP_DOMAIN: "${_param:openldap_domain}"
+            LDAP_ADMIN_PASSWORD: ${_param:openldap_admin_password}
+            LDAP_CONFIG_PASSWORD: ${_param:openldap_config_password}
+            LDAP_READONLY_USER: true
+            LDAP_READONLY_USER_USERNAME: readonly
+            LDAP_READONLY_USER_PASSWORD: ${_param:openldap_readonly_password}
+            LDAP_TLS: false
+          ports:
+            - 389:389
+            - 636:636
+          volume:
+            database:
+              type: bind
+              source: /srv/volumes/openldap/database
+              destination: /var/lib/ldap
+            config:
+              type: bind
+              source: /srv/volumes/openldap/config
+              destination: /etc/ldap/slapd.d
diff --git a/docker/swarm/service/visualizer.yml b/docker/swarm/service/visualizer.yml
new file mode 100644
index 0000000..fe52c0b
--- /dev/null
+++ b/docker/swarm/service/visualizer.yml
@@ -0,0 +1,16 @@
+parameters:
+  docker:
+    client:
+      service:
+        visualizer:
+          restart:
+            condition: any
+          image: manomarks/visualizer
+          constraint: "node.role==manager"
+          ports:
+            - 18090:8080
+          volume:
+            docker:
+              type: bind
+              source: /var/run/docker.sock
+              destination: /var/run/docker.sock
diff --git a/docker/swarm/worker.yml b/docker/swarm/worker.yml
new file mode 100644
index 0000000..acdb0cf
--- /dev/null
+++ b/docker/swarm/worker.yml
@@ -0,0 +1,7 @@
+parameters:
+  docker:
+    swarm:
+      role: worker
+      advertise_addr: ${_param:single_address}
+      master:
+        host: ${_param:cluster_node01_address}
diff --git a/elasticsearch/client/single.yml b/elasticsearch/client/single.yml
index 8407e2d..d9ce432 100644
--- a/elasticsearch/client/single.yml
+++ b/elasticsearch/client/single.yml
@@ -5,4 +5,4 @@
     client:
       enabled: true
       server:
-        host: ${_param:stacklight_monitor_address}
+        host: ${_param:stacklight_log_address}
diff --git a/freeipa/server/cluster.yml b/freeipa/server/cluster.yml
index 70f13b9..4bcbeb6 100644
--- a/freeipa/server/cluster.yml
+++ b/freeipa/server/cluster.yml
@@ -5,6 +5,7 @@
     server:
       realm: ${_param:freeipa_realm} 
       domain: ${_param:cluster_domain}
+      princimal_user: ${_param:freeipa_principal_user}
       servers:
         - ${_param:infra_freeipa_node01_hostname}.${_param:cluster_domain}
         - ${_param:infra_freeipa_node02_hostname}.${_param:cluster_domain}
@@ -13,8 +14,5 @@
         password: ${_param:freeipa_admin_password}
       ldap:
         password: ${_param:freeipa_ldap_password}
-      dns:
-        zone:
-          # Main zones
-          mb-staging.vw.vwg: ${_param:freeipa_dns_zone}
+
 
diff --git a/gerrit/client/init.yml b/gerrit/client/init.yml
index ab2860b..a9bb4de 100644
--- a/gerrit/client/init.yml
+++ b/gerrit/client/init.yml
@@ -1,14 +1,20 @@
+classes:
+  - service.gerrit.client
 parameters:
   gerrit:
     client:
       enabled: True
+      source:
+        engine: pip
       dir:
         git: /srv/volumes/gerrit/git
+        gerrit_config: /srv/volumes/gerrit/etc/gerrit.config
+        gerrit_secure_config: /srv/volumes/gerrit/etc/secure.config
       server:
-        host: ${_param:openstack_control_address}
+        host: ${_param:cluster_vip_address}
         user: admin
-        email: root@localhost
-        http_port: 8083
+        email: ${_param:gerrit_admin_email}
+        http_port: 8080
         ssh_port: 29418
         protocol: http
         password: ${_param:gerrit_admin_password}
@@ -16,21 +22,12 @@
       group:
         Event Streaming Users:
           description: Event Streaming Users
-        mcp_fuel_aio-core:
+        devops-core:
           description: Core maintainers
-        mcp_fuel_aio-release:
+        devops-release:
           description: Release engineers
-        mcp_fuel_aio-contrib:
+        devops-contrib:
           description: Service developers
-      user:
-        jenkins:
-          fullname: Non-Interactive Jenkins
-          email: "jenkins@mirantis.com"
-          ssh_key: ${_param:gerrit_admin_public_key}
-          http_password: password
-          groups:
-          - Event Streaming Users
-          - Non-Interactive Users
       default_access:
         "refs/*":
           actions:
@@ -39,12 +36,12 @@
         "refs/heads/*":
           actions:
           - name: abandon
-            group: ccp-poc-core
+            group: devops-core
           - name: create
-            group: ccp-poc-release
+            group: devops-core
           labels:
           - name: label-Code-Review
-            group: ccp-poc-core
+            group: devops-core
             score: -2..+2
           - name: label-Code-Review
             group: Non-Interactive Users
@@ -53,9 +50,17 @@
             group: Non-Interactive Users
             score: -1..+1
           - name: label-Workflow
-            group: ccp-poc-core
+            group: devops-core
             score: -1..+1
         "refs/tags/*":
           actions:
           - name: pushSignedTag
-            group: ${_param:cluster_name}-release
+            group: devops-core
+          - name: create
+            group: devops-core
+          - name: push
+            group: devops-core
+          - name: forgeCommitter
+            group: devops-core
+          - name: forgeAuthor
+            group: devops-core
diff --git a/gerrit/client/project/reclass/reclass_model_cluster.yml b/gerrit/client/project/reclass/reclass_model_cluster.yml
deleted file mode 100644
index 96ddd41..0000000
--- a/gerrit/client/project/reclass/reclass_model_cluster.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        reclass-model-cluster:
-          enabled: true
-          description: Reclass cluster model
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/project/salt/init.yml b/gerrit/client/project/salt/init.yml
deleted file mode 100644
index d9ce6eb..0000000
--- a/gerrit/client/project/salt/init.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
-- gerrit.client.project.salt.salt_formula_linux
-- gerrit.client.project.salt.salt_formula_nova
-- gerrit.client.project.salt.salt_formula_salt
diff --git a/gerrit/client/project/salt/salt_formula_linux.yml b/gerrit/client/project/salt/salt_formula_linux.yml
deleted file mode 100644
index d8d026b..0000000
--- a/gerrit/client/project/salt/salt_formula_linux.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        salt-formula-linux:
-          enabled: true
-          description: Linux formula
-          upstream: https://github.com/tcpcloud/salt-formula-linux.git
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/project/salt/salt_formula_nova.yml b/gerrit/client/project/salt/salt_formula_nova.yml
deleted file mode 100644
index 3424ec0..0000000
--- a/gerrit/client/project/salt/salt_formula_nova.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        salt-formula-nova:
-          enabled: true
-          description: OpenStack Nova formula
-          upstream: https://github.com/openstack/salt-formula-nova.git
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/project/salt/salt_formula_salt.yml b/gerrit/client/project/salt/salt_formula_salt.yml
deleted file mode 100644
index 95668a0..0000000
--- a/gerrit/client/project/salt/salt_formula_salt.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      project:
-        salt-formula-salt:
-          enabled: true
-          description: Salt formula
-          upstream: https://github.com/tcpcloud/salt-formula-salt.git
-          access:
-            "refs/heads/*":
-              actions:
-              - name: abandon
-                group: ${_param:cluster_name}-core
-              - name: create
-                group: ${_param:cluster_name}-release
-              labels:
-              - name: label-Code-Review
-                group: ${_param:cluster_name}-core
-                score: -2..+2
-              - name: label-Workflow
-                group: ${_param:cluster_name}-core
-                score: -1..+1
-            "refs/tags/*":
-              actions:
-              - name: pushSignedTag
-                group: ${_param:cluster_name}-release
-          require_change_id: true
-          require_agreement: true
-          merge_content: true
diff --git a/gerrit/client/single.yml b/gerrit/client/single.yml
deleted file mode 100644
index cfabc1d..0000000
--- a/gerrit/client/single.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-parameters:
-  _param:
-    gerrit_server_port: 8082
-  gerrit:
-    client:
-      enabled: True
-      server: 
-        host: ${_param:gerrit_server_host}
-        user: admin
-        email: root@localhost
-        http_port: ${_param:gerrit_server_port}
-        ssh_port: 29418
-        protocol: http
-        password: ${_param:gerrit_admin_password}
-        key: ${_param:gerrit_admin_private_key}
diff --git a/gerrit/client/team/customer.yml b/gerrit/client/team/customer.yml
deleted file mode 100644
index 12ca541..0000000
--- a/gerrit/client/team/customer.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-parameters:
-  gerrit:
-    client:
-      user: {}
\ No newline at end of file
diff --git a/gerrit/client/team/mirantis.yml b/gerrit/client/team/mirantis.yml
index 0d8a4e1..33e0bed 100644
--- a/gerrit/client/team/mirantis.yml
+++ b/gerrit/client/team/mirantis.yml
@@ -5,24 +5,21 @@
         akomarek:
           fullname: Ales Komarek
           email: "akomarek@mirantis.com"
-          http_password: password
           ssh_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3odU+3V2uDA2ptAFL9hrJRPNEEdAyztWOZFQ5Oyd9oerTGOU3p4xmrgWWjfKFKbYGhiiIUcYAol5PkTfKukGEkkjCHYA1t023soCaaAj85wCZCnw2zQNAziwxTYmAzTqgxiSvtZNMMrtJvFHRIRDzJ3M1lV0prWNWkMM1/3FAd4W49y6VT3fkMCo8uqG7CfGdgR2DgBCxf9KaNPfW5eDEPOgmE5lK8tVSEI6T+Cg7hbcTf4lFYnlFBnlQgp/0JstsM4Vbwb4B34LOpOsf2S8rrWk2xQMjwaMHXkc2s/E8iW3F5nVFuyEXYISFQIiAHw8dzC6CHgLcyHUVWwznKawZ
           groups:
-          - ${_param:cluster_name}_core
-          - ${_param:cluster_name}_release
+          - devops-core
+          - devops-release
         jpavlik:
           fullname: Jakub Pavlik
           email: "jpavlik@mirantis.com"
-          http_password: password
           ssh_key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAylDZDzgMuEsJQpwFHDW+QivCVhryxXd1/HWqq1TVhJmT9oNAYdhUBnf/9kVtgmP0EWpDJtGSEaSugCmx8KE76I64RhpOTlm7wO0FFUVnzhFtTPx38WHfMjMdk1HF8twZU4svi72Xbg1KyBimwvaxTTd4zxq8Mskp3uwtkqPcQJDSQaZYv+wtuB6m6vHBCOTZwAognDGEvvCg0dgTU4hch1zoHSaxedS1UFHjUAM598iuI3+hMos/5hjG/vuay4cPLBJX5x1YF6blbFALwrQw8ZmTPaimqDUA9WD6KSmS1qg4rOkk4cszIfJ5vyymMrG+G3qk5LeT4VrgIgWQTAHyXw==
           groups:
-          - ${_param:cluster_name}-core
-          - ${_param:cluster_name}-release
+          - devops-core
+          - devops-release
         fpytloun:
           fullname: Filip Pytloun
           email: "fpytloun@mirantis.com"
-          http_password: password
           ssh_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCcuHTjJ3CoWdkmvtag07bIWeyAMqFLAN+QApat7TXUcDYmm/neK4Asg3m/UicofZnB80cI4tjnB84Z8WazLHMxVTLwHbEqTVbXVeKebiZ5yn0yo4ndRzmppUfSvs0xcMysBwu+hYAnIDXTedctbciMSYKbuQ+b9XZ4mFZ/2RHG4QBA/dPUxJdCwvkBu7AOV+6zaRSR99UETr5nxICQUGVJBTy6VkCsch4mK3/K2SrujODUhytcROg+6ejV/aZHWH9xIFRBLfhmSFeOC6oneBWo4QBQ2tTZgb7Go744JpkhkoMfWQnR2s6cCgUN60BJ6j5snqmbv9/2CmgbI4UprC+E6lL04K/Jbgjv+fi3KqnCIpRiQzahmjSeeYdPducWme3BVDceUSb5EzF/RjSDi4yHcTWJS0TcPf195p42O1G6tLw5zfmIu2+PWUq1L4pLualboUbaDtwqg0WaLWKONi9tJkOS1OMz4hxqEbWBAtFNJLHC5K+OXcV8Yt6C7iB2dEZ4c26MAi1pdMqhFjxYiCGYKZ4lyV9xo8tWcs5fiUIi2PKyLQ9SMRQbhXIcb9ENby2D/ijh5AVpbBew8iaUQQKg83Yo0z2PwTWyNFuXECAl667XaTNZEMVUjo5yU/OtktVZiH6ZfvEFwj+7OpLBiZ3sFgp/7EHcGXa0FL6BcXuwfQ==
           groups:
-          - ${_param:cluster_name}-core
-          - ${_param:cluster_name}-release
+          - devops-core
+          - devops-release
diff --git a/glusterfs/client/volume/aptly.yml b/glusterfs/client/volume/aptly.yml
new file mode 100644
index 0000000..c894428
--- /dev/null
+++ b/glusterfs/client/volume/aptly.yml
@@ -0,0 +1,8 @@
+parameters:
+  glusterfs:
+    client:
+      volumes:
+        aptly:
+          path: /srv/volumes/aptly
+          server: ${_param:cluster_node01_address}
+          opts: 'defaults'
diff --git a/glusterfs/client/volume/openldap.yml b/glusterfs/client/volume/openldap.yml
new file mode 100644
index 0000000..ada164e
--- /dev/null
+++ b/glusterfs/client/volume/openldap.yml
@@ -0,0 +1,8 @@
+parameters:
+  glusterfs:
+    client:
+      volumes:
+        openldap:
+          path: /srv/volumes/openldap
+          server: ${_param:cluster_node01_address}
+          opts: 'defaults'
diff --git a/glusterfs/client/volume/registry.yml b/glusterfs/client/volume/registry.yml
new file mode 100644
index 0000000..4b5d664
--- /dev/null
+++ b/glusterfs/client/volume/registry.yml
@@ -0,0 +1,8 @@
+parameters:
+  glusterfs:
+    client:
+      volumes:
+        registry:
+          path: /srv/volumes/registry
+          server: ${_param:cluster_node01_address}
+          opts: 'defaults'
diff --git a/glusterfs/server/cluster.yml b/glusterfs/server/cluster.yml
index 60371e2..87aa0e9 100644
--- a/glusterfs/server/cluster.yml
+++ b/glusterfs/server/cluster.yml
@@ -1,6 +1,5 @@
 classes:
 - service.glusterfs.server
-- service.keepalived.cluster.single
 parameters:
   glusterfs:
     _support:
diff --git a/glusterfs/server/volume/aptly.yml b/glusterfs/server/volume/aptly.yml
new file mode 100644
index 0000000..db01638
--- /dev/null
+++ b/glusterfs/server/volume/aptly.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        aptly:
+          storage: /srv/glusterfs/aptly
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/aptly
+            - ${_param:cluster_node02_address}:/srv/glusterfs/aptly
+            - ${_param:cluster_node03_address}:/srv/glusterfs/aptly
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/openldap.yml b/glusterfs/server/volume/openldap.yml
new file mode 100644
index 0000000..d507b44
--- /dev/null
+++ b/glusterfs/server/volume/openldap.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        openldap:
+          storage: /srv/glusterfs/openldap
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/openldap
+            - ${_param:cluster_node02_address}:/srv/glusterfs/openldap
+            - ${_param:cluster_node03_address}:/srv/glusterfs/openldap
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/glusterfs/server/volume/registry.yml b/glusterfs/server/volume/registry.yml
new file mode 100644
index 0000000..5df7d8a
--- /dev/null
+++ b/glusterfs/server/volume/registry.yml
@@ -0,0 +1,17 @@
+parameters:
+  glusterfs:
+    server:
+      volumes:
+        registry:
+          storage: /srv/glusterfs/registry
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/registry
+            - ${_param:cluster_node02_address}:/srv/glusterfs/registry
+            - ${_param:cluster_node03_address}:/srv/glusterfs/registry
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
diff --git a/haproxy/proxy/listen/cicd/aptly.yml b/haproxy/proxy/listen/cicd/aptly.yml
new file mode 100644
index 0000000..64115ff
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -0,0 +1,53 @@
+parameters:
+  _param:
+    haproxy_aptly_api_bind_port: 8084
+    haproxy_aptly_public_bind_port: 8085
+  haproxy:
+    proxy:
+      listen:
+        aptly-api:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_aptly_api_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18084
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18084
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18084
+              params: backup check
+        aptly-public:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_aptly_public_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18085
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18085
+              params: check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18085
+              params: check
diff --git a/haproxy/proxy/listen/cicd/gerrit.yml b/haproxy/proxy/listen/cicd/gerrit.yml
new file mode 100644
index 0000000..a9f0a3c
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -0,0 +1,50 @@
+parameters:
+  _param:
+    haproxy_gerrit_bind_port: 8080
+    haproxy_gerrit_ssh_bind_port: 29418
+  haproxy:
+    proxy:
+      listen:
+        gerrit:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_gerrit_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18083
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18083
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18083
+              params: backup check
+        gerrit_ssh:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_gerrit_ssh_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 29417
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 29417
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 29417
+              params: backup check
diff --git a/haproxy/proxy/listen/cicd/jenkins.yml b/haproxy/proxy/listen/cicd/jenkins.yml
new file mode 100644
index 0000000..e91d9f2
--- /dev/null
+++ b/haproxy/proxy/listen/cicd/jenkins.yml
@@ -0,0 +1,52 @@
+parameters:
+  _param:
+    haproxy_jenkins_bind_port: 8081
+    haproxy_jenkins_jnlp_bind_port: 50000
+  haproxy:
+    proxy:
+      listen:
+        jenkins:
+          mode: http
+          options:
+            - forwardfor
+#            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          http_response:
+            - action: "del-header X-Frame-Options"
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_jenkins_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18081
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18081
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18081
+              params: backup check
+        jenkins_jnlp:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_jenkins_jnlp_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 50001
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 50001
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 50001
+              params: backup check
diff --git a/haproxy/proxy/listen/docker/registry.yml b/haproxy/proxy/listen/docker/registry.yml
new file mode 100644
index 0000000..2a86aa4
--- /dev/null
+++ b/haproxy/proxy/listen/docker/registry.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    haproxy_docker_registry_listen_port: 5000
+  haproxy:
+    proxy:
+      listen:
+        registry:
+          mode: http
+          options:
+            - forwardfor
+            - httpclose
+            - httplog
+          balance: source
+          http_request:
+            - action: "add-header X-Forwarded-Proto https"
+              condition: "if { ssl_fc }"
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_docker_registry_listen_port}
+              ssl: ${_param:cluster_ssl_certificate}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 15000
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 15000
+              params: check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 15000
+              params: check
diff --git a/haproxy/proxy/listen/docker/visualizer.yml b/haproxy/proxy/listen/docker/visualizer.yml
new file mode 100644
index 0000000..409815c
--- /dev/null
+++ b/haproxy/proxy/listen/docker/visualizer.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    haproxy_docker_visualizer_listen_port: 8091
+  haproxy:
+    proxy:
+      listen:
+        visualizer:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_docker_visualizer_listen_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 18090
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 18090
+              params: check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 18090
+              params: check
diff --git a/haproxy/proxy/listen/mysql.yml b/haproxy/proxy/listen/mysql.yml
new file mode 100644
index 0000000..a7ef910
--- /dev/null
+++ b/haproxy/proxy/listen/mysql.yml
@@ -0,0 +1,26 @@
+parameters:
+  _param:
+    haproxy_mysql_bind_port: 3306
+    haproxy_mysql_source_port: 3306
+  haproxy:
+    proxy:
+      listen:
+        mysql:
+          mode: tcp
+          balance: source
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_mysql_bind_port}
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: ${_param:haproxy_mysql_source_port}
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: ${_param:haproxy_mysql_source_port}
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: ${_param:haproxy_mysql_source_port}
+              params: backup check
diff --git a/haproxy/proxy/listen/opencontrail/analytics.yml b/haproxy/proxy/listen/opencontrail/analytics.yml
index 6ed6841..fd20277 100644
--- a/haproxy/proxy/listen/opencontrail/analytics.yml
+++ b/haproxy/proxy/listen/opencontrail/analytics.yml
@@ -24,6 +24,7 @@
         contrail_config_stats:
           type: contrail-config
           service_name: contrail
+          check: false
           format: listen
           binds:
           - address: '*'
@@ -33,6 +34,7 @@
         contrail_openstack_stats:
           type: contrail-config
           service_name: contrail
+          check: false
           format: listen
           binds:
           - address: '*'
@@ -42,6 +44,7 @@
         contrail_collector_stats:
           type: contrail-config
           service_name: contrail
+          check: false
           format: listen
           binds:
           - address: '*'
diff --git a/haproxy/proxy/listen/openstack/galera.yml b/haproxy/proxy/listen/openstack/galera.yml
index 56182d6..254dc3b 100644
--- a/haproxy/proxy/listen/openstack/galera.yml
+++ b/haproxy/proxy/listen/openstack/galera.yml
@@ -1,6 +1,12 @@
 parameters:
   haproxy:
     proxy:
+      timeout:
+        queue: '10s'
+        connect: '10s'
+        client: '10s'
+        server: '10s'
+        check: '10s'
       listen:
         mysql_cluster:
           type: mysql
@@ -12,12 +18,12 @@
           - name: ${_param:cluster_node01_hostname}
             host: ${_param:cluster_node01_address}
             port: 3306
-            params: check
+            params: check inter 20s fastinter 2s downinter 2s rise 3 fall 3
           - name: ${_param:cluster_node02_hostname}
             host: ${_param:cluster_node02_address}
             port: 3306
-            params: backup check
+            params: backup check inter 20s fastinter 2s downinter 2s rise 3 fall 3
           - name: ${_param:cluster_node03_hostname}
             host: ${_param:cluster_node03_address}
             port: 3306
-            params: backup check
\ No newline at end of file
+            params: backup check inter 20s fastinter 2s downinter 2s rise 3 fall 3
diff --git a/haproxy/proxy/listen/salt.yml b/haproxy/proxy/listen/salt.yml
new file mode 100644
index 0000000..ba54c07
--- /dev/null
+++ b/haproxy/proxy/listen/salt.yml
@@ -0,0 +1,31 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        salt:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          timeout:
+            server: 20m
+            client: 20m
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: 8000
+          servers:
+            - name: ${_param:cluster_node01_name}
+              host: ${_param:cluster_node01_address}
+              port: 8000
+              params: check
+            - name: ${_param:cluster_node02_name}
+              host: ${_param:cluster_node02_address}
+              port: 8000
+              params: backup check
+            - name: ${_param:cluster_node03_name}
+              host: ${_param:cluster_node03_address}
+              port: 8000
+              params: backup check
diff --git a/haproxy/proxy/listen/stacklight/influxdb.yml b/haproxy/proxy/listen/stacklight/influxdb.yml
new file mode 100644
index 0000000..02e25d7
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/influxdb.yml
@@ -0,0 +1,28 @@
+parameters:
+  _param:
+    cluster_influxdb_port: ${_param:influxdb_port}
+  haproxy:
+    proxy:
+      listen:
+        influxdb:
+          mode: http
+          options:
+            - "httpchk GET /ping"
+            - httplog
+            - dontlog-normal
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:cluster_influxdb_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 8086
+              params: 'check'
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 8086
+              params: 'backup check'
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 8086
+              params: 'backup check'
diff --git a/haproxy/proxy/listen/stacklight/redis.yml b/haproxy/proxy/listen/stacklight/redis.yml
new file mode 100644
index 0000000..881e8ed
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/redis.yml
@@ -0,0 +1,32 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        redis:
+          mode: tcp
+          check: False
+          health-check:
+            tcp:
+              options:
+                - send PING\r\n
+                - expect string +PONG
+                - send info\ replication\r\n
+                - expect string role:master
+                - send QUIT\r\n
+                - expect string +OK
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: ${_param:cluster_redis_port}
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 6379
+              params: 'check'
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 6379
+              params: 'check'
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 6379
+              params: 'check'
diff --git a/haproxy/proxy/listen/stacklight/sensu.yml b/haproxy/proxy/listen/stacklight/sensu.yml
new file mode 100644
index 0000000..33ab5bc
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/sensu.yml
@@ -0,0 +1,28 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        sensu:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: 4567
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 4567
+              params: check
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 4567
+              params: check
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 4567
+              params: check
diff --git a/haproxy/proxy/listen/stacklight/uchiwa.yml b/haproxy/proxy/listen/stacklight/uchiwa.yml
new file mode 100644
index 0000000..3bec0e8
--- /dev/null
+++ b/haproxy/proxy/listen/stacklight/uchiwa.yml
@@ -0,0 +1,29 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        uchiwa:
+          mode: http
+          options:
+            - forwardfor
+            - httpchk
+            - httpclose
+            - httplog
+          balance: source
+          binds:
+            - address: ${_param:cluster_vip_address}
+              port: 3001
+          servers:
+            - name: ${_param:cluster_node01_hostname}
+              host: ${_param:cluster_node01_address}
+              port: 3001
+              params: check
+            - name: ${_param:cluster_node02_hostname}
+              host: ${_param:cluster_node02_address}
+              port: 3001
+              params: check
+            - name: ${_param:cluster_node03_hostname}
+              host: ${_param:cluster_node03_address}
+              port: 3001
+              params: check
+
diff --git a/haproxy/proxy/listen/stats.yml b/haproxy/proxy/listen/stats.yml
new file mode 100644
index 0000000..1d093f1
--- /dev/null
+++ b/haproxy/proxy/listen/stats.yml
@@ -0,0 +1,12 @@
+parameters:
+  _param:
+    haproxy_stats_port: 9600
+  haproxy:
+    proxy:
+      listen:
+        stats:
+          type: stats
+          check: false
+          binds:
+            - address: ${_param:haproxy_bind_address}
+              port: ${_param:haproxy_stats_port}
diff --git a/haproxy/proxy/single.yml b/haproxy/proxy/single.yml
index e69de29..dc9c668 100644
--- a/haproxy/proxy/single.yml
+++ b/haproxy/proxy/single.yml
@@ -0,0 +1,4 @@
+parameters:
+  haproxy:
+    proxy:
+      enabled: true
diff --git a/heat/server/cluster.yml b/heat/server/cluster.yml
index 43b1ba3..474deb9 100644
--- a/heat/server/cluster.yml
+++ b/heat/server/cluster.yml
@@ -11,7 +11,7 @@
         password: ${_param:heat_domain_admin_password}
         domain: heat
       enabled: true
-      region: RegionOne
+      region: ${_param:openstack_region}
       version: ${_param:heat_version}
       bind:
         api_cfn:
@@ -52,4 +52,4 @@
         members:
           - host: ${_param:openstack_message_queue_node01_address}
           - host: ${_param:openstack_message_queue_node02_address}
-          - host: ${_param:openstack_message_queue_node03_address}
\ No newline at end of file
+          - host: ${_param:openstack_message_queue_node03_address}
diff --git a/heka/aggregator/output/nagios.yml b/heka/aggregator/output/nagios.yml
new file mode 100644
index 0000000..cbf7654
--- /dev/null
+++ b/heka/aggregator/output/nagios.yml
@@ -0,0 +1,2 @@
+classes:
+- service.heka.aggregator.output.nagios
diff --git a/heka/aggregator/output/sensu.yml b/heka/aggregator/output/sensu.yml
new file mode 100644
index 0000000..58a14a5
--- /dev/null
+++ b/heka/aggregator/output/sensu.yml
@@ -0,0 +1,2 @@
+classes:
+- service.heka.aggregator.output.sensu
diff --git a/heka/ceilometer_collector/single.yml b/heka/ceilometer_collector/single.yml
index 4670ade..a1fd11c 100644
--- a/heka/ceilometer_collector/single.yml
+++ b/heka/ceilometer_collector/single.yml
@@ -6,7 +6,7 @@
     ceilometer_collector:
       enabled: true
       influxdb_database: ceilometer
-      influxdb_host: ${_param:stacklight_monitor_node01_address}
+      influxdb_host: ${_param:stacklight_telemetry_address}
       influxdb_password: ${_param:ceilometer_influxdb_password}
       influxdb_port: 8086
       influxdb_username: ceilometer
diff --git a/jenkins/client/credential/gerrit.yml b/jenkins/client/credential/gerrit.yml
new file mode 100644
index 0000000..3b7eb0c
--- /dev/null
+++ b/jenkins/client/credential/gerrit.yml
@@ -0,0 +1,7 @@
+parameters:
+  jenkins:
+    client:
+      credential:
+        gerrit:
+          username: admin
+          key: ${_param:gerrit_admin_private_key}
diff --git a/jenkins/client/credential/salt.yml b/jenkins/client/credential/salt.yml
new file mode 100644
index 0000000..5285c77
--- /dev/null
+++ b/jenkins/client/credential/salt.yml
@@ -0,0 +1,7 @@
+parameters:
+  jenkins:
+    client:
+      credential:
+        salt:
+          username: salt
+          password: ${_param:salt_api_password}
diff --git a/jenkins/client/init.yml b/jenkins/client/init.yml
new file mode 100644
index 0000000..36da8b6
--- /dev/null
+++ b/jenkins/client/init.yml
@@ -0,0 +1,12 @@
+classes:
+  - service.jenkins.support
+  - service.jenkins.client
+parameters:
+  jenkins:
+    client:
+      master:
+        host: ${_param:cluster_vip_address}
+        port: 8081
+        # When Jenkins auth is enabled
+        #user: admin
+        #password: dummy
diff --git a/jenkins/client/single.yml b/jenkins/client/single.yml
deleted file mode 100644
index 21d0cb2..0000000
--- a/jenkins/client/single.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-parameters:
-  jenkins:
-    client:
-      enabled: True
\ No newline at end of file
diff --git a/jenkins/master/config.yml b/jenkins/master/config.yml
new file mode 100644
index 0000000..eb7e112
--- /dev/null
+++ b/jenkins/master/config.yml
@@ -0,0 +1,71 @@
+parameters:
+  linux:
+    system:
+      config:
+        jenkins_master:
+          grains:
+            fqdn: dummy
+          pillar:
+            jenkins:
+              master:
+                home: /srv/volumes/jenkins
+                approved_scripts:
+                  - field java.lang.String value
+                  - field java.util.ArrayList size
+                  - method com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey getPrivateKey
+                  - method com.cloudbees.plugins.credentials.common.IdCredentials getId
+                  - method com.cloudbees.plugins.credentials.common.PasswordCredentials getPassword
+                  - method com.cloudbees.plugins.credentials.common.UsernameCredentials getUsername
+                  - method groovy.json.JsonBuilder toPrettyString
+                  - method groovy.json.JsonSlurperClassic parseText java.lang.String
+                  - method groovy.lang.GString getBytes
+                  - method groovy.lang.GroovyObject getProperty java.lang.String
+                  - method hudson.model.Run getEnvironment
+                  - method java.io.File getAbsolutePath
+                  - method java.io.File getName
+                  - method java.io.File getParent
+                  - method java.io.Writer write java.lang.String
+                  - method java.lang.AutoCloseable close
+                  - method java.lang.Class isInstance java.lang.Object
+                  - method java.lang.Iterable iterator
+                  - method java.net.HttpURLConnection getResponseCode
+                  - method java.net.HttpURLConnection setRequestMethod java.lang.String
+                  - method java.net.URI getHost
+                  - method java.net.URI getPort
+                  - method java.net.URL openConnection
+                  - method java.net.URLConnection getHeaderField java.lang.String
+                  - method java.net.URLConnection getInputStream
+                  - method java.net.URLConnection getOutputStream
+                  - method java.net.URLConnection setDoOutput boolean
+                  - method java.net.URLConnection setRequestProperty java.lang.String java.lang.String
+                  - method java.util.LinkedHashMap$LinkedHashIterator hasNext
+                  - method java.util.Map size
+                  - method org.jenkinsci.plugins.workflow.job.WorkflowRun doStop
+                  - method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper build
+                  - new groovy.json.JsonBuilder java.lang.Object
+                  - new groovy.json.JsonSlurperClassic
+                  - new java.io.File java.lang.String
+                  - new java.io.OutputStreamWriter java.io.OutputStream
+                  - new java.lang.Exception java.lang.String
+                  - new java.lang.InterruptedException
+                  - new java.net.URI java.lang.String
+                  - new java.util.Date
+                  - staticField groovy.io.FileType FILES
+                  - staticMethod com.cloudbees.plugins.credentials.CredentialsProvider lookupCredentials java.lang.Class hudson.model.ItemGroup
+                  - staticMethod java.lang.System getenv java.lang.String
+                  - staticMethod jenkins.model.Jenkins getInstance
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods collect java.util.Map groovy.lang.Closure
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods eachFile java.io.File groovy.io.FileType groovy.lang.Closure
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods get java.util.Map java.lang.Object java.lang.Object
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Iterable int
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.String int
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getBytes java.io.File
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getText java.io.InputStream
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods hasProperty java.lang.Object java.lang.String
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods iterator java.lang.Object
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods iterator java.lang.Object[]
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Iterable
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.lang.Object
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods plus java.util.List java.util.Collection
+                  - staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object java.lang.String java.lang.Object
+                  - staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods encodeBase64 byte[]
diff --git a/jenkins/master/single.yml b/jenkins/master/single.yml
deleted file mode 100644
index ceb6766..0000000
--- a/jenkins/master/single.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-classes:
-- service.git.client
-- service.java.environment
-- service.jenkins.master.single
-parameters:
-  _param:
-    java_environment_platform: openjdk
-    java_environment_version: '8'
-  jenkins:
-    master:
-      enabled: true
-      sudo: false
-      mode: "NORMAL"
-      update_site_url: 'http://updates.jenkins-ci.org/experimental/update-center.json'
-      views:
-      - name: "Build"
-        regex: "build-.*"
-      admin:
-        email: autobuild@domain.com
-      http:
-        network: any
-        port: 8080
-        protocol: http
-      plugins:
-      - name: extended-choice-parameter
-      - name: rebuild
-      - name: test-stability
-      - name: build-blocker-plugin
-      - name: heavy-job
-      - name: workflow-aggregator
-      - name: git
-      - name: metadata
-      - name: envinject
-      - name: ansicolor
-      - name: greenballs
-      - name: gitlab-hook
-      - name: copyartifact
-      - name: ws-cleanup
-      user:
-        admin:
-          api_token: ${_param:jenkins_admin_token}
-          password: ${_param:jenkins_admin_password}
-          password_hash: ${_param:jenkins_admin_password_hash}
-          email: root@domain.com
diff --git a/jenkins/slave.yml b/jenkins/slave.yml
new file mode 100644
index 0000000..42f3ca0
--- /dev/null
+++ b/jenkins/slave.yml
@@ -0,0 +1,35 @@
+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/single.yml b/jenkins/slave/single.yml
deleted file mode 100644
index 14540a5..0000000
--- a/jenkins/slave/single.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-classes:
-- service.jenkins.slave.single
-- service.java.environment
-- service.git.client
-parameters:
-  _param:
-    java_environment_version: "8"
-    java_environment_platform: openjdk
-  linux:
-    system:
-      package:
-        python-dev:
-          version: latest
-        build-essential:
-          version: latest
-      user:
-        jenkins:
-          enabled: true
-          name: jenkins
-          home: /var/lib/jenkins
-          sudo: false
-  java:
-    environment:
-      headless: true
-  jenkins:
-    slave:
-      enabled: true
-      pkgs: false
-      sudo: false
-      scripts: []
-      master:
-        host: ${_param:jenkins_slave_master}
-        port: 8080
-        protocol: http
-      user:
-        name: admin
-        password: ${_param:jenkins_admin_password}
diff --git a/keepalived/cluster/instance/cicd_control_vip.yml b/keepalived/cluster/instance/cicd_control_vip.yml
new file mode 100644
index 0000000..ab7f413
--- /dev/null
+++ b/keepalived/cluster/instance/cicd_control_vip.yml
@@ -0,0 +1,15 @@
+applications:
+  - keepalived
+classes:
+  - service.keepalived.support
+parameters:
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        cicd_control_vip:
+          address: ${_param:cluster_vip_address}
+          password: ${_param:keepalived_vip_password}
+          interface: ${_param:keepalived_vip_interface}
+          virtual_router_id: ${_param:keepalived_vip_virtual_router_id}
+          priority: ${_param:keepalived_vip_priority}
diff --git a/keepalived/cluster/instance/openstack_telemetry_vip.yml b/keepalived/cluster/instance/openstack_telemetry_vip.yml
new file mode 100644
index 0000000..91155e7
--- /dev/null
+++ b/keepalived/cluster/instance/openstack_telemetry_vip.yml
@@ -0,0 +1,19 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  _param:
+    keepalived_openstack_telemetry_vip_address: ${_param:cluster_vip_address}
+    keepalived_openstack_telemetry_vip_password: password
+    keepalived_openstack_telemetry_vip_interface: eth1
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        openstack_telemetry_vip:
+          address: ${_param:keepalived_openstack_telemetry_vip_address}
+          password: ${_param:keepalived_openstack_telemetry_vip_password}
+          interface: ${_param:keepalived_openstack_telemetry_vip_interface}
+          virtual_router_id: 230
+          priority: 101
diff --git a/keepalived/cluster/instance/openstack_web_public_vip.yml b/keepalived/cluster/instance/openstack_web_public_vip.yml
new file mode 100644
index 0000000..8279b65
--- /dev/null
+++ b/keepalived/cluster/instance/openstack_web_public_vip.yml
@@ -0,0 +1,19 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  _param:
+    keepalived_openstack_web_public_vip_address: ${_param:cluster_vip_address}
+    keepalived_openstack_web_public_vip_password: password
+    keepalived_openstack_web_public_vip_interface: eth1
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        openstack_web_public_vip:
+          address: ${_param:keepalived_openstack_web_public_vip_address}
+          password: ${_param:keepalived_openstack_web_public_vip_password}
+          interface: ${_param:keepalived_openstack_web_public_vip_interface}
+          virtual_router_id: 132
+          priority: ${_param:keepalived_vip_priority}
diff --git a/keepalived/cluster/instance/stacklight_log_vip.yml b/keepalived/cluster/instance/stacklight_log_vip.yml
new file mode 100644
index 0000000..caa6754
--- /dev/null
+++ b/keepalived/cluster/instance/stacklight_log_vip.yml
@@ -0,0 +1,15 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        stacklight_log_vip:
+          address: ${_param:keepalived_stacklight_log_vip_address}
+          password: ${_param:keepalived_stacklight_log_vip_password}
+          interface: ${_param:keepalived_stacklight_log_vip_interface}
+          virtual_router_id: 110
+          priority: 101
diff --git a/keepalived/cluster/instance/stacklight_telemetry_vip.yml b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
new file mode 100644
index 0000000..e7d31a5
--- /dev/null
+++ b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
@@ -0,0 +1,15 @@
+applications:
+- keepalived
+classes:
+- service.keepalived.support
+parameters:
+  keepalived:
+    cluster:
+      enabled: true
+      instance:
+        stacklight_telemetry_vip:
+          address: ${_param:keepalived_stacklight_telemetry_vip_address}
+          password: ${_param:keepalived_stacklight_telemetry_vip_password}
+          interface: ${_param:keepalived_stacklight_telemetry_vip_interface}
+          virtual_router_id: 120
+          priority: 101
diff --git a/keystone/client/service/aodh.yml b/keystone/client/service/aodh.yml
index c91a354..51de0ca 100644
--- a/keystone/client/service/aodh.yml
+++ b/keystone/client/service/aodh.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Alarming Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:aodh_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8042
                 public_path: '/'
                 internal_address: ${_param:aodh_service_host}
@@ -24,4 +27,4 @@
                 internal_path: '/'
                 admin_address: ${_param:aodh_service_host}
                 admin_port: 8042
-                admin_path: '/'
\ No newline at end of file
+                admin_path: '/'
diff --git a/keystone/client/service/billometer.yml b/keystone/client/service/billometer.yml
index 86a153f..3728aa5 100644
--- a/keystone/client/service/billometer.yml
+++ b/keystone/client/service/billometer.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Billing Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:billometer_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9753
                 public_path: '/v1'
                 internal_address: ${_param:billometer_service_host}
diff --git a/keystone/client/service/ceilometer.yml b/keystone/client/service/ceilometer.yml
index c40383a..4c59f80 100644
--- a/keystone/client/service/ceilometer.yml
+++ b/keystone/client/service/ceilometer.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Telemetry Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:ceilometer_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8777
                 public_path: '/'
                 internal_address: ${_param:ceilometer_service_host}
diff --git a/keystone/client/service/cinder.yml b/keystone/client/service/cinder.yml
index 329c7ac..335985f 100644
--- a/keystone/client/service/cinder.yml
+++ b/keystone/client/service/cinder.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Volume Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cinder_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
                 public_path: '/v1/$(tenant_id)s'
                 internal_address: ${_param:cinder_service_host}
diff --git a/keystone/client/service/cinder2.yml b/keystone/client/service/cinder2.yml
index a24f06a..cc150ff 100644
--- a/keystone/client/service/cinder2.yml
+++ b/keystone/client/service/cinder2.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Volume Service v2
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:cinder_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8776
                 public_path: '/v2/$(tenant_id)s'
                 internal_address: ${_param:cinder_service_host}
diff --git a/keystone/client/service/designate.yml b/keystone/client/service/designate.yml
new file mode 100644
index 0000000..4d95b2e
--- /dev/null
+++ b/keystone/client/service/designate.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                designate:
+                  is_admin: true
+                  password: ${_param:keystone_designate_password}
+                  email: ${_param:admin_email}
+    service:
+      designate:
+          type: dns
+          description: OpenStack DNS service
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 9001
+              public_path: '/'
+              internal_address: ${_param:designate_service_host}
+              internal_port: 9001
+              internal_path: '/'
+              admin_address: ${_param:designate_service_host}
+              admin_port: 9001
+              admin_path: '/'
diff --git a/keystone/client/service/glance.yml b/keystone/client/service/glance.yml
index 33d90c7..365917b 100644
--- a/keystone/client/service/glance.yml
+++ b/keystone/client/service/glance.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Image Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:glance_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9292
                 public_path: ''
                 internal_address: ${_param:glance_service_host}
diff --git a/keystone/client/service/heat-cfn.yml b/keystone/client/service/heat-cfn.yml
index 3bb5449..343ff46 100644
--- a/keystone/client/service/heat-cfn.yml
+++ b/keystone/client/service/heat-cfn.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack CloudFormation Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:heat_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8000
                 public_path: '/v1'
                 internal_address: ${_param:heat_service_host}
diff --git a/keystone/client/service/heat.yml b/keystone/client/service/heat.yml
index 233cc75..692ceee 100644
--- a/keystone/client/service/heat.yml
+++ b/keystone/client/service/heat.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -19,7 +21,8 @@
               description: OpenStack Orchestration Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:heat_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8004
                 public_path: '/v1/%(tenant_id)s'
                 internal_address: ${_param:heat_service_host}
diff --git a/keystone/client/service/keystone.yml b/keystone/client/service/keystone.yml
index 914777c..af3acfc 100644
--- a/keystone/client/service/keystone.yml
+++ b/keystone/client/service/keystone.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack Identity Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:keystone_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 5000
                 public_path: '/v2.0'
                 internal_address: ${_param:keystone_service_host}
diff --git a/keystone/client/service/keystone3.yml b/keystone/client/service/keystone3.yml
index 9aaedc2..9dd9eef 100644
--- a/keystone/client/service/keystone3.yml
+++ b/keystone/client/service/keystone3.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack Identity Service v3
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:keystone_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 5000
                 public_path: '/v3'
                 internal_address: ${_param:keystone_service_host}
diff --git a/keystone/client/service/murano.yml b/keystone/client/service/murano.yml
new file mode 100644
index 0000000..4cb6211
--- /dev/null
+++ b/keystone/client/service/murano.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                murano:
+                  is_admin: true
+                  password: ${_param:keystone_murano_password}
+                  email: ${_param:admin_email}
+      service:
+        murano:
+          type: application-catalog
+          description: Application Catalog for OpenStack
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 8082
+              public_path: ''
+              internal_address: ${_param:murano_service_host}
+              internal_port: 8082
+              internal_path: ''
+              admin_address: ${_param:murano_service_host}
+              admin_port: 8082
+              admin_path: ''
diff --git a/keystone/client/service/neutron.yml b/keystone/client/service/neutron.yml
index 48ca372..12fe9fe 100644
--- a/keystone/client/service/neutron.yml
+++ b/keystone/client/service/neutron.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Networking Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:neutron_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9696
                 public_path: '/'
                 internal_address: ${_param:neutron_service_host}
diff --git a/keystone/client/service/nova-ec2.yml b/keystone/client/service/nova-ec2.yml
index b729061..586701c 100644
--- a/keystone/client/service/nova-ec2.yml
+++ b/keystone/client/service/nova-ec2.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -9,7 +11,8 @@
               description: OpenStack EC2 Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8773
                 public_path: '/services/Cloud'
                 internal_address: ${_param:nova_service_host}
diff --git a/keystone/client/service/nova.yml b/keystone/client/service/nova.yml
index 1497d69..ed703d0 100644
--- a/keystone/client/service/nova.yml
+++ b/keystone/client/service/nova.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Compute Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
                 public_path: '/v2/$(tenant_id)s'
                 internal_address: ${_param:nova_service_host}
diff --git a/keystone/client/service/nova21.yml b/keystone/client/service/nova21.yml
index e09a9df..48767de 100644
--- a/keystone/client/service/nova21.yml
+++ b/keystone/client/service/nova21.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -16,7 +18,8 @@
               description: OpenStack Compute Service
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
                 public_path: '/v2/$(tenant_id)s'
                 internal_address: ${_param:nova_service_host}
@@ -30,7 +33,8 @@
               description: OpenStack Compute Service v2.1
               endpoints:
               - region: ${_param:openstack_region}
-                public_address: ${_param:nova_service_host}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 8774
                 public_path: '/v2.1'
                 internal_address: ${_param:nova_service_host}
diff --git a/keystone/client/service/radosgw-s3.yml b/keystone/client/service/radosgw-s3.yml
new file mode 100644
index 0000000..9b434af
--- /dev/null
+++ b/keystone/client/service/radosgw-s3.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+      service:
+        radosgw-s3:
+          type: s3
+          description: S3 Service (radosgw)
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 8081
+              public_path: '/' # /$(tenant_id)s
+              internal_address: ${_param:radosgw_service_host}
+              internal_port: 8081
+              internal_path: '/'
+              admin_address: ${_param:radosgw_service_host}
+              admin_port: 8081
+              admin_path: '/'
diff --git a/keystone/client/service/radosgw-swift.yml b/keystone/client/service/radosgw-swift.yml
new file mode 100644
index 0000000..82d311f
--- /dev/null
+++ b/keystone/client/service/radosgw-swift.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+      service:
+        radosgw-swift:
+          type: object-store
+          description: Swift Service (radosgw)
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 8081
+              public_path: '/swift/v1' # /$(tenant_id)s
+              internal_address: ${_param:radosgw_service_host}
+              internal_port: 8081
+              internal_path: '/swift/v1'
+              admin_address: ${_param:radosgw_service_host}
+              admin_port: 8081
+              admin_path: '/swift/v1'
diff --git a/keystone/client/service/sahara.yml b/keystone/client/service/sahara.yml
new file mode 100644
index 0000000..0dbb136
--- /dev/null
+++ b/keystone/client/service/sahara.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                sahara:
+                  is_admin: true
+                  password: ${_param:keystone_sahara_password}
+                  email: ${_param:admin_email}
+      service:
+        swift:
+          type: data-processing
+          description: Sahara Data Processing
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 8386
+              public_path: '/v1.1/%(tenant_id)s'
+              internal_address: ${_param:sahara_service_host}
+              internal_port: 8386
+              internal_path: '/v1.1/%(tenant_id)s'
+              admin_address: ${_param:sahara_service_host}
+              admin_port: 8386
+              admin_path: '/v1.1/%(tenant_id)s'
diff --git a/keystone/client/service/swift-s3.yml b/keystone/client/service/swift-s3.yml
new file mode 100644
index 0000000..6850dbd
--- /dev/null
+++ b/keystone/client/service/swift-s3.yml
@@ -0,0 +1,31 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+      service:
+        swift-s3:
+          type: object-store
+          description: S3 Service (swift)
+          region: ${_param:keystone_region}
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 8080
+              public_path: '/v1/AUTH_%(tenant_id)s'
+              internal_address: ${_param:swift_service_host}
+              internal_port: 8080
+              internal_path: '/v1/AUTH_%(tenant_id)s'
+              admin_address: ${_param:swift_service_host}
+              admin_port: 8080
+              admin_path: '/'
diff --git a/keystone/client/service/swift.yml b/keystone/client/service/swift.yml
new file mode 100644
index 0000000..94636a4
--- /dev/null
+++ b/keystone/client/service/swift.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                swift:
+                  is_admin: true
+                  password: ${_param:keystone_swift_password}
+                  email: ${_param:admin_email}
+      service:
+        swift:
+          type: object-store
+          description: Swift Service
+          endpoints:
+            - region: ${_param:openstack_region}
+              public_address: ${_param:cluster_public_host}
+              public_protocol: ${_param:cluster_public_protocol}
+              public_port: 8080
+              public_path: '/v1/AUTH_%(tenant_id)s'
+              internal_address: ${_param:swift_service_host}
+              internal_port: 8080
+              internal_path: '/v1/AUTH_%(tenant_id)s'
+              admin_address: ${_param:swift_service_host}
+              admin_port: 8080
+              admin_path: '/'
diff --git a/kibana/client/single.yml b/kibana/client/single.yml
index d2322c6..8342806 100644
--- a/kibana/client/single.yml
+++ b/kibana/client/single.yml
@@ -5,5 +5,5 @@
     client:
       enabled: true
       server:
-        host: ${_param:stacklight_monitor_address}
+        host: ${_param:stacklight_log_address}
         port: 9200
diff --git a/kubernetes/master/single.yml b/kubernetes/master/single.yml
new file mode 100644
index 0000000..5f0dfdc
--- /dev/null
+++ b/kubernetes/master/single.yml
@@ -0,0 +1,8 @@
+classes:
+- service.kubernetes.master.single
+parameters:
+  kubernetes:
+    master:
+      container: false
+      network:
+        engine: calico
\ No newline at end of file
diff --git a/kubernetes/pool/single.yml b/kubernetes/pool/single.yml
new file mode 100644
index 0000000..68e3844
--- /dev/null
+++ b/kubernetes/pool/single.yml
@@ -0,0 +1,9 @@
+classes:
+- service.kubernetes.pool.single
+- service.docker.host
+parameters:
+  kubernetes:
+    pool:
+      container: false
+      network:
+        engine: calico
\ No newline at end of file
diff --git a/linux/system/repo/mcp10.yml b/linux/system/repo/mcp10.yml
new file mode 100644
index 0000000..2581543
--- /dev/null
+++ b/linux/system/repo/mcp10.yml
@@ -0,0 +1,24 @@
+parameters:
+  linux:
+    system:
+      repo:
+        mirantis_openstack:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename} mitaka main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename}/archive-mcp1.0.key"
+        mirantis_openstack_hotfix:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename} mitaka-hotfix main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename}/archive-mcp1.0.key"
+        mirantis_openstack_security:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename} mitaka-security main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename}/archive-mcp1.0.key"
+        mirantis_openstack_updates:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename} mitaka-updates main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename}/archive-mcp1.0.key"
+        mirantis_openstack_holdback:
+          source: "deb http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename} mitaka-holdback main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mcp-repos/1.0/${_param:linux_system_codename}/archive-mcp1.0.key"
diff --git a/linux/system/repo/mcp_contrail.yml b/linux/system/repo/mcp_contrail.yml
new file mode 100644
index 0000000..85f0aa4
--- /dev/null
+++ b/linux/system/repo/mcp_contrail.yml
@@ -0,0 +1,13 @@
+parameters:
+  _param:
+    linux_repo_contrail_component: oc311
+  linux:
+    system:
+      repo:
+        tcpcloud_opencontrail:
+          source: "deb [arch=amd64] http://apt-mk.mirantis.com/${_param:linux_system_codename}/ nightly ${_param:openstack_version} ${_param:linux_repo_contrail_component} extra"
+          architectures: amd64
+          key_url: "http://apt-mk.mirantis.com/public.gpg"
+
+
+
diff --git a/linux/system/repo/mos92.yml b/linux/system/repo/mos92.yml
index 999bfde..d19edc2 100644
--- a/linux/system/repo/mos92.yml
+++ b/linux/system/repo/mos92.yml
@@ -6,18 +6,10 @@
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0 main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
-        mirantis_openstack_holdback:
-          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-holdback main restricted"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
         mirantis_openstack_hotfix:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-hotfix main restricted"
           architectures: amd64
           key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
-        mirantis_openstack_proposed:
-          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-proposed main restricted"
-          architectures: amd64
-          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/archive-mos9.0.key"
         mirantis_openstack_security:
           source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.2/ mos9.0-security main restricted"
           architectures: amd64
diff --git a/linux/system/repo/mos9_galera.yml b/linux/system/repo/mos9_galera.yml
new file mode 100644
index 0000000..f006c5d
--- /dev/null
+++ b/linux/system/repo/mos9_galera.yml
@@ -0,0 +1,48 @@
+parameters:
+  linux:
+    system:
+      package:
+        python-msgpack:
+          version: latest
+        mysql-wsrep-common-5.6:
+          version: 5.6.33-0~u14.04+mos1
+        python-mysqldb:
+          version: 1.2.3-2ubuntu1
+      repo:
+        mirantis_9_0_mos_main_repo:
+          source: "deb http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/ mos9.0 main restricted"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+          pin:
+            # Galera packages should be picked from mos9.0-main
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-server-wsrep-5.6/"
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-client-5.6/"
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-server-wsrep-core-5.6/"
+            - pin: "release a=mos9.0"
+              priority: 800
+              package: "/mysql-client-core-5.6/"
+            # Set lowest priority for remain packages from this repo
+            # as we want use only galera from here
+            - pin: "release a=mos9.0"
+              priority: 700
+              package: "*"
+        mirantis_9_0_mos_updated_repo:
+          source: "deb [arch=amd64] http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0 mos9.0-updates restricted main"
+          architectures: amd64
+          key_url: "http://mirror.fuel-infra.org/mos-repos/ubuntu/9.0/archive-mos9.0.key"
+          pin:
+            # Galera packages should be picked from mos9.0-main
+            - pin: "release a=mos9.0-updates"
+              priority: 800
+              package: "/mysql-wsrep-common-5.6/"
+            # Set lowest priority for remain packages from this repo
+            # as we want use only galera from here
+            - pin: "release a=mos9.0-updates"
+              priority: 700
+              package: "*"
diff --git a/linux/system/single.yml b/linux/system/single.yml
index fcfa1b1..fad25ae 100644
--- a/linux/system/single.yml
+++ b/linux/system/single.yml
@@ -12,6 +12,8 @@
         cloud-init:
           version: purged
       kernel:
+        modules:
+          - nf_conntrack
         sysctl:
           net.ipv4.tcp_keepalive_intvl: 3
           net.ipv4.tcp_keepalive_time: 30
@@ -27,6 +29,8 @@
           net.ipv4.neigh.default.gc_thresh3: 16384
           net.core.netdev_max_backlog: 261144
           kernel.panic: 60
+      cpu:
+        governor: performance
       timezone: UTC
       locale:
         en_US.UTF-8:
@@ -41,14 +45,14 @@
           limits:
             - type: hard
               item: nofile
-              value: 102400
+              value: 307200
             - type: soft
               item: nofile
-              value: 102400
+              value: 307200
             - type: soft
               item: noproc
-              value: 102400
+              value: 307200
             - type: hard
               item: noproc
-              value: 102400
+              value: 307200
 
diff --git a/nginx/server/proxy/ceph_radosgw.yml b/nginx/server/proxy/ceph_radosgw.yml
new file mode 100644
index 0000000..fe90201
--- /dev/null
+++ b/nginx/server/proxy/ceph_radosgw.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    nginx_proxy_radosgw_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        ceph_radosgw:
+          enabled: true
+          type: ceph
+          name: ceph_radosgw
+          host:
+            name: ${_param:nginx_proxy_radosgw_host}
+            port: 8080
+          ssl: ${_param:nginx_proxy_ssl}
\ No newline at end of file
diff --git a/nginx/server/proxy/openstack/aodh.yml b/nginx/server/proxy/openstack/aodh.yml
new file mode 100644
index 0000000..bfdb4d6
--- /dev/null
+++ b/nginx/server/proxy/openstack/aodh.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_aodh:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_aodh
+          check: false
+          proxy:
+            host: ${_param:aodh_service_host}
+            port: 8042
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8042
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/ceilometer.yml b/nginx/server/proxy/openstack/ceilometer.yml
new file mode 100644
index 0000000..57315fe
--- /dev/null
+++ b/nginx/server/proxy/openstack/ceilometer.yml
@@ -0,0 +1,20 @@
+parameters:
+  _param:
+    nginx_proxy_openstack_api_host: ${_param:cluster_public_host}
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_openstack_api_ceilometer:
+          enabled: true
+          type: nginx_proxy
+          name: openstack_api_ceilometer
+          check: false
+          proxy:
+            host: ${_param:ceilometer_service_host}
+            port: 8777
+            protocol: http
+          host:
+            name: ${_param:nginx_proxy_openstack_api_host}
+            port: 8777
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack/horizon.yml b/nginx/server/proxy/openstack/horizon.yml
new file mode 100644
index 0000000..13df5cb
--- /dev/null
+++ b/nginx/server/proxy/openstack/horizon.yml
@@ -0,0 +1,18 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_horizon:
+          enabled: true
+          type: nginx_proxy
+          name: horizon
+          proxy:
+            host: ${_param:openstack_proxy_address}
+            port: 443
+            protocol: https
+          host:
+            name: ${_param:cluster_public_host}
+            port: 443
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_api.yml b/nginx/server/proxy/openstack_api.yml
index a3182e5..5c4a1fa 100644
--- a/nginx/server/proxy/openstack_api.yml
+++ b/nginx/server/proxy/openstack_api.yml
@@ -9,86 +9,82 @@
           enabled: true
           type: nginx_proxy
           name: openstack_api_keystone
+          check: false
           proxy:
             host: ${_param:keystone_service_host}
             port: 5000
             protocol: http
-            filter:
-              search: ${_param:keystone_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 5000
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_keystone_private:
           enabled: true
           type: nginx_proxy
           name: openstack_api_keystone_private
+          check: false
           proxy:
             host: ${_param:keystone_service_host}
             port: 35357
             protocol: http
-            filter:
-              search: ${_param:keystone_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 35357
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_nova:
           enabled: true
           type: nginx_proxy
           name: openstack_api_nova
+          check: false
           proxy:
             host: ${_param:nova_service_host}
             port: 8774
             protocol: http
-            filter:
-              search: ${_param:nova_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8774
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_cinder:
           enabled: true
           type: nginx_proxy
           name: openstack_api_cinder
+          check: false
           proxy:
             host: ${_param:cinder_service_host}
             port: 8776
             protocol: http
-            filter:
-              search: ${_param:cinder_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8776
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_glance:
           enabled: true
           type: nginx_proxy
           name: openstack_api_glance
+          check: false
+          underscores_in_headers: true
           proxy:
             host: ${_param:glance_service_host}
             port: 9292
             protocol: http
-            filter:
-              search: ${_param:glance_service_host}
-              replace: '$server_addr'
+            size: 30000m
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9292
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_neutron:
           enabled: true
           type: nginx_proxy
           name: openstack_api_neutron
+          check: false
           proxy:
             host: ${_param:neutron_service_host}
             port: 9696
             protocol: http
-            filter:
-              search: ${_param:neutron_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 9696
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_heat_cfn:
           enabled: true
           type: nginx_proxy
@@ -97,37 +93,33 @@
             host: ${_param:heat_service_host}
             port: 8000
             protocol: http
-            filter:
-              search: ${_param:neutron_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8000
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_heat:
           enabled: true
           type: nginx_proxy
           name: openstack_api_heat
+          check: false
           proxy:
             host: ${_param:heat_service_host}
             port: 8004
             protocol: http
-            filter:
-              search: ${_param:heat_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8004
+          ssl: ${_param:nginx_proxy_ssl}
         nginx_proxy_openstack_api_nova_ec2:
           enabled: true
           type: nginx_proxy
           name: openstack_api_nova_ec2
+          check: false
           proxy:
             host: ${_param:nova_service_host}
             port: 8773
             protocol: http
-            filter:
-              search: ${_param:nova_service_host}
-              replace: '$server_addr'
           host:
             name: ${_param:nginx_proxy_openstack_api_host}
             port: 8773
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_vnc.yml b/nginx/server/proxy/openstack_vnc.yml
index f53e40e..526f0db 100644
--- a/nginx/server/proxy/openstack_vnc.yml
+++ b/nginx/server/proxy/openstack_vnc.yml
@@ -7,6 +7,7 @@
           enabled: true
           type: nginx_proxy
           name: novnc
+          check: false
           proxy:
             host: ${_param:openstack_control_address}
             port: 6080
@@ -15,3 +16,4 @@
           host:
             name: ${_param:cluster_public_host}
             port: 6080
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nginx/server/proxy/openstack_web.yml b/nginx/server/proxy/openstack_web.yml
index 0165ff2..ad5ffea 100644
--- a/nginx/server/proxy/openstack_web.yml
+++ b/nginx/server/proxy/openstack_web.yml
@@ -2,7 +2,9 @@
   _param:
     nginx_proxy_openstack_web_host: ${_param:cluster_public_host}
     nginx_proxy_openstack_web_proxy_host: ${_param:cluster_vip_address}
-    nginx_proxy_openstack_web_buffer_size: 
+    nginx_proxy_openstack_web_buffer_size:
+      number: 4
+      size: 256
   nginx:
     server:
       enabled: true
@@ -12,11 +14,16 @@
           type: nginx_proxy
           name: openstack_web
           proxy:
-            size: 5000m
-            host: prx
+            host: localhost
+            # TODO: port must be configurable, as some deployments might have HAproxy over prx nodes
             port: 8078
+            size: 10000m
+            timeout: 43200
             protocol: http
             websocket: true
+            request_buffer: false
+            buffer:
+              ${_param:nginx_proxy_openstack_web_buffer_size}
           host:
             name: ${_param:nginx_proxy_openstack_web_host}
             port: 443
diff --git a/nginx/server/proxy/stacklight/uchiwa.yml b/nginx/server/proxy/stacklight/uchiwa.yml
new file mode 100644
index 0000000..38016c9
--- /dev/null
+++ b/nginx/server/proxy/stacklight/uchiwa.yml
@@ -0,0 +1,18 @@
+parameters:
+  nginx:
+    server:
+      enabled: true
+      site:
+        nginx_proxy_uchiwa:
+          enabled: true
+          type: nginx_proxy
+          name: uchiwa
+          proxy:
+            host: ${_param:stacklight_monitor_address}
+            port: 3001
+            protocol: http
+          host:
+            name: ${_param:cluster_public_host}
+            port: 3001
+            protocol: https
+          ssl: ${_param:nginx_proxy_ssl}
diff --git a/nova/compute/cluster.yml b/nova/compute/cluster.yml
index b27ac38..7cb866b 100644
--- a/nova/compute/cluster.yml
+++ b/nova/compute/cluster.yml
@@ -4,6 +4,7 @@
   _param:
     nova_vncproxy_url: http://${_param:cluster_vip_address}:6080
     nova_compute_virtualization: kvm
+    nova_compute_avail_zone:
     nova_compute_ssh_public: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCltIn93BcTMzNK/n2eBze6PyTkmIgdDkeXNR9X4DqE48Va80ojv2pq8xuaBxiNITJzyl+4p4UvTTXo+HmuX8qbHvqgMGXvuPUCpndEfb2r67f6vpMqPwMgBrUg2ZKgN4OsSDHU+H0dia0cEaTjz5pvbUy9lIsSyhrqOUVF9reJq+boAvVEedm8fUqiZuiejAw2D27+rRtdEPgsKMnh3626YEsr963q4rjU/JssV/iKMNu7mk2a+koOrJ+aHvcVU8zJjfA0YghoeVT/I3GLU/MB/4tD/RyR8GM+UYbI4sgAC7ZOCdQyHdJgnEzx3SJIwcS65U0T2XYvn2qXHXqJ9iGZ root@mirantis.com
     nova_compute_ssh_private: |
       -----BEGIN RSA PRIVATE KEY-----
@@ -43,6 +44,7 @@
       version: ${_param:nova_version}
       enabled: true
       virtualization: ${_param:nova_compute_virtualization}
+      availability_zone: ${_param:nova_compute_avail_zone}
       heal_instance_info_cache_interval: 60
       vncproxy_url: ${_param:nova_vncproxy_url}
       bind:
diff --git a/nova/compute/nfv/cpu_pinning.yml b/nova/compute/nfv/cpu_pinning.yml
new file mode 100644
index 0000000..3e97838
--- /dev/null
+++ b/nova/compute/nfv/cpu_pinning.yml
@@ -0,0 +1,8 @@
+parameters:
+  nova:
+    compute:
+      vcpu_pin_set: ${_param:nova_cpu_pinning}
+  linux:
+    system:
+      kernel:
+        isolcpu: ${_param:compute_kernel_isolcpu}
\ No newline at end of file
diff --git a/nova/compute/nfv/hugepages.yml b/nova/compute/nfv/hugepages.yml
new file mode 100644
index 0000000..6778f94
--- /dev/null
+++ b/nova/compute/nfv/hugepages.yml
@@ -0,0 +1,18 @@
+parameters:
+  _param:
+    compute_hugepages_size: 1G
+    compute_hugepages_mount: /mnt/hugepages_1G
+  linux:
+    system:
+      kernel:
+        hugepages:
+          large:
+            default: true
+            size: ${_param:compute_hugepages_size}
+            count: ${_param:compute_hugepages_count}
+            mount_point: ${_param:compute_hugepages_mount}
+  nova:
+    compute:
+      hugepages:
+        mount_points:
+        - path: ${_param:compute_hugepages_mount}
\ No newline at end of file
diff --git a/nova/compute/nfv/sriov.yml b/nova/compute/nfv/sriov.yml
new file mode 100644
index 0000000..b93363c
--- /dev/null
+++ b/nova/compute/nfv/sriov.yml
@@ -0,0 +1,21 @@
+parameters:
+  _param:
+    sriov_nic01_physical_network: physnet1
+    sriov_unsafe_interrupts: False
+  nova:
+    compute:
+      sriov:
+        sriov_nic01:
+          devname: ${_param:sriov_nic01_device_name}
+          physical_network: ${_param:sriov_nic01_physical_network}
+  linux:
+    system:
+      kernel:
+        sriov: True
+        unsafe_interrupts: ${_param:sriov_unsafe_interrupts}
+      rc:
+        local: |
+          #!/bin/sh -e
+          # Enabling ${_param:sriov_nic01_numvfs} VFs on ${_param:sriov_nic01_device_name} PF
+          echo ${_param:sriov_nic01_numvfs} > /sys/class/net/${_param:sriov_nic01_device_name}/device/sriov_numvfs; sleep 2; ip link set ${_param:sriov_nic01_device_name} up
+          exit 0
\ No newline at end of file
diff --git a/nova/compute/single.yml b/nova/compute/single.yml
index 4ac99b1..130f2e4 100644
--- a/nova/compute/single.yml
+++ b/nova/compute/single.yml
@@ -5,6 +5,7 @@
 parameters:
   _param:
     nova_compute_ssh_public: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCltIn93BcTMzNK/n2eBze6PyTkmIgdDkeXNR9X4DqE48Va80ojv2pq8xuaBxiNITJzyl+4p4UvTTXo+HmuX8qbHvqgMGXvuPUCpndEfb2r67f6vpMqPwMgBrUg2ZKgN4OsSDHU+H0dia0cEaTjz5pvbUy9lIsSyhrqOUVF9reJq+boAvVEedm8fUqiZuiejAw2D27+rRtdEPgsKMnh3626YEsr963q4rjU/JssV/iKMNu7mk2a+koOrJ+aHvcVU8zJjfA0YghoeVT/I3GLU/MB/4tD/RyR8GM+UYbI4sgAC7ZOCdQyHdJgnEzx3SJIwcS65U0T2XYvn2qXHXqJ9iGZ root@mirantis.com
+    nova_compute_avail_zone:
     nova_compute_ssh_private: |
       -----BEGIN RSA PRIVATE KEY-----
       MIIEpAIBAAKCAQEApbSJ/dwXEzMzSv59ngc3uj8k5JiIHQ5HlzUfV+A6hOPFWvNK
@@ -44,6 +45,7 @@
       disable_flow_collection: true
       enabled: true
       virtualization: kvm
+      availability_zone: ${_param:nova_compute_avail_zone}
       vncproxy_url: http://${_param:control_address}:6080
       bind:
         vnc_address: ${_param:control_address}
diff --git a/nova/control/cluster.yml b/nova/control/cluster.yml
index ac08d43..c9d8a07 100644
--- a/nova/control/cluster.yml
+++ b/nova/control/cluster.yml
@@ -6,6 +6,9 @@
 parameters:
   _param:
     nova_vncproxy_url: http://${_param:cluster_vip_address}:6080
+    nova_cpu_allocation_ratio: 16.0
+    nova_ram_allocation_ratio: 1.5
+    nova_disk_allocation_ratio: 1.0
   nova:
     controller:
       enabled: true
@@ -13,10 +16,10 @@
       vncproxy_url: ${_param:nova_vncproxy_url}
       security_group: false
       dhcp_domain: novalocal
-      scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter"
-      cpu_allocation_ratio: 16.0
-      ram_allocation_ratio: 1.5
-      disk_allocation_ratio: 1.0
+      scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
+      cpu_allocation_ratio: ${_param:nova_cpu_allocation_ratio}
+      ram_allocation_ratio: ${_param:nova_ram_allocation_ratio}
+      disk_allocation_ratio: ${_param:nova_disk_allocation_ratio}
       workers: 8
       logging:
       - engine: syslog
diff --git a/opencontrail/compute/cluster.yml b/opencontrail/compute/cluster.yml
index 1f6eaf3..375e600 100644
--- a/opencontrail/compute/cluster.yml
+++ b/opencontrail/compute/cluster.yml
@@ -1,3 +1,5 @@
+applications:
+- opencontrail
 parameters:
   _param:
     opencontrail_compute_iface_mask: 24
diff --git a/openssh/server/team/mcp_qa.yml b/openssh/server/team/mcp_qa.yml
index eef4e3f..0ac1033 100644
--- a/openssh/server/team/mcp_qa.yml
+++ b/openssh/server/team/mcp_qa.yml
@@ -20,6 +20,12 @@
           sudo: true
           full_name: Tatyanka Leontovich
           home: /home/tleontovich
+        okosse:
+          enabled: true
+          name: okosse
+          sudo: true
+          full_name: Oleksandr Kosse
+          home: /home/okosse
       group:
         libvirtd:
           enabled: true
@@ -43,6 +49,11 @@
           public_keys:
           - ${public_keys:tleontovich}
           user: ${linux:system:user:tleontovich}
+        okosse:
+          enabled: true
+          public_keys:
+          - ${public_keys:okosse}
+          user: ${linux:system:user:okosse}
   public_keys:
     ddmitriev:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuD4wJ8hzkchQ0pfgdwWukQyps1xYRfHOsjosmDu/mmgaXVud5mnpwb2q35E2YYTox2mx+ulJqyS+099gz6MPg4P8D5qdMuRbAsJqbceLaaIGQhdT8qgSo7ESrl5pwvYnfWzKLKF0z5s7nrW0nvArC40zhV9o9XpvzzzSFByepWfkwA8ReldGUYVvTKp8YXaCrqEdMZrU42adPM2nl+fYBbGF+h4/Ka247aVjPeER0blV3znFXbv2Kf38G+i/TEGaktgpBdtGGDi1tX2loMypmTJeqZRJnM0Eoly0BnynB7CSxn11eoIXBUe1mVYNqmQd1hw6uh59iymhK5j939v9J ddmitriev@dis_xcom
@@ -50,3 +61,5 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhf5ysfuTmOO1975vUCag59tL+lQwfmWSQglZvKnMLnhO1P39VXDHCMla0Uh2IXI5abSrsq4xVXNfD3R5cnzPW8rG1h3528tSpszwZp28LSMkMfEZReEWVq2XoseRfzd7b3AaWN283NbQGPL6NRwyg9hLRG5dipdRxnDSutvDg/J4gbzeuS+QjXP6ymIs9vBhrpvHlQ6POI7Zedp2FOmqbGf3OK9wuBkD1Dhf+hTXvFSq1PFxmKB7w5CWvAOGGuapb+IYspPlDwd8lVWbvp+D3DchkhyL36gQyl2In/NKG2NR4z6dETX8JON5OMe0UipeKAsXInoVbyZfs3uZgdKDB dtyzhnenko
     tleontovich:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLtOIkzqNA3wdLQyQxLRaRwi4oXnRCPCsrn8oaAyxDXHhU3+ATGvXBdbkA6xU3d4hAohru5DwxGzyikzAAtrv79GWA9/ryXPcplmxBiJcN36GyfW6eX89hI1VIJMKMG3cUs0ONf2D+hENhbaO0pu4hNAb5HFcHAuqecQNOFFrJ3RqnWM8RWgJPY3iF1A9JnXwVrUgME962VPlydYvlL5mLk+h+4DgHuPipw/Qana5a2JfdErsPYeAdDwG8frCdA9wvMzVVZv78s0lA6BritQdd0SyZejbOlT9KVHhSOhqnWdCtd8+nZXzXgjV7GAiv7H9yE4Ee6QYSHUQHwJxZs3ZT tleontovich@tleontovich-pc
+    okosse:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmb5FWl6dgK09TmxVYuvmfLyy6G9x2ed6dvXf0kfpMaaP37CST7t0UZ2m23qGF4T0ZGYbCkIdr+6zWG+a5ozuJiqoJwE3dLun8pnCwAjkmUxRyVIi9M6f3us4z+ooBZTBGWTGe7/ryqePpzyAjlw4om23pDTt09YQq5WDirdrFBNJ9ZlTwubbEWMTtHW5XMEui7s1IiggYmHI4cVh0lg7k/neoAk/5ZD9LI9+p2sISCOpD/f7C/BkgVd/4iCFNxXsPmMwRadBVYo8diB0OOekM6qsW5rfPCczCi9oavxjy62Z2XZ6wHPZ3HgeK8MhVJaRGge6zMTnB98aYh9LWfXFv okosse@okosse-pc
diff --git a/openssh/server/team/mmo_de.yml b/openssh/server/team/mmo_de.yml
index 4b0c470..2e34f91 100644
--- a/openssh/server/team/mmo_de.yml
+++ b/openssh/server/team/mmo_de.yml
@@ -38,6 +38,12 @@
           sudo: true
           full_name: Marcin Iwinski
           home: /home/miwinski
+        mrelewicz:
+          enabled: true
+          name: mrelewicz
+          sudo: true
+          full_name: Maciej Relewicz
+          home: /home/mrelewicz
   openssh:
     server:
       enabled: true
@@ -73,6 +79,11 @@
           public_keys:
           - ${public_keys:miwinski}
           user: ${linux:system:user:miwinski}
+        mrelewicz:
+          enabled: true
+          public_keys:
+          - ${public_keys:mrelewicz}
+          user: ${linux:system:user:mrelewicz}
   public_keys:
     dszeluga:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEEFoCOaivah6AjFZmPIDlDlp8mUfsh9UFrjgLL8vqVYoyVnuZ5DQZTeZsCgFCPxodEsgHDkSEFwkB6hbyqEXszGIL8dWwSBR3QfNJD2cjZ8ZYqXsKN63RzHGAjTXMjlCB7TZtcui1SWpKjGd+x3gQ0KkHZI9V9WVYDcC75kyEAHZptM2N9jlwbhr9lXZ77gZacjaGoKN0Agb/ydd1TyhQ1F3g56pnvgZtkOe/bStwjpz2NS0FqiqAR3wOeZZUGsR3TCP70oYfaeJvpCDVRR/gVXqqvcBAiNYTGC/tMlKuECKPtOOAP8Oc+bt1eOrbiPVJ5NfoOIpmMCDUUSnFoNGN damjanek@cocaine.local
@@ -88,3 +99,5 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOdCr32ewiGJKLLwxf0Ic0naFV1j+ZflpfUVjuIPplrLeL5u8CNVlT5adPzgc48ijbee3qpzNvkOC7Ym295xQXUluo/cj2p5wVp70YnHrfhnLjGOCldm/K8B9bHmHbm1XW6hWUp7SWjMwhOdR217iveVLkuOy+hPdpXOC86hO93v7fY12UZDiqSRfrHpUqEaHHqlSyU2Eftn9GsR4UaotkeaQsiv8bi/k5nrwea/ccALZXnhrgTSTpXOVy3rfR5cCFQCA1PjMYvFEjhUofCHBSk+OA8xwOkpBOCfYrWRUmMT7MGEV5Jjm75QUrq1AuqRdFh8SM5lP39Tdwr8FMC+q5 flor3k@MacBook-Pro-Szymon.local
     miwinski:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCydY97fXVWbcUiNaK5KnMHQpLT4acAVXykKqB5hAUPwKn4nFN3dFNw9dpToFpriqNpJTZrEdxVgL9obB4aouHpi+NVH6s8cMZ6ulNTiSTBM0Xkmu7jl66eMhfHNaFwgFC0vsGQ85oI813H7A601tCweKegMUW/mwOKbwHj1isEA+jbyrdRTC64icBa6zbW/G2uF0ajz9dCPe9L0rAbQFE51N1fxrnLeb6BI+5br0H6bRz1kGc5ZsNiUx3EEEOrMFbAbHQAxvD8Te/nUErdlHCiFufKlXLJSUNDPGFrW2mIfvfGlbyrLPgm24RKS6xfcD7BhJOmr54k7QbWChEp/SrX iwi@iwon
+    mrelewicz:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsB8R/Sv7hI7kHnOa7slfRQUhx3uVo3lDT7SLZw6m5Xnc7JVmQBmsO3s0lLHWRcxBUNso8P5xd8XG30VaW2MPrHGEMy6TbwxJmoFb8+zZaETjcaXvXig2RAQe/I3GAplptCz76GFM9SQavXtqb4D7wPi/AGs7yTFBa1rlVPdmhnlQ2woZoF/Hb5vPpFbK8ucR79eopNyd+g9mhLALJGRIUkRh6q66LCUAbMHA/Lm01IV//mGFUS1Sh0lcM34LOl99SyRVKW7kbql4vWE/4ZSxX1GJC4WVxxBitdWAypGuq3PY8L/+JDjXK7hXSrYaVWygrrluQh+ZXY8S1zx1SoPEG8uzyqdei8VxDPJd+3Y+w3YvWiYI2QA7fdtf4AW57OjZJrCgC2SpUuO6TNGcQ3gxV2/IChHQMHUV6IYc+ENaKuFIXVfvFBa/VMVRoTFXKVdE1cycDR3mgygGxE9QWxLmsJf7ZaK6A0zQjxTQs0GJi6Id9dgjDsh90uPIaVJWGKZZqDH+/cbXqN1AOTK3ecVji2fOfL3JQfY4wTFt/WmGa2VrdTfv/d9bcvEvhHYaCUs3sWy3sobJXwYCiXwuZVTTLj4EvN6L+jt8I9nG/6OWILUPVjrx84ikZ3Ig1Tbts2giIuB8JpQRup1mrEtpxoeOga1ts5ZGF8XfIKOpqaBpTsw== mrelewicz@mirantis.com
diff --git a/openssh/server/team/oss_team.yml b/openssh/server/team/oss_team.yml
new file mode 100644
index 0000000..9d6dce9
--- /dev/null
+++ b/openssh/server/team/oss_team.yml
@@ -0,0 +1,51 @@
+parameters:
+  linux:
+    system:
+      user:
+        ikharin:
+          enabled: true
+          name: ikharin
+          sudo: true
+          full_name: Ilya Kharin
+          home: /home/ikharin
+          email: ikharin@mirantis.com
+        vstoiko:
+          enabled: true
+          name: vstoiko
+          sudo: true
+          full_name: Volodymyr Stoiko
+          home: /home/vstoiko
+          email: vstoiko@mirantis.com
+        mivanov:
+          enabled: true
+          name: mivanov
+          sudo: true
+          full_name: Michael Ivanov
+          home: /home/mivanov
+          email: mivanov@mirantis.com
+  openssh:
+    server:
+      enabled: true
+      user:
+        ikharin:
+          enabled: true
+          public_keys:
+          - ${public_keys:ikharin}
+          user: ${linux:system:user:ikharin}
+        vstoiko:
+          enabled: true
+          public_keys:
+          - ${public_keys:vstoiko}
+          user: ${linux:system:user:vstoiko}
+        mivanov:
+          enabled: true
+          public_keys:
+          - ${public_keys:mivanov}
+          user: ${linux:system:user:mivanov}
+  public_keys:
+    ikharin:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0NNCF9Orei3Ls5wa7xNH/2nl4eAUYY/vuAers7as8lQXjUXkurLQUG1YTQhuRiqyLrqLZjokq87l3LcpXsiBaqNybwlg4OAcf7p59FwDwdpCcAfoHeP03vt/FOYgozeExIRxVNHMdZjQJ4o5j75vnwTfGIubSF1eUOwtRVeezAREK1OPA2TRvlSOXCsAinNSZHBFTlYVYIXQEk/zuH7PdwlU2rkN69mNivh1tAUDlhrwZHrR9rcudafp5s3C5MKFtI3W4MhYIqv9ZViEhLwfEhNb0WXiUv+sdGTf8jTcXaYOlw6z9A76Ab/9bfPyOTmI7tli8Pz15+YPj1ymdlIZlQ==
+    vstoiko:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDF13qwUbb+lva8KCNE6IppajmGfF3MJIFhIPD7HYwzeIyI3INlc6nMMOk+r4a6IO3okVxgqRi27boebvUpazw0Jw4T4e1oLQpWCxvhTZkukFsrd9DJiCj07VXluua2ofaCRLCSHVLdjAH4WocmZeCXpZF1ldDeNBeuX0iYJiFBslrG/pmOuCm3IEL7GmoIJjF0Idtwo3tkWcvCUXKvBaVqCHS34Q/KJLAvZc95MLESs/kdnhfxhxbpWrRRFcZn/zIxuuptuTBzWOPd7CnsOLo5PCnuxIfDznDYYzQUJq6OmwMZipepTtymXUvFQiqq7xc/HmNR51vowqwoftgHNxYvoaQgXkneWFnq4Cl9WZaLVs90wNgQewPaKmhL8ia1S2C3Cub0ILsbU/091L7adBeZI87pkfx72HhFQRUOcVprgPAEKKTbEvUQKAQ4rZ6GOIU5Tz/fKf1sXLhiTEAgpGpaTyyTP04vpgP5iY4kcXQHpRsPxg1BQ+93S3KqF2XAdXvrA4eZfAHmGhsAOePdnJQZVf8c4exsgkIGEyM9Wgi2ZWlq7oY0tFJLf+Kq7y23QuC6isIqBBIDN/TtmHRpiWNY4zwmGhzSxBdA6zMVy9PblrU71w1xVBS4KKwUqbWbP06pA7V04sp8kGKz5OmN9Z+rdTQJ2v41SSU71kT6XSFFOQ==
+    mivanov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLY+5Yc3MMOmxVGrBmvfMX9bwK98RdgW+9E/rj56rh1w5cuIy5qN0xsuU4634EcSLRUjGXBcutDXPEXV1s7BZfeZjXJri37RICLsKfvPZcyiEqtwTbGYkcDDOHH0nmZdfngi0r/qAc5o5k3KA7Eh4CJW+GgqPoShngCKo9YKqbWFUkrGpX7wIUMlqwyuVKsybxD6EU+CB3RAeASG4E0rRq7VYQaTj/+PQq8VrWGUs9QHW8wX+OakDDCI7Or4Ll5q/uPCopaU9r7yz+uEYA1L8P2wEJ4XG9V6dxUMvzrFLBE+wDrHHXcEZMWGbmrPHUy5Yt8UCFPgtYfOl2BvHHHUSp
diff --git a/openssh/server/team/services_qa.yml b/openssh/server/team/services_qa.yml
index 6f7595c..ca75b5a 100644
--- a/openssh/server/team/services_qa.yml
+++ b/openssh/server/team/services_qa.yml
@@ -8,6 +8,12 @@
           sudo: true
           full_name: Nikolay Pliashechnykov
           home: /home/npliashechnikov
+        mchernik:
+          enabled: true
+          name: mchernik
+          sudo: true
+          full_name: Mikhail Chernik
+          home: /home/mchernik
   openssh:
     server:
       enabled: true
@@ -17,6 +23,13 @@
           public_keys:
           - ${public_keys:npliashechnikov}
           user: ${linux:system:user:npliashechnikov}
+        mchernik:
+          enabled: true
+          public_keys:
+          - ${public_keys:mchernik}
+          user: ${linux:system:user:mchernik}
   public_keys:
     npliashechnikov:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxy9ZNE+36U1W3vPxzMx++AujS8Ay9ZgJrfaa6YsWl1FeN87VuGucslHjLqFfiIYJLQl3m7tSLiAujQ/izBKDbfA5hd5z7JaCRB1LE+CehmCL0UVwsHflAi0tPn1tDrTcVGf/BRH0FsoZJo+KpOwohYGN8BMOpUIAP2SkGrE7cGbPrd9NbRqPW80iyIzsNIqzVKTcsh0CcJcr05V5n3or0GvteDMxl+mjAi6hpfx06a/bEfPLV10Ftl4+nIkbXr0KWA68uy7XmTlH+qgVUCMGwRP4mFaU63+uX45WboLKQ0aacPX833qvZJTIPe2FhAygoVoBwgOKBzrbnicBa9U+AQ== dkth1p3@lxf01p581
+    mchernik:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiYzcWNIP1K3DnSfztIZdMTl6zSr133eixsHDWWqI71Fj5UOny4kMH2P/qYk0WHhm7P9kwBNDgmJBY/eO5jb00D2w9BGHyvsOnkpAgzw5neL4ivRT7qLWkRdbcLo8AAFQN7VW+bgMb8gFfYWfttHyfkbJOQlU2xmi8fvhQ+2IM/12S0f0lP2uIYgVn8g9f+1OmtXKOWi/cKx0+6NYsuFjM2oVRlBhwlhPD2mI00rSL6zYjz/8GapPPkylQnds09NueNmrScjsPmJl6lPzU8maxHABZ/KctIZW/0ucMolv/3Ybm5FJIsj6YGUdz7AWzdE9o4tSfugFR3P7Ng/scxXpZ migel@mungo
diff --git a/openssh/server/team/tcpcloud.yml b/openssh/server/team/tcpcloud.yml
index 85b20f5..aa455d1 100644
--- a/openssh/server/team/tcpcloud.yml
+++ b/openssh/server/team/tcpcloud.yml
@@ -68,18 +68,25 @@
           sudo: true
           full_name: Ondrej Smola
           home: /home/osmola
-        jkonecny:
-          enabled: true
-          name: jkonecny
-          sudo: true
-          full_name: Jiri Konecny
-          home: /home/jkonecny
         pcizinsky:
           enabled: true
           name: pcizinsky
           sudo: true
           full_name: Pavel Cizinsky
           home: /home/pcizinsky
+        pjediny:
+          enabled: true
+          name: pjediny
+          sudo: true
+          full_name: Petr Jediny
+          home: /home/pjediny
+        jjosef:
+          enabled: true
+          name: jjosef
+          sudo: true
+          full_name: Jakub Josef
+          home: /home/jjosef
+          email: jakub.josef@gmail.com
         pmichalec:
           enabled: true
           name: pmichalec
@@ -104,6 +111,30 @@
           sudo: true
           full_name: Tomas Kukral
           home: /home/tkukral
+        mpolreich:
+          enabled: true
+          name: mpolreich
+          sudo: true
+          full_name: Martin Polreich
+          home: /home/mpolreich
+        skreys:
+          enabled: true
+          name: skreys
+          sudo: true
+          full_name: Sergey Kreys
+          home: /home/skreys
+        jcach:
+          enabled: true
+          name: jcach
+          sudo: true
+          full_name: Jan Cach
+          home: /home/jcach
+        lmercl:
+          enabled: true
+          name: lmercl
+          sudo: true
+          full_name: Lubos Mercl
+          home: /home/lmercl
       group:
         libvirtd:
           enabled: true
@@ -152,6 +183,11 @@
           public_keys:
           - ${public_keys:filip}
           user: ${linux:system:user:filip}
+        jjosef:
+          enabled: true
+          public_keys:
+          - ${public_keys:jjosef}
+          user: ${linux:system:user:jjosef}
         vzach:
           enabled: true
           public_keys:
@@ -162,16 +198,16 @@
           public_keys:
           - ${public_keys:osmola}
           user: ${linux:system:user:osmola}
-        jkonecny:
-          enabled: true
-          public_keys:
-          - ${public_keys:jkonecny}
-          user: ${linux:system:user:jkonecny}
         pcizinsky:
           enabled: true
           public_keys:
           - ${public_keys:pcizinsky}
           user: ${linux:system:user:pcizinsky}
+        pjediny:
+          enabled: true
+          public_keys:
+          - ${public_keys:pjediny}
+          user: ${linux:system:user:pjediny}
         pmichalec:
           enabled: true
           public_keys:
@@ -192,6 +228,26 @@
           public_keys:
           - ${public_keys:tkukral}
           user: ${linux:system:user:tkukral}
+        mpolreich:
+          enabled: true
+          public_keys:
+          - ${public_keys:mpolreich}
+          user: ${linux:system:user:mpolreich}
+        skreys:
+          enabled: true
+          public_keys:
+          - ${public_keys:skreys}
+          user: ${linux:system:user:skreys}
+        jcach:
+          enabled: true
+          public_keys:
+          - ${public_keys:jcach}
+          user: ${linux:system:user:jcach}
+        lmercl:
+          enabled: true
+          public_keys:
+          - ${public_keys:lmercl}
+          user: ${linux:system:user:lmercl}
   public_keys:
     askotnicky:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO6EnDYaGdF/Nn6lntxDNnKanCsheZRdh8kA/6ImyeRSjT2cgepm1Fsgv7wXBYoy0OxhB5wgCp5Az/Pj4oLkG3g+G05sUPUxxGCGRiwjcnyQ/FTz4TzHglAVqgbdgWoQYf9Hg6EKZovvPcH3STbEwcl+MhLqvxz0wm5+StE+wvp6I9dEfRV+2/e1uepauOTZ1+Ui1DMNXiMefTlbiIBHzUk7RiwJWgqzQXBndgunmbJWSed8zC0Ug97waDOFIX/oKZmAmsv0NLJ2e/kC3oUTuziGT74F9sh7Pqiw/9HZxvP45hJwEvytfUjfuiikIBbmYdF7Je93czaG/qjXGN8YvP== a.skotnicky@tcpisek.cz
@@ -213,10 +269,12 @@
       key: AAAAB3NzaC1yc2EAAAABJQAAAQEAn4MJUkXbiZPPEcdKijB4MqnjPGk80x5W+8XsMvZuUqElmuLgB30kdCnSCBgipYPor3m8wakdJTTwiY6P50yhtp/tD2b4t1TC1djPwiNS/6JwjZawj30bS5ZrVKeTHtOq6E0tf927svXgEE21/ADgWpMoDeQ/pKlbt0m/U8YGBCmJ7cBa8ggGHhvJIwCNhpELn02vKV8Qfx44rk+DoxLBwQUHQ8PsEwtoSCLMIulpLflptak1pgvN6ggA5p15i36OyJkobI1yR9YEgtb+8yQqofu2DZ+v+9Qhbb+C0446RnyGzfvk/DreCeI4rJh5/6QZjwv3XfYDER5LbNCnoOQAsQ== v.zach@tcpcloud.eu
     osmola:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGcF8AI/8hOeKlda4vniFVBbD3wOK4D2+/z+pB7kK0JyxfVC3XccYbpqQioWjt96JwDX8dSio07OUAFqOWQH2cTp6wjqNmpIaAODo44kQgKDXrjEq61fYW+L6JYZHxsFUPLvlNlwQwND2F5HU8oWbsneGu+Psb/COQebcGDdT1v/f2G9r5br2O43P/XPx8+YGKd+OiHPIN4Fk8fZzCGX7oJ7GGGr8YTL/Y8ULF3WiTXbQEWusU52Sf7/Is0A6BQOH+OuBGrVCT+j2XI9QBMyVSYtaKCnRDlEGessnGIGRGrNza/xYivWBw8IsVziDC8x7zZByAwmctWoWED6wWs4YU7SqoonEaYEog32J6Uw9tGtTgvkRC1mpMtgR2eenjNax8Fpoc6uTb/l0gevaRE6IqNMS0FBIIbkCYcoxfj7zIsYms/9IhsXGk1lW5ZrouCFICGEVa7zJ2F+3DvyQDCSuqsk/bfUQZEFw1FdAYIsZYQR+LIOSVQplapGVyqhlbkeUEVdILzgdMAfkPa80ZnGvTO729G/8uP78k1QhZUHAypkeWQ/aJfOKrxXyAxtMZiuyK31zf4OZdKSDS9bAWlmyKkohp7cEjLU0ex4AYDS231Y6JywL+RnucMJ4gFqSfSYfkM6+23gFbYfP7NcEKrkCaim/9RMU1RsunBk8As2K5gw== ondrej.smola@tcpcloud.eu
-    jkonecny:
-      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIYO4/Nwrs5PJTPJabVOVWW47RvErdCG7U3Gabi8xffdA5uN1YTZbiqHt4SNPRmto60+YX35YjFH3giJotf+q5Ct5GN5m90VVRRtppAK+TAHtMgisIa6j5re6egHoi++9L1NwwTLDr/lzD4Gf7MBtU+q3scJJFmrTpLKUqC2ptL8wnCMlXbnjF1zfHqFbaMxXss7ZU/puHlY7Oc6pPzf+30XTQaq+0ZbshEJMDD0iGH3ijk7V2CCnpShZpQYF8FaLhSRkLzqn4xwrcK1dtENPL9qFBME+XYeC5vvBEMU7MBgs4jLX2KDyx/ZFbk+i79pd37hxNPs7Aj105ppVAaiqWsUgZxdfbC3GaW/U0jqJCDtlftnq1FLCRfO8O2sIJsfA78qWOP5ylD+dnGvYzcexQFpfgu49ZqoJYIt0EgSElH27MHF+hmwE6MHHKyBhELn3iN2uY6IWZTEVG7JROuDPOD6zAAaEw90M2xs1O4kUusArqNnL+AyYNlKGvkMy6ztf2a7+YH9u8zpZCMJUBq3gPTGnFGAeiynoaoSxeN83VYv64durJ439SmRZGMQMHJh3/H0TIAJPO4VwzPwhnn+fg/zaT93Ofg/BNZ4EG+panVCdtNa+sLvZTy01pfwtgX2bDrhpPTiotTea9/8PcEi+DM3CVeIOOZigOEFk+oAo5sw== jiri.konecny@tcpcloud.eu
     pcizinsky:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt9HA2bUwCVGGdUjyFzdPFp0j2z9XanLW9gHZ3BhB6Wc4ficU6zmbqYxrHUvdmUrRJbLMEAo9JDlzAIw4CPGhRkD3d7HfnmlEYcEeizLnnC+CmKo3+mrwkQIzWIz6PJOh1kvp5uaNp4ztjRGXXmPzcR0nk4jRD89gLHvH9EYStxZI6nsi3mmWR/LhgIhijb8p63duhE4HuK/RRRjeDQaUsbTG9TMEskY5ZI3p/QM55wlml9F8QJrtwxpaIPI5Fl8lflq+4YcoqgDIBFc6nwubIuiNY4gPJ8s1SQfsfxHSOJpFPZDwi76dxUpthtJrU46fqRvXPzTKoS29WZ5pSAY6p pavel.cizinsky@tcpcloud.eu
+    jjosef:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkK55PVyvnhW2XiIyDUTWOaW1frsd7g9t8SLRmjtEjKqJOBaRk48bSUfcV2twGcSOq3E2dUikh3URobYIZ6WBEiWrl1e7MYCJJAE+8qzVoskk01mC6tp9HGbsSRKrZTgpjzReM+kN6jffi/P1rSqgeg4U0O99N2aWqdfc7UJPFM09z9nqfB1Gj4HUnBkC1X+di4U3S6W8q62JLgxuK2MAry3xSnPztFVH5OXXbBltdVIxshOHj9i8wyof9iFHGdjFNvB+c5I3RJ2HRmmmHm3zey9iHU7PNIppXKglUFZ0EKIB4LsDjL6xrEjo2A5tfCaVZLNJgP95tdbGEcYQuDv3N jakub.josef@gmail.com
+    pjediny:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEAgPX2oPwcmBMjf46UC+1vUBnKn9iBG88VD7lNiMN2UGBNihfCfSt4vOSNcVotyCSTrgm1dzHWN3nDt/fYiWvEimVE8VrawU9nJQ48o+M546SMCSYL9jqm+j+oSTd9CP7TeMgRw7hob+/vXREJVmol9cynsQei7HoFeo6iw7ZYMqgI1qOtHwN5Xep/7XZbQ0znweQY4hvywl47dK1GxnoQQUi1v30MzKRVIasf3cCMVr3qJ3ECxyQ2+Po/899jYLDdeJvJeG6dJQf1aDEDSHkoEjVup4jl5xu8y3jAYxOfKwMPe+Lb6lF3zRCB9QRZN71cxLVm+w7LfLtgLfsKv3xPeNpvvOvEQOdFg5jx9Z8w1KRkU2Zkc4fRTcWis89/9va3QL7W1pini3fM+WrpFatc02i7KjoJApeNQt0pwFl33DW+Zz8bQQZT7PT7LWNZjuvB4YmZYA6t9hj5rzUdUN2IyD2mNvPeNykdCLuFh7N7A67tpFSh48UHGld2ckdNmPQR8Ev50Fxu9jj13Cs4l3VMxzOF5I6VOS7g5vEKcCpIyDTtjSk4fGZhyeea5l8unCQzMw9UjkZjgy4nTZvxeqdRNnXSMrb0SzNuqbSM1J67GAUPxfxjb5HSmCYK/KSK3RXHrhwrW+t6B5x72KCCmYYJfUwofm6GIPEYGDxPL/VWGKM= pjediny key
     pmichalec:
       key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGwsfObHWHqBv6UQBjvm0nkgnAGc5MZPuQXJ3ln4sM1P pmichalec@dontpanic
     jbroulik:
@@ -225,3 +283,11 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlvQKWbEQ8bM2rtE35sA5+y//YKMLNJ48d+/RxWlUx6G8xJusUhrKZuMRMgN5NqJQ92Z0Yd2lulsPeKEfSbqAxBxmNZ+mAAy8w8P/BHlQImi2HgMpWtQ5yExsAvCUAqq6KclJBhzjArg4+ztmKmNvjM8ZktJYeCM8VJ+qT01B8/3+frgltIDCDcC8YpRwbAt7aLjuB2Jk5Q9daQbtZ4XyXwHgPDpyZUkcuueUk/iklUBkAh9P3CFJBpttXEyKI0+cJAtM9vCXXPWmWt7nFAyQ8nH9+lTv/ZuD+pipKJBW2sp8+fFUWJ/Z6GzWhyh2KxiY7eK3kgabg1i7FtLFtRbZj richard@richard-inspiron
     tkukral:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRM6WquKic6i6v/JbNR2XuMqCCYqlfyGU1K7XHK7tWFordRLz2/o4S76sZULBTXR0rLHtynvHM4QHlloE1/XJnd0BtI/3y8aY0OkXyu6PHvTC8Az8SyGj2XAcaiPlaT2f+oTJHoPc9rxLhMMD7OTwias6QeVKB3UrT0OaHfy2wWCF7t8cQeofi2ldEHKeCsC1jrT1vaVuoThQgZ00h0rNk4COPZEW34FXdmdJFUmZcUIDMa71HtYgnn4gmE8sUiJ/j6ardvPaycCDT9j1GW1Yu6UVLBWOoMMCb04bDJiidlvY1fQqbM/G4cR4ZPHFZ0RQiM2+wnRaB5RCmBVgNT0Tj tkukral
+    mpolreich:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0N+ds8BGTR+ZQo9NSRGRbjv3T8AbPmtSw2nClXxetRdmHpM/mU7/5iD7qfkCXtNptKeCG/Qk44wlijnAtjztJK1qfvyphHe3etZxLnqhYMm73Yy++yKPE/ywFPFb+7kd0BDy2iZqohZpX3gUi5iDnvXUInHNqqtTv3xFe2kmn3lq5bSRuUMtr61nZ7z/fkX8kNfoGxKrm7bhSo5zq4sjTrj3lk1LKZc1HYji3RwrzBM0z4eyed1BaJyDNtG+eFN4nOnvVn59452AR8SmKJXRErk37rEoQn80xszypzybooFPN5dpdB6u9b4xquFCOD83usb8kEjKY9VIYGuXxEEts1KIF20J+xd8UnZU8d4JL50G8JY8zdNgurR3ZyMD2okuord4cpHF8SVecsAyRV6nuhDxVtF2Xn/RriY02jrLoRPsS+3nIrKt9H8vpQZMYJ+jgEpekZhhVfz4AP3pATzOrWENzNXj5G1bLJs1C9aTtwE27EnKW73XekX/GLsehCwsQ21JvDX8PMxJwLVfqvkRlrc5GILEIVgjZ82Cj6Eens1QobymRAEWuEpZxkPx6u0kGO62ri8zFx8+NYwYDz3mwhHDRT34T/Rvzy/9V9xVjkUQOj9cZ3eYBnC1MffJjx8heHDmSQmUd+99zKa9Hzr74z3AvR3AIgFqmu7kx5fIMew== ubuntu@thinkpad-x1
+    skreys:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeg+Wj7yTBRLvsu2LKgdKyb6FW4n3t5me0LAZhGkP9mbsYonE5sN0OwI42ZPYeU1O35c+E4n3GJ4ZzdJYRUQJtqO5EHUMNyXELEcS8GZKydg5A0KPs69bB8SPVlTfO5D77sAWwG/3JIQD/uI21jqCp3a4lyEw5X2HjMbuz2Z4cW7Y69i73RdIYQdYb0X5+mqcVz8YEyuMZi2zweMxsvOczcanQ/4J6JKtC8imJu23Gr0TeS15OJCFh7yGviVp//LBzusXreqlEf7Tzx2yHkJ/rqULIIlPpBC1TFD7sgA72j3kq9rw3ZeQAwmaJA82L3KzagkgSQprEsRYnQ+wSWXkj skreys@skreys
+    jcach:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCwAqWUvMAPTh4euvGwhLU3GjlAHVzKvlclKdg1VqmWAZI1Nd+GjKhop5kS3hMk+HCg4bgfE5nAEsp3mF78c+XXDZot1T1Sxsd0SfatkMycXgeK4l1U6QtouNR//7wEv4gPA5la7T5ktgwk7hfjnc9Jl84yS8xA1d5gsgOhQw4wHYQquyOcOA5rN8ylh7P+tEfJSx4PWlfsu9M8IZU9WvftPxNbmUfVF+GuwPcNgbAtMi3Oz2Zg9+6W4gnwfJiufXU+onDa2e5tL8ZsGqEbTQXIx13sg0ilMIT6WpbTtbCe81oZYokAMGY2hlbubhtHgGSQhBI4/qgE7/CsD4TNtuOFTAy8Y6lzvoDsTzR51ApUFHHQEjlsf7AfQFJF3Mb5/fy84K0PF2chz4XwXeO9ZbUGOvY9P349gqyJRIV29V6b8m2aqKYIHO/CRxYk52H1UY9SlCsJq9G+7qjHbugV+35+Za1/RFc0l+80Ei/GnfkYYNxpxHNM6r4sM2mte00lWTQwaSreFIVz/fRlKiaok1hHwwUNxgifdtcdIm+7RGnBgV9MoNGYN4AESKTnj7tr6OIOSLaZm8YbPJDW3VmpSmwGfHpOfI00lfymbKsR5ytn6nTLVHOkfU6pI4+LpUc0Jb9+Szrn+5QA8bGp6yn2DTCzHNW/mR5rrHYUY6o9m8/W4w== casek@casek14NB
+    lmercl:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCy6mFrr4oNdLjT5wBZj1+KXNpdawnGGWEevDBQ2SWFjxBFujkWVLiW1kxLTpLVSnuoE5FB7doRIsT/CDe9IU5OhsJ+z6TT56R/pfVKrVnSB1rgrwqdezjgmYEM6kTWiH2GKJE0yiQEPgagK8Rz5Zl420JkhbFWnL7EGPhxNtmYMGDTZwUTzP0KYmytyeH15OqNIiBGTrp1t2bTrVB8HRnUp0uDpfoWAUnsijVGNe1j1bNKtDO0Z9LAWx3eUyxIk4cdpX/EeWJg8jNrSMxtAZZ7Hhm/WInNSNqcHcZ1rEYCAjENxo1WVOuA/aqUqc5xaAipWNon4Rk0e0IUAaFOfLvN2lIuilUZ5XKHDe7a2crkGPnotheT9FgaEHOeFtpuhSaygeZHTMR197jeocgjWIkPqHjVAGSQqQf0TAdNuN73QPTigbbfHWWc1d8KlCM5BqJUXMHPG6BasE1sI/4ykYbxN/DAEvVJ4+rdIlqSdedd73ZAseVQjDtpzD8diScGrpdOhZnTm43q89F8dIFv7tt1TjIwvfcDQNSBjyyKcYpj+NTyW2Zk7qWDVz+lzH0ToYk/rOKkGlrsRy7OwOnmyKR8IcIOL7Bowj895ThCX8tBrdLu/m55ojBOcZiCpawCm7K55ri1Ar6i8cO+bHDh11kKRa/utRRSQTpsW0sbCsamzQ== lubos@lubos-ThinkPad-X1
diff --git a/rabbitmq/server/vhost/monitoring.yml b/rabbitmq/server/vhost/monitoring.yml
index 84bff97..af272b9 100644
--- a/rabbitmq/server/vhost/monitoring.yml
+++ b/rabbitmq/server/vhost/monitoring.yml
@@ -5,4 +5,4 @@
         '/monitor':
           enabled: true
           user: monitor
-          password: ${_param:rabbitmq_monitoring_password}
+          password: ${_param:rabbitmq_monitor_password}
diff --git a/reclass/storage/system/infra_idm_cluster.yml b/reclass/storage/system/infra_idm_cluster.yml
new file mode 100644
index 0000000..aae2370
--- /dev/null
+++ b/reclass/storage/system/infra_idm_cluster.yml
@@ -0,0 +1,35 @@
+parameters:
+  _param:
+    infra_idm_node01_hostname: idm01
+    infra_idm_node02_hostname: idm02
+    infra_idm_node03_hostname: idm03
+  reclass:
+    storage:
+      node:
+        infra_idm_node01:
+          name: ${_param:infra_idm_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.idm
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: centos
+            single_address: ${_param:infra_idm_node01_address}
+        infra_idm_node02:
+          name: ${_param:infra_idm_node02_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.idm
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: centos
+            single_address: ${_param:infra_idm_node02_address}
+        infra_idm_node03:
+          name: ${_param:infra_idm_node03_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.infra.idm
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: centos
+            single_address: ${_param:infra_idm_node03_address}
\ No newline at end of file
diff --git a/reclass/storage/system/kubernetes_control_single.yml b/reclass/storage/system/kubernetes_control_single.yml
new file mode 100644
index 0000000..c88e3c3
--- /dev/null
+++ b/reclass/storage/system/kubernetes_control_single.yml
@@ -0,0 +1,15 @@
+parameters:
+  _param:
+    kubernetes_control_node01_hostname: ctl01
+  reclass:
+    storage:
+      node:
+        kubernetes_control_node01:
+          name: ${_param:kubernetes_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.kubernetes.control
+          params:
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+            single_address: ${_param:kubernetes_control_node01_address}
\ No newline at end of file
diff --git a/reclass/storage/system/openstack_compute_multi.yml b/reclass/storage/system/openstack_compute_multi.yml
index 0340e9c..86092db 100644
--- a/reclass/storage/system/openstack_compute_multi.yml
+++ b/reclass/storage/system/openstack_compute_multi.yml
@@ -12,7 +12,7 @@
           - cluster.${_param:cluster_name}.openstack.compute
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: 172.16.10.105
         openstack_compute_node02:
           name: ${_param:openstack_compute_node02_hostname}
@@ -21,5 +21,5 @@
           - cluster.${_param:cluster_name}.openstack.compute
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: 172.16.10.106
diff --git a/reclass/storage/system/openstack_compute_single.yml b/reclass/storage/system/openstack_compute_single.yml
index 80758c7..215c0e6 100644
--- a/reclass/storage/system/openstack_compute_single.yml
+++ b/reclass/storage/system/openstack_compute_single.yml
@@ -11,5 +11,5 @@
           - cluster.${_param:cluster_name}.openstack.compute
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: 172.16.10.105
diff --git a/reclass/storage/system/openstack_gateway_cluster.yml b/reclass/storage/system/openstack_gateway_cluster.yml
index 72e31c5..f9d4485 100644
--- a/reclass/storage/system/openstack_gateway_cluster.yml
+++ b/reclass/storage/system/openstack_gateway_cluster.yml
@@ -17,7 +17,7 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_node01_address}
             tenant_address: ${_param:openstack_gateway_node01_tenant_address}
         openstack_gateway_node02:
@@ -27,7 +27,7 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_node02_address}
             tenant_address: ${_param:openstack_gateway_node02_tenant_address}
         openstack_gateway_node03:
@@ -37,7 +37,7 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_node03_address}
             tenant_address: ${_param:openstack_gateway_node03_tenant_address}
 
diff --git a/reclass/storage/system/openstack_gateway_single.yml b/reclass/storage/system/openstack_gateway_single.yml
index ebb9195..6f18571 100644
--- a/reclass/storage/system/openstack_gateway_single.yml
+++ b/reclass/storage/system/openstack_gateway_single.yml
@@ -11,5 +11,5 @@
           - cluster.${_param:cluster_name}.openstack.gateway
           params:
             salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: trusty
+            linux_system_codename: ${_param:linux_system_codename}
             single_address: ${_param:openstack_gateway_address}
\ No newline at end of file
diff --git a/reclass/storage/system/stacklight_monitor_cluster.yml b/reclass/storage/system/stacklight_monitor_cluster.yml
index 9df1a69..f95cf81 100644
--- a/reclass/storage/system/stacklight_monitor_cluster.yml
+++ b/reclass/storage/system/stacklight_monitor_cluster.yml
@@ -12,6 +12,8 @@
           classes:
           - cluster.${_param:cluster_name}.stacklight.monitor
           params:
+            redis_cluster_role: 'master'
+            rabbitmq_cluster_role: 'master'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node01_address}
@@ -22,6 +24,8 @@
           classes:
           - cluster.${_param:cluster_name}.stacklight.monitor
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node02_address}
@@ -32,6 +36,8 @@
           classes:
           - cluster.${_param:cluster_name}.stacklight.monitor
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node03_address}
diff --git a/reclass/storage/system/stacklight_server_cluster.yml b/reclass/storage/system/stacklight_server_cluster.yml
index 9d40ea9..26b9ebe 100644
--- a/reclass/storage/system/stacklight_server_cluster.yml
+++ b/reclass/storage/system/stacklight_server_cluster.yml
@@ -11,33 +11,40 @@
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.server
-          - system.influxdb.server.single
-          - system.influxdb.database.stacklight
           - system.elasticsearch.client.single
           - system.grafana.client.single
           - system.kibana.client.single
           params:
+            redis_cluster_role: 'master'
+            rabbitmq_cluster_role: 'master'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node01_address}
             keepalived_vip_priority: 103
+            rabbitmq_cluster_role: master
         stacklight_server_node02:
           name: ${_param:stacklight_monitor_node02_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.server
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node02_address}
             keepalived_vip_priority: 102
+            rabbitmq_cluster_role: slave
         stacklight_server_node03:
           name: ${_param:stacklight_monitor_node03_hostname}
           domain: ${_param:cluster_domain}
           classes:
           - cluster.${_param:cluster_name}.stacklight.server
           params:
+            redis_cluster_role: 'slave'
+            rabbitmq_cluster_role: 'slave'
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node03_address}
             keepalived_vip_priority: 101
+            rabbitmq_cluster_role: slave
diff --git a/reclass/storage/system/stacklight_server_single.yml b/reclass/storage/system/stacklight_server_single.yml
index 6ef1050..2b397f6 100644
--- a/reclass/storage/system/stacklight_server_single.yml
+++ b/reclass/storage/system/stacklight_server_single.yml
@@ -11,8 +11,6 @@
           - cluster.${_param:cluster_name}.stacklight.server
           - system.elasticsearch.client.single
           - system.grafana.client.single
-          - system.influxdb.server.single
-          - system.influxdb.database.stacklight
           - system.kibana.client.single
           params:
             salt_master_host: ${_param:reclass_config_master}
diff --git a/salt/control/cluster/infra_idm_cluster.yml b/salt/control/cluster/infra_idm_cluster.yml
new file mode 100644
index 0000000..98d580b
--- /dev/null
+++ b/salt/control/cluster/infra_idm_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        infra.idm:
+          cpu: 4
+          ram: 8192
+          disk_profile: large
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            idm01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_centos7_image}
+              size: infra.idm
+            idm02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_centos7_image}
+              size: infra.idm
+            idm03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_centos7_image}
+              size: infra.idm
diff --git a/salt/master/formula/git/openstack.yml b/salt/master/formula/git/openstack.yml
index 78b7d91..6f296c4 100644
--- a/salt/master/formula/git/openstack.yml
+++ b/salt/master/formula/git/openstack.yml
@@ -8,6 +8,10 @@
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-aodh.git'
               revision: ${_param:salt_master_environment_revision}
+            #avinetworks:
+            #  source: git
+            #  address: '${_param:salt_master_environment_repository}/salt-formula-avinetworks.git'
+            #  revision: ${_param:salt_master_environment_revision}
             billometer:
               source: git
               address: '${_param:salt_master_environment_repository}/salt-formula-billometer.git'
diff --git a/salt/master/formula/pkg/foundation.yml b/salt/master/formula/pkg/foundation.yml
index 4b2b669..abcc1b0 100644
--- a/salt/master/formula/pkg/foundation.yml
+++ b/salt/master/formula/pkg/foundation.yml
@@ -16,3 +16,7 @@
             jenkins:
               source: pkg
               name: salt-formula-jenkins
+            freeipa:
+              source: pkg
+              name: salt-formula-freeipa
+
diff --git a/salt/master/formula/pkg/openstack.yml b/salt/master/formula/pkg/openstack.yml
index 6d9bcab..b795e06 100644
--- a/salt/master/formula/pkg/openstack.yml
+++ b/salt/master/formula/pkg/openstack.yml
@@ -7,6 +7,9 @@
             aodh:
               source: pkg
               name: salt-formula-aodh
+            #avinetworks:
+            #  source: pkg
+            #  name: salt-formula-avinetworks
             billometer:
               source: pkg
               name: salt-formula-billometer
diff --git a/salt/master/git.yml b/salt/master/git.yml
index d9bbd80..bcde77c 100644
--- a/salt/master/git.yml
+++ b/salt/master/git.yml
@@ -1,10 +1,11 @@
 classes:
 - system.salt.master.single
+- system.salt.master.formula.git.ccp
+- system.salt.master.formula.git.foundation
+- system.salt.master.formula.git.kubernetes
 - system.salt.master.formula.git.openstack
 - system.salt.master.formula.git.saltstack
 - system.salt.master.formula.git.stacklight
-- system.salt.master.formula.git.kubernetes
-- system.salt.master.formula.git.ccp
 parameters:
   _param:
     salt_master_environment_repository: "https://github.com/salt-formulas"
diff --git a/salt/master/pkg.yml b/salt/master/pkg.yml
index 72325c9..7686f07 100644
--- a/salt/master/pkg.yml
+++ b/salt/master/pkg.yml
@@ -1,8 +1,9 @@
 classes:
 - system.salt.master.single
+- system.salt.master.formula.pkg.ccp
+- system.salt.master.formula.pkg.foundation
+- system.salt.master.formula.pkg.kubernetes
 - system.salt.master.formula.pkg.openstack
 - system.salt.master.formula.pkg.saltstack
 - system.salt.master.formula.pkg.stacklight
-- system.salt.master.formula.pkg.kubernetes
-- system.salt.master.formula.pkg.ccp
 - system.linux.system.repo.tcp_salt
diff --git a/salt/minion/ca/salt_master.yml b/salt/minion/ca/salt_master.yml
index 30c9d9b..3e42db5 100644
--- a/salt/minion/ca/salt_master.yml
+++ b/salt/minion/ca/salt_master.yml
@@ -1,7 +1,7 @@
 parameters:
   _param:
     salt_minion_ca_common_name: Salt Master CA
-    salt_minion_ca_country: cz 
+    salt_minion_ca_country: cz
     salt_minion_ca_locality: Prague
     salt_minion_ca_organization: Mirantis
     salt_minion_ca_days_valid_authority: 3650
diff --git a/salt/minion/cert/etcd_server.yml b/salt/minion/cert/etcd_server.yml
new file mode 100644
index 0000000..bd2fc8b
--- /dev/null
+++ b/salt/minion/cert/etcd_server.yml
@@ -0,0 +1,17 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${_param:cluster_local_address}
+          signing_policy: etcd_server
+          alternative_names: IP:127.0.0.1,IP:${_param:cluster_local_address},IP:${_param:cluster_vip_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extendedKeyUsage: clientAuth, serverAuth
+          key_file: /var/lib/etcd/etcd-server.key
+          cert_file: /var/lib/etcd/etcd-server.crt
+          all_file: /var/lib/etcd/etcd-server.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/k8s_client_single.yml b/salt/minion/cert/k8s_client_single.yml
new file mode 100644
index 0000000..179d534
--- /dev/null
+++ b/salt/minion/cert/k8s_client_single.yml
@@ -0,0 +1,13 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        k8s_client:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          key_file: /etc/kubernetes/ssl/kubelet-client.key
+          cert_file: /etc/kubernetes/ssl/kubelet-client.crt
+          ca_file: /etc/kubernetes/ssl/ca-kubernetes.crt
+          common_name: kubelet-client
+          signing_policy: cert_client
+          alternative_names: IP:${_param:control_address},IP:${_param:kubernetes_internal_api_address}
\ No newline at end of file
diff --git a/salt/minion/cert/k8s_server.yml b/salt/minion/cert/k8s_server.yml
index d9b1da6..e340b52 100644
--- a/salt/minion/cert/k8s_server.yml
+++ b/salt/minion/cert/k8s_server.yml
@@ -10,4 +10,4 @@
           cert_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.crt
           all_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.pem
           signing_policy: cert_server
-          alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address}
+          alternative_names: IP:${_param:cluster_vip_address},IP:${_param:cluster_node01_address},IP:${_param:cluster_node02_address},IP:${_param:cluster_node03_address},IP:${_param:kubernetes_internal_api_address},DNS:kubernetes.default
diff --git a/salt/minion/cert/k8s_server_single.yml b/salt/minion/cert/k8s_server_single.yml
new file mode 100644
index 0000000..33637e4
--- /dev/null
+++ b/salt/minion/cert/k8s_server_single.yml
@@ -0,0 +1,13 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        k8s_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: kubernetes-server
+          key_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.key
+          cert_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.crt
+          all_file: /srv/salt/env/${_param:salt_master_base_environment}/_certs/kubernetes/kubernetes-server.pem
+          signing_policy: cert_server
+          alternative_names: IP:${_param:control_address},IP:${_param:kubernetes_internal_api_address}
diff --git a/sensu/client/stacklight.yml b/sensu/client/stacklight.yml
new file mode 100644
index 0000000..b41ee77
--- /dev/null
+++ b/sensu/client/stacklight.yml
@@ -0,0 +1,8 @@
+classes:
+- service.sensu.client
+parameters:
+  _param:
+    sensu_message_queue_host: ${_param:stacklight_monitor_address}
+  sensu:
+    client:
+      metric_handlers: []
diff --git a/sensu/server/cluster.yml b/sensu/server/cluster.yml
new file mode 100644
index 0000000..28eb78b
--- /dev/null
+++ b/sensu/server/cluster.yml
@@ -0,0 +1,31 @@
+classes:
+- service.git.client
+- service.redis.server.single
+- service.rabbitmq.server.cluster
+- system.rabbitmq.server.vhost.monitoring
+- service.sensu.server.single
+parameters:
+  _param:
+    rabbitmq_secret_key: secret
+    rabbitmq_admin_password: password
+    rabbitmq_cold_password: password
+    rabbitmq_monitor_password: password
+    sensu_message_queue_host: ${_param:cluster_vip_address}
+  rabbitmq:
+    cluster:
+      name: 'monitoring'
+  redis:
+    server:
+      version: 3.0
+      bind:
+        address: ${_param:single_address}
+    cluster:
+      enabled: True
+      mode: sentinel
+      role: ${_param:redis_cluster_role}
+      quorum: 2
+      master:
+        host: ${_param:cluster_node01_address}
+        port: 6379
+      sentinel:
+        address: ${_param:single_address}
diff --git a/statsd/server/single.yml b/statsd/server/single.yml
index 0aca6c3..c6ecfdf 100644
--- a/statsd/server/single.yml
+++ b/statsd/server/single.yml
@@ -2,5 +2,5 @@
 - service.statsd.server.carbon
 parameters:
   _param:
-    statsd_server_backend_host: locahost
+    statsd_server_backend_host: 127.0.0.1
     statsd_server_backend_port: 2023