iac_stack/ansible/roles/create_image_debian-minimal/tasks/main.yml

127 lines
3.4 KiB
YAML
Raw Permalink Normal View History

2025-07-14 23:57:35 +02:00
---
- name: Ensure QEMU, KVM and dependencies are installed
ansible.builtin.apt:
name:
- qemu-system-x86
- qemu-utils
- libvirt-daemon-system
- libvirt-clients
- bridge-utils
- virtinst
- virt-manager
- cpu-checker
- unzip
- curl
state: present
become: true
- name: Download Packer
ansible.builtin.get_url:
url: "https://releases.hashicorp.com/packer/{{ packer_version }}/packer_{{ packer_version }}_linux_amd64.zip"
dest: "/tmp/packer.zip"
mode: '0644'
- name: Unarchive Packer
ansible.builtin.unarchive:
src: /tmp/packer.zip
dest: /usr/local/bin/
remote_src: yes
become: true
- name: Ensure packer is executable
ansible.builtin.file:
path: /usr/local/bin/packer
mode: '0755'
owner: root
group: root
become: true
- name: Create output directory for Packer images
ansible.builtin.file:
path: "{{ image_output_dir }}"
state: directory
mode: '0755'
become: true
- name: Create HTTP directory inside output dir for preseed.cfg
ansible.builtin.file:
path: "{{ image_output_dir }}/http"
state: directory
mode: '0755'
become: true
- name: Copy preseed.cfg template to HTTP directory
ansible.builtin.template:
src: preseed.cfg.j2
dest: "{{ image_output_dir }}/http/preseed.cfg"
mode: '0644'
2025-08-24 21:00:39 +02:00
- name: Remove old Debian ISO checksums file if exists
ansible.builtin.file:
path: /tmp/debian_sha256sums.txt
state: absent
- name: Download Debian ISO checksums
ansible.builtin.get_url:
url: "{{ debian_iso_checksum_url }}"
dest: /tmp/debian_sha256sums.txt
mode: '0644'
2025-07-14 23:57:35 +02:00
- name: Download Debian ISO checksums
ansible.builtin.get_url:
url: "{{ debian_iso_checksum_url }}"
dest: /tmp/debian_sha256sums.txt
mode: '0644'
2025-08-24 21:00:39 +02:00
- name: Debug - show checksum file content (with special chars visible)
ansible.builtin.shell: cat -A /tmp/debian_sha256sums.txt
register: checksum_file_content
changed_when: false
- debug:
var: checksum_file_content.stdout_lines
- name: Debug - show variable value
debug:
var: debian_iso_filename
2025-07-14 23:57:35 +02:00
- name: Extract checksum for ISO
ansible.builtin.shell: |
2025-08-24 21:00:39 +02:00
awk '{gsub(/\r/, ""); if ($2 == "{{ debian_iso_filename }}") {print $1; exit}}' /tmp/debian_sha256sums.txt
args:
executable: /bin/bash
2025-07-14 23:57:35 +02:00
register: debian_iso_checksum_result
changed_when: false
2025-08-24 21:00:39 +02:00
- name: Fail if checksum not found
ansible.builtin.fail:
msg: "Could not find SHA256 for {{ debian_iso_filename }} in {{ debian_iso_checksum_url }}"
when: (debian_iso_checksum_result.stdout | trim) == ""
2025-07-14 23:57:35 +02:00
- name: Set fact with full checksum string
ansible.builtin.set_fact:
2025-08-24 21:00:39 +02:00
debian_iso_checksum: "sha256:{{ debian_iso_checksum_result.stdout | trim }}"
2025-07-14 23:57:35 +02:00
- name: Template Packer HCL config
ansible.builtin.template:
src: debian_minimal.pkr.hcl.j2
dest: "{{ image_output_dir }}/debian_minimal.pkr.hcl"
- name: Run `packer init`
ansible.builtin.command: packer init debian_minimal.pkr.hcl
args:
chdir: "{{ image_output_dir }}"
- name: Run `packer build`
ansible.builtin.command: >
sh -c 'PACKER_LOG=1 PACKER_LOG_PATH=/tmp/packer.log packer build debian_minimal.pkr.hcl'
args:
chdir: "{{ image_output_dir }}"
- name: Copy built image to role files directory
ansible.builtin.copy:
src: "{{ image_output_dir }}/debian-minimal/debian-minimal.qcow2"
dest: "{{ role_path }}/files/debian-minimal.qcow2"
remote_src: yes
become: true