# 01 - Prerequisites & Node Preparation ## Node Requirements 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@` 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 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//hosts.ini -m ping ``` --- [Index](../README.md) | [Next: Configuring the Inventory](02-configuration.md)