3.1 KiB
Ansible Playbook for LXC/Incus Installation (Debian/Ubuntu)
This playbook automates the installation and setup of the stable version of Incus on the local machine (Debian/Ubuntu). It is designed to be run directly on the server you wish to configure.
Prerequisites
- Ansible & Git: Must be installed on the machine where you are running the playbook.
sudo apt update sudo apt install ansible git -y
- Sudo Access: Your user must have
sudo
privileges to run the playbook.
How to Run
-
Setup: Clone the repository and go to the project directory
git clone https://git.marmattheo.com/marmattheo/LXC-Incus-stable-setup.git ~/incus-stable && cd ~/incus-stable
-
Execute the Playbook: Run the following command from the same directory as the playbook file. It will prompt you for your
sudo
password to perform the administrative tasks.ansible-playbook playbook.yml -i inventory.ini --ask-become-pass
--ask-become-pass
: This flag tells Ansible to prompt for the password needed for privilege escalation (sudo
).
Post-Installation Steps
After the playbook completes successfully:
-
Configure User Access:
Add your user to incus-admin group
sudo usermod -aG incus-admin $USER
To refresh group membership.
newgrp incus-admin
-
Initialize Incus:
Run the interactive initialization and follow the prompts to configure storage pools, networks, and other settings.
incus admin init
Press 'Enter' all throughout the interactive initialization for defaults
-
Verify Setup:
You can test the installation by running.
incus --version
This should return incus current version i.e., '6.13'
-
Access the Incus Web UI:
Ensure Incus is listening on the network:
incus config set core.https_address [::]:8443
Then, access the Web UI at:
https://localhost:8443
If you're using a remote server use ipv4/ipv6 instead: https://vps-ip:8443
Follow the self-signed certificate instructions when prompted to start using Incus.
-
Configure Firewall using ufw (Optional):
Install and enable ufw:
sudo apt install ufw -y && sudo ufw enable -y
Ensure Incus is listening on the network:
sudo ufw allow in on incusbr0 sudo ufw route allow in on incusbr0 sudo ufw route allow out on incusbr0
-
Incus Network - Access Containers by Name (Optional):
Configuring name-to-IP resolution so the host OS can reach Incus containers using their names.
ansible-playbook incus-network.yml -i inventory.ini --ask-become-pass
After this you should be able to reach your containers via their names or with the domain .incus
i.e.,
sudo ping container_name
,sudo ping container_name.incus
on terminal orhttp://container_name.incus
inside an nginx config