# Ansible Playbook for Proxmox VM Management This Ansible playbook automates the creation, deletion, and configuration of virtual machines (VMs) on a Proxmox server. ## Prerequisites - Ansible installed on the local machine - Ansible community.general.proxmox_kvm module - Access to a Proxmox server with API access enabled - Python `proxmoxer` library installed (`pip install proxmoxer`) ## Setup 1. Clone this repository: ```sh git clone https://github.com/TheTaqiTahmid/proxmox_ansible_automation ``` 2. Update the `inventory` file with your Proxmox server details: ```yaml all: hosts: proxmox: ansible_host: your_proxmox_ip ansible_user: your_proxmox_user ansible_password: your_proxmox_password ``` In the current example implementation in `inventories/hosts.yaml`, there are multiple groups depending on the types of hosts. 3. Add group-related variables to the group file under the `group_vars` directory and individual host-related variables to the files under the `host_vars` directory. Ansible will automatically pick up these variables. 4. Add the following secrets to the ansible-vault: - proxmox_api_token_id - proxmox_api_token - ansible_proxmox_user - ansible_vm_user - proxmox_user - ansible_ssh_private_key_file - ciuser - cipassword One can create the secret file using the following command: ```sh ansible-vault create secrets/vault.yml ``` To encrypt and decrypt the file, use the following commands: ```sh ansible-vault encrypt secrets/vault.yml ansible-vault decrypt secrets/vault.yml ``` The password for vault file can be stored in a file or can be provided during the encryption/decryption process. The password file location can be specified in the `ansible.cfg` file. ## Playbooks ### Create VM To create the VMs, run the following command: ```sh ansible-playbook playbooks/create-vms.yaml ``` The playbook can be run against specific Proxmox instance using: ```sh ansible-playbook playbooks/create-vms.yaml --limit proxmox1 ``` ### Delete VM To delete existing VMs, run the following command: ```sh ansible-playbook playbooks/destroy-vms.yaml ``` Similarly the destory playbook can be run against specific Proxmox instance using: ```sh ansible-playbook playbooks/destroy-vms.yaml --limit proxmox1 ``` ### Configure VM To configure an existing VM, run the following command: ```sh ansible-playbook playbooks/configure-vms.yaml ``` The configuration can be limited to individual VMs using limits: ```sh ansible-playbook playbooks/configure-vms.yaml --limit vm6 ``` ## Variables The playbooks use the following variables, which can be customized in the `group_vars/proxmox.yml` file: - `vm_id`: The ID of the VM - `vm_name`: The name of the VM - `vm_memory`: The amount of memory for the VM - `vm_cores`: The number of CPU cores for the VM - `vm_disk_size`: The size of the VM disk ## Author - Taqi Tahmid (mdtaqitahmid@gmail.com)