Docs rewrite

This commit is contained in:
Francesco Zimbolo
2026-04-24 12:58:14 +00:00
parent 9e294aea1a
commit 8477f5b592
7 changed files with 425 additions and 134 deletions

View File

@@ -1,21 +1,44 @@
# 01 - Prerequisites & Node Preparation
This documentation outlines the required state for bare-metal servers before executing the Ansible provisioning pipeline.
## Node Requirements
## Node State
* **OS:** Proxmox VE 9.x freshly installed.
* **Authentication:** Root password known. *(Highly Recommended: Pre-deploy your local SSH public key to the nodes using `ssh-copy-id root@<ip>` before starting. This establishes passwordless authentication from your DevContainer/Control Node and prevents Ansible from prompting you for passwords).*
* **Network:** Static IPs assigned. If deploying Linstor, the management interface and Corosync/DRBD replication should ideally be physically separated. If utilizing a single NIC, QoS/traffic shaping must be handled at the switch level to prioritize Corosync UDP (5404/5405) over DRBD replication traffic.
* **Storage:** Target block devices intended for Linstor raw LVM provisioning must contain no existing partition tables, LVM metadata, or filesystems.
Before running any playbook, each target node must meet the following conditions:
- **OS:** Proxmox VE 9.x freshly installed (Debian Trixie base).
- **Network:** Static management IP assigned and reachable from the control node.
- **SSH:** Your public key deployed to `root` on each node. The DevContainer forwards your local SSH agent automatically — run `ssh-copy-id root@<ip>` from inside the container if not already done.
- **Storage:** If using raw block devices for Linstor (e.g. `/dev/sda`), the device must either be clean or you must set `wipe_linstor_disks: true` in `group_vars`. The playbook will not silently overwrite a disk with existing data unless explicitly told to.
## Network Planning (Cluster Deployments)
For a 3-node Linstor cluster, plan two separate networks:
| Network | Purpose | Variable |
|---|---|---|
| Management | Ansible SSH, Proxmox GUI | `ansible_host` |
| Private (p2p) | Corosync heartbeat, DRBD replication | `priv_ip` |
The private network is a full-mesh point-to-point topology: each node has two dedicated NICs, one direct link to each of the other two nodes, bridged together into an interface named `p2p`. If a dedicated private network is not available, `priv_ip` can be omitted and `ansible_host` is used as fallback for both Corosync and DRBD traffic.
## Execution Environment
Local Ansible installation is not required. This repository enforces the use of an isolated VS Code DevContainer.
1. Open this repository in Visual Studio Code.
2. Ensure Docker/Podman and the "Dev Containers" extension are installed.
3. Select `Reopen in Container`. *(Note: VS Code automatically forwards your local SSH agent into the DevContainer).*
4. Open a terminal within VS Code. All paths referenced in this documentation originate from the `ansible/` directory.
A local Ansible installation is not required. The repository ships with a VS Code DevContainer that pins all required Ansible versions and collections.
1. Open the repository in Visual Studio Code.
2. Ensure Docker or Podman and the **Dev Containers** extension are installed.
3. Select **Reopen in Container** — VS Code automatically forwards your local SSH agent into the container.
4. Open a terminal inside the container. All commands in this documentation assume you are working from the `ansible/` directory:
```bash
cd ansible/
```
Verify connectivity before proceeding:
```bash
ansible all -i inventories/<customer>/hosts.ini -m ping
```
---
[Index](../README.md) | [Next: Configuring the Inventory](02-configuration.md)