[ATMOSPHERE-308] Add Ironic (#1697) (#1725)

Manual cherry-pick for stable/2023.1

Reviewed-by: Mohammed Naser <mnaser@vexxhost.com>
diff --git a/roles/ironic/vars/main.yml b/roles/ironic/vars/main.yml
new file mode 100644
index 0000000..a965b1b
--- /dev/null
+++ b/roles/ironic/vars/main.yml
@@ -0,0 +1,78 @@
+# Copyright (c) 2023 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.
+
+_ironic_helm_values:
+  endpoints: "{{ openstack_helm_endpoints }}"
+  images:
+    tags: "{{ atmosphere_images | vexxhost.atmosphere.openstack_helm_image_tags('ironic') }}"
+  bootstrap:
+    image:
+      enabled: false
+    network:
+      enabled: false
+    object_store:
+      enabled: false
+  dependencies:
+    static:
+      api:
+        jobs:
+          - ironic-db-sync
+          - ironic-ks-user
+          - ironic-ks-endpoints
+          - ironic-rabbit-init
+          # NOTE(mnaser): We're managing all the networks via Ansible.
+          # - ironic-manage-cleaning-network
+      conductor:
+        jobs:
+          - ironic-db-sync
+          - ironic-ks-user
+          - ironic-ks-endpoints
+          - ironic-rabbit-init
+          # NOTE(mnaser): We're managing all the networks via Ansible.
+          # - ironic-manage-cleaning-network
+  conf:
+    ironic:
+      DEFAULT:
+        log_config_append: null
+        enabled_network_interfaces: flat,neutron
+        default_network_interface: flat
+      conductor:
+        clean_step_priority_override: deploy.erase_devices_express:5
+        deploy_kernel: "{{ ironic_python_agent_deploy_kernel.openstack_image.id }}"
+        deploy_ramdisk: "{{ ironic_python_agent_deploy_ramdisk.openstack_image.id }}"
+      deploy:
+        erase_devices_priority: 0
+        erase_devices_metadata_priority: 0
+      neutron:
+        cleaning_network: "{{ ironic_bare_metal_network_name }}"
+        inspection_network: "{{ ironic_bare_metal_network_name }}"
+        provisioning_network: "{{ ironic_bare_metal_network_name }}"
+        rescuing_network: "{{ ironic_bare_metal_network_name }}"
+      pxe:
+        kernel_append_params: "ipa-insecure=true systemd.journald.forward_to_console=yes"
+      service_catalog:
+        valid_interfaces: public
+  pod:
+    affinity:
+      anti:
+        type:
+          conductor: requiredDuringSchedulingIgnoredDuringExecution
+    replicas:
+      api: 3
+      conductor: 3
+  manifests:
+    ingress_api: false
+    service_ingress_api: false
+    # NOTE(mnaser): We're managing all the networks via Ansible.
+    job_manage_cleaning_network: false