Create all-in-one model with ironic on pike

The new model virtual-mcp11-aio-ironic has been created. This model
includes classes added on cluster level which enable following
ironic modules: ironic api, ironic conductor, ironic client
and ironic baremetal simulator

Jira reference: PROD-18590

Change-Id: Ib53b879a1dfdb95b8d89e4c8f7348119dbe17fd6
diff --git a/classes/cluster/virtual-mcp11-aio-ironic/.env b/classes/cluster/virtual-mcp11-aio-ironic/.env
new file mode 100644
index 0000000..fb692c4
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-aio-ironic/.env
@@ -0,0 +1 @@
+FORMULAS_SALT_MASTER+=(java openssh ntp nginx collectd sensu heka sphinx mysql galera grafana libvirt rsyslog glusterfs postfix xtrabackup freeipa prometheus telegraf elasticsearch kibana rundeck devops-portal libvirt rsyslog memcached rabbitmq apache keystone glance nova neutron cinder heat horizon ironic bind powerdns designate barbican iptables runtest artifactory tftpd-hpa baremetal-simulator)
diff --git a/classes/cluster/virtual-mcp11-aio-ironic/infra/config.yml b/classes/cluster/virtual-mcp11-aio-ironic/infra/config.yml
new file mode 100644
index 0000000..3044dc2
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-aio-ironic/infra/config.yml
@@ -0,0 +1,3 @@
+classes:
+- cluster.virtual-mcp11-aio-ironic
+- cluster.virtual-mcp11-aio.infra.config
diff --git a/classes/cluster/virtual-mcp11-aio-ironic/infra/init.yml b/classes/cluster/virtual-mcp11-aio-ironic/infra/init.yml
new file mode 100644
index 0000000..219ed8d
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-aio-ironic/infra/init.yml
@@ -0,0 +1,2 @@
+classes:
+  - cluster.virtual-mcp11-aio.infra
diff --git a/classes/cluster/virtual-mcp11-aio-ironic/init.yml b/classes/cluster/virtual-mcp11-aio-ironic/init.yml
new file mode 100755
index 0000000..448fe80
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-aio-ironic/init.yml
@@ -0,0 +1,5 @@
+classes:
+- cluster.virtual-mcp11-aio
+- cluster.virtual-mcp11-aio-ironic.infra
+- cluster.virtual-mcp11-aio-ironic.openstack
+- cluster.overrides
diff --git a/classes/cluster/virtual-mcp11-aio-ironic/openstack/init.yml b/classes/cluster/virtual-mcp11-aio-ironic/openstack/init.yml
new file mode 100755
index 0000000..60611af
--- /dev/null
+++ b/classes/cluster/virtual-mcp11-aio-ironic/openstack/init.yml
@@ -0,0 +1,151 @@
+classes:
+- cluster.virtual-mcp11-aio.openstack
+- system.galera.server.database.ironic
+- system.keystone.client.service.ironic
+- system.nova.compute_ironic.single
+- system.neutron.gateway.ironic
+- system.neutron.client.service.ironic
+- system.ironic.api.single
+- system.ironic.tftpd_hpa
+- system.ironic.conductor.single
+- system.apache.server.site.ironic
+- service.ironic.client
+- service.baremetal_simulator.simulator
+- service.baremetal_simulator.nodes_flat
+- service.baremetal_simulator.network.ovs
+- system.salt.master.formula.pkg.baremetal
+- system.neutron.gateway.ironic
+- system.nova.compute_ironic.single
+parameters:
+  _param:
+    interface_mtu: 1450
+    cluster_internal_protocol: http
+    cluster_public_protocol: http
+    baremetal_interface: ens7
+    baremetal_gateway_ip: 192.168.90.1
+    ironic_version: ${_param:openstack_version}
+    ironic_service_protocol: ${_param:cluster_internal_protocol}
+    ironic_api_type: 'public'
+    cluster_baremetal_local_address: ${_param:single_baremetal_address}
+    openstack_baremetal_node01_address: ${_param:single_address}
+    single_baremetal_address: ${_param:openstack_baremetal_node01_baremetal_address}
+    openstack_baremetal_node01_baremetal_address: 192.168.90.11
+    openstack_baremetal_node01_hostname: cfg01
+    openstack_baremetal_address: 192.168.90.10
+    keystone_ironic_password: workshop
+    ironic_service_host: ${_param:single_address}
+    mysql_ironic_password: workshop
+    openstack_baremeta_neutron_subnet_cidr: 192.168.90.0/24
+    openstack_baremeta_neutron_subnet_allocation_start: 192.168.90.100
+    openstack_baremeta_neutron_subnet_allocation_end: 192.168.90.150
+  ironic:
+    api:
+      bind:
+        address: 0.0.0.0
+      message_queue:
+        port: ${_param:rabbitmq_port}
+        ssl:
+          enabled: ${_param:rabbitmq_ssl_enabled}
+      database:
+        ssl:
+          enabled: ${_param:galera_ssl_enabled}
+    conductor:
+      api_url: http://${_param:single_baremetal_address}:6385
+      http_url: http://${_param:single_baremetal_address}
+      message_queue:
+        port: ${_param:rabbitmq_port}
+        ssl:
+          enabled: ${_param:rabbitmq_ssl_enabled}
+      database:
+        ssl:
+          enabled: ${_param:galera_ssl_enabled}
+      enabled_drivers:
+        - pxe_ipmitool
+      identity:
+        engine: keystone
+        region: RegionOne
+        host: ${_param:single_address}
+        port: 35357
+        user: ironic
+        password: ${_param:keystone_ironic_password}
+        tenant: service
+        auth_type: password
+        user_domain_id: default
+        project_domain_id: default
+        protocol: ${_param:cluster_internal_protocol}
+      neutron:
+        auth_strategy: keystone
+        auth_type: password
+        cleaning_network: baremetal-flat-network
+        provisioning_network: baremetal-flat-network
+        project_domain_id: ${ironic:conductor:identity:project_domain_id}
+        user_domain_id: ${ironic:conductor:identity:user_domain_id}
+        project_name: ${ironic:conductor:identity:tenant}
+        password: ${ironic:conductor:identity:password}
+        username: ${ironic:conductor:identity:user}
+        url: http://${_param:neutron_service_host}:9696
+        project_name: service
+      glance:
+        auth_strategy: 'keystone'
+        auth_type: password
+        host: ${_param:cluster_vip_address}
+        port: 9292
+        region: ${_param:openstack_region}
+        username: glance
+        tenant: service
+        project_name: service
+        project_domain_id: ${ironic:conductor:identity:project_domain_id}
+        user_domain_id: ${ironic:conductor:identity:user_domain_id}
+        password: ${_param:keystone_glance_password}
+  nova:
+    controller:
+      compute_driver: ironic.IronicDriver
+      ironic:
+        protocol: ${_param:cluster_internal_protocol}
+        host: ${_param:single_address}
+        port: 6385
+        auth_type: password
+        project_domain_name: default
+        user: ironic
+        user_domain_name: default
+        password: ${_param:keystone_ironic_password}
+  linux:
+    network:
+      interface:
+        baremetal_interface:
+          enabled: true
+          name: ${_param:baremetal_interface}
+          mtu: ${_param:interface_mtu}
+          proto: static
+          address: ${_param:baremetal_gateway_ip}
+          netmask: 255.255.255.0
+          type: eth
+        br-baremetal:
+          enabled: true
+          type: ovs_bridge
+          mtu: ${_param:interface_mtu}
+        phy-baremetal:
+          enabled: true
+          type: ovs_port
+          bridge: br-baremetal
+          proto: static
+          address: ${_param:cluster_baremetal_local_address}
+          netmask: 255.255.255.0
+    system:
+      group:
+        libvirtd:
+          enabled: true
+          name: libvirtd
+  neutron:
+    server:
+      ironic_enabled: true
+      backend:
+        ironic_vlan_range: 100:1000
+  salt:
+    master:
+      environment:
+        prd:
+          formula:
+            baremetal_simulator:
+              name: salt-formula-baremetal-simulator
+              source: pkg