aboutsummaryrefslogtreecommitdiffstats
path: root/roles/pxe_server/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'roles/pxe_server/tasks')
-rw-r--r--roles/pxe_server/tasks/extract_iso.yml16
-rw-r--r--roles/pxe_server/tasks/main.yml39
2 files changed, 55 insertions, 0 deletions
diff --git a/roles/pxe_server/tasks/extract_iso.yml b/roles/pxe_server/tasks/extract_iso.yml
new file mode 100644
index 0000000..754f9ec
--- /dev/null
+++ b/roles/pxe_server/tasks/extract_iso.yml
@@ -0,0 +1,16 @@
+- name: create directories
+ file:
+ path: '{{ pxe_root }}/{{ item.name }}/{{ item.version }}/{{ item.arch }}'
+ state: directory
+ recurse: yes
+
+- name: download iso
+ get_url:
+ url: '{{ item.url }}'
+ checksum: sha256:{{ item.sha256 }}
+ dest: '{{ pxe_root }}/{{ item.name }}/{{ item.version }}/{{ item.arch }}/{{ item.name }}-{{ item.version }}-{{ item.arch }}.iso'
+
+- name: extract iso with bsdtar
+ command: >-
+ bsdtar -C '{{ pxe_root }}/{{ item.name }}/{{ item.version }}/{{ item.arch }}'
+ -xf '{{ pxe_root }}/{{ item.name }}/{{ item.version }}/{{ item.arch }}/{{ item.name }}-{{ item.version }}-{{ item.arch }}.iso'
diff --git a/roles/pxe_server/tasks/main.yml b/roles/pxe_server/tasks/main.yml
new file mode 100644
index 0000000..9bd7b30
--- /dev/null
+++ b/roles/pxe_server/tasks/main.yml
@@ -0,0 +1,39 @@
+- name: prepare boot images
+ include_tasks: extract_iso.yml
+ loop: '{{ pxe_images }}'
+
+- name: create grub directories
+ file:
+ path: '{{ pxe_root }}/{{ item }}'
+ state: directory
+ loop:
+ - '{{ pxe_grub_prefix }}'
+ - kickstart
+
+- name: generate menuentries
+ template:
+ src: grub/menuentry-{{ image.os }}.cfg.j2
+ dest: '{{ pxe_root }}/{{ pxe_grub_prefix }}/{{ image.name }}-{{ image.version }}-{{ image.arch }}.cfg'
+ loop: '{{ pxe_images }}'
+ loop_control:
+ loop_var: image
+
+- name: generate kickstart files
+ template:
+ src: kickstart/{{ item }}.j2
+ dest: '{{ pxe_root }}/kickstart/{{ item }}'
+ loop: '{{ pxe_images | selectattr("kickstart", "defined") | map(attribute="kickstart") | flatten | map(attribute="name") | unique }}'
+
+- name: generate kickstart menuentries
+ template:
+ src: grub/menuentry-{{ image.os }}.cfg.j2
+ dest: '{{ pxe_root }}/{{ pxe_grub_prefix }}/{{ image.name }}-{{ image.version }}-{{ image.arch }}-{{ kickstart.name | splitext | first }}.cfg'
+ vars:
+ image: '{{ item.0 }}'
+ kickstart: '{{ item.1 }}'
+ loop: '{{ pxe_images | subelements("kickstart", { "skip_missing": true }) }}'
+
+- name: generate grub config
+ template:
+ src: grub/grub.cfg.j2
+ dest: '{{ pxe_root }}/{{ pxe_grub_prefix }}/grub.cfg'