Model Manager dev lab cluster scaffold

Change-Id: I110004e12dbd77a0843aa32da0333ec183113f92
diff --git a/classes/cluster/model_manager/infra/config.yml b/classes/cluster/model_manager/infra/config.yml
new file mode 100644
index 0000000..a36a00f
--- /dev/null
+++ b/classes/cluster/model_manager/infra/config.yml
@@ -0,0 +1,66 @@
+classes:
+- service.git.client
+- system.linux.system.single
+- system.linux.system.repo.mcp.salt
+- system.openssh.client.lab
+- system.salt.master.api
+- system.salt.master.pkg
+- system.reclass.storage.salt
+- system.salt.minion.ca.salt_master
+- system.salt.minion.cert.proxy
+- system.sphinx.server.doc.reclass
+#- system.reclass.storage.system.model_manager
+- cluster.model_manager
+parameters:
+  _param:
+    reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab
+    reclass_data_revision: master
+    salt_master_environment_repository: "https://github.com/tcpcloud"
+    salt_master_environment_revision: master
+    reclass_config_master: ${_param:infra_config_deploy_address}
+    single_address: ${_param:infra_config_address}
+    salt_master_host: 127.0.0.1
+    salt_master_base_environment: prd
+    salt_minion_ca_host: ${linux:network:fqdn}
+    salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
+  linux:
+    network:
+      interface:
+        ens4:
+          enabled: true
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
+  reclass:
+    storage:
+      class_mapping:
+        common_node:
+          expression: all
+          node_param:
+            single_address:
+              value_template: <<node_control_ip>>
+            linux_system_codename:
+              value_template: <<node_os>>
+            salt_master_host:
+              value_template: <<node_master_ip>>
+        infra_config:
+          expression: <<node_hostname>>__startswith__cfg
+          cluster_param:
+            infra_config_address:
+              value_template: <<node_control_ip>>
+            infra_config_deploy_address:
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
+        model_manager:
+          expression: <<node_hostname>>__startswith__web
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.model_manager.dashboard
+
diff --git a/classes/cluster/model_manager/infra/init.yml b/classes/cluster/model_manager/infra/init.yml
new file mode 100644
index 0000000..c99dcd4
--- /dev/null
+++ b/classes/cluster/model_manager/infra/init.yml
@@ -0,0 +1,19 @@
+parameters:
+  _param:
+    cluster_domain: model_manager.local
+    cluster_name: model_manager
+    infra_config_deploy_address: 192.168.10.100
+    infra_config_address: 172.16.10.100
+  linux:
+    network:
+      host:
+        cfg01:
+          address: ${_param:infra_config_address}
+          names:
+          - cfg01
+          - cfg01.${_param:cluster_domain}
+        cfg:
+          address: ${_param:infra_config_address}
+          names:
+          - cfg
+          - cfg.${_param:cluster_domain}
diff --git a/classes/cluster/model_manager/init.yml b/classes/cluster/model_manager/init.yml
new file mode 100644
index 0000000..af717ac
--- /dev/null
+++ b/classes/cluster/model_manager/init.yml
@@ -0,0 +1,9 @@
+classes:
+- system.linux.system.single
+- system.openssh.server.team.lab
+- system.openssh.server.team.tcpcloud
+- system.openssh.server.team.mcp_qa
+- cluster.os_ha_ovs.infra
+- cluster.os_ha_ovs.model_manager
+- cluster.overrides
+
diff --git a/classes/cluster/model_manager/model_manager/dashboard.yml b/classes/cluster/model_manager/model_manager/dashboard.yml
new file mode 100644
index 0000000..baa7ff0
--- /dev/null
+++ b/classes/cluster/model_manager/model_manager/dashboard.yml
@@ -0,0 +1,17 @@
+classes:
+- system.linux.system.repo.ubuntu
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+#- system.model_manager.single
+- cluster.model_manager
+parameters:
+  linux:
+    network:
+      interface:
+        ens4:
+          enabled: true
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+
diff --git a/classes/cluster/model_manager/model_manager/init.yml b/classes/cluster/model_manager/model_manager/init.yml
new file mode 100644
index 0000000..1c740f9
--- /dev/null
+++ b/classes/cluster/model_manager/model_manager/init.yml
@@ -0,0 +1,2 @@
+# TODO: model_manager params
+
diff --git a/classes/cluster/model_manager/model_manager/proxy.yml b/classes/cluster/model_manager/model_manager/proxy.yml
new file mode 100644
index 0000000..b992ad6
--- /dev/null
+++ b/classes/cluster/model_manager/model_manager/proxy.yml
@@ -0,0 +1,14 @@
+classes:
+- system.nginx.server.single
+#- system.nginx.server.proxy.model_manager
+- system.salt.minion.cert.proxy
+- cluster.model_manager
+parameters:
+  _param:
+    nginx_proxy_ssl:
+      enabled: true
+      authority: ${_param:salt_minion_ca_authority}
+      engine: salt
+      mode: secure
+    salt_minion_ca_host: cfg01.${_param:cluster_domain}
+