mirror of
https://github.com/khuedoan/homelab.git
synced 2025-01-05 13:08:52 +07:00
48 lines
1.5 KiB
YAML
48 lines
1.5 KiB
YAML
- name: Get Docker info
|
|
docker_host_info: {}
|
|
register: docker_info_result
|
|
|
|
- name: Ensure Docker is running on a supported operating system
|
|
fail:
|
|
msg: Docker host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac or Windows (you can use a Linux VM with bridged networking instead)
|
|
when:
|
|
- docker_info_result.host_info.OperatingSystem == "Docker Desktop"
|
|
|
|
- name: Download boot image
|
|
ansible.builtin.get_url:
|
|
url: "{{ iso_url }}"
|
|
dest: "{{ role_path }}/files/data/iso/{{ iso_url | basename }}"
|
|
checksum: "{{ iso_checksum }}"
|
|
mode: 0644
|
|
register: iso
|
|
|
|
- name: Extract boot image
|
|
ansible.builtin.command:
|
|
cmd: "xorriso -osirrox on -indev {{ iso.dest }} -extract / {{ role_path }}/files/data/os"
|
|
creates: "{{ role_path }}/files/data/os/.treeinfo"
|
|
|
|
- name: Generate dnsmasq config
|
|
ansible.builtin.template:
|
|
src: dnsmasq.conf.j2
|
|
dest: "{{ role_path }}/files/data/pxe-config/dnsmasq.conf"
|
|
mode: 0644
|
|
|
|
- name: Generate GRUB config
|
|
ansible.builtin.template:
|
|
src: grub.cfg.j2
|
|
dest: "{{ role_path }}/files/data/pxe-config/grub.cfg"
|
|
mode: 0644
|
|
|
|
- name: Generate init config for each machine
|
|
ansible.builtin.template:
|
|
src: kickstart.ks.j2
|
|
dest: "{{ role_path }}/files/data/init-config/{{ hostvars[item]['mac'] }}.ks"
|
|
mode: 0644
|
|
loop: "{{ groups['metal'] }}"
|
|
|
|
- name: Start the ephemeral PXE server
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ role_path }}/files"
|
|
state: present
|
|
build: always
|