bookworm/livebox.yml

99 lines
2.8 KiB
YAML
Raw Normal View History

## This playbook deploys the LiveBox.
##
## The LiveBox provides Debian Live and Installer images on top
## of an already existing network with minimal modifications to
## existing infrastructure. It does not provide DHCP; the idea
## is to chainload the LiveBox' menu (iPXE or Grub) from PXE
## infrastructure already in place.
##
## To chainload the LiveBox in iPXE use:
## > item livebox Chainload Menu from LiveBox
## > …
## > :livebox chain tftp://livebox.lan/d-i/n-a/menu.ipxe
##
## To chainload the LiveBox in Grub use:
## > menuentry 'Chainload Menu from LiveBox' {
## > configfile (tftp,livebox.lan)/d-i/n-a/grub/grub.cfg
## > }
##
## To build an initial customized image run 'livebuilder.sh'.
## A systemd-timer will do this every week automatically.
---
- name: apply configuration to the livebox
hosts: all
remote_user: ansible
become: true
vars:
# ansible_connection: local
extra_pkgs:
- lighttpd
- nfs-kernel-server
- atftpd
- di-netboot-assistant
- apt-cacher-ng
extra_pkgs_bpo: []
live_desktop: # [] # use an empty list to skip iso images
- gnome
- kde
- standard
live_url: 'https://cdimage.debian.org/cdimage/release/current-live/amd64/iso-hybrid/'
# The edulive role generates customized Debian-Live images.
# Make sure you have sufficient disk space available (~30GiB?).
build_images:
- gnome-edu
- standard-edu
di_dist: "{{ ansible_distribution_release }}"
di_version: "{{ ansible_distribution_major_version }}"
di_pkg: "debian-installer-{{ di_version }}-netboot-amd64"
boot_params:
- boot=live
- components
- locales=de_DE.UTF-8
- keyboard-layouts=de
- live-config.timezone=Europe/Berlin
- swap=true
- quiet
- splash
- user-default-groups=audio,cdrom,dip,video,plugdev,netdev,dialout
- modprobe.blacklist=nvme
# - libata.force=disable
# - noroot
ansible_python_interpreter: "/usr/bin/python3"
pre_tasks:
- name: preseed atftpd
debconf:
name: atftpd
question: atftpd/basedir
value: /var/lib/tftpboot
vtype: string
- name: find available iso images
uri:
url: "{{ live_url }}"
return_content: true
register: idx
- name: find and set ISO image version
set_fact:
version: "{{ idx.content | regex_findall('debian-live-(\\d+\\.\\d+\\.\\d+)-amd64-', '\\1') | first }}"
- name: define ISO image map
set_fact:
live_iso: "{{ live_iso | default({}) | combine({ item: 'debian-live-' + version + '-amd64-' + item + '.iso' }) }}"
loop: "{{ live_desktop }}"
roles:
- up2date_debian
- netbootinstaller
- aptcacher
- debianlive
- edulive
- lmn_netbootinstaller