Merge pull request #139 from thouveng/add-sensu-output

Add sensu output for StackLight collectors
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/CHANGELOG.rst b/CHANGELOG.rst
new file mode 100644
index 0000000..4fd75aa
--- /dev/null
+++ b/CHANGELOG.rst
@@ -0,0 +1,6 @@
+Changelog
+==========
+
+
+* 2017-03-03 Tomáš Kukrál <tkukral@mirantis.com}
+- change default Salt-API port to 6969
diff --git a/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/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/haproxy/proxy/listen/cicd/aptly.yml b/haproxy/proxy/listen/cicd/aptly.yml
index c1062ed..64115ff 100644
--- a/haproxy/proxy/listen/cicd/aptly.yml
+++ b/haproxy/proxy/listen/cicd/aptly.yml
@@ -1,4 +1,7 @@
 parameters:
+  _param:
+    haproxy_aptly_api_bind_port: 8084
+    haproxy_aptly_public_bind_port: 8085
   haproxy:
     proxy:
       listen:
@@ -11,7 +14,7 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 8084
+              port: ${_param:haproxy_aptly_api_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
@@ -34,7 +37,7 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 8085
+              port: ${_param:haproxy_aptly_public_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
diff --git a/haproxy/proxy/listen/cicd/gerrit.yml b/haproxy/proxy/listen/cicd/gerrit.yml
index efa7ed9..a9f0a3c 100644
--- a/haproxy/proxy/listen/cicd/gerrit.yml
+++ b/haproxy/proxy/listen/cicd/gerrit.yml
@@ -1,4 +1,7 @@
 parameters:
+  _param:
+    haproxy_gerrit_bind_port: 8080
+    haproxy_gerrit_ssh_bind_port: 29418
   haproxy:
     proxy:
       listen:
@@ -12,7 +15,7 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 8080
+              port: ${_param:haproxy_gerrit_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
@@ -31,7 +34,7 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 29418
+              port: ${_param:haproxy_gerrit_ssh_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
diff --git a/haproxy/proxy/listen/cicd/jenkins.yml b/haproxy/proxy/listen/cicd/jenkins.yml
index d907ee3..e91d9f2 100644
--- a/haproxy/proxy/listen/cicd/jenkins.yml
+++ b/haproxy/proxy/listen/cicd/jenkins.yml
@@ -1,4 +1,7 @@
 parameters:
+  _param:
+    haproxy_jenkins_bind_port: 8081
+    haproxy_jenkins_jnlp_bind_port: 50000
   haproxy:
     proxy:
       listen:
@@ -14,7 +17,7 @@
             - action: "del-header X-Frame-Options"
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 8081
+              port: ${_param:haproxy_jenkins_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
@@ -33,7 +36,7 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 50000
+              port: ${_param:haproxy_jenkins_jnlp_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
diff --git a/haproxy/proxy/listen/docker/registry.yml b/haproxy/proxy/listen/docker/registry.yml
index c3d1893..2a86aa4 100644
--- a/haproxy/proxy/listen/docker/registry.yml
+++ b/haproxy/proxy/listen/docker/registry.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    haproxy_docker_registry_listen_port: 5000
   haproxy:
     proxy:
       listen:
@@ -14,7 +16,7 @@
               condition: "if { ssl_fc }"
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 5000
+              port: ${_param:haproxy_docker_registry_listen_port}
               ssl: ${_param:cluster_ssl_certificate}
           servers:
             - name: ${_param:cluster_node01_name}
diff --git a/haproxy/proxy/listen/docker/visualizer.yml b/haproxy/proxy/listen/docker/visualizer.yml
index daacd84..409815c 100644
--- a/haproxy/proxy/listen/docker/visualizer.yml
+++ b/haproxy/proxy/listen/docker/visualizer.yml
@@ -1,4 +1,6 @@
 parameters:
+  _param:
+    haproxy_docker_visualizer_listen_port: 8091
   haproxy:
     proxy:
       listen:
@@ -12,7 +14,7 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 8090
+              port: ${_param:haproxy_docker_visualizer_listen_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
diff --git a/haproxy/proxy/listen/cicd/mysql.yml b/haproxy/proxy/listen/mysql.yml
similarity index 66%
rename from haproxy/proxy/listen/cicd/mysql.yml
rename to haproxy/proxy/listen/mysql.yml
index c6fa56b..a7ef910 100644
--- a/haproxy/proxy/listen/cicd/mysql.yml
+++ b/haproxy/proxy/listen/mysql.yml
@@ -1,4 +1,7 @@
 parameters:
+  _param:
+    haproxy_mysql_bind_port: 3306
+    haproxy_mysql_source_port: 3306
   haproxy:
     proxy:
       listen:
@@ -7,17 +10,17 @@
           balance: source
           binds:
             - address: ${_param:haproxy_bind_address}
-              port: 3306
+              port: ${_param:haproxy_mysql_bind_port}
           servers:
             - name: ${_param:cluster_node01_name}
               host: ${_param:cluster_node01_address}
-              port: 13306
+              port: ${_param:haproxy_mysql_source_port}
               params: check
             - name: ${_param:cluster_node02_name}
               host: ${_param:cluster_node02_address}
-              port: 13306
+              port: ${_param:haproxy_mysql_source_port}
               params: backup check
             - name: ${_param:cluster_node03_name}
               host: ${_param:cluster_node03_address}
-              port: 13306
+              port: ${_param:haproxy_mysql_source_port}
               params: backup check
diff --git a/haproxy/proxy/listen/openstack/novnc.yml b/haproxy/proxy/listen/openstack/novnc.yml
new file mode 100644
index 0000000..9646651
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/novnc.yml
@@ -0,0 +1,25 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        nova_novnc:
+          type: general-service
+          service_name: http
+          check: false
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 6080
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 6080
+            params: check
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 6080
+            params: check
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 6080
+            params: check
+
diff --git a/haproxy/proxy/listen/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/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/keepalived/cluster/instance/openstack_telemetry_vip.yml b/keepalived/cluster/instance/openstack_telemetry_vip.yml
index 41f7dd0..91155e7 100644
--- a/keepalived/cluster/instance/openstack_telemetry_vip.yml
+++ b/keepalived/cluster/instance/openstack_telemetry_vip.yml
@@ -7,7 +7,6 @@
     keepalived_openstack_telemetry_vip_address: ${_param:cluster_vip_address}
     keepalived_openstack_telemetry_vip_password: password
     keepalived_openstack_telemetry_vip_interface: eth1
-    keepalived_openstack_telemetry_vip_priority: 101
   keepalived:
     cluster:
       enabled: true
@@ -17,4 +16,4 @@
           password: ${_param:keepalived_openstack_telemetry_vip_password}
           interface: ${_param:keepalived_openstack_telemetry_vip_interface}
           virtual_router_id: 230
-          priority: ${_param:keepalived_openstack_telemetry_vip_priority}
+          priority: 101
diff --git a/keepalived/cluster/instance/stacklight_log_vip.yml b/keepalived/cluster/instance/stacklight_log_vip.yml
index 1a36121..caa6754 100644
--- a/keepalived/cluster/instance/stacklight_log_vip.yml
+++ b/keepalived/cluster/instance/stacklight_log_vip.yml
@@ -3,8 +3,6 @@
 classes:
 - service.keepalived.support
 parameters:
-  _param:
-    keepalived_stacklight_log_vip_priority: 101
   keepalived:
     cluster:
       enabled: true
@@ -14,4 +12,4 @@
           password: ${_param:keepalived_stacklight_log_vip_password}
           interface: ${_param:keepalived_stacklight_log_vip_interface}
           virtual_router_id: 110
-          priority: ${_param:keepalived_stacklight_log_vip_priority}
+          priority: 101
diff --git a/keepalived/cluster/instance/stacklight_monitor_vip.yml b/keepalived/cluster/instance/stacklight_monitor_vip.yml
index 05eb967..28a6b69 100644
--- a/keepalived/cluster/instance/stacklight_monitor_vip.yml
+++ b/keepalived/cluster/instance/stacklight_monitor_vip.yml
@@ -3,8 +3,6 @@
 classes:
 - service.keepalived.support
 parameters:
-  _param:
-    keepalived_stacklight_monitor_vip_priority: 101
   keepalived:
     cluster:
       enabled: true
@@ -14,4 +12,4 @@
           password: ${_param:keepalived_stacklight_monitor_vip_password}
           interface: ${_param:keepalived_stacklight_monitor_vip_interface}
           virtual_router_id: 100
-          priority: ${_param:keepalived_stacklight_monitor_vip_priority}
+          priority: 101
diff --git a/keepalived/cluster/instance/stacklight_telemetry_vip.yml b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
index 160a02e..e7d31a5 100644
--- a/keepalived/cluster/instance/stacklight_telemetry_vip.yml
+++ b/keepalived/cluster/instance/stacklight_telemetry_vip.yml
@@ -3,8 +3,6 @@
 classes:
 - service.keepalived.support
 parameters:
-  _param:
-    keepalived_stacklight_telemetry_vip_priority: 101
   keepalived:
     cluster:
       enabled: true
@@ -14,4 +12,4 @@
           password: ${_param:keepalived_stacklight_telemetry_vip_password}
           interface: ${_param:keepalived_stacklight_telemetry_vip_interface}
           virtual_router_id: 120
-          priority: ${_param:keepalived_stacklight_telemetry_vip_priority}
+          priority: 101
diff --git a/keystone/client/service/neutron.yml b/keystone/client/service/neutron.yml
index e108f68..12fe9fe 100644
--- a/keystone/client/service/neutron.yml
+++ b/keystone/client/service/neutron.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    neutron_public_protocol: https
+    cluster_public_protocol: https
   keystone:
     client:
       server:
@@ -19,7 +19,7 @@
               endpoints:
               - region: ${_param:openstack_region}
                 public_address: ${_param:cluster_public_host}
-                public_protocol: ${_param:neutron_public_protocol}
+                public_protocol: ${_param:cluster_public_protocol}
                 public_port: 9696
                 public_path: '/'
                 internal_address: ${_param:neutron_service_host}
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
index 2f1e55c..2581543 100644
--- a/linux/system/repo/mcp10.yml
+++ b/linux/system/repo/mcp10.yml
@@ -3,22 +3,22 @@
     system:
       repo:
         mirantis_openstack:
-          source: "deb http://mirror.fuel-infra.org/mcp-repos/1.0 mitaka main"
+          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/archive-mcp1.0.key"
+          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 mitaka-hotfix main"
+          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/archive-mcp1.0.key"
+          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 mitaka-security main"
+          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/archive-mcp1.0.key"
+          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 mitaka-updates main"
+          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/archive-mcp1.0.key"
+          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 mitaka-holdback main"
+          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/archive-mcp1.0.key"
+          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/mos9_galera.yml b/linux/system/repo/mos9_galera.yml
index f42c71e..f006c5d 100644
--- a/linux/system/repo/mos9_galera.yml
+++ b/linux/system/repo/mos9_galera.yml
@@ -30,7 +30,7 @@
             # Set lowest priority for remain packages from this repo
             # as we want use only galera from here
             - pin: "release a=mos9.0"
-              priority: 400
+              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"
@@ -44,5 +44,5 @@
             # Set lowest priority for remain packages from this repo
             # as we want use only galera from here
             - pin: "release a=mos9.0-updates"
-              priority: 400
+              priority: 700
               package: "*"
diff --git a/linux/system/repo_local/hotfix.yml b/linux/system/repo_local/hotfix.yml
new file mode 100644
index 0000000..cbce62f
--- /dev/null
+++ b/linux/system/repo_local/hotfix.yml
@@ -0,0 +1,14 @@
+parameters:
+  linux:
+    system:
+      repo:
+        local-hotfix:
+          refresh_db: ${_param:linux_repo_refresh_db}
+          source: "deb [arch=amd64] http://${_param:local_repo_url}/local-hotfix/ ${_param:linux_distrib_codename} main"
+          architectures: amd64
+          key_url: "http://${_param:public_key_host}/public.gpg"
+          pin:
+          - pin: 'release l=local-hotfix trusty'
+            priority: 1101
+            package: '*'
+
diff --git a/neutron/compute/nfv/dpdk.yml b/neutron/compute/nfv/dpdk.yml
new file mode 100644
index 0000000..90f9095
--- /dev/null
+++ b/neutron/compute/nfv/dpdk.yml
@@ -0,0 +1,17 @@
+parameters:
+  _param:
+    compute_dpdk_driver: uio
+  linux:
+    network:
+      bridge: openvswitch
+      dpdk:
+        enabled: true
+        driver: "${_param:compute_dpdk_driver}"
+      openvswitch:
+        pmd_cpu_mask: "${_param:compute_ovs_pmd_cpu_mask}"
+        dpdk_socket_mem: "${_param:compute_ovs_dpdk_socket_mem}"
+        dpdk_lcore_mask: "${_param:compute_ovs_dpdk_lcore_mask}"
+        memory_channels: "${_param:compute_ovs_memory_channels}"
+  neutron:
+    compute:
+      dpdk: True
diff --git a/neutron/compute/nfv/sriov.yml b/neutron/compute/nfv/sriov.yml
new file mode 100644
index 0000000..882e703
--- /dev/null
+++ b/neutron/compute/nfv/sriov.yml
@@ -0,0 +1,8 @@
+parameters:
+  neutron:
+    compute:
+      backend:
+        sriov:
+          sriov_nic01:
+            devname: ${_param:sriov_nic01_device_name}
+            physical_network: ${_param:sriov_nic01_physical_network}
diff --git a/neutron/control/openvswitch/dpdk.yml b/neutron/control/openvswitch/dpdk.yml
new file mode 100644
index 0000000..f7191c7
--- /dev/null
+++ b/neutron/control/openvswitch/dpdk.yml
@@ -0,0 +1,4 @@
+parameters:
+  neutron:
+    server:
+      dpdk: True
\ No newline at end of file
diff --git a/neutron/control/openvswitch/sriov.yml b/neutron/control/openvswitch/sriov.yml
new file mode 100644
index 0000000..38f5d29
--- /dev/null
+++ b/neutron/control/openvswitch/sriov.yml
@@ -0,0 +1,7 @@
+parameters:
+  neutron:
+    server:
+      backend:
+        mechanism:
+          sriov:
+            driver: sriovnicswitch
diff --git a/nginx/server/proxy/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/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/sriov.yml b/nova/compute/nfv/sriov.yml
similarity index 100%
rename from nova/compute/sriov.yml
rename to nova/compute/nfv/sriov.yml
diff --git a/nova/control/cluster.yml b/nova/control/cluster.yml
index c9d8a07..545a432 100644
--- a/nova/control/cluster.yml
+++ b/nova/control/cluster.yml
@@ -3,6 +3,7 @@
 - service.nova.control.cluster
 - service.keepalived.cluster.single
 - system.haproxy.proxy.listen.openstack.nova
+- system.haproxy.proxy.listen.openstack.novnc
 parameters:
   _param:
     nova_vncproxy_url: http://${_param:cluster_vip_address}:6080
@@ -30,6 +31,7 @@
         private_address: ${_param:cluster_local_address}
         public_address: ${_param:cluster_vip_address}
         public_name: ${_param:cluster_vip_address}
+        novncproxy_address: ${_param:cluster_local_address}
         novncproxy_port: 6080
       database:
         engine: mysql
diff --git a/opencontrail/compute/cluster.yml b/opencontrail/compute/cluster.yml
index 1f6eaf3..375e600 100644
--- a/opencontrail/compute/cluster.yml
+++ b/opencontrail/compute/cluster.yml
@@ -1,3 +1,5 @@
+applications:
+- opencontrail
 parameters:
   _param:
     opencontrail_compute_iface_mask: 24
diff --git a/opencontrail/compute/dpdk.yml b/opencontrail/compute/dpdk.yml
new file mode 100644
index 0000000..47464b6
--- /dev/null
+++ b/opencontrail/compute/dpdk.yml
@@ -0,0 +1,25 @@
+parameters:
+  nova:
+    compute:
+      libvirt_service: libvirt-bin
+  opencontrail:
+    compute:
+      dpdk:
+        enabled: true
+        taskset: "${_param:compute_vrouter_taskset}"
+        socket_mem: "${_param:compute_vrouter_socket_mem}"
+      interface:
+        mac_address: ${_param:compute_vrouter_dpdk_mac_address}
+        pci: ${_param:compute_vrouter_dpdk_pci}
+  linux:
+    system:
+      package:
+        liburcu4:
+          version: 0.9.1-3+tcp1
+    network:
+      interface:
+        vhost0:
+          pre_up_cmds:
+          - /usr/lib/contrail/if-vhost0
+          post_up_cmds:
+          - ip link set vhost0 address ${_param:compute_vrouter_dpdk_mac_address}
diff --git a/opencontrail/control/analytics.yml b/opencontrail/control/analytics.yml
index 6fbc85a..9e3d78d 100644
--- a/opencontrail/control/analytics.yml
+++ b/opencontrail/control/analytics.yml
@@ -10,8 +10,10 @@
       package:
         librdkafka1:
           version: 0.9.0-0contrail0
+          hold: true
         python-kafka:
           version: 1.0.1-0contrail1
+          hold: true
   opencontrail:
     common:
       version: ${_param:opencontrail_version}
diff --git a/opencontrail/control/cluster.yml b/opencontrail/control/cluster.yml
index b3f1052..a7015d5 100644
--- a/opencontrail/control/cluster.yml
+++ b/opencontrail/control/cluster.yml
@@ -14,3 +14,7 @@
           version: 1.0.1-0contrail1
         contrail-api-cli:
           version: latest
+  opencontrail:
+    web:
+      database:
+        port: 9042
diff --git a/opencontrail/control/control.yml b/opencontrail/control/control.yml
index e7b045e..1726029 100644
--- a/opencontrail/control/control.yml
+++ b/opencontrail/control/control.yml
@@ -97,6 +97,8 @@
         password: '${_param:keystone_admin_password}'
         token: '${_param:keystone_service_token}'
         tenant: admin
+      database:
+        port: 9042
       network:
         engine: neutron
         host: ${_param:cluster_vip_address}
\ No newline at end of file
diff --git a/opencontrail/control/single.yml b/opencontrail/control/single.yml
index 5d3a32d..efdc267 100644
--- a/opencontrail/control/single.yml
+++ b/opencontrail/control/single.yml
@@ -65,3 +65,7 @@
             port: 5938
           user: haproxy
           password: ${_param:opencontrail_stats_password}
+  opencontrail:
+    web:
+      database:
+        port: 9042
diff --git a/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/oss_team.yaml b/openssh/server/team/oss_team.yml
similarity index 100%
rename from openssh/server/team/oss_team.yaml
rename to openssh/server/team/oss_team.yml
diff --git a/openssh/server/team/tcpcloud.yml b/openssh/server/team/tcpcloud.yml
index cc26ecd..8b7073d 100644
--- a/openssh/server/team/tcpcloud.yml
+++ b/openssh/server/team/tcpcloud.yml
@@ -117,6 +117,30 @@
           sudo: true
           full_name: Martin Polreich
           home: /home/mpolreich
+        skreys:
+          enabled: true
+          name: skreys
+          sudo: true
+          full_name: Sergey Kreys
+          home: /home/skreys
+        jcach:
+          enabled: true
+          name: jcach
+          sudo: true
+          full_name: Jan Cach
+          home: /home/jcach
+        lmercl:
+          enabled: true
+          name: lmercl
+          sudo: true
+          full_name: Lubos Mercl
+          home: /home/lmercl
+        smatov:
+          enabled: true
+          name: smatov
+          sudo: true
+          full_name: Sergey Matov
+          home: /home/smatov
       group:
         libvirtd:
           enabled: true
@@ -215,6 +239,26 @@
           public_keys:
           - ${public_keys:mpolreich}
           user: ${linux:system:user:mpolreich}
+        skreys:
+          enabled: true
+          public_keys:
+          - ${public_keys:skreys}
+          user: ${linux:system:user:skreys}
+        jcach:
+          enabled: true
+          public_keys:
+          - ${public_keys:jcach}
+          user: ${linux:system:user:jcach}
+        lmercl:
+          enabled: true
+          public_keys:
+          - ${public_keys:lmercl}
+          user: ${linux:system:user:lmercl}
+        smatov:
+          enabled: true
+          public_keys:
+          - ${public_keys:smatov}
+          user: ${linux:system:user:smatov}
   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
@@ -252,3 +296,11 @@
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRM6WquKic6i6v/JbNR2XuMqCCYqlfyGU1K7XHK7tWFordRLz2/o4S76sZULBTXR0rLHtynvHM4QHlloE1/XJnd0BtI/3y8aY0OkXyu6PHvTC8Az8SyGj2XAcaiPlaT2f+oTJHoPc9rxLhMMD7OTwias6QeVKB3UrT0OaHfy2wWCF7t8cQeofi2ldEHKeCsC1jrT1vaVuoThQgZ00h0rNk4COPZEW34FXdmdJFUmZcUIDMa71HtYgnn4gmE8sUiJ/j6ardvPaycCDT9j1GW1Yu6UVLBWOoMMCb04bDJiidlvY1fQqbM/G4cR4ZPHFZ0RQiM2+wnRaB5RCmBVgNT0Tj tkukral
     mpolreich:
       key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0N+ds8BGTR+ZQo9NSRGRbjv3T8AbPmtSw2nClXxetRdmHpM/mU7/5iD7qfkCXtNptKeCG/Qk44wlijnAtjztJK1qfvyphHe3etZxLnqhYMm73Yy++yKPE/ywFPFb+7kd0BDy2iZqohZpX3gUi5iDnvXUInHNqqtTv3xFe2kmn3lq5bSRuUMtr61nZ7z/fkX8kNfoGxKrm7bhSo5zq4sjTrj3lk1LKZc1HYji3RwrzBM0z4eyed1BaJyDNtG+eFN4nOnvVn59452AR8SmKJXRErk37rEoQn80xszypzybooFPN5dpdB6u9b4xquFCOD83usb8kEjKY9VIYGuXxEEts1KIF20J+xd8UnZU8d4JL50G8JY8zdNgurR3ZyMD2okuord4cpHF8SVecsAyRV6nuhDxVtF2Xn/RriY02jrLoRPsS+3nIrKt9H8vpQZMYJ+jgEpekZhhVfz4AP3pATzOrWENzNXj5G1bLJs1C9aTtwE27EnKW73XekX/GLsehCwsQ21JvDX8PMxJwLVfqvkRlrc5GILEIVgjZ82Cj6Eens1QobymRAEWuEpZxkPx6u0kGO62ri8zFx8+NYwYDz3mwhHDRT34T/Rvzy/9V9xVjkUQOj9cZ3eYBnC1MffJjx8heHDmSQmUd+99zKa9Hzr74z3AvR3AIgFqmu7kx5fIMew== ubuntu@thinkpad-x1
+    skreys:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeg+Wj7yTBRLvsu2LKgdKyb6FW4n3t5me0LAZhGkP9mbsYonE5sN0OwI42ZPYeU1O35c+E4n3GJ4ZzdJYRUQJtqO5EHUMNyXELEcS8GZKydg5A0KPs69bB8SPVlTfO5D77sAWwG/3JIQD/uI21jqCp3a4lyEw5X2HjMbuz2Z4cW7Y69i73RdIYQdYb0X5+mqcVz8YEyuMZi2zweMxsvOczcanQ/4J6JKtC8imJu23Gr0TeS15OJCFh7yGviVp//LBzusXreqlEf7Tzx2yHkJ/rqULIIlPpBC1TFD7sgA72j3kq9rw3ZeQAwmaJA82L3KzagkgSQprEsRYnQ+wSWXkj skreys@skreys
+    jcach:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCwAqWUvMAPTh4euvGwhLU3GjlAHVzKvlclKdg1VqmWAZI1Nd+GjKhop5kS3hMk+HCg4bgfE5nAEsp3mF78c+XXDZot1T1Sxsd0SfatkMycXgeK4l1U6QtouNR//7wEv4gPA5la7T5ktgwk7hfjnc9Jl84yS8xA1d5gsgOhQw4wHYQquyOcOA5rN8ylh7P+tEfJSx4PWlfsu9M8IZU9WvftPxNbmUfVF+GuwPcNgbAtMi3Oz2Zg9+6W4gnwfJiufXU+onDa2e5tL8ZsGqEbTQXIx13sg0ilMIT6WpbTtbCe81oZYokAMGY2hlbubhtHgGSQhBI4/qgE7/CsD4TNtuOFTAy8Y6lzvoDsTzR51ApUFHHQEjlsf7AfQFJF3Mb5/fy84K0PF2chz4XwXeO9ZbUGOvY9P349gqyJRIV29V6b8m2aqKYIHO/CRxYk52H1UY9SlCsJq9G+7qjHbugV+35+Za1/RFc0l+80Ei/GnfkYYNxpxHNM6r4sM2mte00lWTQwaSreFIVz/fRlKiaok1hHwwUNxgifdtcdIm+7RGnBgV9MoNGYN4AESKTnj7tr6OIOSLaZm8YbPJDW3VmpSmwGfHpOfI00lfymbKsR5ytn6nTLVHOkfU6pI4+LpUc0Jb9+Szrn+5QA8bGp6yn2DTCzHNW/mR5rrHYUY6o9m8/W4w== casek@casek14NB
+    lmercl:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCy6mFrr4oNdLjT5wBZj1+KXNpdawnGGWEevDBQ2SWFjxBFujkWVLiW1kxLTpLVSnuoE5FB7doRIsT/CDe9IU5OhsJ+z6TT56R/pfVKrVnSB1rgrwqdezjgmYEM6kTWiH2GKJE0yiQEPgagK8Rz5Zl420JkhbFWnL7EGPhxNtmYMGDTZwUTzP0KYmytyeH15OqNIiBGTrp1t2bTrVB8HRnUp0uDpfoWAUnsijVGNe1j1bNKtDO0Z9LAWx3eUyxIk4cdpX/EeWJg8jNrSMxtAZZ7Hhm/WInNSNqcHcZ1rEYCAjENxo1WVOuA/aqUqc5xaAipWNon4Rk0e0IUAaFOfLvN2lIuilUZ5XKHDe7a2crkGPnotheT9FgaEHOeFtpuhSaygeZHTMR197jeocgjWIkPqHjVAGSQqQf0TAdNuN73QPTigbbfHWWc1d8KlCM5BqJUXMHPG6BasE1sI/4ykYbxN/DAEvVJ4+rdIlqSdedd73ZAseVQjDtpzD8diScGrpdOhZnTm43q89F8dIFv7tt1TjIwvfcDQNSBjyyKcYpj+NTyW2Zk7qWDVz+lzH0ToYk/rOKkGlrsRy7OwOnmyKR8IcIOL7Bowj895ThCX8tBrdLu/m55ojBOcZiCpawCm7K55ri1Ar6i8cO+bHDh11kKRa/utRRSQTpsW0sbCsamzQ== lubos@lubos-ThinkPad-X1
+    smatov:
+      key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgBHACRnY/VEEDFE63xDp4bx0zgWY4h1aB9/c2f962HtTNaQ6R/Cz6DLISaB5th8qzrzbvjn9WcpHdxyTm9BqkLLzB4qe7fnebPtn6zGczZ9Btrjk9R8Fuw6DZhSucSk572r/gVIY0O3Z1LajHkNr0ZTQS8AY3fgn8rXMD2vMOruOzyTOmfWKmEw7e+JYUqoFXHhE3Dd7hGQ99d6kH2N3zXfM2rzfjshGAq0kOi5dN4Hx6QIXZapt0t9TzpYTkK5SaVzuEVyVaKRLYSa/rdPjHkKqDFa99RcQ+OI93uvT9CFNWDFIC/TDJ2M+7PQbm836EICXXVWKjQ2NUnQJeOU5v smatov@ubuntu
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_gateway_cluster.yml b/reclass/storage/system/openstack_gateway_cluster.yml
index 96ae486..f9d4485 100644
--- a/reclass/storage/system/openstack_gateway_cluster.yml
+++ b/reclass/storage/system/openstack_gateway_cluster.yml
@@ -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:
diff --git a/reclass/storage/system/openstack_telemetry_cluster.yml b/reclass/storage/system/openstack_telemetry_cluster.yml
index 986ed61..d184fc9 100644
--- a/reclass/storage/system/openstack_telemetry_cluster.yml
+++ b/reclass/storage/system/openstack_telemetry_cluster.yml
@@ -15,7 +15,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
             single_address: ${_param:openstack_telemetry_node01_address}
-            keepalived_openstack_telemetry_vip_priority: 103
+            keepalived_vip_priority: 103
         openstack_telemetry_node02:
           name: ${_param:openstack_telemetry_node02_hostname}
           domain: ${_param:cluster_domain}
@@ -25,7 +25,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
             single_address: ${_param:openstack_telemetry_node02_address}
-            keepalived_openstack_telemetry_vip_priority: 102
+            keepalived_vip_priority: 102
         openstack_telemetry_node03:
           name: ${_param:openstack_telemetry_node03_hostname}
           domain: ${_param:cluster_domain}
@@ -35,4 +35,4 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: trusty
             single_address: ${_param:openstack_telemetry_node03_address}
-            keepalived_openstack_telemetry_vip_priority: 101
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/stacklight_monitor_cluster.yml b/reclass/storage/system/stacklight_monitor_cluster.yml
index 80f57cf..f95cf81 100644
--- a/reclass/storage/system/stacklight_monitor_cluster.yml
+++ b/reclass/storage/system/stacklight_monitor_cluster.yml
@@ -17,7 +17,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node01_address}
-            keepalived_stacklight_monitor_vip_priority: 103
+            keepalived_vip_priority: 103
         stacklight_monitor_node02:
           name: ${_param:stacklight_monitor_node02_hostname}
           domain: ${_param:cluster_domain}
@@ -29,7 +29,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node02_address}
-            keepalived_stacklight_monitor_vip_priority: 102
+            keepalived_vip_priority: 102
         stacklight_monitor_node03:
           name: ${_param:stacklight_monitor_node03_hostname}
           domain: ${_param:cluster_domain}
@@ -41,4 +41,4 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node03_address}
-            keepalived_stacklight_monitor_vip_priority: 101
+            keepalived_vip_priority: 101
diff --git a/reclass/storage/system/stacklight_server_cluster.yml b/reclass/storage/system/stacklight_server_cluster.yml
index 818e732..26b9ebe 100644
--- a/reclass/storage/system/stacklight_server_cluster.yml
+++ b/reclass/storage/system/stacklight_server_cluster.yml
@@ -20,7 +20,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node01_address}
-            keepalived_stacklight_monitor_vip_priority: 103
+            keepalived_vip_priority: 103
             rabbitmq_cluster_role: master
         stacklight_server_node02:
           name: ${_param:stacklight_monitor_node02_hostname}
@@ -33,7 +33,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node02_address}
-            keepalived_stacklight_monitor_vip_priority: 102
+            keepalived_vip_priority: 102
             rabbitmq_cluster_role: slave
         stacklight_server_node03:
           name: ${_param:stacklight_monitor_node03_hostname}
@@ -46,5 +46,5 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_monitor_node03_address}
-            keepalived_stacklight_monitor_vip_priority: 101
+            keepalived_vip_priority: 101
             rabbitmq_cluster_role: slave
diff --git a/reclass/storage/system/stacklight_telemetry_cluster.yml b/reclass/storage/system/stacklight_telemetry_cluster.yml
index c75d93d..12b1dae 100644
--- a/reclass/storage/system/stacklight_telemetry_cluster.yml
+++ b/reclass/storage/system/stacklight_telemetry_cluster.yml
@@ -15,7 +15,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_telemetry_node01_address}
-            keepalived_stacklight_telemetry_vip_priority: 103
+            keepalived_vip_priority: 103
         stacklight_telemetry_node02:
           name: ${_param:stacklight_telemetry_node02_hostname}
           domain: ${_param:cluster_domain}
