Updated the README with instructions on integrating Fail2Ban and modified the directory structure to accommodate new files related to this integration.
128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
# README ansible_role_proxmox_provision
|
||
|
||
> A reusable Ansible role template for for Proxmox VE
|
||
> with a focus on provisioning and managing.
|
||
|
||
[](https://opensource.org/licenses/MIT)
|
||
[](https://www.ansible.com/)
|
||
[](https://www.proxmox.com/)
|
||
|
||
## 📌 Features
|
||
|
||
✅ **Proxmox VE Optimized** - Specifically designed for Proxmox Virtual Environment
|
||
⬜ **Idempotent** - Safe to run multiple times
|
||
⏳ **Security Hardened** - Follows Ansible security best practices
|
||
⏳ **Modular** - Clear separation of concerns
|
||
⏳ **Documented** - Comprehensive README and variable documentation
|
||
⏳ **Tested** - Includes example playbook for validation
|
||
|
||
## 📊 Compatibility Matrix
|
||
|
||
| Feature \ Proxmox Version| 7 | 8 | 9 |
|
||
| ------------------------ | ---- | ---- | ---- |
|
||
| No-subscription repo | ✅ | ✅ | ✅ |
|
||
| Enterprise repo disabled | ✅ | ✅ | ✅ |
|
||
| Subscription nag removed | ✅ | ✅ | ✅ |
|
||
| Swap handling | ✅ | ✅ | ✅ |
|
||
| Logrotate protection | ✅ | ✅ | ✅ |
|
||
| Powertop auto-tune | ✅ | ✅ | ✅ |
|
||
| Utilities | ✅ | ✅ | ✅ |
|
||
| Fail2Ban Integration | ✅ | ✅ | ✅ |
|
||
|
||
## 📂 Directory Structure
|
||
|
||
```text
|
||
ansible_role_proxmox_provision/
|
||
├── README.md # This file
|
||
├── defaults/ # Default role variables (overridable)
|
||
│ └── main.yml
|
||
├── handlers/ # Role handlers (for follow-up actions)
|
||
│ └── main.yml
|
||
├── meta/ # Role metadata
|
||
│ └── main.yml
|
||
├── tasks/ # Main role tasks
|
||
│ ├── fail2ban.yml # Fail2Ban integration tasks
|
||
│ ├── logrotate.yml # logrotate setup
|
||
│ ├── main.yml # Core tasks
|
||
│ ├── powertop.yml # powertop setup
|
||
│ ├── repos.yml # Repository setup
|
||
│ ├── subscription.yml # Subscription nag removal
|
||
│ ├── swap.yml # Swap setup
|
||
│ └── utilities.yml # Utilities installation
|
||
├── templates/ # Jinja2 templates
|
||
└── vars/ # Non-overridable variables
|
||
└── main.yml
|
||
```
|
||
|
||
## 🔧 Configuration
|
||
|
||
## Default Variables (`defaults/main.yml`)
|
||
|
||
```yaml
|
||
# Default values for role variables
|
||
## Swap handling
|
||
proxmox_disable_swap: true
|
||
proxmox_swapiness: 10
|
||
proxmox_min_ram_mb_for_no_swap: 16384
|
||
|
||
## Powertop
|
||
proxmox_enable_powertop: true
|
||
|
||
## Logrotate
|
||
proxmox_logrotate_maxsize: "100M"
|
||
proxmox_logrotate_rotate: 7
|
||
...
|
||
```
|
||
|
||
## Example usage
|
||
|
||
### Example Playbook (example-playbook.yml)
|
||
|
||
```yaml
|
||
---
|
||
- hosts: proxmox_hosts
|
||
roles:
|
||
- role: ansible_role_proxmox_provision
|
||
vars:
|
||
proxmox_disable_swap: false
|
||
proxmox_swapiness: 20
|
||
proxmox_enable_powertop: true
|
||
```
|
||
|
||
### 3. Run the Playbook
|
||
|
||
```bash
|
||
ansible-playbook -i inventory.ini example-playbook.yml
|
||
```
|
||
|
||
## 🚀 Installation and Setup
|
||
|
||
### Prerequisites
|
||
|
||
- Ansible 2.12 or higher
|
||
- Python 3.8 or higher
|
||
- Proxmox VE 7.x or higher
|
||
- Root/sudo access to Proxmox hosts
|
||
|
||
### Installation
|
||
|
||
1. Clone this repository or add as a dependency in your project:
|
||
|
||
```bash
|
||
git clone https://server.com/user/ansible_role_proxmox_provision.git
|
||
```
|
||
|
||
## 📄 License
|
||
|
||
This project is licensed under the MIT License
|
||
See the [LICENSE](LICENSE) file for details.
|
||
|
||
## TODO
|
||
|
||
⏳ add molecule tests to prove idempotency
|
||
⏳ make the patch handler trigger on pve-manager upgrades
|
||
🔄 Split into VE version–aware tags ?
|
||
🕒 refactor
|
||
✗ debug
|
||
⭐ Improve documentation
|