50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
# Ansible for Homelab
|
|
|
|
This Ansible setup is designed to automate the configuration and maintenance of servers and applications in the homelab. It includes playbooks for common tasks, inventory management for different environments, and a structured way to handle variables and secrets.
|
|
|
|
## Directory Structure
|
|
|
|
- `inventory/`: Contains the inventory files that define the hosts and groups of hosts managed by Ansible.
|
|
- `playbooks/`: Contains the Ansible playbooks for various automation tasks.
|
|
- `secrets.yml`: This file is intended to store sensitive data like passwords and API keys. It is recommended to encrypt this file using Ansible Vault.
|
|
- `example_secrets.yml`: An example secrets file.
|
|
- `vars.yml`: This file can be used to store non-sensitive variables that are used across multiple playbooks.
|
|
|
|
## Getting Started
|
|
|
|
1. **Install Ansible:** Make sure you have Ansible installed on your control machine.
|
|
2. **Inventory:** Update the `inventory/hosts.ini` file with the IP addresses and connection details for your servers.
|
|
3. **Secrets:** Create a `secrets.yml` file based on the `example_secrets.yml` template and encrypt it using Ansible Vault for security.
|
|
4. **Run a Playbook:** You can run a playbook using the `ansible-playbook` command. For example:
|
|
```bash
|
|
ansible-playbook -i inventory/hosts.ini playbooks/apt_upgrade.yml
|
|
```
|
|
|
|
## Proxmox Integration Setup
|
|
|
|
To use the provisioning playbooks (`create_lxc.yml`), you must configure Proxmox API access.
|
|
|
|
### 1. Requirements on Control Node
|
|
Install `community.general` collection:
|
|
```bash
|
|
ansible-galaxy collection install community.general
|
|
```
|
|
|
|
### 2. Create Proxmox User & Token
|
|
1. **Create User**: In Proxmox, go to **Datacenter > Permissions > Users** and add `ansible@pve` (Proxmox VE authentication).
|
|
2. **Create Token**: Go to **API Tokens**, add a token for `ansible@pve` (e.g., `ansible-token`). **Save the Secret!**
|
|
3. **Permissions**: Go to **Permissions**, add User Permission for `ansible@pve`:
|
|
- Path: `/`
|
|
- Role: `Administrator` (or a custom role with VM/CT creation privileges).
|
|
|
|
### 3. Configure Secrets
|
|
Update your `secrets.yml` (do not commit this file!) with the credentials:
|
|
|
|
```yaml
|
|
proxmox_api_user: "ansible@pve"
|
|
proxmox_api_token_id: "ansible-token"
|
|
proxmox_api_token_secret: "YOUR_SECRET_HERE"
|
|
proxmox_node: "proxmox"
|
|
proxmox_storage: "local"
|
|
```
|