home lab init
This commit is contained in:
commit
7278922625
65 changed files with 27336 additions and 0 deletions
81
ansible/books/create-template.yml
Normal file
81
ansible/books/create-template.yml
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
- name: Build and Upload NixOS Image, Restore and Convert to Template
|
||||
hosts: nodes
|
||||
gather_facts: false
|
||||
|
||||
vars:
|
||||
flake_name: "{{ flake | default('base') }}"
|
||||
image_dir: "{{ playbook_dir }}/../../nixos"
|
||||
result_path: "{{ image_dir }}/result"
|
||||
dest_dir: "/var/lib/vz/dump/"
|
||||
|
||||
tasks:
|
||||
- name: Build NixOS base image
|
||||
ansible.builtin.shell: nix build .#{{ flake_name }}
|
||||
args:
|
||||
chdir: "{{ image_dir }}"
|
||||
register: build_result
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Get built image file
|
||||
ansible.builtin.find:
|
||||
paths: "{{ result_path }}"
|
||||
patterns: "*.vma.zst"
|
||||
register: built_image
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Fail if no image was built
|
||||
ansible.builtin.fail:
|
||||
msg: "No image file found in result/"
|
||||
when: built_image.files | length == 0
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Set fact for built image path
|
||||
ansible.builtin.set_fact:
|
||||
local_image_path: "{{ built_image.files[0].path | realpath }}"
|
||||
image_filename: "{{ built_image.files[0].path | basename }}"
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Copy image to Proxmox
|
||||
ansible.builtin.copy:
|
||||
src: "{{ local_image_path }}"
|
||||
dest: "{{ dest_dir }}"
|
||||
|
||||
- name: Remove local build result
|
||||
ansible.builtin.file:
|
||||
path: "{{ result_path }}"
|
||||
state: absent
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Restore and Convert to Template on Proxmox
|
||||
hosts: nodes
|
||||
become: true
|
||||
|
||||
vars_prompt:
|
||||
- name: "vmid"
|
||||
prompt: "Enter VMID for the template"
|
||||
private: no
|
||||
default: "9000"
|
||||
|
||||
- name: "vmname"
|
||||
prompt: "Enter name for the Proxmox template"
|
||||
private: no
|
||||
default: "nixos-base"
|
||||
|
||||
vars:
|
||||
image_path: "/var/lib/vz/dump/{{ image_filename }}"
|
||||
cpu_cores: 2
|
||||
memory_mb: 2048
|
||||
|
||||
tasks:
|
||||
- name: Restore VM from image
|
||||
ansible.builtin.command: >
|
||||
qmrestore {{ image_path }} {{ vmid }} --unique true
|
||||
args:
|
||||
creates: "/etc/pve/qemu-server/{{ vmid }}.conf"
|
||||
|
||||
- name: Set name, CPU and memory
|
||||
ansible.builtin.command: >
|
||||
qm set {{ vmid }} --cores {{ cpu_cores }} --memory {{ memory_mb }} --name {{ vmname }}
|
||||
|
||||
- name: Convert VM to template
|
||||
ansible.builtin.command: qm template {{ vmid }}
|
||||
Loading…
Add table
Add a link
Reference in a new issue