207 lines
6.1 KiB
YAML
207 lines
6.1 KiB
YAML
---
|
|
# https://gist.github.com/zuzzas/a1695344162ac7fa124e15855ce0768f
|
|
# http://askubuntu.com/questions/6684/preseeding-ubuntu-server
|
|
|
|
###############################################
|
|
# Install packages needed for ISO Building
|
|
###############################################
|
|
|
|
- name: Build ISO - APT - Install Packages
|
|
apt:
|
|
name:
|
|
- "{{ item }}"
|
|
state: present
|
|
loop: "{{ iso_packages }}"
|
|
when: not refresh_only or iso_only | bool
|
|
|
|
###############################################
|
|
# DEB13 Source ISO Extract
|
|
# Download the most recent ISO from debian
|
|
# Extract contents to local folder
|
|
###############################################
|
|
|
|
- name: Build ISO - Extract Source - Check ISO Directory
|
|
file:
|
|
path: "{{ iso_share }}"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: Build ISO - Extract Source - Check Temp Directory
|
|
file:
|
|
path: "{{ deb13_pxe }}"
|
|
state: directory
|
|
mode: '0644'
|
|
|
|
- name: Build ISO - Extract Source - Check Extraction Directory
|
|
file:
|
|
path: "{{ deb13_iso }}"
|
|
state: directory
|
|
mode: '0644'
|
|
|
|
- name: Build ISO - Extract Source - Check Source Directory
|
|
file:
|
|
path: "{{ deb13_src }}"
|
|
state: directory
|
|
mode: '0644'
|
|
|
|
- name: Build ISO - Get Recent Debian Version
|
|
shell: |
|
|
curl -s https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/ | \
|
|
grep netinst | grep iso | grep -v -e edu -e mac | cut -d '"' -f 6
|
|
register: recent_version
|
|
|
|
- name: Build ISO - Display Recent Version
|
|
debug:
|
|
msg: "Current Debian ISO name: {{ recent_version.stdout_lines[0] }}"
|
|
|
|
- name: Build ISO - Extract Source - Download ISO
|
|
get_url:
|
|
url: "https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/{{ recent_version.stdout_lines[0] }}"
|
|
dest: "{{ iso_share }}/deb13-master.iso"
|
|
mode: '0644'
|
|
register: deb13_iso_download
|
|
|
|
- name: show iso size
|
|
debug:
|
|
msg: "Debian Net ISO Size is {{ (deb13_iso_download.size | float ) / 1048576 }}MB"
|
|
|
|
- name: Build ISO - Extract Source - Mount ISO
|
|
shell: "mount -o loop {{ iso_share }}/deb13-master.iso {{ deb13_iso }}"
|
|
|
|
- name: Build ISO - Extract Source - Copy ISO data
|
|
shell: "rsync -a -H --exclude=TRANS.TBL {{ deb13_iso }}/ {{ deb13_src }}"
|
|
|
|
- name: Build ISO - Extract Source - Unmount ISO
|
|
shell: "umount {{ deb13_iso }}"
|
|
|
|
###############################################
|
|
# Copy Matt-Cloud Init Script et. al.
|
|
###############################################
|
|
###############################################
|
|
# DEB13 Source modify
|
|
# Copy preseed file to source
|
|
# copy cosmos-init data to source
|
|
# Add preseed to initrd
|
|
# Recompute checksums
|
|
###############################################
|
|
|
|
- name: Build ISO - Modify Source - Correct Permissions
|
|
shell: "chmod -R 755 {{ deb13_src }}"
|
|
|
|
- name: Build ISO - Modify Source - Copy Preseed
|
|
template:
|
|
src: preseed-usb.cfg.j2
|
|
dest: "{{ deb13_src }}/preseed.cfg"
|
|
mode: 0644
|
|
|
|
# Create cosmos folder
|
|
#
|
|
# copy files for preseed
|
|
# jenkins_key
|
|
# update_issue.sh
|
|
# permitrootlogin
|
|
# .bashrc
|
|
# stat.sh
|
|
# cosmos-client.conf
|
|
- name: Build ISO - Modify Source - Create Cosmos Folder
|
|
file:
|
|
path: "{{ deb13_src }}/cosmos"
|
|
state: directory
|
|
mode: '0755'
|
|
|
|
- name: build archive if needed
|
|
when: not archive_fresh | bool
|
|
ansible.builtin.archive:
|
|
path: "/var/jenkins_home/ansible/roles/pxe_server/files/init"
|
|
dest: "/var/jenkins_home/ansible/roles/pxe_server/files/cosmos-init.tar"
|
|
format: "tar"
|
|
delegate_to: localhost
|
|
|
|
# Copy Archive to Target
|
|
- name: Files - Copy cosmos-init.tar to target
|
|
copy:
|
|
src: /var/jenkins_home/ansible/roles/pxe_server/files/cosmos-init.tar
|
|
dest: "{{ deb13_src }}/cosmos/cosmos-init.tar"
|
|
mode: 0644
|
|
|
|
- name: Check archive size
|
|
shell: "ls -lah {{ deb13_src }}/cosmos/cosmos-init.tar | cut -d ' ' -f 5 "
|
|
register: archive_size_output
|
|
|
|
- name: Show archive size
|
|
debug:
|
|
msg: "cosmos-init.tar archive is {{ archive_size_output.stdout_lines[0] }}"
|
|
|
|
- name: Build ISO - Modify Source - remove GUI install option
|
|
shell: |
|
|
sed -i '/menuentry --hotkey=g '\''Graphical install'\'' {/,/^}/d' {{ deb13_src }}/boot/grub/grub.cfg
|
|
|
|
- name: Build ISO - Modify Source - edit isolinux/txt.cfg
|
|
shell: >
|
|
sed 's/initrd.gz/initrd.gz file=\/cdrom\/preseed.cfg/' -i /opt/cosmos/deb13-source/isolinux/txt.cfg
|
|
|
|
- name: Build ISO - Modify Source - add preseed to initrd
|
|
shell: |
|
|
ISODIR_WRITE={{ deb13_src }}/
|
|
mkdir $ISODIR_WRITE/irmod
|
|
cd $ISODIR_WRITE/irmod
|
|
gzip -d < $ISODIR_WRITE/install.amd/initrd.gz | \
|
|
cpio --extract --make-directories --no-absolute-filenames
|
|
cp $ISODIR_WRITE/preseed.cfg preseed.cfg
|
|
chown root:root preseed.cfg
|
|
chmod o+w $ISODIR_WRITE/install.amd/initrd.gz
|
|
find . | cpio -H newc --create | \
|
|
gzip -9 > $ISODIR_WRITE/install.amd/initrd.gz
|
|
chmod o-w $ISODIR_WRITE/install.amd/initrd.gz
|
|
cd $ISODIR_WRITE/
|
|
rm -fr $ISODIR_WRITE/irmod/
|
|
|
|
- name: Build ISO - Modify Source - fixing MD5 checksums
|
|
shell: |
|
|
cd {{ deb13_src }}/
|
|
md5sum $(find -type f) > {{ deb13_src }}/md5sum.txt
|
|
|
|
###############################################
|
|
# DEB12 Build ISO * 'burn' script
|
|
###############################################
|
|
|
|
- name: Build ISO - Build Deb13-MC.iso
|
|
shell: |
|
|
xorriso -as mkisofs \
|
|
-r \
|
|
-V "Deb13_MC" \
|
|
-o "{{ iso_share }}/Deb13-MC.iso" \
|
|
-J \
|
|
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
|
|
-partition_offset 16 \
|
|
-A "Debian 13 Matt-Cloud ISO" \
|
|
-b isolinux/isolinux.bin \
|
|
-c isolinux/boot.cat \
|
|
-no-emul-boot \
|
|
-boot-load-size 4 \
|
|
-boot-info-table \
|
|
-eltorito-alt-boot \
|
|
-e boot/grub/efi.img \
|
|
-no-emul-boot \
|
|
-isohybrid-gpt-basdat \
|
|
-append_partition 2 0xef {{ deb13_src }}/boot/grub/efi.img \
|
|
{{ deb13_src }}
|
|
|
|
- name: get iso size
|
|
shell: "ls -lah {{ iso_share }}/Deb13-MC.iso | cut -d ' ' -f 5"
|
|
register: iso_size_output
|
|
|
|
- name: show iso size
|
|
debug:
|
|
msg: "Deb13-MC.iso is {{ iso_size_output.stdout_lines[0] }}."
|
|
|
|
- name: Build ISO - Build 'burn' script
|
|
shell: "echo dd if={{ iso_share }}/Deb13-MC.iso of=CHANGE_TO_USB bs=16M status=progress oflag=sync > {{ iso_share }}/burn_deb.sh"
|
|
|
|
- name: Build ISO - Make 'burn' script executable
|
|
shell: "chmod +x {{ iso_share }}/burn_deb.sh"
|
|
|
|
|
|
...
|
|
|