trixie/roles/prepare4clients/tasks/main.yml

230 lines
10 KiB
YAML
Raw Normal View History

2021-04-01 21:59:48 +02:00
- name: make sure ansible is available
apt:
name: ansible
2022-06-11 12:42:02 +02:00
state: latest # noqa package-latest
2021-04-01 21:59:48 +02:00
- name: generate ssh key
command: "su -l {{ ansible_user }} -c \"ssh-keygen -t rsa -f /home/{{ ansible_user }}/.ssh/id_rsa -P ''\""
args:
creates: "/home/{{ ansible_user }}/.ssh/id_rsa"
2022-06-11 12:42:02 +02:00
warn: false
- name: slurp public key
slurp:
src: "/home/{{ ansible_user }}/.ssh/id_rsa.pub"
register: sshpubkey
# The following seems to be necessary to get rid of a newline:
2022-06-11 12:42:02 +02:00
- name: define variable
set_fact:
sshpubkey: "{{ sshpubkey['content'] | b64decode | replace('\n', '') }}"
- name: enable backports in preseed file
replace:
dest: "{{ tftp_root }}/d-i/{{ di_dist }}/preseed.cfg"
regexp: '^#(apt-setup-udeb.*)$'
replace: '\1'
- name: preseed client - add firmware-linux, ansible and git
replace:
dest: "{{ tftp_root }}/d-i/{{ di_dist }}/preseed.cfg"
regexp: '^(d-i pkgsel/include string firmware-linux)$'
replace: '#\1\nd-i pkgsel/include string firmware-linux ansible git'
- name: insert start of managed block
replace:
dest: "{{ tftp_root }}/d-i/{{ di_dist }}/preseed.cfg"
regexp: '^(### This command is run just before the install finishes:)'
replace: '#\1\n# BEGIN ANSIBLE MANAGED BLOCK preseed/late_command'
- name: insert end of managed block
replace:
dest: "{{ tftp_root }}/d-i/{{ di_dist }}/preseed.cfg"
regexp: '^(## When installing.*)'
replace: '# END ANSIBLE MANAGED BLOCK preseed/late_command\n#\1'
- name: insert block
blockinfile:
dest: "{{ tftp_root }}/d-i/{{ di_dist }}/preseed.cfg"
insertafter: "^### This command is run just before the install finishes:"
block: |
d-i preseed/late_command string \
mkdir -p /target/home/ansible/.ssh && \
echo "{{ sshpubkey }}" >> /target/home/ansible/.ssh/authorized_keys ; \
in-target chown -R ansible:ansible /home/ansible/.ssh/ ; \
in-target chmod -R og= /home/ansible/.ssh/ ; \
in-target ansible-pull --verbose --purge --extra-vars="run_in_installer=true" \
-i localhost, --url=git://{{ ansible_hostname }}/.git $playbook
marker: "# {mark} ANSIBLE MANAGED BLOCK preseed/late_command"
2022-06-12 17:35:36 +02:00
- name: add pxe boot entries to di-netboot-assistant
blockinfile:
dest: /etc/di-netboot-assistant/pxelinux.HEAD
insertbefore: EOF
block: |
TIMEOUT 100
# Use a temporary package cache during installation, install etckeeper.
LABEL tmp pkg cache
MENU LABEL Debian stable (amd64) + temporary package cache
kernel ::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux
append initrd=::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz mirror/http/proxy?=http://{{ ansible_hostname }}:3142/ pkgsel/include=etckeeper preseed/late_command="rm -fv /target/etc/apt/apt.conf" ---
2022-06-12 17:35:36 +02:00
LABEL kiosk
MENU LABEL Debian {{ di_version }} (amd64) + preseed + kiosk.yml
kernel ::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux
2022-06-12 17:35:36 +02:00
append initrd=::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz hostname=kiosk auto=true priority=critical url=tftp://{{ ansible_hostname }} playbook=kiosk.yml ---
LABEL cloudbox
MENU LABEL Debian {{ di_version }} (amd64) + preseed + cloudbox.yml
kernel ::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux
append initrd=::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz hostname=cloudbox auto=true priority=critical url=tftp://{{ ansible_hostname }} playbook=cloudbox.yml ---
#LABEL daily
#MENU LABEL Debian daily (amd64) + preseed + kiosk.yml
#kernel ::/d-i/n-a/daily/amd64/linux
#append initrd=::/d-i/n-a/daily/amd64/initrd.gz auto=true priority=critical url=tftp://{{ ansible_hostname }} playbook=kiosk.yml ---
2022-06-12 21:02:54 +02:00
marker: "# {mark} ANSIBLE MANAGED BLOCK default"
notify: "rebuild di-netboot-assistant menu"
2022-06-12 17:35:36 +02:00
- name: add efi boot entries to di-netboot-assistant
blockinfile:
dest: /etc/di-netboot-assistant/grub.cfg.HEAD
insertbefore: EOF
block: |
# Use a temporary package cache during installation, install etckeeper.
menuentry 'Debian stable (amd64) + temporary package cache' {
2022-06-11 12:42:02 +02:00
linux /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux \
mirror/http/proxy?=http://{{ ansible_hostname }}:3142/ pkgsel/include=etckeeper \
preseed/late_command="rm -fv /target/etc/apt/apt.conf" ---
initrd /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz
}
menuentry 'Debian {{ di_version }} (amd64) + preseed + kiosk.yml' {
2022-06-11 12:42:02 +02:00
linux /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux \
2022-06-12 17:35:36 +02:00
hostname=kiosk auto=true priority=critical \
url=tftp://{{ ansible_hostname }} playbook=kiosk.yml ---
initrd /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz
}
menuentry 'Debian {{ di_version }} (amd64) + preseed + cloudbox.yml' {
linux /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux \
hostname=cloudbox auto=true priority=critical \
url=tftp://{{ ansible_hostname }} playbook=cloudbox.yml ---
initrd /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz
}
#menuentry 'Debian daily (amd64) + preseed + kiosk.yml' {
2022-06-12 15:10:39 +02:00
# linux /d-i/n-a/daily/amd64/linux auto=true priority=critical \
# url=tftp://{{ ansible_hostname }} playbook=kiosk.yml ---
# initrd /d-i/n-a/daily/amd64/initrd.gz
#}
2022-06-12 21:02:54 +02:00
marker: "# {mark} ANSIBLE MANAGED BLOCK default"
notify: "rebuild di-netboot-assistant menu"
######## kerberox-client #######
- name: check if we operate on kerberox
stat: path=/usr/sbin/krb5kdc
register: krb5kdc
- name: add kerberox-client auto pxe boot entry to di-netboot-assistant
blockinfile:
dest: /etc/di-netboot-assistant/pxelinux.HEAD
insertbefore: EOF
block: |
LABEL autoinstall
MENU LABEL Debian {{ di_version }} (amd64) + preseed + kerberox-client.yml
kernel ::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux
append initrd=::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz auto=true priority=critical url=tftp://{{ ansible_hostname }} playbook=kerberox-client.yml ---
marker: "# {mark} ANSIBLE MANAGED BLOCK kerberox-client"
notify: "rebuild di-netboot-assistant menu"
when: krb5kdc.stat.exists
- name: add kerberox-client auto efi boot entry to di-netboot-assistant
blockinfile:
dest: /etc/di-netboot-assistant/grub.cfg.HEAD
insertbefore: EOF
block: |
menuentry 'Debian {{ di_version }} (amd64) + preseed + kerberox-client.yml' {
2022-06-12 21:02:54 +02:00
regexp --set=1:oct4 --set=2:oct5 --set=3:oct6 "\:([[:xdigit:]]+)\:([[:xdigit:]]+)\:([[:xdigit:]]+)\$" $net_default_mac
2022-06-11 12:42:02 +02:00
linux /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux \
2022-06-12 21:02:54 +02:00
hostname=${oct4}${oct5}${oct6} domain={{ ansible_domain }} \
2022-06-11 12:42:02 +02:00
auto=true priority=critical url=tftp://{{ ansible_hostname }} playbook=kerberox-client.yml ---
initrd /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz
}
marker: "# {mark} ANSIBLE MANAGED BLOCK kerberox-client"
notify: "rebuild di-netboot-assistant menu"
when: krb5kdc.stat.exists
2021-04-09 10:17:45 +02:00
######## sambox-client #######
- name: check if we operate on sambox
stat: path=/etc/samba/smb.conf
register: samba
- name: add sambox-client auto pxe boot entry to di-netboot-assistant
blockinfile:
dest: /etc/di-netboot-assistant/pxelinux.HEAD
insertbefore: EOF
block: |
LABEL autoinstall
MENU LABEL Debian {{ di_version }} (amd64) + preseed + sambox-client.yml
kernel ::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux
append initrd=::/d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz auto=true priority=critical domain={{ ansible_domain }} url=tftp://{{ ansible_hostname }} playbook=sambox-client.yml ---
marker: "# {mark} ANSIBLE MANAGED BLOCK sambox-client"
notify: "rebuild di-netboot-assistant menu"
when: samba.stat.exists
- name: add sambox-client auto efi boot entry to di-netboot-assistant
blockinfile:
dest: /etc/di-netboot-assistant/grub.cfg.HEAD
insertbefore: EOF
block: |
menuentry 'Debian {{ di_version }} (amd64) + preseed + sambox-client.yml' {
regexp --set=1:oct4 --set=2:oct5 --set=3:oct6 "\:([[:xdigit:]]+)\:([[:xdigit:]]+)\:([[:xdigit:]]+)\$" $net_default_mac
2022-06-11 12:42:02 +02:00
linux /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/linux \
auto=true priority=critical hostname=${oct4}${oct5}${oct6} url=tftp://{{ ansible_hostname }} \
playbook=sambox-client.yml ---
2021-04-09 10:17:45 +02:00
initrd /d-i/n-pkg/images/{{ di_version }}/amd64/text/debian-installer/amd64/initrd.gz
}
menuentry 'Debian daily (amd64) + preseed + sambox-client.yml' {
regexp --set=1:oct4 --set=2:oct5 --set=3:oct6 "\:([[:xdigit:]]+)\:([[:xdigit:]]+)\:([[:xdigit:]]+)\$" $net_default_mac
2022-06-11 12:42:02 +02:00
linux /d-i/n-a/daily/amd64/linux auto=true priority=critical hostname=${oct4}${oct5}${oct6} \
url=tftp://{{ ansible_hostname }} playbook=sambox-client.yml ---
initrd /d-i/n-a/daily/amd64/initrd.gz
}
2021-04-09 10:17:45 +02:00
marker: "# {mark} ANSIBLE MANAGED BLOCK sambox-client"
notify: "rebuild di-netboot-assistant menu"
when: samba.stat.exists
######################
2022-06-12 15:10:39 +02:00
- name: provide git repo if not available already # noqa git-latest
git:
repo: 'https://salsa.debian.org/andi/debian-lan-ansible.git'
dest: "{{ repo_dir }}"
2022-06-11 12:42:02 +02:00
update: false
become_user: "{{ ansible_user }}"
when: not run_in_installer|default(false)|bool
- name: start git-repo
template:
src: git-repo.j2
dest: "/etc/systemd/system/git-repo.service"
2022-06-11 12:42:02 +02:00
mode: 0644
notify: start git-repo
when: not run_in_installer|default(false)|bool
######################
- name: add clients to inventory
blockinfile:
dest: /etc/ansible/hosts
2022-06-11 12:42:02 +02:00
create: true
mode: 0644
block: |
2022-06-12 21:02:54 +02:00
[kerberoxclient]
{{ in_inventory }}
2022-06-12 17:35:36 +02:00
when: krb5kdc.stat.exists or samba.stat.exists