================== Building Inventory ================== Atmosphere relies on an Ansible inventory in order to drive the deployment of all the components. In order to deploy Atmosphere, you will need to build a directory structure that will contain all the configuration files and secrets required to deploy the platform. The recommended layout is as follows: .. code-block:: text cloud-config ├── inventory │ ├── group_vars │ │ ├── all │ │ │ ├── ceph.yml │ │ │ ├── cluster_issuer.yml │ │ │ ├── endpoints.yml │ │ │ ├── keepalived.yml │ │ │ ├── kube-prometheus-stack.yml │ │ │ ├── kubernetes.yml │ │ │ ├── neutron.yml │ │ │ └── secrets.sops.yml │ │ ├── cephs │ │ │ └── osds.yml │ └── hosts.ini ├── playbooks │ └── site.yml └── requirements.yml The ``requirements.yml`` file is used to specify the atmosphere ansible collection version that will be used to deploy the platform. Please refer to the `Release Notes` for the version information. The file contents should look like this: .. code-block:: yaml collections: - name: vexxhost.atmosphere version: 4.3.1 To generate the inventory configuration files, you can use the ``generate_workspace`` playbook to simplify the process. The following command will generate the inventory in the specified directory: .. code-block:: bash ansible-playbook -e domain_name="yourdomain.com" \ -e workspace_path="$(pwd)/cloud-config/inventory" \ vexxhost.atmosphere.generate_workspace The ``cloud-config`` directory can be managed by any SCM tool of your choice, such as Git, and can be used to store all the configuration files and secrets required to deploy the platform. You also need to assign the domain name of your cluster to the domain_name variable for production deployments. Refer to the other sections of the `Deployment Guide` to update the configuration files according to your network and hardware specification in the inventory directory. The file contents should look like this: .. code-block:: yaml collections: - name: vexxhost.atmosphere version: 4.3.1 ************* ``hosts.ini`` ************* The ``hosts.ini`` file is the Ansible inventory file that will be used to deploy the platform. It is recommended to use the following layout: .. code-block:: ini [controllers] ctl1.cloud.atmosphere.dev ctl2.cloud.atmosphere.dev ctl3.cloud.atmosphere.dev [computes] kvm1.cloud.atmosphere.dev kvm2.cloud.atmosphere.dev kvm3.cloud.atmosphere.dev [cephs] ceph1.cloud.atmosphere.dev ceph2.cloud.atmosphere.dev ceph3.cloud.atmosphere.dev .. admonition:: FQDNs are required! The hostnames listed in the inventory file must be a FQDN that resolves to the IP address of the host. If they do not, you will have failures such as agents failing to start, live migration failures and other transient and hard to diagnose issues. ********** HTTP proxy ********** If you nodes can only access the internet through an HTTP proxy, you will need to set the following variables within your inventory which will make sure that the ``containerd`` and ``dockerd`` services are able to pull images through this HTTP proxy, as well as the ``download_artifact`` role which is used to download artifacts for deploying the cluster. .. code-block:: yaml http_proxy: http://proxy.example.com:3128 https_proxy: http://proxy.example.com:3128 no_proxy: localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,.svc,.cluster.local If you have any other services that need to access the internet without going through the proxy, you can add them to the ``no_proxy`` variable.