@@ -25,7 +25,7 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_telemetry_node02_address}
-            keepalived_stacklight_telemetry_vip_priority: 102
+            keepalived_vip_priority: 102
         stacklight_telemetry_node03:
           name: ${_param:stacklight_telemetry_node03_hostname}
           domain: ${_param:cluster_domain}
@@ -35,4 +35,4 @@
             salt_master_host: ${_param:reclass_config_master}
             linux_system_codename: xenial
             single_address: ${_param:stacklight_telemetry_node03_address}
-            keepalived_stacklight_telemetry_vip_priority: 101
+            keepalived_vip_priority: 101
diff --git a/salt/master/api.yml b/salt/master/api.yml
index 1c0c3fb..b5ede2f 100644
--- a/salt/master/api.yml
+++ b/salt/master/api.yml
@@ -1,6 +1,6 @@
 parameters:
   _param:
-    salt_master_api_port: 8000
+    salt_master_api_port: 6969
     salt_master_api_permissions:
     - '.*'
     - '@local'
diff --git a/salt/minion/ca/salt_master.yml b/salt/minion/ca/salt_master.yml
index 3e42db5..87cd6e6 100644
--- a/salt/minion/ca/salt_master.yml
+++ b/salt/minion/ca/salt_master.yml
@@ -21,6 +21,9 @@
             cert_client:
               type: v3_edge_cert_client
               minions: '*'
