2025-06-10 16:15:36 +08:00

80 lines
2.2 KiB
Markdown

# Ansible Playbook for Local Incus Installation
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:** Must be installed on the machine where you are running the playbook.
```bash
sudo apt update
sudo apt install ansible -y
```
2. **Sudo Access:** Your user must have `sudo` privileges to run the playbook.
## How to Run
1. **Customize Variables (Optional):** Open `playbook.yml` and review the `vars` section.
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 --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:
1. **Configure User Access:**
Add your user to incus-admin group
```bash
sudo usermod -aG incus-admin $USER
```
To refresh group membership.
```bash
newgrp incus-admin
```
2. **Initialize Incus:**
Run the interactive initialization and follow the prompts to configure storage pools, networks, and other settings.
```bash
incus admin init
```
3. **Verify Setup:** You can test the installation by running.
```bash
incus list
```
4. **Access the Incus Web UI:**
Ensure Incus is listening on the network:
```bash
incus config set core.https_address :8443
```
5. **Setup Firewall for ufw (Optional: only if you are using ufw):**
Ensure Incus is listening on the network:
```bash
sudo ufw allow in on incusbr0
sudo ufw route allow in on incusbr0
sudo ufw route allow out on incusbr0
```
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 --ask-become-pass
```