initial commit
diff --git a/system/salt/control/cluster/opencontrail_analytics_cluster.yml b/system/salt/control/cluster/opencontrail_analytics_cluster.yml
new file mode 100644
index 0000000..8fbe3ee
--- /dev/null
+++ b/system/salt/control/cluster/opencontrail_analytics_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        opencontrail.analytics:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            nal01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: opencontrail.analytics
+            nal02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: opencontrail.analytics
+            nal03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: opencontrail.analytics
diff --git a/system/salt/control/cluster/opencontrail_control_cluster.yml b/system/salt/control/cluster/opencontrail_control_cluster.yml
new file mode 100644
index 0000000..2548fbd
--- /dev/null
+++ b/system/salt/control/cluster/opencontrail_control_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        opencontrail.control:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            ntw01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: opencontrail.control
+            ntw02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: opencontrail.control
+            ntw03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: opencontrail.control
diff --git a/system/salt/control/cluster/openstack_control_cluster.yml b/system/salt/control/cluster/openstack_control_cluster.yml
new file mode 100644
index 0000000..6ee34a2
--- /dev/null
+++ b/system/salt/control/cluster/openstack_control_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.control:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            ctl01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.control
+            ctl02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.control
+            ctl03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.control
diff --git a/system/salt/control/cluster/openstack_database_cluster.yml b/system/salt/control/cluster/openstack_database_cluster.yml
new file mode 100644
index 0000000..2513eb4
--- /dev/null
+++ b/system/salt/control/cluster/openstack_database_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.database:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            dbs01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.database
+            dbs02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.database
+            dbs03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.database
diff --git a/system/salt/control/cluster/openstack_message_queue_cluster.yml b/system/salt/control/cluster/openstack_message_queue_cluster.yml
new file mode 100644
index 0000000..06252ac
--- /dev/null
+++ b/system/salt/control/cluster/openstack_message_queue_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.message_queue:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            msg01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.message_queue
+            msg02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.message_queue
+            msg03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.message_queue
diff --git a/system/salt/control/cluster/openstack_proxy_single.yml b/system/salt/control/cluster/openstack_proxy_single.yml
new file mode 100644
index 0000000..a3650be
--- /dev/null
+++ b/system/salt/control/cluster/openstack_proxy_single.yml
@@ -0,0 +1,18 @@
+parameters:
+  salt:
+    control:
+      size:
+        openstack.proxy:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            prx01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_trusty_image}
+              size: openstack.proxy
diff --git a/system/salt/control/cluster/stacklight_log_cluster.yml b/system/salt/control/cluster/stacklight_log_cluster.yml
new file mode 100644
index 0000000..acac87f
--- /dev/null
+++ b/system/salt/control/cluster/stacklight_log_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        stacklight.log:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            log01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.log
+            log02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.log
+            log03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.log
diff --git a/system/salt/control/cluster/stacklight_server_cluster.yml b/system/salt/control/cluster/stacklight_server_cluster.yml
new file mode 100644
index 0000000..3cf8b08
--- /dev/null
+++ b/system/salt/control/cluster/stacklight_server_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        stacklight.server:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            mon01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.server
+            mon02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.server
+            mon03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.server
diff --git a/system/salt/control/cluster/stacklight_telemetry_cluster.yml b/system/salt/control/cluster/stacklight_telemetry_cluster.yml
new file mode 100644
index 0000000..63c6029
--- /dev/null
+++ b/system/salt/control/cluster/stacklight_telemetry_cluster.yml
@@ -0,0 +1,26 @@
+parameters:
+  salt:
+    control:
+      size:
+        stacklight.telemetry:
+          cpu: 32
+          ram: 65536
+          disk_profile: small
+          net_profile: default
+      cluster:
+        internal:
+          domain: ${_param:cluster_domain}
+          engine: virt
+          node:
+            mtr01:
+              provider: kvm01.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.telemetry
+            mtr02:
+              provider: kvm02.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.telemetry
+            mtr03:
+              provider: kvm03.${_param:cluster_domain}
+              image: ${_param:salt_control_xenial_image}
+              size: stacklight.telemetry
diff --git a/system/salt/control/virt.yml b/system/salt/control/virt.yml
new file mode 100644
index 0000000..6ed8537
--- /dev/null
+++ b/system/salt/control/virt.yml
@@ -0,0 +1,47 @@
+classes:
+  - service.libvirt.server.kvm
+parameters:
+  salt:
+    control:
+      enabled: True
+      virt_enabled: True
+  virt:
+    nic:
+      default:
+        eth1:
+          bridge: br0
+          model: virtio
+        eth0:
+          bridge: br1
+          model: virtio
+    disk:
+      default:
+        - system:
+            size: 50000
+      xxxsmall:
+        - system:
+            size: 8000
+      xxsmall:
+        - system:
+            size: 15000
+      xsmall:
+        - system:
+            size: 30000
+      small:
+        - system:
+            size: 50000
+      medium:
+        - system:
+            size: 80000
+      large:
+        - system:
+            size: 100000
+      xlarge:
+        - system:
+            size: 150000
+      xxlarge:
+        - system:
+            size: 300000
+      xxxlarge:
+        - system:
+            size: 500000
diff --git a/system/salt/master/formula/git/openstack.yml b/system/salt/master/formula/git/openstack.yml
new file mode 100644
index 0000000..17c40e9
--- /dev/null
+++ b/system/salt/master/formula/git/openstack.yml
@@ -0,0 +1,94 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            ceilometer:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-ceilometer.git'
+              revision: ${_param:salt_master_environment_revision}
+            cinder:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-cinder.git'
+              revision: ${_param:salt_master_environment_revision}
+            galera:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-galera.git'
+              revision: ${_param:salt_master_environment_revision}
+            glance:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-glance.git'
+              revision: ${_param:salt_master_environment_revision}
+            glusterfs:
+              source: git
+              address: 'https://github.com/tcpcloud/salt-formula-glusterfs.git'
+              revision: ${_param:salt_master_environment_revision}
+            haproxy:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-haproxy.git'
+              revision: ${_param:salt_master_environment_revision}
+            heat:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-heat.git'
+              revision: ${_param:salt_master_environment_revision}
+            horizon:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-horizon.git'
+              revision: ${_param:salt_master_environment_revision}
+            keepalived:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-keepalived.git'
+              revision: ${_param:salt_master_environment_revision}
+            keystone:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-keystone.git'
+              revision: ${_param:salt_master_environment_revision}
+            memcached:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-memcached.git'
+              revision: ${_param:salt_master_environment_revision}
+            mongodb:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-mongodb.git'
+              revision: ${_param:salt_master_environment_revision}
+            mysql:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-mysql.git'
+              revision: ${_param:salt_master_environment_revision}
+            murano:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-murano.git'
+              revision: ${_param:salt_master_environment_revision}
+            neutron:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-neutron.git'
+              revision: ${_param:salt_master_environment_revision}
+            nginx:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-nginx.git'
+              revision: ${_param:salt_master_environment_revision}
+            nova:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-nova.git'
+              revision: ${_param:salt_master_environment_revision}
+            opencontrail:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-opencontrail.git'
+              revision: ${_param:salt_master_environment_revision}
+            python:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-python.git'
+              revision: ${_param:salt_master_environment_revision}
+            rabbitmq:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-rabbitmq.git'
+              revision: ${_param:salt_master_environment_revision}
+            supervisor:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-supervisor.git'
+              revision: ${_param:salt_master_environment_revision}
+            swift:
+              source: git
+              address: 'https://github.com/openstack/salt-formula-swift.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/system/salt/master/formula/git/saltstack.yml b/system/salt/master/formula/git/saltstack.yml
new file mode 100644
index 0000000..d0ca453
--- /dev/null
+++ b/system/salt/master/formula/git/saltstack.yml
@@ -0,0 +1,49 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            backupninja:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-backupninja.git'
+              revision: ${_param:salt_master_environment_revision}
+            git:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-git.git'
+              revision: ${_param:salt_master_environment_revision}
+            iptables:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-iptables.git'
+              revision: ${_param:salt_master_environment_revision}
+            libvirt:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-libvirt.git'
+              revision: ${_param:salt_master_environment_revision}
+            linux:
+              module:
+                linux_netlink.py:
+                  enabled: true
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-linux.git'
+              revision: ${_param:salt_master_environment_revision}
+            ntp:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-ntp.git'
+              revision: ${_param:salt_master_environment_revision}
+            openssh:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-openssh.git'
+              revision: ${_param:salt_master_environment_revision}
+            reclass:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-reclass.git'
+              revision: ${_param:salt_master_environment_revision}
+            salt:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-salt.git'
+              revision: ${_param:salt_master_environment_revision}
+            sphinx:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-sphinx.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/system/salt/master/formula/git/stacklight.yml b/system/salt/master/formula/git/stacklight.yml
new file mode 100644
index 0000000..b72b00b
--- /dev/null
+++ b/system/salt/master/formula/git/stacklight.yml
@@ -0,0 +1,80 @@
+parameters:
+  salt:
+    master:
+      environment:
+        dev:
+          formula:
+            apache:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-apache.git'
+              revision: ${_param:salt_master_environment_revision}
+            collectd:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-collectd.git'
+              revision: ${_param:salt_master_environment_revision}
+            elasticsearch:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-elasticsearch.git'
+              revision: ${_param:salt_master_environment_revision}
+            grafana:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-grafana.git'
+              revision: ${_param:salt_master_environment_revision}
+              state:
+                grafana3_datasource.py:
+                  enabled: true
+                grafana3_dashboard.py:
+                  enabled: true
+            graphite:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-graphite.git'
+              revision: ${_param:salt_master_environment_revision}
+            heka:
+              module:
+                heka_alarming.py:
+                  enabled: true
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-heka.git'
+              revision: ${_param:salt_master_environment_revision}
+            influxdb:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-influxdb.git'
+              revision: ${_param:salt_master_environment_revision}
+            java:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-java.git'
+              revision: ${_param:salt_master_environment_revision}
+            kibana:
+              state:
+                kibana_object.py:
+                  enabled: true
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-kibana.git'
+              revision: ${_param:salt_master_environment_revision}
+            nagios:
+              module:
+                nagios_alarming.py:
+                  enabled: true
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-nagios.git'
+              revision: ${_param:salt_master_environment_revision}
+            postgresql:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-postgresql.git'
+              revision: ${_param:salt_master_environment_revision}
+            rabbitmq:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-rabbitmq.git'
+              revision: ${_param:salt_master_environment_revision}
+            redis:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-redis.git'
+              revision: ${_param:salt_master_environment_revision}
+            rsyslog:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-rsyslog.git'
+              revision: ${_param:salt_master_environment_revision}
+            sensu:
+              source: git
+              address: '${_param:salt_master_environment_repository}/salt-formula-sensu.git'
+              revision: ${_param:salt_master_environment_revision}
diff --git a/system/salt/master/formula/pkg/openstack.yml b/system/salt/master/formula/pkg/openstack.yml
new file mode 100644
index 0000000..f23bbee
--- /dev/null
+++ b/system/salt/master/formula/pkg/openstack.yml
@@ -0,0 +1,69 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            ceilometer:
+              source: pkg
+              name: salt-formula-ceilometer
+            cinder:
+              source: pkg
+              name: salt-formula-cinder
+            galera:
+              source: pkg
+              name: salt-formula-galera
+            glance:
+              source: pkg
+              name: salt-formula-glance
+            glusterfs:
+              source: pkg
+              name: salt-formula-glusterfs
+            haproxy:
+              source: pkg
+              name: salt-formula-haproxy
+            heat:
+              source: pkg
+              name: salt-formula-heat
+            horizon:
+              source: pkg
+              name: salt-formula-horizon
+            keepalived:
+              source: pkg
+              name: salt-formula-keepalived
+            keystone:
+              source: pkg
+              name: salt-formula-keystone
+            memcached:
+              source: pkg
+              name: salt-formula-memcached
+            mongodb:
+              source: pkg
+              name: salt-formula-mongodb
+            mysql:
+              source: pkg
+              name: salt-formula-mysql
+            neutron:
+              source: pkg
+              name: salt-formula-neutron
+            nginx:
+              source: pkg
+              name: salt-formula-nginx
+            nova:
+              source: pkg
+              name: salt-formula-nova
+            opencontrail:
+              source: pkg
+              name: salt-formula-opencontrail
+            python:
+              source: pkg
+              name: salt-formula-python
+            rabbitmq:
+              source: pkg
+              name: salt-formula-rabbitmq
+            supervisor:
+              source: pkg
+              name: salt-formula-supervisor
+            swift:
+              source: pkg
+              name: salt-formula-swift
diff --git a/system/salt/master/formula/pkg/saltstack.yml b/system/salt/master/formula/pkg/saltstack.yml
new file mode 100644
index 0000000..eeff26b
--- /dev/null
+++ b/system/salt/master/formula/pkg/saltstack.yml
@@ -0,0 +1,39 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            backupninja:
+              source: pkg
+              name: salt-formula-backupninja
+            git:
+              source: pkg
+              name: salt-formula-git
+            iptables:
+              source: pkg
+              name: salt-formula-iptables
+            libvirt:
+              source: pkg
+              name: salt-formula-libvirt
+            linux:
+              source: pkg
+              name: salt-formula-linux
+            nginx:
+              source: pkg
+              name: salt-formula-nginx
+            ntp:
+              source: pkg
+              name: salt-formula-ntp
+            openssh:
+              source: pkg
+              name: salt-formula-openssh
+            reclass:
+              source: pkg
+              name: salt-formula-reclass
+            salt:
+              source: pkg
+              name: salt-formula-salt
+            sphinx:
+              source: pkg
+              name: salt-formula-sphinx
diff --git a/system/salt/master/formula/pkg/stacklight.yml b/system/salt/master/formula/pkg/stacklight.yml
new file mode 100644
index 0000000..4fe75c0
--- /dev/null
+++ b/system/salt/master/formula/pkg/stacklight.yml
@@ -0,0 +1,54 @@
+parameters:
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            apache:
+              source: pkg
+              name: salt-formula-apache
+            collectd:
+              source: pkg
+              name: salt-formula-collectd
+            elasticsearch:
+              source: pkg
+              name: salt-formula-elasticsearch
+            grafana:
+              source: pkg
+              name: salt-formula-grafana
+            graphite:
+              source: pkg
+              name: salt-formula-graphite
+            heka:
+              source: pkg
+              name: salt-formula-heka
+            influxdb:
+              source: pkg
+              name: salt-formula-influxdb
+            java:
+              source: pkg
+              name: salt-formula-java
+            kibana:
+              source: pkg
+              name: salt-formula-kibana
+            #nagios:
+            #  source: pkg
+            #  name: salt-formula-nagios
+            postgresql:
+              source: pkg
+              name: salt-formula-postgresql
+            rabbitmq:
+              source: pkg
+              name: salt-formula-rabbitmq
+            redis:
+              source: pkg
+              name: salt-formula-redis
+            rsyslog:
+              source: pkg
+              name: salt-formula-rsyslog
+            sensu:
+              source: pkg
+              name: salt-formula-sensu
+            nagios:
+              source: pkg
+              name: salt-formula-nagios
diff --git a/system/salt/master/git.yml b/system/salt/master/git.yml
new file mode 100644
index 0000000..5a922af
--- /dev/null
+++ b/system/salt/master/git.yml
@@ -0,0 +1,9 @@
+classes:
+- system.salt.master.single
+- system.salt.master.formula.git.openstack
+- system.salt.master.formula.git.saltstack
+- system.salt.master.formula.git.stacklight
+parameters:
+  _param:
+    salt_master_environment_repository: "https://github.com/tcpcloud"
+    salt_master_environment_revision: master
diff --git a/system/salt/master/pkg.yml b/system/salt/master/pkg.yml
new file mode 100644
index 0000000..d1c8a1a
--- /dev/null
+++ b/system/salt/master/pkg.yml
@@ -0,0 +1,6 @@
+classes:
+- system.salt.master.single
+- system.salt.master.formula.pkg.openstack
+- system.salt.master.formula.pkg.saltstack
+- system.salt.master.formula.pkg.stacklight
+- system.linux.system.repo.tcp_salt
diff --git a/system/salt/master/single.yml b/system/salt/master/single.yml
new file mode 100644
index 0000000..9764a97
--- /dev/null
+++ b/system/salt/master/single.yml
@@ -0,0 +1,19 @@
+classes:
+- service.git.client
+- service.salt.master.single
+parameters:
+  linux:
+    system:
+      sysctl:
+        net.core.rmem_max: 16777216
+        net.core.wmem_max: 16777216
+        net.ipv4.tcp_rmem: 4096 87380 16777216
+        net.ipv4.tcp_wmem: 4096 87380 16777216
+  salt:
+    master:
+      accept_policy: auto_accept
+      worker_threads: 40
+      command_timeout: 10
+      peer:
+        '.*':
+          - x509.sign_remote_certificate
diff --git a/system/salt/minion/master.yml b/system/salt/minion/master.yml
new file mode 100644
index 0000000..fbeb178
--- /dev/null
+++ b/system/salt/minion/master.yml
@@ -0,0 +1,2 @@
+classes:
+- service.salt.minion.master
diff --git a/system/salt/minion/pki/authority.yml b/system/salt/minion/pki/authority.yml
new file mode 100644
index 0000000..fa84966
--- /dev/null
+++ b/system/salt/minion/pki/authority.yml
@@ -0,0 +1,19 @@
+parameters:
+  salt:
+    minion:
+      ca:
+        mk_lab_ca:
+          common_name: mk_lab_ca
+          country: cz
+          locality: Prague
+          organization: Mirantis
+          signing_policy:
+            cert_server:
+              type: v3_edge_cert_server
+              minions: '*'
+            cert_client:
+              type: v3_edge_cert_client
+              minions: '*'
+          days_valid:
+            authority: 3650
+            certificate: 3650
diff --git a/system/salt/minion/pki/certificate.yml b/system/salt/minion/pki/certificate.yml
new file mode 100644
index 0000000..4bf4ef3
--- /dev/null
+++ b/system/salt/minion/pki/certificate.yml
@@ -0,0 +1,9 @@
+parameters:
+  salt:
+    minion:
+      cert:
+        proxy_cert:
+          host: ${_param:salt_minion_ca_host}
+          signing_policy: cert_server
+          authority: mk_lab_ca
+          common_name: ${_param:cluster_public_host}