83 lines
2.9 KiB
Markdown
83 lines
2.9 KiB
Markdown
# TuDatTr IaC
|
|
|
|
**I do not recommend this project being used for ones own infrastructure, as
|
|
this project is heavily attuned to my specific host/network setup**
|
|
|
|
This Ansible project automates the setup of a K3s Kubernetes cluster on Proxmox VE. It also includes playbooks for configuring Docker hosts, load balancers, and other services.
|
|
|
|
## Repository Structure
|
|
|
|
The repository is organized into the following main directories:
|
|
|
|
- `playbooks/`: Contains the main Ansible playbooks for different setup scenarios.
|
|
- `roles/`: Contains the Ansible roles that are used by the playbooks.
|
|
- `vars/`: Contains variable files, including group-specific variables.
|
|
|
|
## Playbooks
|
|
|
|
The following playbooks are available:
|
|
|
|
- `proxmox.yml`: Provisions VMs and containers on Proxmox VE.
|
|
- `k3s-servers.yml`: Sets up the K3s master nodes.
|
|
- `k3s-agents.yml`: Sets up the K3s agent nodes.
|
|
- `k3s-loadbalancer.yml`: Configures a load balancer for the K3s cluster.
|
|
- `k3s-storage.yml`: Configures storage for the K3s cluster.
|
|
- `docker.yml`: Sets up Docker hosts and their load balancer.
|
|
- `docker-host.yml`: Configures the docker hosts.
|
|
- `docker-lb.yml`: Configures a load balancer for Docker services.
|
|
- `kubernetes_setup.yml`: A meta-playbook for setting up the entire Kubernetes cluster.
|
|
|
|
## Roles
|
|
|
|
The following roles are defined:
|
|
|
|
- `common`: Common configuration tasks for all nodes.
|
|
- `proxmox`: Manages Proxmox VE, including VM and container creation.
|
|
- `k3s_server`: Installs and configures K3s master nodes.
|
|
- `k3s_agent`: Installs and configures K3s agent nodes.
|
|
- `k3s_loadbalancer`: Configures an Nginx-based load balancer for the K3s cluster.
|
|
- `k3s_storage`: Configures storage solutions for Kubernetes.
|
|
- `docker_host`: Installs and configures Docker.
|
|
- `kubernetes_argocd`: Deploys Argo CD to the Kubernetes cluster.
|
|
- `node_exporter`: Installs the Prometheus Node Exporter for monitoring.
|
|
- `reverse_proxy`: Configures a Caddy-based reverse proxy.
|
|
|
|
## Usage
|
|
|
|
1. **Install dependencies:**
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
ansible-galaxy install -r requirements.yml
|
|
```
|
|
|
|
2. **Configure variables:**
|
|
|
|
- Create an inventory file (e.g., `vars/k3s.ini`).
|
|
- Adjust variables in `vars/group_vars/` to match your environment.
|
|
|
|
3. **Run playbooks:**
|
|
|
|
```bash
|
|
# To provision VMs on Proxmox
|
|
ansible-playbook -i vars/proxmox.ini playbooks/proxmox.yml
|
|
|
|
# To set up the K3s cluster
|
|
ansible-playbook -i vars/k3s.ini playbooks/kubernetes_setup.yml
|
|
```
|
|
|
|
## Notes
|
|
|
|
### Vault Git Diff
|
|
|
|
This repo has a `.gitattributes` which points at the repos ansible-vault files.
|
|
These can be temporarily decrypted for git diff by adding this in conjunction with the `.gitattributes`:
|
|
```sh
|
|
# https://stackoverflow.com/questions/29937195/how-to-diff-ansible-vault-changes
|
|
git config --global diff.ansible-vault.textconv "ansible-vault view"
|
|
```
|
|
|
|
## Disclaimer
|
|
|
|
This project is highly customized for the author's specific environment. Using it without modification is not recommended.
|