added init-pressed on admin init; imported incus network playbook
This commit is contained in:
		
							parent
							
								
									2bc5236ba0
								
							
						
					
					
						commit
						750435b8d3
					
				
							
								
								
									
										62
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								README.md
									
									
									
									
									
								
							@ -14,11 +14,9 @@ This playbook automates the installation and setup of the **stable** version of
 | 
			
		||||
## How to Run
 | 
			
		||||
1. **Setup:** Clone the repository and go to the project directory
 | 
			
		||||
    ```bash
 | 
			
		||||
    git clone https://git.marmattheo.com/marmattheo/incus-stable-playbook.git && cd incus-stable-playbook
 | 
			
		||||
    git clone https://git.marmattheo.com/marmattheo/LXC-Incus-stable-playbook.git && cd incus-stable-playbook
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
@ -33,73 +31,27 @@ 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.
 | 
			
		||||
    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
 | 
			
		||||
    ```
 | 
			
		||||
    > Press 'Enter' all throughout the interactive initialization for defaults
 | 
			
		||||
 | 
			
		||||
3.  **Verify Setup:** 
 | 
			
		||||
2.  **Verify Setup:** 
 | 
			
		||||
 | 
			
		||||
    You can test the installation by running.
 | 
			
		||||
    
 | 
			
		||||
    ```bash
 | 
			
		||||
    incus list
 | 
			
		||||
    incus --version
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
4.  **Access the Incus Web UI:** 
 | 
			
		||||
3.  **Access the Incus Web UI:** 
 | 
			
		||||
 | 
			
		||||
    Ensure Incus is listening on the network:
 | 
			
		||||
    
 | 
			
		||||
    ```bash
 | 
			
		||||
    incus config set core.https_address :8443
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
    Then, access the Web UI at:
 | 
			
		||||
    Access the Web UI at:
 | 
			
		||||
 | 
			
		||||
    ```bash
 | 
			
		||||
    https://localhost:8443 or https://vps-ip:8443
 | 
			
		||||
    ```
 | 
			
		||||
    > Follow the self-signed certificate instructions when prompted.
 | 
			
		||||
 | 
			
		||||
5.  **Configure Firewall using ufw (Optional):** 
 | 
			
		||||
 | 
			
		||||
    Install and enable ufw:
 | 
			
		||||
    ```bash
 | 
			
		||||
    sudo apt install ufw -y && sudo ufw enable -y
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
    ```
 | 
			
		||||
    > 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
 | 
			
		||||
 | 
			
		||||
    > Follow the self-signed certificate instructions when prompted for mLTS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										45
									
								
								init-preseed.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								init-preseed.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
config:
 | 
			
		||||
  core.https_address: :8443
 | 
			
		||||
networks:
 | 
			
		||||
- config:
 | 
			
		||||
    ipv4.address: 10.69.69.1/24
 | 
			
		||||
    ipv4.nat: "true"
 | 
			
		||||
    ipv6.address: fd42:4e03:3ced:c255::1/64
 | 
			
		||||
    ipv6.nat: "true"
 | 
			
		||||
  description: ""
 | 
			
		||||
  name: incusbr0
 | 
			
		||||
  type: bridge
 | 
			
		||||
  project: default
 | 
			
		||||
storage_pools:
 | 
			
		||||
- config:
 | 
			
		||||
    source: /var/lib/incus/storage-pools/default
 | 
			
		||||
  description: ""
 | 
			
		||||
  name: default
 | 
			
		||||
  driver: dir
 | 
			
		||||
storage_volumes: []
 | 
			
		||||
profiles:
 | 
			
		||||
- config: {}
 | 
			
		||||
  description: Default Incus profile
 | 
			
		||||
  devices:
 | 
			
		||||
    eth0:
 | 
			
		||||
      name: eth0
 | 
			
		||||
      network: incusbr0
 | 
			
		||||
      type: nic
 | 
			
		||||
    root:
 | 
			
		||||
      path: /
 | 
			
		||||
      pool: default
 | 
			
		||||
      type: disk
 | 
			
		||||
  name: default
 | 
			
		||||
  project: ""
 | 
			
		||||