+            cert_open:
+              type: v3_edge_cert_open
+              minions: '*'
           days_valid:
             authority: ${_param:salt_minion_ca_days_valid_authority}
             certificate: ${_param:salt_minion_ca_days_valid_certificate}
diff --git a/salt/minion/cert/etcd_client.yml b/salt/minion/cert/etcd_client.yml
new file mode 100644
index 0000000..90b41da
--- /dev/null
+++ b/salt/minion/cert/etcd_client.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_client:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${linux:system:name}
+          signing_policy: cert_open
+          alternative_names: IP:${_param:cluster_local_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extended_key_usage: clientAuth
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: /var/lib/etcd/etcd-client.key
+          cert_file: /var/lib/etcd/etcd-client.crt
+          all_file: /var/lib/etcd/etcd-client.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/etcd_server.yml b/salt/minion/cert/etcd_server.yml
new file mode 100644
index 0000000..ea26a40
--- /dev/null
+++ b/salt/minion/cert/etcd_server.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        etcd_server:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          common_name: ${linux:system:name}
+          signing_policy: cert_open
+          alternative_names: IP:127.0.0.1,IP:${_param:cluster_vip_address},IP:${_param:cluster_local_address},DNS:${linux:system:name},DNS:${linux:network:fqdn}
+          extended_key_usage: serverAuth,clientAuth
+          key_usage: "digitalSignature,nonRepudiation,keyEncipherment"
+          key_file: /var/lib/etcd/etcd-server.key
+          cert_file: /var/lib/etcd/etcd-server.crt
+          all_file: /var/lib/etcd/etcd-server.pem
+          ca_file: /var/lib/etcd/ca.pem
+          user: etcd
+          group: etcd
diff --git a/salt/minion/cert/k8s_client_single.yml b/salt/minion/cert/k8s_client_single.yml
new file mode 100644
index 0000000..179d534
--- /dev/null
+++ b/salt/minion/cert/k8s_client_single.yml
@@ -0,0 +1,13 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        k8s_client:
+          host: ${_param:salt_minion_ca_host}
+          authority: ${_param:salt_minion_ca_authority}
+          key_file: /etc/kubernetes/ssl/kubelet-client.key
+          cert_file: /etc/kubernetes/ssl/kubelet-client.crt
+          ca_file: /etc/kubernetes/ssl/ca-kubernetes.crt
+          common_name: kubelet-client
+          signing_policy: cert_client
+          alternative_names: IP:${_param:control_address},IP:${_param:kubernetes_internal_api_address}
\ No newline at end of file
diff --git a/salt/minion/cert/k8s_server.yml b/salt/minion/cert/k8s_server.yml
index d9b1da6..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}