From 89c992b78b74663e14214babb5afc8854da37f1c Mon Sep 17 00:00:00 2001 From: Tobias Stein Date: Sat, 10 Dec 2022 19:55:33 +0100 Subject: [PATCH] Rename files --- roles/fai/meta/main.yml | 15 +- .../{fai-profiles.yml => fai-config-dir.yml} | 131 +++++++++++------- .../{fai-configure.yml => fai-etc-dir.yml} | 0 .../srv/fai/config/class/HW4F_DESKTOP.var | 23 --- .../srv/fai/config/class/HW4F_DESKTOP.var.j2 | 36 +++++ .../srv/fai/config/scripts/00-remove-proxy.j2 | 5 + .../templates/srv/fai/config/scripts/04-snaps | 15 ++ .../templates/srv/fai/config/scripts/91-misc | 7 + 8 files changed, 153 insertions(+), 79 deletions(-) rename roles/fai/tasks/{fai-profiles.yml => fai-config-dir.yml} (56%) rename roles/fai/tasks/{fai-configure.yml => fai-etc-dir.yml} (100%) delete mode 100644 roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var create mode 100644 roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var.j2 create mode 100755 roles/fai/templates/srv/fai/config/scripts/00-remove-proxy.j2 create mode 100755 roles/fai/templates/srv/fai/config/scripts/04-snaps create mode 100755 roles/fai/templates/srv/fai/config/scripts/91-misc diff --git a/roles/fai/meta/main.yml b/roles/fai/meta/main.yml index e984390..3e27127 100644 --- a/roles/fai/meta/main.yml +++ b/roles/fai/meta/main.yml @@ -1,22 +1,19 @@ +--- galaxy_info: author: Alexander Böhm description: FAI server for Hardware For Future company: Hardware For Future - # issue_tracker_url: http://example.com/issue/tracker - license: MIT - min_ansible_version: 2.9 - platforms: - - name: Debian - versions: - - 10 - + - name: Debian + versions: + - 10 + - 11 + - 12 galaxy_tags: - hw4f - collections: - ansible.posix diff --git a/roles/fai/tasks/fai-profiles.yml b/roles/fai/tasks/fai-config-dir.yml similarity index 56% rename from roles/fai/tasks/fai-profiles.yml rename to roles/fai/tasks/fai-config-dir.yml index 894d162..217c198 100644 --- a/roles/fai/tasks/fai-profiles.yml +++ b/roles/fai/tasks/fai-config-dir.yml @@ -8,19 +8,6 @@ group: root mode: '0755' -- name: "Copy fai profiles to '{{ fai_dir_config }}'" - become: true - ansible.builtin.copy: - src: "profiles/" - dest: "{{ fai_dir_config }}" - owner: root - group: root - mode: '0755' - force: true - #recursive: true - notify: pack fai-config - when: false - - name: "Git checkout fai-config to '{{ fai_dir_config }}'" become: true ansible.builtin.git: @@ -40,6 +27,90 @@ mode: '0755' #recursive: true +- name: "Set APT proxy" + become: true + ansible.builtin.template: + src: "etc/apt/apt.conf.d/02proxy.j2" + dest: "{{ fai_dir_config }}/files/etc/apt/apt.conf.d/02proxy/HW4F_DESKTOP" + owner: root + group: root + mode: '0644' + notify: pack fai-config + when: false + +- name: "Set default menu entry to profile" + become: true + ansible.builtin.copy: + content: | + Default: {{ fai_menu_default }} + dest: "{{ fai_dir_config + '/class/zz_menu_default.profile' }}" + owner: root + group: root + mode: '0644' + when: + - fai_menu_default is defined + - fai_menu_default is not none + +- name: "Create class specific directories" + become: true + vars: + paths: + - "scripts/HW4F_DESKTOP" + - "scripts/HW4F_DESKTOP_LAST" + ansible.builtin.file: + dest: "{{ fai_dir_config + '/' + item }}" + state: directory + owner: root + group: root + mode: '0755' + loop: "{{ paths }}" + notify: pack fai-config + +- name: "Define files in '{{ fai_dir_config }}'" + become: true + vars: + scripts: + - src: "class/HW4F_DESKTOP.var.j2" + dest: "class/HW4F_DESKTOP.var" + mode: '0644' + - src: "scripts/00-remove-proxy.j2" + dest: "scripts/HW4F_DESKTOP_LAST/00-remove-proxy" + mode: "0755" + ansible.builtin.template: + src: "srv/fai/config/{{ item.src }}" + dest: "{{ fai_dir_config + '/' + item.dest }}" + owner: root + group: root + mode: "{{ item.mode }}" + notify: pack fai-config + loop: "{{ scripts }}" + +- name: "Define files in '{{ fai_dir_config }}' without templating" + become: true + vars: + scripts: + - src: "scripts/04-snaps" + dest: "scripts/HW4F_DESKTOP/04-snaps" + mode: '0755' + ### TRICK COPY TO FIND THE "FILE" + ### IN THE DIRECTORY "templates" NOT IN "files" + search_prefix: "templates/" + - src: "scripts/91-misc" + dest: "scripts/HW4F_DESKTOP/91-misc" + mode: '0755' + ### TRICK COPY TO FIND THE "FILE" + ### IN THE DIRECTORY "templates" NOT IN "files" + search_prefix: "templates/" + ansible.builtin.copy: + src: "{{ item.search_prefix | default('') + + 'srv/fai/config/' + item.src }}" + dest: "{{ fai_dir_config + '/' + item.dest }}" + owner: root + group: root + mode: "{{ item.mode }}" + notify: pack fai-config + loop: "{{ scripts }}" + - name: "Define FAI classes for BASEFILES" become: true ansible.builtin.template: @@ -55,37 +126,3 @@ - basefile: "FOCAL64" dist: "focal" mirror_url: "{{ ubuntu_mirror_url }}" - -- name: "Set APT proxy" - become: true - ansible.builtin.template: - src: "etc/apt/apt.conf.d/02proxy.j2" - dest: "{{ fai_dir_config }}/files/etc/apt/apt.conf.d/02proxy/HW4F_DESKTOP" - owner: root - group: root - mode: '0644' - notify: pack fai-config - when: false - -- name: "Define fai CLASS 'HW4F_DESKTOP'" - become: true - ansible.builtin.template: - src: "srv/fai/config/class/HW4F_DESKTOP.var" - dest: "{{ fai_dir_config }}/class/HW4F_DESKTOP.var" - owner: root - group: root - mode: '0644' - notify: pack fai-config - -- name: "Set default menu entry to profile" - become: true - ansible.builtin.copy: - content: | - Default: {{ fai_menu_default }} - dest: "{{ fai_dir_config + '/class/zz_menu_default.profile' }}" - owner: root - group: root - mode: '0644' - when: - - fai_menu_default is defined - - fai_menu_default is not none diff --git a/roles/fai/tasks/fai-configure.yml b/roles/fai/tasks/fai-etc-dir.yml similarity index 100% rename from roles/fai/tasks/fai-configure.yml rename to roles/fai/tasks/fai-etc-dir.yml diff --git a/roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var b/roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var deleted file mode 100644 index edb8c3c..0000000 --- a/roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var +++ /dev/null @@ -1,23 +0,0 @@ -### CONFIGURE TIME -UTC=yes -TIMEZONE=Europe/Berlin - -### INSTALL PARAMETERS -STOP_ON_ERROR=700 -MAXPACKAGES=800 - -HOSTNAME="user-pc" -KEYMAP=de-latin1-nodeadkeys - - -ROOTPW='{{ fai_hw4f_profile_password |password_hash("sha512") }}' - -# START USER AND PASSWORD -username={{ fai_hw4f_profile_username }} -USERPW='{{ fai_hw4f_profile_password |password_hash("sha512") }}' - -SUPRESS_GNOME_INITIAL_SCREEN=1 - -FAI_ALLOW_UNSIGNED=0 -APTPROXY=http://{{ server_name }}:3142 - diff --git a/roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var.j2 b/roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var.j2 new file mode 100644 index 0000000..8d65370 --- /dev/null +++ b/roles/fai/templates/srv/fai/config/class/HW4F_DESKTOP.var.j2 @@ -0,0 +1,36 @@ +### CONFIGURE TIME +UTC=yes +TIMEZONE=Europe/Berlin + +### INSTALL PARAMETERS +STOP_ON_ERROR=700 +MAXPACKAGES=800 + +HOSTNAME="user-pc" +KEYMAP=de-latin1-nodeadkeys + + +ROOTPW='{{ fai_hw4f_profile_password + | password_hash("sha512", fai_hw4f_password_salt ) }}' + +# START USER AND PASSWORD +username={{ fai_hw4f_profile_username }} +USERPW='{{ fai_hw4f_profile_password + | password_hash("sha512", fai_hw4f_password_salt ) }}' + +SUPRESS_GNOME_INITIAL_SCREEN=1 + +FAI_ALLOW_UNSIGNED=0 +APTPROXY=http://{{ server_name }}:3142 + +### CONFIGURE LOG UPLOAD +{% if fai_loguser is defined and + fai_loguser is none %} +### DISABLE LOG UPLOAD +LOGUSER= +{% elif fai_loguser is defined and + fai_loguser is not none %} +LOGUSER={{ fai_loguser }} +{% else %} +#LOGUSER= +{% endif %} diff --git a/roles/fai/templates/srv/fai/config/scripts/00-remove-proxy.j2 b/roles/fai/templates/srv/fai/config/scripts/00-remove-proxy.j2 new file mode 100755 index 0000000..b696477 --- /dev/null +++ b/roles/fai/templates/srv/fai/config/scripts/00-remove-proxy.j2 @@ -0,0 +1,5 @@ +#!/bin/bash + +[ -f $target/etc/apt/apt.conf.d/02proxy ] && \ + rm $target/etc/apt/apt.conf.d/02proxy + diff --git a/roles/fai/templates/srv/fai/config/scripts/04-snaps b/roles/fai/templates/srv/fai/config/scripts/04-snaps new file mode 100755 index 0000000..1b0ffd9 --- /dev/null +++ b/roles/fai/templates/srv/fai/config/scripts/04-snaps @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ "${#SNAPS[*]}" -eq 0 ]; then + SNAPS=( firefox ) +fi + +function package_exists() { + return dpkg -l "$1" &> /dev/null +} + +for SNAP in $SNAPS; do + if ! package_exists "snapd"; then + snap install "$SNAP" + fi +done diff --git a/roles/fai/templates/srv/fai/config/scripts/91-misc b/roles/fai/templates/srv/fai/config/scripts/91-misc new file mode 100755 index 0000000..0d1d6d8 --- /dev/null +++ b/roles/fai/templates/srv/fai/config/scripts/91-misc @@ -0,0 +1,7 @@ +#! /bin/bash + +# disable the first login screen +$ROOTCMD dpkg-divert --local --rename --add /etc/xdg/autostart/gnome-initial-setup-first-login.desktop +$ROOTCMD dpkg-divert --local --rename --add /etc/xdg/autostart/gnome-initial-setup-copy-worker.desktop +$ROOTCMD deluser --system gnome-initial-setup +$ROOTCMD dpkg-reconfigure keyboard-configuration