projects:
 | 
			
		||||
- config:
 | 
			
		||||
    features.images: "true"
 | 
			
		||||
    features.networks: "true"
 | 
			
		||||
    features.networks.zones: "true"
 | 
			
		||||
    features.profiles: "true"
 | 
			
		||||
    features.storage.buckets: "true"
 | 
			
		||||
    features.storage.volumes: "true"
 | 
			
		||||
  description: Default Incus project
 | 
			
		||||
  name: default
 | 
			
		||||
certificates: []
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										48
									
								
								playbook.yml
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								playbook.yml
									
									
									
									
									
								
							@ -1,5 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Install Incus from Zabbly Stable Repository
 | 
			
		||||
- name: Install and Initialize Incus from Zabbly Stable Repository
 | 
			
		||||
  hosts: localhost
 | 
			
		||||
  become: yes
 | 
			
		||||
 | 
			
		||||
@ -63,6 +63,50 @@
 | 
			
		||||
          - incus-ui-canonical
 | 
			
		||||
        state: present
 | 
			
		||||
 | 
			
		||||
    - name: Wait for incus daemon to be ready
 | 
			
		||||
      shell: |
 | 
			
		||||
        until incus list &>/dev/null; do
 | 
			
		||||
          sleep 1
 | 
			
		||||
        done
 | 
			
		||||
      retries: 10
 | 
			
		||||
      delay: 2
 | 
			
		||||
      register: incus_ready
 | 
			
		||||
      until: incus_ready.rc == 0
 | 
			
		||||
 | 
			
		||||
    - name: Run incus admin init with preseed
 | 
			
		||||
      command: incus admin init --preseed < init-preseed.yml
 | 
			
		||||
      args:
 | 
			
		||||
        chdir: "{{ playbook_dir }}"
 | 
			
		||||
 | 
			
		||||
    - name: Add current user to incus-admin group
 | 
			
		||||
      user:
 | 
			
		||||
        name: "{{ lookup('env', 'SUDO_USER') | default(lookup('env', 'USER'), true) }}"
 | 
			
		||||
        groups: incus-admin
 | 
			
		||||
        append: yes
 | 
			
		||||
 | 
			
		||||
    - name: Ensure Incus listens on HTTPS port 8443
 | 
			
		||||
      command: incus config set core.https_address :8443
 | 
			
		||||
 | 
			
		||||
    - name: Install UFW
 | 
			
		||||
      apt:
 | 
			
		||||
        name: ufw
 | 
			
		||||
        state: present
 | 
			
		||||
 | 
			
		||||
    - name: Enable UFW
 | 
			
		||||
      command: ufw --force enable
 | 
			
		||||
 | 
			
		||||
    - name: Allow inbound traffic on incusbr0
 | 
			
		||||
      command: ufw allow in on incusbr0
 | 
			
		||||
 | 
			
		||||
    - name: Allow routed inbound traffic on incusbr0
 | 
			
		||||
      command: ufw route allow in on incusbr0
 | 
			
		||||
 | 
			
		||||
    - name: Allow routed outbound traffic on incusbr0
 | 
			
		||||
      command: ufw route allow out on incusbr0
 | 
			
		||||
 | 
			
		||||
    - name: Run incus network DNS setup
 | 
			
		||||
      import_playbook: incus-network.yml
 | 
			
		||||
 | 
			
		||||
    - name: "Post Installation Instructions"
 | 
			
		||||
      debug:
 | 
			
		||||
        msg: "Post Installation Instructions: https://git.marmattheo.com/marmattheo/incus-stable-playbook/src/branch/master/README.md"
 | 
			
		||||
        msg: "Post Installation Instructions: https://git.marmattheo.com/marmattheo/LXC-Incus-stable-playbook/src/branch/master/README.md"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user