diff options
Diffstat (limited to 'tasks')
-rw-r--r-- | tasks/configure_pve.yaml | 55 | ||||
-rw-r--r-- | tasks/install_proxmox_on_debian12.yaml | 110 |
2 files changed, 165 insertions, 0 deletions
diff --git a/tasks/configure_pve.yaml b/tasks/configure_pve.yaml new file mode 100644 index 0000000..73ef36f --- /dev/null +++ b/tasks/configure_pve.yaml @@ -0,0 +1,55 @@ +- name: detect default public interface + set_fact: + public_interface: "{{ ansible_default_ipv4.interface }}" + +- name: get gateway info from ip route + shell: ip route get 1.1.1.1 | grep -oP 'via \K[\d.]+' | head -n1 + register: detected_gateway + changed_when: false + +- name: set public gateway fact + set_fact: + public_gateway: "{{ detected_gateway.stdout }}" + +- name: deploy /etc/network/interfaces + template: + src: interfaces.j2 + dest: /etc/network/interfaces + owner: root + group: root + mode: '0644' + +- name: set pveproxy config + copy: + src: files/pveproxy + dest: /etc/default/pveproxy + mode: '0644' + +- name: deploy /etc/iptables/rules.v4 + template: + src: rules.v4.j2 + dest: /etc/iptables/rules.v4 + owner: root + group: root + mode: '0644' + +- name: enable ipv4 forwarding + sysctl: + name: net.ipv4.ip_forward + value: '1' + state: present + reload: yes + +- name: restart pveproxy + systemd: + name: pveproxy + state: restarted + enabled: true + when: ansible_service_mgr == 'systemd' + +- name: restart networking + systemd: + name: networking + state: restarted + enabled: true + when: ansible_service_mgr == 'systemd' diff --git a/tasks/install_proxmox_on_debian12.yaml b/tasks/install_proxmox_on_debian12.yaml new file mode 100644 index 0000000..1a92aa5 --- /dev/null +++ b/tasks/install_proxmox_on_debian12.yaml @@ -0,0 +1,110 @@ +- name: ensure script is run as root + ansible.builtin.assert: + that: + - ansible_effective_user_id == 0 + fail_msg: "this playbook must be run as root" + +- name: check if system is debian-based + ansible.builtin.command: dpkg -l + register: dpkg_check + changed_when: false + failed_when: false + +- name: fail if not debian-based + ansible.builtin.fail: + msg: "distribution not Debian-based" + when: dpkg_check.rc != 0 + +- name: generate /etc/hosts from template + template: + src: templates/hosts.j2 + dest: /etc/hosts + owner: root + group: root + mode: '0644' + +- name: create /etc/apt/sources.list.d directory + ansible.builtin.file: + path: /etc/apt/sources.list.d + state: directory + mode: '0755' + +- name: deploy proxmox apt sources list + copy: + src: files/pve-no-subscription.list + dest: /etc/apt/sources.list.d/pve-no-subscription.list + mode: '0644' + +- name: create /etc/apt/trusted.gpg.d directory + file: + path: /etc/apt/trusted.gpg.d + state: directory + mode: '0755' + +- name: download proxmox gpg key + get_url: + url: https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg + dest: /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg + mode: '0644' + +- name: verify proxmox gpg key hash + shell: echo "{{ gpg_key_hash }} /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg" | sha512sum -c + vars: + gpg_key_hash: "7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87" + register: gpg_hash_check + failed_when: gpg_hash_check.rc != 0 + changed_when: false + +- name: update apt packages + apt: + update_cache: true + +- name: upgrade apt packages + apt: + upgrade: dist + +- name: install apt packages + apt: + name: "{{ apt_packages }}" + state: present + update_cache: true + +- name: reboot to activate proxmox ve kernel + reboot: + msg: "rebooting to activate proxmox ve kernel" + connect_timeout: 10 + reboot_timeout: 600 + pre_reboot_delay: 5 + post_reboot_delay: 10 + +- name: install pve packages + apt: + name: "{{ pve_packages }}" + state: present + update_cache: true + +- name: get current running kernel version + command: uname -r + register: current_kernel + changed_when: false + +- name: list installed debian kernel images + shell: dpkg -l | awk '/linux-image-[0-9]/{ print $2 }' | grep -v "{{ current_kernel.stdout }}" + register: kernels_to_remove + changed_when: false + +- name: remove debian default kernels (excluding current) + apt: + name: "{{ kernels_to_remove.stdout_lines }}" + state: absent + when: kernels_to_remove.stdout_lines | length > 0 + +- name: update grub bootloader + command: update-grub + register: grub_update + changed_when: "'Generating grub configuration file' in grub_update.stdout" + +- name: remove problematic apt packages for pve + apt: + name: "{{ apt_packages_to_remove }}" + state: absent |