[ATMOSPHERE-311] Add Ironic (#1711)

This is an automated cherry-pick of #1697
/assign mnaser
diff --git a/roles/ironic/tasks/network/create.yml b/roles/ironic/tasks/network/create.yml
new file mode 100644
index 0000000..8032983
--- /dev/null
+++ b/roles/ironic/tasks/network/create.yml
@@ -0,0 +1,35 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+- name: Create bare metal network
+  run_once: true
+  openstack.cloud.network:
+    cloud: atmosphere
+    # Network settings
+    name: "{{ ironic_bare_metal_network_name }}"
+    provider_physical_network: "{{ ironic_bare_metal_network_provider_physical_network }}"
+    provider_network_type: "{{ ironic_bare_metal_network_provider_network_type }}"
+    provider_segmentation_id: "{{ ironic_bare_metal_network_provider_segmentation_id }}"
+  register: ironic_bare_metal_network
+
+- name: Create bare metal network subnet
+  run_once: true
+  openstack.cloud.subnet:
+    cloud: atmosphere
+    # Subnet settings
+    network_name: "{{ ironic_bare_metal_subnet_name }}"
+    name: "{{ ironic_bare_metal_subnet_name }}"
+    cidr: "{{ ironic_bare_metal_subnet_cidr }}"
+    allocation_pool_start: "{{ ironic_bare_metal_subnet_allocation_pool_start | default(omit) }}"
+    allocation_pool_end: "{{ ironic_bare_metal_subnet_allocation_pool_end | default(omit) }}"