> For the complete documentation index, see [llms.txt](https://docs.nodeum.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nodeum.io/data-archiving/install-and-deploy/ansible-based-installation.md).

# Ansible based installation

## Prerequisites

Nodeum is compatible with the RHEL, Rocky, and AlmaLinux families. Please refer to the software requirements for further details.

**Installing Nodeum Software**

Nodeum can be installed on either a physical server or a virtual machine. To learn more about hardware requirements, please refer to the official documentation. The installation process uses an Ansible Playbook/

### Checklist

1. **DNS Resolution**: Ensure DNS resolution is functioning correctly.
2. **Server Time**: Verify the server's time is accurately configured.
3. **Packages**: `unzip` - `tar` - `wget` applications have to installed
4. **Rights & Privileges:** Execute the installation as root to get all required priviledges.

### Requirements

<details>

<summary>Install requirements for EL8 (RHEL, Rocky Linux, AlmaLinux)</summary>

Ensure `Python 3.9` is installed

```bash
$ ls /usr/bin/python* -l
lrwxrwxrwx. 1 root root 9 Apr 25 2025 /usr/bin/python -> ./python3
lrwxrwxrwx. 1 root root 9 Apr 25 2025 /usr/bin/python3 -> python3.9
-rwxr-xr-x. 1 root root 15448 Apr 25 2025 /usr/bin/python3.9
```

If not install it:

```bash
$ dnf install python39
```

Installation of pip linked to python 3.9

```bash
$ dnf install python-pip
$ pip install pip --upgrade
```

Install Ansible. `ansible-core` must be 2.15 or later and earlier than 2.19.

```bash
$ pip install ansible
```

Verify the `ansible` version and the associated collections

```bash
$ ansible --version
ansible [core 2.15.13]
  config file = /root/v1-101-1/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.25 (main, Dec 18 2025, 08:36:10) [GCC 8.5.0 20210514 (Red Hat 8.5.0-28)] (/usr/bin/python3.9)
  jinja version = 3.1.6
  libyaml = True

$ ansible-galaxy collection list | grep -E "community.general|community.crypto|ansible.utils|community.mongodb|gluster.gluster|community.mysql"
ansible.utils                 2.12.0
community.crypto              2.16.1
community.general             7.5.2
community.mongodb             1.6.3
community.mysql               3.8.0
gluster.gluster               1.0.2
```

</details>

<details>

<summary>Install requirements for EL9 (RHEL, Rocky Linux, AlmaLinux)</summary>

Ensure `Python 3.9` is installed

```bash
$ ls /usr/bin/python* -l
lrwxrwxrwx. 1 root root 9 Apr 25 2025 /usr/bin/python -> ./python3
lrwxrwxrwx. 1 root root 9 Apr 25 2025 /usr/bin/python3 -> python3.9
-rwxr-xr-x. 1 root root 15448 Apr 25 2025 /usr/bin/python3.9
```

If not install it:

```bash
$ dnf install python39
```

Installation of pip linked to python 3.9

```bash
$ dnf install python-pip
$ pip install pip --upgrade
```

Install Ansible. `ansible-core` must be 2.15 or later and earlier than 2.19.

```bash
$ pip install ansible
```

Verify the `ansible` version and the associated collections

```bash
$ ansible --version
ansible [core 2.15.13]
  config file = /root/v1-101-0/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)
  jinja version = 3.1.6
  libyaml = True
$ ansible-galaxy collection list | grep -E "community.general|community.crypto|ansible.utils|community.mongodb|gluster.gluster|community.mysql"
ansible.utils                 2.12.0
community.crypto              2.16.1
community.general             7.5.2
community.mongodb             1.6.3
community.mysql               3.8.0
gluster.gluster               1.0.2
```

Upgrade the `community.general` collection is lower than `8.2.0`

{% hint style="info" %}
community.general.dnf\_config\_manager is required for CRB. The module has been introduced in community.general 8.2.0. It does not exist in 7.5.2.
{% endhint %}

```bash
$ ansible-galaxy collection install community.general --upgrade
$ ansible-galaxy collection list community.general

# /root/.ansible/collections/ansible_collections
Collection        Version
----------------- -------
community.general 13.0.1

# /usr/local/lib/python3.9/site-packages/ansible_collections
Collection        Version
----------------- -------
community.general 7.5.2
```

</details>

<details>

<summary>Install requirements for Ubuntu 22.04 LTS</summary>

Ensure `Python 3.10` is installed

```bash
$ ls /usr/bin/python3* -l
lrwxrwxrwx 1 root root      10 Aug  8  2024 /usr/bin/python3 -> python3.10
lrwxrwxrwx 1 root root      17 Aug  8  2024 /usr/bin/python3-config -> python3.10-config
-rwxr-xr-x 1 root root 5937704 Mar  3 11:56 /usr/bin/python3.10
lrwxrwxrwx 1 root root      34 Mar  3 11:56 /usr/bin/python3.10-config -> x86_64-linux-gnu-python3.10-config
```

If not install it:

```bash
$ apt install python3.10
```

Installation of pip linked to python 3.10

```bash
$ apt install python3-pip
$ pip3 install pip3 --upgrade
```

Install Ansible. `ansible-core` must be 2.15 or later and earlier than 2.19.

```bash
$ pip3 install ansible
```

Verify the `ansible` version and the associated collections

```bash
$ ansible --version
ansible [core 2.17.14]
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.10/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.12 (main, Mar  3 2026, 11:56:32) [GCC 11.4.0] (/usr/bin/python3)
  jinja version = 3.0.3
  libyaml = True

$ ansible-galaxy collection list | grep -E "community.general|community.crypto|ansible.utils|community.mongodb|gluster.gluster|community.mysql"
ansible.utils                            4.1.0  
community.crypto                         2.22.3 
community.general                        9.5.2  
community.mongodb                        1.7.8  
community.mysql                          3.11.0 
```

Install the `gluster.gluster` collection

```bash
$ ansible-galaxy collection install gluster.gluster
```

</details>

<details>

<summary>Install requirements for Ubuntu 24.04 LTS</summary>

Ensure `Python 3.12` is installed

```bash
$ ls /usr/bin/python3* -l
lrwxrwxrwx 1 root root      10 Nov 12  2025 /usr/bin/python3 -> python3.12
-rwxr-xr-x 1 root root 8020928 Mar 23 19:04 /usr/bin/python3.12
lrwxrwxrwx 1 root root      34 Mar 23 19:04 /usr/bin/python3.12-config -> x86_64-linux-gnu-python3.12-config
lrwxrwxrwx 1 root root      17 Nov 12  2025 /usr/bin/python3-config -> python3.12-config
```

If not install it:

```bash
$ apt install python3.12
```

Installation of pip linked to python 3.10

```bash
$ apt install python3-pip
$ pip3 install pip3 --upgrade
```

Install Ansible. `ansible-core` must be 2.15 or later and earlier than 2.19.

```bash
$ pip3 install "ansible-core<2.19" "ansible" --break-system-packages
```

Verify the `ansible` version and the associated collections

```bash
$ ansible --version
ansible [core 2.18.17]
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.12/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

$ ansible-galaxy collection list | grep -E "community.general|community.crypto|ansible.utils|community.mongodb|gluster.gluster|community.mysql"
ansible.utils                            5.1.2
community.crypto                         2.26.6
community.general                        10.7.6
community.mongodb                        1.7.10
community.mysql                          3.16.1
```

Install the `gluster.gluster` collection

```bash
$ ansible-galaxy collection install gluster.gluster
```

</details>

{% hint style="danger" %}
**Multi-nodes deployment:** Python installation and pip3 upgrade must be performed on all nodes.

**SELinux:** SELinux will be disabled during the Ansible deployment. Be ready to reboot the system afterward.
{% endhint %}

## Nodeum Installation and Update Guide

To install or update Nodeum, follow these steps. Ensure the host has unrestricted internet access.

Download the Nodeum ansible package:

```bash
$ wget get.nodeum.io/public/nodeum-v1-100.x.tar.gz
```

Extract the downloaded package:

```bash
$ tar -xvzf /root/nodeum-xxx.tar.gz
```

Navigate to the extracted directory:

```bash
$ cd v1-100.x-xx
```

Run the NODEUM ansible playbooks:

```bash
$ ansible-playbook install.yml
```

After the installation completes, the output should show no failed results:

```bash
....

TASK [nodeum.nrpe : Install check_nrpe client for testing] ***************************************************************************************************************
skipping: [srv01]

TASK [nodeum.nrpe : Test Nodeum services check via NRPE] *****************************************************************************************************************
skipping: [srv01]

TASK [nodeum.nrpe : Display NRPE test results] ***************************************************************************************************************************
skipping: [srv01]

TASK [nodeum.nrpe : Fail if NRPE test failed] ****************************************************************************************************************************
skipping: [srv01]

PLAY [keepalived] ********************************************************************************************************************************************************
skipping: no hosts matched

PLAY [lsyncd] ************************************************************************************************************************************************************
skipping: no hosts matched

PLAY RECAP ***************************************************************************************************************************************************************
srv01                      : ok=343  changed=67   unreachable=0    failed=0    skipped=198  rescued=0    ignored=2

```

Nodeum is now ready to use. Access it via your browser at `http://your-nodeum-ip-address/` or using the DNS name.

{% hint style="info" %}
If you are unable to access the Console via the default HTTP port, a local firewall might be active. To resolve this, configure the firewall to allow access through the HTTP/HTTPS protocols.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nodeum.io/data-archiving/install-and-deploy/ansible-based-installation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
