2025-06-14 09:06:28 +08:00

89 lines
2.6 KiB
Markdown

# 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
1. **Ansible & Git:** Must be installed on the machine where you are running the playbook.
```bash
sudo apt update
sudo apt install ansible git -y
```
2. **Sudo Access:** Your user must have `sudo` privileges to run the playbook.
## How to Run
1. **Setup:** Clone the repository and go to the project directory
```bash
git clone https://git.marmattheo.com/marmattheo/LXC-Incus-stable-playbook.git incus-stable-playbook && cd incus-stable-playbook
```
2. **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.
```bash
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 Instructions
After the playbook completes successfully:
1. **Configure User Access:**
Refresh group membership.
```bash
newgrp incus-admin
```
2. **Verify Setup:**
You can test the installation by running.
```bash
incus --version
```
3. **Check Incus Initialization:**
Try checking the storage:
```bash
incus storage show default
```
> If the display is: 'Error: Storage pool not found' then initialize it through interactive mode:
Try interactive mode if initialization failed:
```bash
incus admin init
```
4. **Enable and Access the Incus Web UI:**
Enable port 8443:
```bash
incus config set core.https_address "[::]:8443"
```
Access the Web UI at:
```bash
https://localhost:8443
```
> https://vps-ip:8443 if you're running on remote server
> Follow the self-signed certificate instructions when prompted for mLTS
5. **Incus Network - Access Containers by Name (Optional):**
Configuring name-to-IP resolution so the host OS can reach Incus containers using their names.
```bash
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 or `http://container_name.incus` inside an nginx config