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:

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

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:

[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

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.

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.