From 7ae5d937cc6d0429dec02145a021c4bbe238d5a7 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 11 Mar 2018 17:12:31 +0000 Subject: [PATCH 01/49] add local ansible testing --- Makefile | 2 +- README.md | 7 +++++++ packer/ansible/playbook.yml | 3 +++ packer/initramfs/labsync | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/Makefile b/Makefile index f7d042d..d1ec11d 100644 --- a/Makefile +++ b/Makefile @@ -84,7 +84,7 @@ tmp/initramfs-extracted/debian-stretch: images/debian-stretch.initramfs touch tmp/initramfs-extracted/debian-stretch $(qemu_disk): tmp - qemu-img create "$@" 4G + qemu-img create "$@" 20G tmp/netboot.tar.gz: tmp wget -c -O "$@" https://cdn-aws.deb.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c3ad9a --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +## Testing + +### ansible + +root: `packer/ansible` + +`ansible-playbook -u root -i inventories/qemu playbook.yml -t windowmanager` diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 0fed1d3..e29c87a 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -17,3 +17,6 @@ - role: labsync tags: - labsync + - role: windowmanager + tags: + - windowmanager diff --git a/packer/initramfs/labsync b/packer/initramfs/labsync index 0aada90..4b4ae0a 100755 --- a/packer/initramfs/labsync +++ b/packer/initramfs/labsync @@ -142,7 +142,7 @@ PARTTABLE fi labsync_create_or_resize_lv "$vg_name" "$lv_name_sqashfs" $((image_size_bytes * 2)) $image_size_bytes - labsync_create_or_resize_lv "$vg_name" "$lv_name_overlay" $((500 * 1024 * 1024)) + labsync_create_or_resize_lv "$vg_name" "$lv_name_overlay" $((10000 * 1024 * 1024)) #lvm vgchange -ay "$vg_name" #lvm lvscan -a --ignorelockingfailure From 3bf1f537e5ea9066318f9897a94fb18fb4fabaa3 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 11 Mar 2018 17:12:53 +0000 Subject: [PATCH 02/49] add windowmanager role --- packer/ansible/roles/windowmanager/tasks/awesome.yml | 5 +++++ packer/ansible/roles/windowmanager/tasks/lightdm.yml | 5 +++++ packer/ansible/roles/windowmanager/tasks/main.yml | 4 ++++ packer/ansible/roles/windowmanager/tasks/mate.yml | 5 +++++ 4 files changed, 19 insertions(+) create mode 100644 packer/ansible/roles/windowmanager/tasks/awesome.yml create mode 100644 packer/ansible/roles/windowmanager/tasks/lightdm.yml create mode 100644 packer/ansible/roles/windowmanager/tasks/main.yml create mode 100644 packer/ansible/roles/windowmanager/tasks/mate.yml diff --git a/packer/ansible/roles/windowmanager/tasks/awesome.yml b/packer/ansible/roles/windowmanager/tasks/awesome.yml new file mode 100644 index 0000000..007852d --- /dev/null +++ b/packer/ansible/roles/windowmanager/tasks/awesome.yml @@ -0,0 +1,5 @@ +--- +- name: install awesome + apt: + name: "awesome" + state: present diff --git a/packer/ansible/roles/windowmanager/tasks/lightdm.yml b/packer/ansible/roles/windowmanager/tasks/lightdm.yml new file mode 100644 index 0000000..b09a4d7 --- /dev/null +++ b/packer/ansible/roles/windowmanager/tasks/lightdm.yml @@ -0,0 +1,5 @@ +--- +- name: install lightdm + apt: + name: "lightdm" + state: present diff --git a/packer/ansible/roles/windowmanager/tasks/main.yml b/packer/ansible/roles/windowmanager/tasks/main.yml new file mode 100644 index 0000000..ae15bb3 --- /dev/null +++ b/packer/ansible/roles/windowmanager/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- import_tasks: lightdm.yml +- import_tasks: awesome.yml +- import_tasks: mate.yml diff --git a/packer/ansible/roles/windowmanager/tasks/mate.yml b/packer/ansible/roles/windowmanager/tasks/mate.yml new file mode 100644 index 0000000..a09d3af --- /dev/null +++ b/packer/ansible/roles/windowmanager/tasks/mate.yml @@ -0,0 +1,5 @@ +--- +- name: install mate + apt: + name: "task-mate-desktop" + state: present From e8c91466927a2b52d9b0ab2846b84a305d8d9efb Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Wed, 14 Mar 2018 16:33:59 +0000 Subject: [PATCH 03/49] does not work --- README.md | 2 +- packer/ansible/playbook.yml | 24 +++++++++++++++++++ packer/ansible/roles/auth/tasks/main.yml | 1 + packer/ansible/roles/auth/tasks/sudo.yml | 13 ++++++++++ .../ansible/roles/auth/templates/sudoers.j2 | 11 +++++++++ .../roles/localisation/handlers/main.yml | 3 +++ .../tasks/keyboard-configuration.yml | 5 ++++ .../roles/localisation/tasks/locale.yml | 18 ++++++++++++++ .../ansible/roles/localisation/tasks/main.yml | 3 +++ .../roles/localisation/templates/keyboard.j2 | 6 +++++ .../localisation/templates/locale.gen.j2 | 3 +++ packer/ansible/roles/readme_roles.md | 3 +++ 12 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 packer/ansible/roles/auth/tasks/sudo.yml create mode 100644 packer/ansible/roles/auth/templates/sudoers.j2 create mode 100644 packer/ansible/roles/localisation/handlers/main.yml create mode 100644 packer/ansible/roles/localisation/tasks/keyboard-configuration.yml create mode 100644 packer/ansible/roles/localisation/tasks/locale.yml create mode 100644 packer/ansible/roles/localisation/tasks/main.yml create mode 100644 packer/ansible/roles/localisation/templates/keyboard.j2 create mode 100644 packer/ansible/roles/localisation/templates/locale.gen.j2 create mode 100644 packer/ansible/roles/readme_roles.md diff --git a/README.md b/README.md index 4c3ad9a..85024b5 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,4 @@ root: `packer/ansible` -`ansible-playbook -u root -i inventories/qemu playbook.yml -t windowmanager` +`ansible-playbook -u root -i inventories/qemu playbook.yml [-t TAG]` diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index e29c87a..c6f6b8b 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -20,3 +20,27 @@ - role: windowmanager tags: - windowmanager + - role: localisation + tags: + - localisation + vars: + auth: + sudo: + sudoers: + - root + + localisation: + keyboard: + layout: de + variant: + model: pc105 + options: "" + locale: + generate: + - en_US.UTF-8 UTF-8 + - de_DE.UTF-8 UTF-8 + - C.UTF-8 UTF-8 + default: de_DE.UTF-8 + tasksel: + - english + - german diff --git a/packer/ansible/roles/auth/tasks/main.yml b/packer/ansible/roles/auth/tasks/main.yml index 06ece31..e13fe8d 100644 --- a/packer/ansible/roles/auth/tasks/main.yml +++ b/packer/ansible/roles/auth/tasks/main.yml @@ -1,2 +1,3 @@ --- - import_tasks: debug.yml +- import_tasks: sudo.yml diff --git a/packer/ansible/roles/auth/tasks/sudo.yml b/packer/ansible/roles/auth/tasks/sudo.yml new file mode 100644 index 0000000..819d217 --- /dev/null +++ b/packer/ansible/roles/auth/tasks/sudo.yml @@ -0,0 +1,13 @@ +--- +- name: install sudo + package: + name: sudo + state: present + +- name: configure sudoers + template: + src: sudoers.j2 + dest: "/etc/sudoers" + owner: root + group: root + mode: '0440' diff --git a/packer/ansible/roles/auth/templates/sudoers.j2 b/packer/ansible/roles/auth/templates/sudoers.j2 new file mode 100644 index 0000000..0780f69 --- /dev/null +++ b/packer/ansible/roles/auth/templates/sudoers.j2 @@ -0,0 +1,11 @@ +# generated by ansible +Defaults env_reset +Defaults mail_badpass +Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +root ALL=(ALL:ALL) ALL + +%sudo ALL=(ALL:ALL) ALL +{% for user in auth.sudo.sudoers %} +{{ user }} ALL=(ALL:ALL) ALL +{% endfor %} diff --git a/packer/ansible/roles/localisation/handlers/main.yml b/packer/ansible/roles/localisation/handlers/main.yml new file mode 100644 index 0000000..a199b5a --- /dev/null +++ b/packer/ansible/roles/localisation/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: reconfigure locales + command: dpkg-reconfigure locales -f noninteractive diff --git a/packer/ansible/roles/localisation/tasks/keyboard-configuration.yml b/packer/ansible/roles/localisation/tasks/keyboard-configuration.yml new file mode 100644 index 0000000..baed682 --- /dev/null +++ b/packer/ansible/roles/localisation/tasks/keyboard-configuration.yml @@ -0,0 +1,5 @@ +--- +- name: configure keyboard + template: + src: keyboard.j2 + dest: /etc/default/keyboard diff --git a/packer/ansible/roles/localisation/tasks/locale.yml b/packer/ansible/roles/localisation/tasks/locale.yml new file mode 100644 index 0000000..89f9395 --- /dev/null +++ b/packer/ansible/roles/localisation/tasks/locale.yml @@ -0,0 +1,18 @@ +--- +- name: install locales + apt: + name: locales + state: present + +- name: install localisation tasks + apt: + name: "task-{{ item }}" + state: present + with_items: "{{ localisation.locale.tasksel }}" + +- name: configure locales + command: "{{ item }}" + with_items: + - "echo locales locales/locales_to_be_generated multiselect {% for locale in localisation.locale.generate %}{{ locale }}{% if not loop.last %}, {% endif %}{% endfor %} | debconf-set-selections" + - "echo locales locales/default_environment_locale select {{ localisation.locale.default }} | debconf-set-selections" + notify: reconfigure locales diff --git a/packer/ansible/roles/localisation/tasks/main.yml b/packer/ansible/roles/localisation/tasks/main.yml new file mode 100644 index 0000000..00a1d55 --- /dev/null +++ b/packer/ansible/roles/localisation/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- import_tasks: keyboard-configuration.yml +- import_tasks: locale.yml diff --git a/packer/ansible/roles/localisation/templates/keyboard.j2 b/packer/ansible/roles/localisation/templates/keyboard.j2 new file mode 100644 index 0000000..ed1f65b --- /dev/null +++ b/packer/ansible/roles/localisation/templates/keyboard.j2 @@ -0,0 +1,6 @@ +XKBMODEL="{{ localisation.keyboard.model }}" +XKBLAYOUT="{{ localisation.keyboard.layout }}" +XKBVARIANT="{{ localisation.keyboard.variant }}" +XKBOPTIONS="{{ localisation.keyboard.options }}" + +BACKSPACE="guess" diff --git a/packer/ansible/roles/localisation/templates/locale.gen.j2 b/packer/ansible/roles/localisation/templates/locale.gen.j2 new file mode 100644 index 0000000..ae07994 --- /dev/null +++ b/packer/ansible/roles/localisation/templates/locale.gen.j2 @@ -0,0 +1,3 @@ +{% for locale in localisation.locale.generate %} +{{ locale }} +{% endfor %} diff --git a/packer/ansible/roles/readme_roles.md b/packer/ansible/roles/readme_roles.md new file mode 100644 index 0000000..51348af --- /dev/null +++ b/packer/ansible/roles/readme_roles.md @@ -0,0 +1,3 @@ + * alle „maker-tools“ in fablab + * großer Kram in eigene role + + inkscape From 918b2275af9076b077009619d36523e3c8bff95c Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 12:56:20 +0000 Subject: [PATCH 04/49] sudo and localisation now works (keyboard untested) --- packer/ansible/inventories/teskiste | 2 ++ packer/ansible/playbook.yml | 4 +--- .../{templates/sudoers.j2 => files/sudoers} | 6 +----- packer/ansible/roles/auth/tasks/sudo.yml | 4 ++-- .../roles/localisation/handlers/main.yml | 5 +++-- .../roles/localisation/tasks/locale.yml | 21 +++++++++---------- 6 files changed, 19 insertions(+), 23 deletions(-) create mode 100644 packer/ansible/inventories/teskiste rename packer/ansible/roles/auth/{templates/sudoers.j2 => files/sudoers} (53%) diff --git a/packer/ansible/inventories/teskiste b/packer/ansible/inventories/teskiste new file mode 100644 index 0000000..c25a8f3 --- /dev/null +++ b/packer/ansible/inventories/teskiste @@ -0,0 +1,2 @@ +[default] +testkiste ansible_host=10.105.255.154 diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index c6f6b8b..689bce8 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -26,8 +26,7 @@ vars: auth: sudo: - sudoers: - - root + group: fablab localisation: keyboard: @@ -39,7 +38,6 @@ generate: - en_US.UTF-8 UTF-8 - de_DE.UTF-8 UTF-8 - - C.UTF-8 UTF-8 default: de_DE.UTF-8 tasksel: - english diff --git a/packer/ansible/roles/auth/templates/sudoers.j2 b/packer/ansible/roles/auth/files/sudoers similarity index 53% rename from packer/ansible/roles/auth/templates/sudoers.j2 rename to packer/ansible/roles/auth/files/sudoers index 0780f69..7ea5db9 100644 --- a/packer/ansible/roles/auth/templates/sudoers.j2 +++ b/packer/ansible/roles/auth/files/sudoers @@ -1,11 +1,7 @@ -# generated by ansible Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" root ALL=(ALL:ALL) ALL -%sudo ALL=(ALL:ALL) ALL -{% for user in auth.sudo.sudoers %} -{{ user }} ALL=(ALL:ALL) ALL -{% endfor %} +%fablab ALL=(ALL:ALL) ALL diff --git a/packer/ansible/roles/auth/tasks/sudo.yml b/packer/ansible/roles/auth/tasks/sudo.yml index 819d217..a2784a1 100644 --- a/packer/ansible/roles/auth/tasks/sudo.yml +++ b/packer/ansible/roles/auth/tasks/sudo.yml @@ -5,8 +5,8 @@ state: present - name: configure sudoers - template: - src: sudoers.j2 + copy: + src: sudoers dest: "/etc/sudoers" owner: root group: root diff --git a/packer/ansible/roles/localisation/handlers/main.yml b/packer/ansible/roles/localisation/handlers/main.yml index a199b5a..bfccb59 100644 --- a/packer/ansible/roles/localisation/handlers/main.yml +++ b/packer/ansible/roles/localisation/handlers/main.yml @@ -1,3 +1,4 @@ --- -- name: reconfigure locales - command: dpkg-reconfigure locales -f noninteractive +- name: generate locales + command: locale-gen + diff --git a/packer/ansible/roles/localisation/tasks/locale.yml b/packer/ansible/roles/localisation/tasks/locale.yml index 89f9395..38d1e44 100644 --- a/packer/ansible/roles/localisation/tasks/locale.yml +++ b/packer/ansible/roles/localisation/tasks/locale.yml @@ -4,15 +4,14 @@ name: locales state: present -- name: install localisation tasks - apt: - name: "task-{{ item }}" - state: present - with_items: "{{ localisation.locale.tasksel }}" +- name: configure locales to be generated + template: + src: locale.gen.j2 + dest: /etc/locale.gen + notify: generate locales -- name: configure locales - command: "{{ item }}" - with_items: - - "echo locales locales/locales_to_be_generated multiselect {% for locale in localisation.locale.generate %}{{ locale }}{% if not loop.last %}, {% endif %}{% endfor %} | debconf-set-selections" - - "echo locales locales/default_environment_locale select {{ localisation.locale.default }} | debconf-set-selections" - notify: reconfigure locales +- name: set default locale + lineinfile: + path: /etc/default/locale + regexp: "^LANG=" + line: "LANG={{ localisation.locale.default }}" From 797fc5232c043d81be778595d7472d7758cf9c42 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 13:59:09 +0000 Subject: [PATCH 05/49] add packages for local boot --- packer/ansible/roles/packages/tasks/debian.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packer/ansible/roles/packages/tasks/debian.yml b/packer/ansible/roles/packages/tasks/debian.yml index d36310e..3db57bd 100644 --- a/packer/ansible/roles/packages/tasks/debian.yml +++ b/packer/ansible/roles/packages/tasks/debian.yml @@ -10,3 +10,5 @@ - htop - systemd-sysv - vim-nox + - rsync + - grub2 From 3aa7c2c05cecad6d7ac25a837821c4698ae708d8 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 13:59:21 +0000 Subject: [PATCH 06/49] add network manager --- packer/ansible/roles/network-manager/tasks/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 packer/ansible/roles/network-manager/tasks/main.yml diff --git a/packer/ansible/roles/network-manager/tasks/main.yml b/packer/ansible/roles/network-manager/tasks/main.yml new file mode 100644 index 0000000..d7ced84 --- /dev/null +++ b/packer/ansible/roles/network-manager/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- name: install network-manager + apt: + name: "{{ item }}" + state: present + with_items: + - network-manager + - network-manager-gnome From 4d0616ff73d7eb70600dd5b79eff612419f834a8 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 15:39:29 +0000 Subject: [PATCH 07/49] add inkscape (base) --- packer/ansible/playbook.yml | 3 +++ packer/ansible/roles/inkscape/tasks/base.yml | 5 +++++ packer/ansible/roles/inkscape/tasks/main.yml | 2 ++ 3 files changed, 10 insertions(+) create mode 100644 packer/ansible/roles/inkscape/tasks/base.yml create mode 100644 packer/ansible/roles/inkscape/tasks/main.yml diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 689bce8..116904a 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -23,6 +23,9 @@ - role: localisation tags: - localisation + - role: inkscape + tags: + - inkscape vars: auth: sudo: diff --git a/packer/ansible/roles/inkscape/tasks/base.yml b/packer/ansible/roles/inkscape/tasks/base.yml new file mode 100644 index 0000000..f583472 --- /dev/null +++ b/packer/ansible/roles/inkscape/tasks/base.yml @@ -0,0 +1,5 @@ +--- +- name: install inkscape + apt: + name: "inkscape" + state: present diff --git a/packer/ansible/roles/inkscape/tasks/main.yml b/packer/ansible/roles/inkscape/tasks/main.yml new file mode 100644 index 0000000..a9374b6 --- /dev/null +++ b/packer/ansible/roles/inkscape/tasks/main.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: base.yml From a04208fc11aeb4c760946c8a3a2f76fe898b0b4f Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 15:39:44 +0000 Subject: [PATCH 08/49] add arduino --- packer/ansible/playbook.yml | 6 ++++++ packer/ansible/roles/fablab/tasks/arduino.yml | 11 +++++++++++ packer/ansible/roles/fablab/tasks/main.yml | 4 ++++ .../ansible/roles/fablab/templates/arduino.desktop.j2 | 10 ++++++++++ 4 files changed, 31 insertions(+) create mode 100644 packer/ansible/roles/fablab/tasks/arduino.yml create mode 100644 packer/ansible/roles/fablab/tasks/main.yml create mode 100644 packer/ansible/roles/fablab/templates/arduino.desktop.j2 diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 116904a..254bdab 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -26,6 +26,9 @@ - role: inkscape tags: - inkscape + - role: fablab + tags: + - fablab vars: auth: sudo: @@ -45,3 +48,6 @@ tasksel: - english - german + fablab: + arduino: + version: 1.8.5 diff --git a/packer/ansible/roles/fablab/tasks/arduino.yml b/packer/ansible/roles/fablab/tasks/arduino.yml new file mode 100644 index 0000000..1606c88 --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/arduino.yml @@ -0,0 +1,11 @@ +--- +- name: download and extract arduino + unarchive: + src: "https://downloads.arduino.cc/arduino-{{ fablab.arduino.version }}-linux64.tar.xz" + dest: /opt/ + remote_src: yes +- name: install .desktop file + template: + src: arduino.desktop.j2 + dest: /usr/share/applications/arduino.dekstop + diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml new file mode 100644 index 0000000..319e8ea --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- import_tasks: arduino.yml + tags: + - fablab:arduino diff --git a/packer/ansible/roles/fablab/templates/arduino.desktop.j2 b/packer/ansible/roles/fablab/templates/arduino.desktop.j2 new file mode 100644 index 0000000..d8bda0e --- /dev/null +++ b/packer/ansible/roles/fablab/templates/arduino.desktop.j2 @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=Arduino IDE +GenericName=Create physical computing projects +Exec=/opt/arduino-{{ fablab.arduino.version }}/arduino +Icon=/opt/arduino-{{ fablab.arduino.version }}/lib/icons/128x128/apps/arduino.png +Terminal=false +Categories=Development;Engineering;Electronics; +MimeType=text/x-arduino +Keywords=embedded electronics;electronics;avr;microcontroller; From 1111a1c9f94f77b9dbe6c7c1ba255e08c4c5ffa5 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 15:45:30 +0000 Subject: [PATCH 09/49] add cad --- packer/ansible/roles/fablab/tasks/cad.yml | 14 ++++++++++++++ packer/ansible/roles/fablab/tasks/main.yml | 3 +++ 2 files changed, 17 insertions(+) create mode 100644 packer/ansible/roles/fablab/tasks/cad.yml diff --git a/packer/ansible/roles/fablab/tasks/cad.yml b/packer/ansible/roles/fablab/tasks/cad.yml new file mode 100644 index 0000000..04c9eb7 --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/cad.yml @@ -0,0 +1,14 @@ +--- +- name: install freecad + apt: + name: freecad + state: present + tags: + - fablab:cad:freecad + +- name: install openscad + apt: + name: openscad + state: present + tags: + - fablab:cad:openscad diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml index 319e8ea..86c66a5 100644 --- a/packer/ansible/roles/fablab/tasks/main.yml +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -2,3 +2,6 @@ - import_tasks: arduino.yml tags: - fablab:arduino +- import_tasks: cad.yml + tags: + - fablab:cad From 8ea7a3272fae4354197aa76de4e470ecb5b7adae Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:05:36 +0000 Subject: [PATCH 10/49] add OLD! cura (fixme!) --- packer/ansible/roles/fablab/tasks/arduino.yml | 2 +- packer/ansible/roles/fablab/tasks/cura.yml | 5 +++++ packer/ansible/roles/fablab/tasks/main.yml | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 packer/ansible/roles/fablab/tasks/cura.yml diff --git a/packer/ansible/roles/fablab/tasks/arduino.yml b/packer/ansible/roles/fablab/tasks/arduino.yml index 1606c88..d10c93e 100644 --- a/packer/ansible/roles/fablab/tasks/arduino.yml +++ b/packer/ansible/roles/fablab/tasks/arduino.yml @@ -4,7 +4,7 @@ src: "https://downloads.arduino.cc/arduino-{{ fablab.arduino.version }}-linux64.tar.xz" dest: /opt/ remote_src: yes -- name: install .desktop file +- name: add arduino to applications menu template: src: arduino.desktop.j2 dest: /usr/share/applications/arduino.dekstop diff --git a/packer/ansible/roles/fablab/tasks/cura.yml b/packer/ansible/roles/fablab/tasks/cura.yml new file mode 100644 index 0000000..cee1d95 --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/cura.yml @@ -0,0 +1,5 @@ +--- +- name: install cura (OOOOLD!) + apt: + deb: "https://software.ultimaker.com/current/Cura-2.3.1-Linux.deb" + state: present diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml index 86c66a5..c40ada4 100644 --- a/packer/ansible/roles/fablab/tasks/main.yml +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -5,3 +5,6 @@ - import_tasks: cad.yml tags: - fablab:cad +- import_tasks: cura.yml + tags: + - fablab:cura From 07b4760813c50f889c95971cc9137c83af5e81fd Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:05:59 +0000 Subject: [PATCH 11/49] add fritzing --- packer/ansible/roles/fablab/tasks/fritzing.yml | 5 +++++ packer/ansible/roles/fablab/tasks/main.yml | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 packer/ansible/roles/fablab/tasks/fritzing.yml diff --git a/packer/ansible/roles/fablab/tasks/fritzing.yml b/packer/ansible/roles/fablab/tasks/fritzing.yml new file mode 100644 index 0000000..6480442 --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/fritzing.yml @@ -0,0 +1,5 @@ +--- +- name: install fritzing + apt: + name: fritzing + state: present diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml index c40ada4..4be916c 100644 --- a/packer/ansible/roles/fablab/tasks/main.yml +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -8,3 +8,6 @@ - import_tasks: cura.yml tags: - fablab:cura +- import_tasks: fritzing.yml + tags: + - fablab:fritzing From 207ba3d3fda9c8f1f03d62fad264feaa67a36f92 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:07:59 +0000 Subject: [PATCH 12/49] add kicad --- packer/ansible/roles/fablab/tasks/kicad.yml | 5 +++++ packer/ansible/roles/fablab/tasks/main.yml | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 packer/ansible/roles/fablab/tasks/kicad.yml diff --git a/packer/ansible/roles/fablab/tasks/kicad.yml b/packer/ansible/roles/fablab/tasks/kicad.yml new file mode 100644 index 0000000..509c22b --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/kicad.yml @@ -0,0 +1,5 @@ +--- +- name: install kicad + apt: + name: kicad + state: present diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml index 4be916c..ab97d48 100644 --- a/packer/ansible/roles/fablab/tasks/main.yml +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -11,3 +11,6 @@ - import_tasks: fritzing.yml tags: - fablab:fritzing +- import_tasks: kicad.yml + tags: + - fablab:kicad From 0415d3c25a5554c47e867463d12b6ec9cfeceba5 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:10:22 +0000 Subject: [PATCH 13/49] add meshlab --- packer/ansible/roles/fablab/tasks/cad.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packer/ansible/roles/fablab/tasks/cad.yml b/packer/ansible/roles/fablab/tasks/cad.yml index 04c9eb7..10eb857 100644 --- a/packer/ansible/roles/fablab/tasks/cad.yml +++ b/packer/ansible/roles/fablab/tasks/cad.yml @@ -12,3 +12,10 @@ state: present tags: - fablab:cad:openscad + +- name: install meshlab + apt: + name: meshlab + state: present + tags: + - fablab:cad:meshlab From e7b683788a36eaeb83ed1eac7fdef37037bd6df1 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:17:36 +0000 Subject: [PATCH 14/49] add visicut --- packer/ansible/playbook.yml | 3 +++ packer/ansible/roles/fablab/tasks/main.yml | 3 +++ packer/ansible/roles/fablab/tasks/visicut.yml | 5 +++++ 3 files changed, 11 insertions(+) create mode 100644 packer/ansible/roles/fablab/tasks/visicut.yml diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 254bdab..5e1e4cc 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -51,3 +51,6 @@ fablab: arduino: version: 1.8.5 + visicut: + version: 1.8-19 + hash: gdfea529f diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml index ab97d48..928e0e8 100644 --- a/packer/ansible/roles/fablab/tasks/main.yml +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -14,3 +14,6 @@ - import_tasks: kicad.yml tags: - fablab:kicad +- import_tasks: visicut.yml + tags: + - fablab:visicut diff --git a/packer/ansible/roles/fablab/tasks/visicut.yml b/packer/ansible/roles/fablab/tasks/visicut.yml new file mode 100644 index 0000000..bf747a7 --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/visicut.yml @@ -0,0 +1,5 @@ +--- +- name: install visicut + apt: + deb: "http://download.visicut.org/files/master/Debian-Ubuntu-Mint/visicut_{{ fablab.visicut.version }}-{{ fablab.visicut.hash }}-1_all.deb" + state: present From e1d8bd650e64264fb280486214b8c5e3af48635a Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:22:49 +0000 Subject: [PATCH 15/49] add java (for arduino) --- packer/ansible/roles/fablab/tasks/arduino.yml | 2 ++ packer/ansible/roles/fablab/tasks/java.yml | 5 +++++ 2 files changed, 7 insertions(+) create mode 100644 packer/ansible/roles/fablab/tasks/java.yml diff --git a/packer/ansible/roles/fablab/tasks/arduino.yml b/packer/ansible/roles/fablab/tasks/arduino.yml index d10c93e..1978f3e 100644 --- a/packer/ansible/roles/fablab/tasks/arduino.yml +++ b/packer/ansible/roles/fablab/tasks/arduino.yml @@ -1,4 +1,6 @@ --- +- import_tasks: java.yml + - name: download and extract arduino unarchive: src: "https://downloads.arduino.cc/arduino-{{ fablab.arduino.version }}-linux64.tar.xz" diff --git a/packer/ansible/roles/fablab/tasks/java.yml b/packer/ansible/roles/fablab/tasks/java.yml new file mode 100644 index 0000000..0d156f4 --- /dev/null +++ b/packer/ansible/roles/fablab/tasks/java.yml @@ -0,0 +1,5 @@ +--- +- name: install java + apt: + name: openjdk-jre + state: present From 3375c950dfebb41d3abb98c469d2f5bea39ff6c2 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sat, 17 Mar 2018 17:57:28 +0000 Subject: [PATCH 16/49] configure lightdm --- .../ansible/roles/windowmanager/files/bg.jpg | Bin 0 -> 236801 bytes .../files/lightdm-gtk-greeter.conf | 64 ++++++++++++++++++ .../roles/windowmanager/tasks/lightdm.yml | 16 ++++- 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 packer/ansible/roles/windowmanager/files/bg.jpg create mode 100644 packer/ansible/roles/windowmanager/files/lightdm-gtk-greeter.conf diff --git a/packer/ansible/roles/windowmanager/files/bg.jpg b/packer/ansible/roles/windowmanager/files/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45272f8c9907e3c60ca1671b8e21838fcd17c0ce GIT binary patch literal 236801 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%0DkZ9km>flAcqfRfq&GRO9(Zly4 zw|tit?{m0Q`A@Mje2KKs>-6~R+t>PRTWT)0qoR(Lf7AQdH}3|m_I=uy+?XkSko($P z^=;c;=DTX}-_==o;oZCoWjxC_Z`+vnaH-Yt&p+2| zmCRmL?VWt@%Jy9gBEJ0+JkWeZx9r%jt$V}v_UkH~P&g>Ccm2h86W*+wm9y>5+zrpR zymFlNzG4eb}2S9=!Csxm$@*PPSjx-!SJ7yF!k7v3)Y*1tt}smq>O zVHVLr`HT(IC7#8Uuip^*>f-h#zplne`%U(KW$}VJLS^z3@q@bix6Ix0?b)S$g(`Pr zLszK>^A{>V*&{EpI?JH<=l&Dl_Grz2ovvLJ79SiP7#t8UQX6qnWfFs@%8UiC;P^?z3YUoGb=P75m*+rXX2aL%fBtVbw4R?$F{|uxm%r5 zEM#4cPxNtLzp?(pityH`!YT2_kFze#wcK&CvfN?9YDLf
  • @D9125sD0_!+Tu?TM zU>B8f(%Igkb=u3AK`_5)MMJN`st(s1Z#ZQ_I9vp|Hg)$MIHGmJ^~j28iymzdhwFq@N?dwkth%8Biee8|HBCKqja4^5Q6hTPiVoMqFSw!?wJ0snI$gfB zut{LG?nOy1fwtq>jbbYVx^zP)1QxI;hI4GX8p){rUG0oOtB|0+s^FnrgJgujAZl!U0Y1-$A zQ(JGJ&3?bT=E_*|o$+8_(b3 zDZdrvnS9>FdS>um8JBpD8>{bbXD4dS6e*14KpR$En3|p9(1fY)KFm5^Y_## zsax+jmfhJsGoo;>$l2c)=NQdq*1KmhrPlgY^IP50-gz3&g4Kl2>9n0WyEsHvW^;(y z*|NEEVKZ*|xovBHs`L0nX|&(O>zVRf>{c&`{IYCALzd|CvgoUqt4?3aP5bN{^3HqN znlHAQ$(Odj{Ov#M#kW{Zz0Q*L0vFfDZd@7dyY1qRl(Md?A=Puvb=~-0yWV5Qi?=n` zZaU{&E|6WYM?ZVpYUb5lci(P%{N?Y$s8#EWXI}7M_~ur%*UaCJGPhsVS5{iJ-C4Q( zE&r~i-M#!weD=(3TK>m2eJR@;zb|x+qul8`UpUrX zKBCQhD_nm2tx}${X_uY89y5*7`fgYvWxmp%o7wBh)XBLC+d`8P9$bhKxiE7pWAF*> zGaVZ)Oi`cmXCBh+F1~v6 zGTP+Zse-m#jM|4fdMT^J5`gPE?3vwcHh7!q!2WXUUFBG@sZF`Q6{0I;@qHmE;0+Whc#(7 z=#Jc^8K6_KG(bDPteGB7(^%mx5~Bk;)H6TAjmmNOr{rLTNM>*?W;+O@B$ zA|%p|Tn>Bk{^iQ@EvMIix00Fle7-Sb<;2IKH+NN+Xumz(z&GV#^9enNhpP@BR-Dew z_v_cJA1$Agmf!YwU;-_3+3GC%?#`!%kAX+UoN@vS8I$HTFkWtS6<< z+h&W0to*P%*KuAC`^Ttv+8MVE%9dU)K3so_A;REludb&1Nm2dIpA(l{o)EX|#fDc^ zf_49rHhvMn`Dd zHGx@Y?r>H*h^=3+d`aLV??(w1OF`EVhh10U2Q8}g?b2h2IMv4}-PM@sdVpV4=t`cJ z>Mo@RtXGGPbhrrz5PCaot}*8>cDf% z6Rg`OT+A`E-*EG{+rHdM>?sUV%$c;s@FFrVFQ?da~?u z$dvnffuCOeTOR5@jf?y2&&H%hPWqxUiKQ{mSagG#xOTKk1l_oJqjuig#ha}hGXr)> zJWu$~@U*O3{jGiCw&P38ReQTiAFWm{&#pgP_}hJ2NG5w>+`5;O*>1e>J8{dw*UNd; zs=D}qeRbPkZQSzwQnvQz7u8etM>elyKgVxmlkiOObXd}A#iJ}yd%r3l$za*&E>f7) zruBZo8qWTrnm~(Xt-Ad|%U*;p*gLCaLeATDw@iC($MmgQ?f0Ur;in!ew{mvCro|o) z!uixDt@aA64Qr3(S~u6@WQkSz7QUXj{oCGYY^ghWcbEEX+1;0m9{H!OzExeoH}MP8 zr9Wls$|_&Iny1?CX%D)*&s$uyk8AT>)!C2w`p-%~);t=z>qpAu_+XCcRV%ipaD+^I zvDbTEZi9Dd>WWWSc}!hTZ9Thr(QK({mu`z_hL@S0;agkspJBJtgp<$DaBvG>lHDAg zlUu#|`gX?9`21o)AUxch=00rij*P9Q1nR zv4(Zd#@(x(R?A%%aAXl&ba?eFrc;GIlYMUKu2kzUzZnx%@_Vt`wT&6Kww0V*@_FH^ zd+x{kt3H}txp_5r^_6Ac#CEncaWru}2)llU`cR!15hoqLwOyX%8z?Dktz!|#^7Ut+G-xb#~5wQ0gCNrl%h zg$pazJk#2;Dr|Dzw=(zrZOb_VyS#2?-)ZU$3W#x!IH}%pf^m``sChVv!LzGm0&Aw` zp)LkbHUEPQ7LR7ysIoE`+?#*aMEya7(o!wW3rt=@J`F;iDo9w}foHCf2h*)mx#Om1 z3p3dq**N0vztG=$n>p3#bk3C(x6ZT~Ju}Kacp?3W;Ms~?54|^LT1z?OZ04I3T|azz zt+e-Ywc6R4$+s?D;!tvw?y#Ahw1@e^{p{cVX{BYqJ?!4yV7RugKGS!B1MdTexMMeL zO|J_im9Fcd12f83ZFGIKz^yZ;j6p}E2(&mxAh1k~>57`7a95I|IJbe3Xo|ATy{92c z4-=e3Qm zH(0ht%ARNvEnF4O!sFJp#4~TzBJ)KLlV5WbPw~rATF5E&Vb7goKTFx`qSn}^3v4RY z<}Hb++A0xrCaAM*)!*0bA${4#5!*x8hb#IehxFt+i5Wg{QvK9W*?iP5*`+b=rsJ%% za^>$+lBKw2Pfg~#rT%X9-n)CI9XaLW`c+4R*{^g(?`hef3q{edS8UPA&GL|2Znic{ z{bAJAqimhAdV6inb*-MwxbE`qyKG-=p${i_z|LiN!@gGgbVj)zmR-}-b8KSgn$Uzv z8@@{3*~Zlqas9H*lxJx>1KV}OOe~anl}~yE8_Y}CB-wf}C38osbM&1}J_#CU#2iEJ z@60K?HF43AiwjrX*3}T?jPZ>*cl&lb?`doA^!D1RwR3e%xeK;0J0Yd!wszKIGoN=H z2RGh5xVm!DH9l^0&owr}z7x)6+?^WW!a8wzV(1?6fTcOI-@@YNHv8WUTXH7ec>3k- ztHk1FYqef}nX^rP!=|%0rkoJC8aZ2aOR<*kip?gj4%;toR4#DYo-*-UXq-!&8rQAG zExM;}?XOxmTjx`xRJG;fri*5&I%{rd#PDTX`)&3YT@}1}#l37}zsW~*7hB3~YPxeH z>O&yoQAW=t`P>>8@9YZcOBb2&@YMmQ4Z&eu**?d@ToVPD3XT?JMrlfJ>1g||&Fr*U zG$U)xu}UvPAL&)+zAW zfaRKY9rt?GttNIoyLqR|K0&7}RN*0C!P$TH6XJ?q>RmM7?X}hO%^C9p8R84Ag16XS zPTjlKcGup@R!#~(SCMNTwB@yTE&t+=lE>z1l_X!fZkW1i(Uruk7S^xd?Lrsm zgcQ1otq@%IG;+oo?yijRLoMaYXRJ0_6Le&?!pf{^37a*KnsGf<`OK}&e$eJYvdPZJgnnq7ZbI3Et#GsTN`jKDMZf?6R zv^JgN?9uy|4(vIc>9T9V<*u)Bmz2}K_-x2{w{*?F<*&le{8;OKOd#f|@{1ZHO|K>Q zHI95*cWqtvy|5MKd*79>jJn*mT0cHqs6jXGtH?r*r5EK?o;xxMw710yL3I{?!40ZUn34& zowiT7vhY8{tp5zFI80sQcgm~q&v0F>wjgfF?FZ2%V%O$9dUi?v@6pQR>4E1S_V&JG zzFH-JOZcen^kj!(^*@Wm&nM5z@sqPZT72)I&K5(Vf6{UxtE^pF+>1`x?wX=!d-_Gl z+=&lOS4eVMd{;KS=+e6MXaeZ6po(Qj#YGzp1CB~}HD>9Ff$k8@)3TVdPK;UioySJe zu82i{kEgIpEs^Td@h~~)c|!NZiMyxGa(ngnWrdZ0m5Khu9d|Tmwx8{r4S7qB1dKh11c{YxN`*nZo*S3s z$MWa@-3w{M#j@YpFmHnVpIO;HFLG^mIVS#Rm~(W;Z-0d^jSmWz`qWH6fA&Aazn=OD z-(LP_`1sX+u3Tkxsq?h&I+JIu(2e_4C8yf}y1-FvMUrSt7--zewby#@VyDSpmaBgC z*UFK!_{G|HG-uoVo8Nr@=5LMIbhCZu-R*xGQ@Pw1?M~&h>h9B+-?mrXps&X1;~qzIXQSt0 zvwq2~V+vb0`Kiifn~#>b33SLt!mZd!<5+o%Bm8zbZ~E ziZ+&s3Qk^REpkKmv*gV;Oi_y)-IKXk6gRLOjkw4f6Ez{f$hTMdvfQcsm-}9QP75>k z`qn&?{XN4Dzxy}0>U`@x%id9{)tC5h(xzDH{k45px30U)HrH+Ug;%?-Z>^noEO%RM zux$4(omKobj&VBj{L-eEvRapb^!>`qo!7Rk`59T2!Q8cG`%d|;KJC?p=W`jlT{NaGHVix} z*_ysVFoR2V#i6T_96Q4tBHsJ4XrB&I4mFodH5Uk9TRZ*jZ|kmdX|7)jUX?ZIF168W zRI*8|`1I`AtxLDI9z7a%X|dbvRUs?ho=IkzF3+$>$lhc1>UT5VEPr!L?b@kRAGc=i zJ^pR$oV(0(4=$eYHQw~G=wg3v%{tRH;U(2_vYcL$ zSP~g~Py6YV$JTy&A7=%{2fy63W81b1hcw=Cc}|_;sPbVZgUTdNFg7Zg-n91>s!U8TT^PkO%S|h(iZyJy6fw9 zm#WlFyS!6gUAq~);<&39zrx-*eX|cf+ZV8AZrjCu8+N8vN6(s~wf*5r-=pi~601dQ z+}1<|f1iHmv(|%5Pn*@+zvYv=LsQE2HLB%a9{qM{Wqexvov&LZ&b+<%zV}eIuX;~@ z+_u&)Usk&uC9;cz{kpmBduBgdkvakeLRL)4o8;;Iq5Wkrm7i&L|rmEbpv%ZcFFdy+|hAwbpf|t z&MQ8y$*I8;<3i8PmUsuy}aOrC#r$=}56a)9HY8JheKa{`P)Bfy0UBXsnBiJ|6U!n zI{KfXv})FNx94yEOxqj2*pKC#ou}n2m3~WUW$UiOly}~{uDtks{HEt@mUC-8eZnkO z>%>(kODBE&=JjsNH-;yhbYFa%&$E1vPM^5j)n6IgqQu^Fuk7oaxK86#HRsvi>KAPu zZ7=rQwls=`b!+sd{i@rdbK0A%wTrjjcyc_^=E#7u{4VI^}Uy+SY;F5B*Wimuk3eNsqw_Q}j-nP)RJ%C(QGeTw$n_Rb^fyOz3P zW3Je-rxi;qb?)zWxU(qt)FNqvL$eguMhZIKnR@8Xr;wQnYd9_(T(lujxk+)2V(gh& zSC$xPvMC)7ov_+)Zo`JKr0ye{NvjRkur@^~8+aH>wk8{9sHf(teKLuC;Su#tJNxF^ zS>bPfUpvzOQeh2a(({)6k-=x}H?Fz9oBamAsKS*nuH3ZMHP0;F7khbq+3#9bvF+yH zn}&P4_ubr^+jn-wvlnj)65d)-xoIKFum`)A{AcHMzTbF0NxEZmy&%KD*blasOD^vlbj>U$5aZCrY;@Q&0)m3a@u&*;tlH|@7x-^rcZU%cJ?Dpxr4?DFEk z$@#v$<;R%6R(IT8z*v0sNbr*Nn$njR2d!BvasQXR?}xIvlh+rmXxMM^_S^EelKneM z?WW{fIc-gje7n5hnXysPv@H@$6};k+FP^_teVd%L@r`uk^fk2y*L2vgbpNHW90 z`tht!)4L9vZOF{4+VtVn%1n#x8^8Y+HMsgfKc#-j)&1VToSl>2`c614y?c9dX3*Vp zD?Q&a6;zb1waO^hUvQTD^3smhhMe=G)Rc$XxjTWvDtS0T6t^UKU-DulVRh-)?;j+7ks{$@@*mC z{`Jx`oTVQe?0>Ln%6g4&SFUQiemC88Rp>&`QD@P0c~4RkTvu&kaGS7F_g(Oe$`WS9 zupZsOgF1%;*%?df+GA(u?oSL#mOAruMiiTBx>@mA>sfj7sRw?Eo{mjhYPu`kSA5zM zxwEqFw`%8yUaDR!6~a^TS^mWi>sfof--dOR-aEgJ{e5m!`houpt3GSbUiJK--;at) z>BovWE`Q#?O8yvd+@(y*V6V<`0nV)TB9&Q<8E%OT(^@uyR^M#qJF-GZ?$Tb{OJ)By zeyiW8uN0g2*!B7Df?xWE8?wZg|FRX|ckbKWomVatth)I5kNCu{?^yx!E^og$Z=QHW zSlfqPzvKc|ohWn^)A@STqVQwHb(8f$Mi)NkBzK1xUicwWn6=LQhiGJ%cX08`3;!8D z`~G;Mdwi+by5g>vcP;Y&Gt4S$e5N5EI6TYJHmoD3V&-(fo! z2Yh^$*>hh`jWJ%Mtn}d0g5%69wD(n)y^OnjJMMzn+^ty$Zs(l(s=GFGi$iu)wae#1 z>r9-)7#E zWF+`Z`D_ix%d+#O>n^N2bVIjNVBeB|&3BEZt#7ePbM^n7`qwvo!%3BS0?aCNZ4@|`w;G5nSitpABka*^5ylX;)*OvP3{74x8Vgt^c`C4JX=P4e z(&BP;1vfNRpbbti{c@56|3UYz=`0hNd?vXvsJxu~qCt0Q*i!YaZ>ncKT%l{=^o#w? z>|3nQZol4EcVX4_JC~Npx-DVIGRQwYyZvI#_lv1zbr<&C{61w}ZuY+3th9)45(?|y zn5l&<+xhfWU(}b-2-E9}?M`W(4wwIydpY=0Zr|q^)9qzXjCM$|`#oBx;qSWZMKmR)=kZEm|ks5;h3W z5_NGh7LDXg<7P}&42uwK(Gci4yg^KB6U(9#p@OR-n+_~pwSr@lsEU^{Ya@4Uh!U5U z#i|po$0leutvo0OPGO%KCvq+4bd|Uo;`StsTRxBPjLcN_v~s=nt9+ijCY~(JC{CaD z+|=55C*RxIf3%l>WuDZyU1nlR&`RYgyHmew`JH5MdhK>|c~k$c?UTY>3nNd|2b+~^ z_I6q7?R>ZP$((5ONk)ryoOyCMxqsK3H)VgXUfX+h&y?2HmFg*a+Lr9E!v0=$-X>kC zclO=dCkt|Co)mKqT~a8X4v4VTC@KMX*<%tY4^$v z`Ks|d`aDi`Kb{l2TX0F%)llDt`@43B?<`mUZg^5Mpm64atdiP25gSdbY<-$<#7!)1 z_Ge-BoyO0yN$GL?&ZnpD%H*@H@!n-)_v)*u?*yI~8`s}B{BF%1$zALEP0bSp>O`k4 z-RSd2dvD!x;SY->H#Pj$)Yx=4rSMd=;1bTHGn*G*>Ax9UHSdhfw5Vz4`!{U~FqoRY z^VrOb*Lu%JR$24eoqGLtW4=mpu9Ssth~T-`n`d0SY4|NHYi>(H^yl1J7TT?BpQ1Dt zvj=VtOr2k362<48BGRs!9wyegSX?dp?AF$T?cCN4{tZu78>t-X54w-jrMe`{1UTk1GJxFu|053^K1pj_b1^0{2J zVFQK<>La^peu=jeaRTE>6QYO_Uh z8z%i*_wMe0hO))}Qtcs2HV`rYdGv&plr#_f6hQ!47q_4J=JY6PdO^z^&tb;nHY zoOyW3P1%{#4 zV)4g7UAMw$aC_&`;x6OX-HeZB3GP^S)aGH{fr@2)Ptr7#dLAa&1ob_M1G9XpCp+m2 zOw%}Loqa+WG>PafvbnY4fQ|WwkI{DbGHPFI_g)vty!u&*|BQ~D)w^ibvah$ruKvjg ztyTWB?(O!EF_)*V3Z7mz|H?hC53}CZJNq8ha7&t|z1p%bK*uWwbXc3t!zrL$CWbyz z!smFI*cN95fp#uk->Bnz_N!Dvji2ztqlsawdZhQO#9CPTX_lrJ-CUD*=EcnwC1q?2 zKbAFCPI`IttIVU6NuF`-FX!IQxDmKL^T(O_PxBfpZ$9#jvtu-S9{72(ZNI=IKauMi zizS>IIY8HPeE%#byY&exqsvyw{-T`VbCM1ZmU65KI;!(9*OKv2#0$`p$jC!?wy2if zT<4R|YqyZ^m?yVl?B=U-CC5*@YKc63m^$yGrhD)OTb?Diefuj*N@iZ)+59=KYH#Jr z$amIvJngbC{&xO%{za`-^xVL;>_=}+eRgWsj`h-PpF>yM-ktd7u~<|{=9_hA0<%^L z9$mE~?pyNFQ*2Is8i!2p%oa%(ZFsO^Lbsxs<}=aVOpg{s_2>q+q-$%4s2!E;>dZ10 z&O5MU#UXuxg&l5*w>PM0M=0Ar)w&bhknlt0iP(kXhlCz&l@igqx;k*pa^Jq{dyg5{ zW}KK*$)Kvcygq$%S?S%kSDpRtUF&`wR*+ekt=TijL29y$_!0h``XyVRd#%y^R(Eu1 z)TxHj^YO74ZcUAh%4{>^Yo z)cYRo&EYNOG`Tm)#$I62lPQy)Z2e?+x7uLge};^htJX7J{+xPTU9>)W%ewgeTI=nW zmY-`hiGE|dwxq&{@k6HexpH@{KHJyZn$LEv)>kPEi!3Nf-ko!3ht@-p=vC`Q-=WVXB7q*>jxO-vl-DJ;CSCj8~&v{;0sD9lBH8RVh?`b6W)iagTm~^!)7IOqBO13B11SfSXx(S^TOVyQH?^SJ7u-Z8{ zYX1A2yUcqsf2_A?*vt54<;P1*hrhiDk=KliGu`gGcUFDzrGwgG{nd*bV>ih;9TvQ^ z?d@9c)qB?6-yL}P!qhd>*8Mo|m(H``vuT2mC`&`5>{O5|ytJDnET{MVp>WUko(-s?~GU|p*Thqw3=t`RA5q41lHYXp>E1zV%bhZ}! zXUM+(J3Rfj=}Xmf=L>SnqTGsEd#an`9^RAk(Rm)Mqw>x5*u2c6@v}XCOuX#7>g>u( zfA`j0XE%DD5fhRq-5v8;UUjMIg_SmwxF6l#onQRs(k73u?i=+cUcK?x^2T@H5~=Wz zyT;O8zdV1Hz0q=B8f}~%oMW8v=9Ovs%>1-k#hQW_TTd?Bnmdp0`IbM|@9w`eX~yli zLwo1sPP|pH%_Oek4-@+z?PKk`d)LZMURwWS|EK(O^C#Qei5>|l5=?m?Ejnjo_w|^G z9h22P4TLg0Jy;kntl@PF*k0?-!1Ugh|6BI9RvWqE{=SH0>~sfc4%!K$#S zaV{ono7xWTS-ER=e?xrU-}(Pqt>dp#?G-M(nM#O3$yzXDfx8E(hizU(@*Z*xj|27wT+k{d*I2c zF28RXr@mR<#g`Q4T-vqh{mmV1*O%|HoAb)Xo%QRyTYI&;t3p@KOm#DTYkN*e z{Aj?wO~1`<_1=o*x+%K#zJc}>RHE4}wm2e2P z(2uu#cH6<|Y9ynWLx7@W(}9RprvqEGyq%2M0&GH4lsUK-v2~_7PHhtV5Gt0{t?YYh zk%_m(8*b^VEXp1s6IWFp1RaONu}Rd0MYAoy$zp{-hhmtEvcVg!2bNkLuA-4{xvmKj z7lVbmtf#t^x1@733$6@J>e8CWaZb|lM975FM;*$p(M`spX?*3Po_9K00~vJ=CKRpG zdL-&1;XJ)ywOswxiAbK{M?H^EC4YG5acLgMpX$kv z<`tYuu3B<8yy)bk`6B6Z!J=1|zuG;`U+&3|#TJ`pOm-*=wYs@yTE5(q4KkC1WqV6* zZJ$(_W2xJ+(Tw9v`^r|a2L-NX6J*3(3^X6#>3MXzK+vZs_<*t@=L2O+OGnT|Vw|F# zqRpdI-&l_7fZ7_0Hh+&!5EhuGaYpE{OS)KqP0$gg51a{tbBs2C?u~AWP@iG6!6!JO z`>2laIY~zYZFHD~A^CO>I)9+IEFR4T3J=3oo3|i)S zXZL;gZ57)$zm~BsRrucaA?9=9o6E%|H)Y#iy=VNnZuvHS*SV8B44(5u*~_awOIo$l zRP@TX4Iv@IEAhEpnl=WusfdDQ?b%qOvC!N*>m*QPT}y3Q7$N&1_H1 zc;_whxh){asZUXy%V1u?Dac-#mUNy4pu?p(lll}=-*9#%T?tX`GVa$k$3GmnkhBibHanm*=bx+i#hgGPj*`K zW^rP}W)72Mx?0oF{BCYMs-bU;BE&myU zuTSk+^(i&xwrvit{x!>ef$j<~UEl9{tF<9@4QLE+zQCrdCyP%$3Q%3Wseh-R_Qr!z zex<7FR~wTSMRgwy?|OAEaf--RcLC5=jB}EXhTbB6nj75;BS2S^CkY+Zd3;KpbFt4S zJ^8L1-$Xli-V*!r_)*1tK5edJXVv>$v2c3`7ULGWCy<0YQ@9uKLor3quYo>D*mqwrW(6@b^aVO+KT=Id8Esq3SBQ@Rk zElqklZ_9i?4~|wQCY^@Wt#{`6PMc+ihR9N z?em}d`Npl@E8eL;=leG-oi;6h=09gI&nXKlcg+vi8b z-VCqho?UfzrPpd6%XREd;<_1E%lD^Cn||M2cWQF9>QyP_v&Glvc@>p!oyeyZ3W&^-NANxiP5P;t21LRWNRIs zC37j$fbX*3N4*&7o9Wxv^_ATF*LLRB-Rv!`6IO@KeqgjTY(}+)F{Sv3AbuZ_-gtXJ0%PH?fXWm{`>r%Ov@l1hQG)so#1GkS)Hnpss zne*>_@TxWW65d7nytp67DC%`ev6v2j5;gZS+3Ri7eDZDmwVUYUQIv(zHcZ;$gmGu|nG@?Oe6;(mYK z*Yno?h4bBC&-I=AIohW2Qde{M?bNPHh(oAYXR|Ak2}WUJOL_o+W(Z~Dy7RL*Le zckH3eeP^ZAMg79Q=Q5U5ncVy8K!I4;rHfzZNwIxu zS?aU*0K>jH|9a{UuCvPB9vSzfG}`V8*L2f4*18EFAMIRq< z)_7;?)vCDniGH$SdmVYQ%YUt3y1V?={7vyG(l&4Y^+sOUbBiZWe|G^NBv1LYbEHCp8)+f8)XWUME_+;1H zXVs@ZKlSeFvzlUAy>s2FI$1ZXr@L$Jhb28#EBC53yQO&feW-1C(2M6=dAFw)`<~fb zpVIqI`?%w?^2Hf<_O6p!y|Qts#@4BvUY?)r1LhsB-JR1n^UdOm=O)@twR)E5x72yf z2bTF0AM9cOlkzZau%@2$BS|DY){G&|xxqWRVyWXe0)6D%P z_2S*7iEn4$SX&)6aPW8lyDI5JQHhp71Xr?hI_>ghGenLzT==A5s7Ms4Y z9<|e0aA}(6bDq783(YiEc!3&s8@xqAL@or*G5Q9&k$X+hQOTndnI6p+iBaV^r!y~M zN6SW+Lp8zY4lAfxEkEuO2CDc|9BzOXi!HQybfOW|{L^&nICp#kxHT|K_?#po8jG%6*lTKh>;!vPK&8^hz}Cp46U2o2o`iu0+9n8DPXaMF zYCK|d2)g%F;vHyS=5x1#n(fJj649&rG@tV{w5T$Qc10}ikYrR)11V1Gc{o7~q|Z+? z`A(lg3fu9WhFR(&M^`-JSJ1OPxloidspruNZq9|`T|KIEDj7HWa;$OcQMO2BZCm(put)1^;4F8a?PR-=AKx1x1R&ckb$cW$-6w^^;;+Ei{~_Jz$YZ%a3u z%*jvR^`~+1P7^+l4lkzbmebq<89g{3tmO^AoHAkZyv7N)cUdOr>A!qpt^3ycfbQaD z;=3+w&-~%$_tAP<_2O@5w%k0w?ys?={L}nrJN{kTS$p=XSD)3+BkPTRzK&mHTP`Oi zbvGruPimEi%)}I})8WgORr1L;8gi+y#A&In{K%}JqA_jJ$AFg4Z4NO`Ie`YVMbdd1 zezbfL{jr?aUBF2E)@JpIX9RZdR!;pAGxw_2_GkYYPUt0X(D6NYVZk{`@7)dew*8wK z*Bmx=cZtZ6iTCOi_MEzOKFILpm9GXLA6}aC>(+_KQ+swSIKgo}KV;f^H)Bub(}g+0 z0t=!9BUVgXeg4jzxsBYxVlAGW9qs}~Opj&>3d|NMWL7X!G}HPMr0X;zg{|d?QemK? zjKhh88@Vi6d^Dyl?vQl!4)GA^I_k20r;Otho5)`QZ)|((-<0RY+>0)qT2>z(b#AeH z*3@v@H7fGE9NSrcUM_2`o3h_i+B&;GDOOK3E<*G6rB#=Byl;l?=x5q*+IKH}YS+}K z^2&D(EL(Z9Tw(b^N3ZaCRVkBOMHL#`f`lIIoA|HGR-o+8x5*nP5Vu1jz(FkUET5`ka>2%jBmNK`jtC}+By zLq>q2kV9Zgp+pL+!iqD7ORTURpcTk{USUiDyU za{JVki&qP+5B2gZmZP(t)R%HC!rmk>X|Fv1~?VZL>^mSZ!(PzBp{D)|nN@#rF2` zWw$e3R#^WB!>YA#rtEZcn9kAAC(^~aud)upH z%v<}keU2M9`z#YJSQje9c(3R2sSwA2tI^7{8oe!2-xT#{{MA}|v92X|?W#AM7Uo5} z%l<8mJ8Ju9PHJ6Q)|Hh(i|2ixZhK_9#Y~mCp6YvRnf|KPF2DDdcX#o{YOmhh-d?Y? zCtJK%$C!As{JmAoz^DCu*QeF~CcBky9lm^$w{l~_y}3pOJI`%a&i?(ZV*Q@qs?Vms zaNpv2*><%L|7X)0sm%=6)4P7}-TI1K{z7}&#zVaKu4U%esmwoE`FW*Avc^`izc=sQ zHF*~2s^J|S@gsbT&-L=o2%}Bk&&@jbF`{{I*}*7{GpP!TmR(qr?((AVe;t^E0KBuHX2+k$3XN(?XhWZPz-4@2xH=NEGa!_dfJ9`xlQF&1U}@w$`@0 zEjC(q>d@ljA1=R@UvzK3_r7`i^Q--DD^4w1m>Y8Y62l8=_sz@atQTAQDrA1PYi;H1 zxC^mg?dnR}bHjJD;M^FQLCu zEUdiiuYR>ts(z;ZVz;xmd6_=gLdW+NPd$JCgKhx8~JekIO4| z`kDXwYP2oVbmM}lLd!zJBV98!ML8Y#7HeK|5L7jq0-3G`HP^sRHIdQ%ji}=l=K*t$OgS#Kl^hm~@fvHs)-zV*_8xU;px& zA?iu)wmTIS*;}VRJI($5;tDm7=*Rk*yJUD259&2N>-P-Yks8*-w_=gF=FQ!qiv|3i zUR-ha(uxa?($iJe&0H1Et)P`0Dt>**-FMuQQ6GCV6`G$d^lS?)__VUT>cYBTu6`30 zUW83Aywq8qdN12$$bu%w(+ghbXI_}ou9~sc z%GLE*)Q5((m%MUwcweg8c3m!BWO;bjf~kk!{c?|)%*L|n%`V@VkfZ0nMroX#^rr7o z`BcA6TUSYEH6PDtyeH<8%N;H#%5-w4UaQI)xu=f7X9O3CUX8l@gk|%_rz$J0w0w`+ zRy*jpUc0i`Lr&FH?dX)#Gec!h&kw)-elmwyN!vQ7#LUbHzY{N>OcGU1T5Hyvy`?}~ zEk-Oa=oOddC#6uekdq-oLFbN7lwUN*X`0p#f5u7~7a60Tkml;C2S5#&!|X@xG&;PP zDi5~>_ZK;?`cpl*q34A~s>D*}NlHR3>5hjrj_SCp)~Gl1JU$WFUzAflQDBPtoJz)p zu19-wCNVq%Yvc(y>rx*IoU1~P}*4A}K*=FVpY%L$7F8LLE zeY^W6IrvWa*4vq?SLd?dj^EDLUv2*4uXnrEz3-Vj-!6Af=X$ta^?u$0p=TT1cImg* zUH#AC<)0yIcXR#Ct(ws}cjtXKy{h}xyK`mVn|qH{%Jbq3ZdC_o5 z=2zYA>pq8dE;PzaddawachO(gYT>`izm(q^t&Nrn+q$jp>SCAB+ND8qw|eD;SM15> zwc%U+>CLY4&HrY-^=tdGJN4~phU4LzR?m+3d1!%>%yAb9#R6Z?xPVL1CF#o+`(?Ui z`~F%zf5V>O$9Hy?Z}yuLS#o=!w0!>U%eiXzE}r}n9T4(r9*V)oCJ>#UN zWv_$QrJG-~410xQ9Jse!O4YXZn2{~5@>!d4!y2nywZ*enx2NwY{v2^{Lj1{B5+zc* zEI-9;o}Iqbk4qru+P0&4`<7b$o*lS*r{F^F5XBsm{|wowQS-hB+a}lWwI-a1b_xr# zSf#ERUr-U)TFJR!ZSiKFR)fVH9hy!x4k!4W0@kKH0-;?ue%K76CvwGeq{%D`}m2c^i znT5@ni=$f>Mt0SNe&qQi+OW-bYRc=`yGoAVDqB9`(T24-Q*TjXKW)*6#!2H*`;H`S{g$1wHS?!q=9`RE5 zthMiaw{tT)nQGXd?byBBw_xtAbs66Ga_3&1x>!Q5&1BW7Jxz<8UO$qN+tOaAZ>BC?%T{+hBiE~BUHr){v$9P0UwQZ`p1D(I`peZ{ zT3>wi-TJ0@Y1oyuv4v4{H|J$+Tzm57g^HRj#k_Oxh(C+G{UzqAYT3+}iI)PhcQVZq zUa}!QYRA+C8Z5qMr<GSj-R+_8b{xf`cerWEQf46jt_7(MTi>c>1Bc*p8{VG$rCNgfT z#Zr-?SGUuHzvXU?-1Mvd;_TxAi(|KxP2E^(wXwOeBJ;#t7N7I1zxq?XK(ps{ITd`# zZ41wqE%@2`Q|3X9_-paSC2KRk6ekZN^@sgSN6dlVu=>mxsqdw$WZzfMsX4PokTFI*rE{h9*$qV^9N`)Q zVso5zTD1h$Dux9;;%^HJ&AM{p5r3P5-q#E3-~8rZVjjI=>jAm%UJn_{rk8KCd->+o z+uOZ&FGpA(F12?(8&qBp`=3F1S�_H+}rkRSYe$&MFHzTldvHljQOU5m=`eI%&0i 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 Date: Sat, 17 Mar 2018 20:56:09 +0000 Subject: [PATCH 17/49] fix some errors noticed at deploy --- packer/ansible/roles/fablab/tasks/java.yml | 2 +- .../ansible/roles/packages/tasks/debian.yml | 5 ++ .../files/lightdm-gtk-greeter.conf | 64 ------------------- .../roles/windowmanager/tasks/lightdm.yml | 29 ++++++++- 4 files changed, 32 insertions(+), 68 deletions(-) delete mode 100644 packer/ansible/roles/windowmanager/files/lightdm-gtk-greeter.conf diff --git a/packer/ansible/roles/fablab/tasks/java.yml b/packer/ansible/roles/fablab/tasks/java.yml index 0d156f4..3d4f4d5 100644 --- a/packer/ansible/roles/fablab/tasks/java.yml +++ b/packer/ansible/roles/fablab/tasks/java.yml @@ -1,5 +1,5 @@ --- - name: install java apt: - name: openjdk-jre + name: openjdk-8-jre state: present diff --git a/packer/ansible/roles/packages/tasks/debian.yml b/packer/ansible/roles/packages/tasks/debian.yml index 3db57bd..594a187 100644 --- a/packer/ansible/roles/packages/tasks/debian.yml +++ b/packer/ansible/roles/packages/tasks/debian.yml @@ -12,3 +12,8 @@ - vim-nox - rsync - grub2 + - pciutils + - usbutils + - strace + - net-tools + - lshw diff --git a/packer/ansible/roles/windowmanager/files/lightdm-gtk-greeter.conf b/packer/ansible/roles/windowmanager/files/lightdm-gtk-greeter.conf deleted file mode 100644 index 8ec51bb..0000000 --- a/packer/ansible/roles/windowmanager/files/lightdm-gtk-greeter.conf +++ /dev/null @@ -1,64 +0,0 @@ -# LightDM GTK+ Configuration -# Available configuration options listed below. -# -# Appearance: -# theme-name = GTK+ theme to use -# icon-theme-name = Icon theme to use -# background = Background file to use, either an image path or a color (e.g. #772953) -# user-background = false|true ("true" by default) Display user background (if available) -# transition-duration = Length of time (in milliseconds) to transition between background images ("500" by default) -# transition-type = ease-in-out|linear|none ("ease-in-out" by default) -# -# Fonts: -# font-name = Font to use -# xft-antialias = false|true Whether to antialias Xft fonts -# xft-dpi = Resolution for Xft in dots per inch (e.g. 96) -# xft-hintstyle = none|slight|medium|hintfull What degree of hinting to use -# xft-rgba = none|rgb|bgr|vrgb|vbgr Type of subpixel antialiasing -# -# Login window: -# active-monitor = Monitor to display greeter window (name or number). Use #cursor value to display greeter at monitor with cursor. Can be a semicolon separated list -# position = x y ("50% 50%" by default) Login window position -# default-user-image = Image used as default user icon, path or #icon-name -# hide-user-image = false|true ("false" by default) -# -# Panel: -# panel-position = top|bottom ("top" by default) -# clock-format = strftime-format string, e.g. %H:%M -# indicators = semi-colon ";" separated list of allowed indicator modules. Built-in indicators include "~a11y", "~language", "~session", "~power", "~clock", "~host", "~spacer". Unity indicators can be represented by short name (e.g. "sound", "power"), service file name, or absolute path -# -# Accessibility: -# a11y-states = states of accessibility features: "name" - save state on exit, "-name" - disabled at start (default value for unlisted), "+name" - enabled at start. Allowed names: contrast, font, keyboard, reader. -# keyboard = command to launch on-screen keyboard (e.g. "onboard") -# keyboard-position = x y[;width height] ("50%,center -0;50% 25%" by default) Works only for "onboard" -# reader = command to launch screen reader (e.g. "orca") -# -# Security: -# allow-debugging = false|true ("false" by default) -# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen -# -# Template for per-monitor configuration: -# [monitor: name] -# background = overrides default value -# user-background = overrides default value -# laptop = false|true ("false" by default) Marks monitor as laptop display -# transition-duration = overrides default value -# -[greeter] -background=/etc/lightdm/bg.jpg -#user-background= -#theme-name= -#icon-theme-name= -font-name=Roboto -#xft-antialias= -#xft-dpi= -#xft-hintstyle= -#xft-rgba= -hide-user-image=true -panel-position=bottom -#indicators= -clock-format=%H:%M:%S -#keyboard= -#reader= -#position= -#screensaver-timeout= diff --git a/packer/ansible/roles/windowmanager/tasks/lightdm.yml b/packer/ansible/roles/windowmanager/tasks/lightdm.yml index dd15991..da232de 100644 --- a/packer/ansible/roles/windowmanager/tasks/lightdm.yml +++ b/packer/ansible/roles/windowmanager/tasks/lightdm.yml @@ -14,6 +14,29 @@ dest: /etc/lightdm/bg.jpg - name: configure lightdm-gtk-greeter - copy: - src: lightdm-gtk-greeter.conf - dest: /etc/lightdm/lightdm-gtk-greeter.conf + ini_file: + path: /etc/lightdm/lightdm-gtk-greeter.conf + section: greeter + option: "{{ item.option }}" + value: "{{ item.value }}" + with_items: + - option: background + value: /etc/lightdm/bg.jpg + - option: font-name + value: Roboto + - option: hide-user-image + value: "true" + - option: panel-position + value: bottom + - option: clock-format + value: "%H:%M:%S" + - option: allow-guest + value: "true" + - option: greeter-allow-guest + value: "true" + +- name: get guest-account script + get_url: + url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-account.sh + dest: /usr/local/sbin/guest-account + mode: 755 From d6e7930f4322069721010330b29230bbb3357648 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 09:58:25 +0000 Subject: [PATCH 18/49] make lightdm guest work --- .../roles/windowmanager/tasks/lightdm.yml | 46 ++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/packer/ansible/roles/windowmanager/tasks/lightdm.yml b/packer/ansible/roles/windowmanager/tasks/lightdm.yml index da232de..a8ebccb 100644 --- a/packer/ansible/roles/windowmanager/tasks/lightdm.yml +++ b/packer/ansible/roles/windowmanager/tasks/lightdm.yml @@ -30,13 +30,47 @@ value: bottom - option: clock-format value: "%H:%M:%S" + +- name: genereate guest-session directory + file: + path: /etc/guest-session + state: directory + +- name: link guest-session configs + file: + src: /etc/skel + dest: /etc/guest-session/skel + state: link + +- name: get guest-account scripts + get_url: + url: "{{ item.url }}" + dest: "{{ item.dest }}" + mode: "0755" + with_items: + - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-session-setup.sh + dest: /etc/guest-session/setup.sh + - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-account.sh + dest: /usr/local/sbin/guest-account + +- name: modify guest-account script + lineinfile: + path: /usr/local/sbin/guest-account + regexp: '^dist_gs=.*$' + line: 'dist_gs=/etc/guest-session' + +- name: configure lightdm + ini_file: + path: /etc/lightdm/lightdm.conf + section: "Seat:*" + option: "{{ item.option }}" + value: "{{ item.value }}" + with_items: - option: allow-guest value: "true" - option: greeter-allow-guest value: "true" - -- name: get guest-account script - get_url: - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-account.sh - dest: /usr/local/sbin/guest-account - mode: 755 + - option: user-session + value: MATE + - option: guest-session + value: MATE From 7cab32e5dc52229a0d8eedbd6503c7bd392028b4 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 15:25:28 +0000 Subject: [PATCH 19/49] (begin) configuring mate --- .../roles/windowmanager/files/autostart | 21 +++++++++++++++++++ .../windowmanager/files/autostart.desktop | 5 +++++ .../roles/windowmanager/tasks/main.yml | 6 ++++++ .../roles/windowmanager/tasks/mate.yml | 16 ++++++++++++++ 4 files changed, 48 insertions(+) create mode 100755 packer/ansible/roles/windowmanager/files/autostart create mode 100644 packer/ansible/roles/windowmanager/files/autostart.desktop diff --git a/packer/ansible/roles/windowmanager/files/autostart b/packer/ansible/roles/windowmanager/files/autostart new file mode 100755 index 0000000..8b288bc --- /dev/null +++ b/packer/ansible/roles/windowmanager/files/autostart @@ -0,0 +1,21 @@ +#!/bin/bash +if echo $USER | grep -E 'guest-*'; then + gsettings set org.mate.screensaver lock-enabled false + zenity \ + --title="Willkomen im FabLab Bad Windsheim" \ + --info \ + --width=500 \ + --text='Hallo!\n\nDu hast Dich mit einem Gast-Account angemeldet. Alle Daten werden nach der Anmeldung gelöscht. Wenn Du Deine Daten dauerhaft speichern möchtest, lege Dir bitte einene Account an!' +fi + +# set background image +gsettings set org.mate.background picture-filename '/etc/lightdm/bg.jpg' + +# set panel position +gsettings set org.mate.panel.toplevel:/org/mate/panel/toplevels/bottom/ orientation 'top' +gsettings set org.mate.panel.toplevel:/org/mate/panel/toplevels/top/ orientation 'bottom' + +# set fonts +#gsettings set org.mate.interface monospace-font-name 'Monospace 10' +gsettings set org.mate.interface font-name 'Roboto 10' +gsettings set org.mate.interface document-font-name 'Roboto 10' diff --git a/packer/ansible/roles/windowmanager/files/autostart.desktop b/packer/ansible/roles/windowmanager/files/autostart.desktop new file mode 100644 index 0000000..dc04f14 --- /dev/null +++ b/packer/ansible/roles/windowmanager/files/autostart.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Autostart +Type=Application +NoDisplay=true +Exec=/usr/local/bin/autostart diff --git a/packer/ansible/roles/windowmanager/tasks/main.yml b/packer/ansible/roles/windowmanager/tasks/main.yml index ae15bb3..be2cb0a 100644 --- a/packer/ansible/roles/windowmanager/tasks/main.yml +++ b/packer/ansible/roles/windowmanager/tasks/main.yml @@ -1,4 +1,10 @@ --- - import_tasks: lightdm.yml + tags: + - windowmanager:lightdm - import_tasks: awesome.yml + tags: + - windowmanager:awesome - import_tasks: mate.yml + tags: + - windowmanager:mate diff --git a/packer/ansible/roles/windowmanager/tasks/mate.yml b/packer/ansible/roles/windowmanager/tasks/mate.yml index a09d3af..b7c1918 100644 --- a/packer/ansible/roles/windowmanager/tasks/mate.yml +++ b/packer/ansible/roles/windowmanager/tasks/mate.yml @@ -3,3 +3,19 @@ apt: name: "task-mate-desktop" state: present + +- name: copy autostart script + copy: + src: autostart + dest: /usr/local/bin/autostart + mode: "0775" + +- name: create autostart directory + file: + path: /etc/skel/.config/autostart/ + state: directory + +- name: copy autostart desktop file + copy: + src: autostart.desktop + dest: /etc/skel/.config/autostart/autostart.desktop From d2d2c1d36f68318c7d92650b339e29e8fc6bd951 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 18:37:27 +0000 Subject: [PATCH 20/49] ignore local test inventory --- .gitignore | 1 + packer/ansible/inventories/qemu | 1 - packer/ansible/inventories/teskiste | 2 -- 3 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 packer/ansible/inventories/teskiste diff --git a/.gitignore b/.gitignore index 08f9909..27de7b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /**/ansible/**/*.retry +/**/ansible/inventories/test/ bin images tmp diff --git a/packer/ansible/inventories/qemu b/packer/ansible/inventories/qemu index 90ce6ad..b34a8bc 100644 --- a/packer/ansible/inventories/qemu +++ b/packer/ansible/inventories/qemu @@ -1,3 +1,2 @@ [default] qemumachine ansible_host=10.2.2.10 -spielkiste ansible_host=10.105.255.154 diff --git a/packer/ansible/inventories/teskiste b/packer/ansible/inventories/teskiste deleted file mode 100644 index c25a8f3..0000000 --- a/packer/ansible/inventories/teskiste +++ /dev/null @@ -1,2 +0,0 @@ -[default] -testkiste ansible_host=10.105.255.154 From a5e7176daf457af853d18833a5d0ee8552f0d864 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 18:39:47 +0000 Subject: [PATCH 21/49] set user for ansible testing in inventory --- README.md | 2 +- packer/ansible/inventories/qemu | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 85024b5..5ee1ab4 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,4 @@ root: `packer/ansible` -`ansible-playbook -u root -i inventories/qemu playbook.yml [-t TAG]` +`ansible-playbook -i inventories/qemu playbook.yml [-t TAG]` diff --git a/packer/ansible/inventories/qemu b/packer/ansible/inventories/qemu index b34a8bc..6868c76 100644 --- a/packer/ansible/inventories/qemu +++ b/packer/ansible/inventories/qemu @@ -1,2 +1,2 @@ [default] -qemumachine ansible_host=10.2.2.10 +qemumachine ansible_host=10.2.2.10 ansible_user=root From 95f63da423e78270e2beefae2b27bec558375a6b Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 18:42:08 +0000 Subject: [PATCH 22/49] =?UTF-8?q?locali(s|z)ation=20=E2=86=92=20l10n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packer/ansible/playbook.yml | 6 +++--- .../ansible/roles/{localisation => l10n}/handlers/main.yml | 0 .../{localisation => l10n}/tasks/keyboard-configuration.yml | 0 .../ansible/roles/{localisation => l10n}/tasks/locale.yml | 2 +- packer/ansible/roles/{localisation => l10n}/tasks/main.yml | 0 packer/ansible/roles/l10n/templates/keyboard.j2 | 6 ++++++ packer/ansible/roles/l10n/templates/locale.gen.j2 | 3 +++ packer/ansible/roles/localisation/templates/keyboard.j2 | 6 ------ packer/ansible/roles/localisation/templates/locale.gen.j2 | 3 --- 9 files changed, 13 insertions(+), 13 deletions(-) rename packer/ansible/roles/{localisation => l10n}/handlers/main.yml (100%) rename packer/ansible/roles/{localisation => l10n}/tasks/keyboard-configuration.yml (100%) rename packer/ansible/roles/{localisation => l10n}/tasks/locale.yml (85%) rename packer/ansible/roles/{localisation => l10n}/tasks/main.yml (100%) create mode 100644 packer/ansible/roles/l10n/templates/keyboard.j2 create mode 100644 packer/ansible/roles/l10n/templates/locale.gen.j2 delete mode 100644 packer/ansible/roles/localisation/templates/keyboard.j2 delete mode 100644 packer/ansible/roles/localisation/templates/locale.gen.j2 diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 5e1e4cc..1a18155 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -20,9 +20,9 @@ - role: windowmanager tags: - windowmanager - - role: localisation + - role: l10n tags: - - localisation + - l10n - role: inkscape tags: - inkscape @@ -34,7 +34,7 @@ sudo: group: fablab - localisation: + l10n: keyboard: layout: de variant: diff --git a/packer/ansible/roles/localisation/handlers/main.yml b/packer/ansible/roles/l10n/handlers/main.yml similarity index 100% rename from packer/ansible/roles/localisation/handlers/main.yml rename to packer/ansible/roles/l10n/handlers/main.yml diff --git a/packer/ansible/roles/localisation/tasks/keyboard-configuration.yml b/packer/ansible/roles/l10n/tasks/keyboard-configuration.yml similarity index 100% rename from packer/ansible/roles/localisation/tasks/keyboard-configuration.yml rename to packer/ansible/roles/l10n/tasks/keyboard-configuration.yml diff --git a/packer/ansible/roles/localisation/tasks/locale.yml b/packer/ansible/roles/l10n/tasks/locale.yml similarity index 85% rename from packer/ansible/roles/localisation/tasks/locale.yml rename to packer/ansible/roles/l10n/tasks/locale.yml index 38d1e44..0ded02f 100644 --- a/packer/ansible/roles/localisation/tasks/locale.yml +++ b/packer/ansible/roles/l10n/tasks/locale.yml @@ -14,4 +14,4 @@ lineinfile: path: /etc/default/locale regexp: "^LANG=" - line: "LANG={{ localisation.locale.default }}" + line: "LANG={{ l10n.locale.default }}" diff --git a/packer/ansible/roles/localisation/tasks/main.yml b/packer/ansible/roles/l10n/tasks/main.yml similarity index 100% rename from packer/ansible/roles/localisation/tasks/main.yml rename to packer/ansible/roles/l10n/tasks/main.yml diff --git a/packer/ansible/roles/l10n/templates/keyboard.j2 b/packer/ansible/roles/l10n/templates/keyboard.j2 new file mode 100644 index 0000000..8365e49 --- /dev/null +++ b/packer/ansible/roles/l10n/templates/keyboard.j2 @@ -0,0 +1,6 @@ +XKBMODEL="{{ l10n.keyboard.model }}" +XKBLAYOUT="{{ l10n.keyboard.layout }}" +XKBVARIANT="{{ l10n.keyboard.variant }}" +XKBOPTIONS="{{ l10n.keyboard.options }}" + +BACKSPACE="guess" diff --git a/packer/ansible/roles/l10n/templates/locale.gen.j2 b/packer/ansible/roles/l10n/templates/locale.gen.j2 new file mode 100644 index 0000000..1c39bf7 --- /dev/null +++ b/packer/ansible/roles/l10n/templates/locale.gen.j2 @@ -0,0 +1,3 @@ +{% for locale in l10n.locale.generate %} +{{ locale }} +{% endfor %} diff --git a/packer/ansible/roles/localisation/templates/keyboard.j2 b/packer/ansible/roles/localisation/templates/keyboard.j2 deleted file mode 100644 index ed1f65b..0000000 --- a/packer/ansible/roles/localisation/templates/keyboard.j2 +++ /dev/null @@ -1,6 +0,0 @@ -XKBMODEL="{{ localisation.keyboard.model }}" -XKBLAYOUT="{{ localisation.keyboard.layout }}" -XKBVARIANT="{{ localisation.keyboard.variant }}" -XKBOPTIONS="{{ localisation.keyboard.options }}" - -BACKSPACE="guess" diff --git a/packer/ansible/roles/localisation/templates/locale.gen.j2 b/packer/ansible/roles/localisation/templates/locale.gen.j2 deleted file mode 100644 index ae07994..0000000 --- a/packer/ansible/roles/localisation/templates/locale.gen.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{% for locale in localisation.locale.generate %} -{{ locale }} -{% endfor %} From bf4b45fbee573503c8a61bac36a2406b6da7a496 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 18:44:05 +0000 Subject: [PATCH 23/49] use github (https) for visicut downloads and use direct url --- packer/ansible/playbook.yml | 3 +-- packer/ansible/roles/fablab/tasks/visicut.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 1a18155..630e945 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -52,5 +52,4 @@ arduino: version: 1.8.5 visicut: - version: 1.8-19 - hash: gdfea529f + url: "https://github.com/t-oster/VisiCut/releases/download/1.7_310/visicut_1.7-310-gcf8c087-1_all.deb" diff --git a/packer/ansible/roles/fablab/tasks/visicut.yml b/packer/ansible/roles/fablab/tasks/visicut.yml index bf747a7..14c7c3e 100644 --- a/packer/ansible/roles/fablab/tasks/visicut.yml +++ b/packer/ansible/roles/fablab/tasks/visicut.yml @@ -1,5 +1,5 @@ --- - name: install visicut apt: - deb: "http://download.visicut.org/files/master/Debian-Ubuntu-Mint/visicut_{{ fablab.visicut.version }}-{{ fablab.visicut.hash }}-1_all.deb" + deb: "{{ fablab.visicut.url }}" state: present From 9b9074e50c1851d66cd0da6939283f7197ccbd2b Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 18:45:13 +0000 Subject: [PATCH 24/49] remove obsolete packages from generic role --- packer/ansible/roles/packages/tasks/debian.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/packer/ansible/roles/packages/tasks/debian.yml b/packer/ansible/roles/packages/tasks/debian.yml index 594a187..25a41a6 100644 --- a/packer/ansible/roles/packages/tasks/debian.yml +++ b/packer/ansible/roles/packages/tasks/debian.yml @@ -10,8 +10,6 @@ - htop - systemd-sysv - vim-nox - - rsync - - grub2 - pciutils - usbutils - strace From e94e04e7e7a8d186df80c218ecd5c1809c2961c0 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 18:47:20 +0000 Subject: [PATCH 25/49] show date and time in lightdm panel --- packer/ansible/roles/windowmanager/tasks/lightdm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packer/ansible/roles/windowmanager/tasks/lightdm.yml b/packer/ansible/roles/windowmanager/tasks/lightdm.yml index a8ebccb..0bac791 100644 --- a/packer/ansible/roles/windowmanager/tasks/lightdm.yml +++ b/packer/ansible/roles/windowmanager/tasks/lightdm.yml @@ -29,7 +29,7 @@ - option: panel-position value: bottom - option: clock-format - value: "%H:%M:%S" + value: "%A, %d.%m.%Y %H:%M:%S" - name: genereate guest-session directory file: From 99c8ca9e1af5a3112bd61505bb7c9507f3aa00d3 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 18 Mar 2018 21:53:13 +0000 Subject: [PATCH 26/49] fix visicut --- docker/Dockerfile | 3 ++- packer/ansible/roles/fablab/tasks/java.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5ad9c17..5c85db6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -5,7 +5,8 @@ RUN apk add --no-cache \ mktorrent \ openssh-client \ rsync \ - squashfs-tools + squashfs-tools \ + ca-certificates ARG PACKER_VERSION diff --git a/packer/ansible/roles/fablab/tasks/java.yml b/packer/ansible/roles/fablab/tasks/java.yml index 3d4f4d5..4d012b7 100644 --- a/packer/ansible/roles/fablab/tasks/java.yml +++ b/packer/ansible/roles/fablab/tasks/java.yml @@ -1,5 +1,5 @@ --- - name: install java apt: - name: openjdk-8-jre + name: default-jre state: present From 83cc71a599a15ac7a72f6c8b32802fe0067e8727 Mon Sep 17 00:00:00 2001 From: jalr Date: Tue, 20 Mar 2018 23:26:53 +0100 Subject: [PATCH 27/49] Install ansible with pip and use version 2.4.3.0 --- docker/Dockerfile | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5c85db6..ba2e7b7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,12 +1,25 @@ FROM docker:dind RUN apk add --no-cache \ - ansible \ - mktorrent \ - openssh-client \ - rsync \ - squashfs-tools \ - ca-certificates + ca-certificates \ + libffi \ + mktorrent \ + openssh-client \ + openssl \ + python2 \ + rsync \ + squashfs-tools \ + && apk add --no-cache --virtual .build-deps \ + gcc \ + libffi-dev \ + make \ + musl-dev \ + openssl-dev \ + py2-pip \ + python-dev \ + && pip install --upgrade pip \ + && pip install ansible==2.4.3.0 \ + && apk del .build-deps ARG PACKER_VERSION From 4b4dcab70326490a83018f13f7a4c26bf537efc7 Mon Sep 17 00:00:00 2001 From: jalr Date: Tue, 20 Mar 2018 23:27:39 +0100 Subject: [PATCH 28/49] Add java as dependency --- packer/ansible/roles/fablab/tasks/visicut.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packer/ansible/roles/fablab/tasks/visicut.yml b/packer/ansible/roles/fablab/tasks/visicut.yml index 14c7c3e..bd1b254 100644 --- a/packer/ansible/roles/fablab/tasks/visicut.yml +++ b/packer/ansible/roles/fablab/tasks/visicut.yml @@ -1,4 +1,6 @@ --- +- import_tasks: java.yml + - name: install visicut apt: deb: "{{ fablab.visicut.url }}" From e9b692fc3c4ebedf3b3c8fb0319e279f9cb496db Mon Sep 17 00:00:00 2001 From: jalr Date: Tue, 20 Mar 2018 23:28:28 +0100 Subject: [PATCH 29/49] Whitespace --- packer/ansible/roles/fablab/tasks/arduino.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/packer/ansible/roles/fablab/tasks/arduino.yml b/packer/ansible/roles/fablab/tasks/arduino.yml index 1978f3e..8a9a3b1 100644 --- a/packer/ansible/roles/fablab/tasks/arduino.yml +++ b/packer/ansible/roles/fablab/tasks/arduino.yml @@ -6,6 +6,7 @@ src: "https://downloads.arduino.cc/arduino-{{ fablab.arduino.version }}-linux64.tar.xz" dest: /opt/ remote_src: yes + - name: add arduino to applications menu template: src: arduino.desktop.j2 From f4e39467bd8cc4d8d5009e8bbe884514399fb86d Mon Sep 17 00:00:00 2001 From: jalr Date: Wed, 21 Mar 2018 20:58:12 +0100 Subject: [PATCH 30/49] strip /dev/ from labsync_disk parameter; fix hard-coded /dev/sda; remove ansible base role --- Makefile | 2 +- packer/ansible/playbook.yml | 3 --- packer/ansible/roles/base/tasks/filesystem.yml | 5 ----- packer/ansible/roles/base/tasks/main.yml | 2 -- packer/ansible/roles/base/templates/fstab.j2 | 2 -- .../labsync/files/labsync-install-localboot.sh | 8 +++++--- packer/debian-stretch.json | 2 +- packer/initramfs/labsync | 15 ++++++++------- txt.cfg | 2 +- 9 files changed, 16 insertions(+), 25 deletions(-) delete mode 100644 packer/ansible/roles/base/tasks/filesystem.yml delete mode 100644 packer/ansible/roles/base/tasks/main.yml delete mode 100644 packer/ansible/roles/base/templates/fstab.j2 diff --git a/Makefile b/Makefile index d1ec11d..0511afb 100644 --- a/Makefile +++ b/Makefile @@ -130,7 +130,7 @@ qemu: qemu-network $(qemu_disk) docker-services -kernel "images/$(qemu_kernel)" \ -initrd "images/$(qemu_initramfs)" \ -drive format=raw,file="$(qemu_disk)" \ - -append "boot=labsync labsync_disk=/dev/sda labsync_partsize_boot=512 labsync_torrent=http://10.2.2.1/$(qemu_torrent) quiet vga=792 ip=$(qemu_vm_ip):::255.255.255.0:$(qemu_hostname):ens3:off labsync_wait=pause" \ + -append "boot=labsync labsync_disk=sda labsync_partsize_boot=512 labsync_torrent=http://10.2.2.1/$(qemu_torrent) quiet vga=792 ip=$(qemu_vm_ip):::255.255.255.0:$(qemu_hostname):ens3:off labsync_wait=pause" \ -enable-kvm \ -m 1G \ -net nic \ diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 630e945..e9d8d4b 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -8,9 +8,6 @@ - role: auth tags: - auth - - role: base - tags: - - base - role: packages tags: - packages diff --git a/packer/ansible/roles/base/tasks/filesystem.yml b/packer/ansible/roles/base/tasks/filesystem.yml deleted file mode 100644 index 6498277..0000000 --- a/packer/ansible/roles/base/tasks/filesystem.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- name: configure fstab - template: - src: fstab.j2 - dest: /etc/fstab diff --git a/packer/ansible/roles/base/tasks/main.yml b/packer/ansible/roles/base/tasks/main.yml deleted file mode 100644 index 6492ecd..0000000 --- a/packer/ansible/roles/base/tasks/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -- import_tasks: filesystem.yml diff --git a/packer/ansible/roles/base/templates/fstab.j2 b/packer/ansible/roles/base/templates/fstab.j2 deleted file mode 100644 index 08ccc0b..0000000 --- a/packer/ansible/roles/base/templates/fstab.j2 +++ /dev/null @@ -1,2 +0,0 @@ -# device mountpoint type options dump pass -/dev/sda1 / ext4 defaults 0 0 diff --git a/packer/ansible/roles/labsync/files/labsync-install-localboot.sh b/packer/ansible/roles/labsync/files/labsync-install-localboot.sh index 6e89372..e496484 100755 --- a/packer/ansible/roles/labsync/files/labsync-install-localboot.sh +++ b/packer/ansible/roles/labsync/files/labsync-install-localboot.sh @@ -1,14 +1,16 @@ #!/bin/sh -boot_partition='/dev/sda1' +boot_partition="/dev/${LABSYNC_DISK}1" localboot="$(sed -n 's/^.*labsync_localboot=\([^ ]*\).*$/\1/p' /proc/cmdline)" if [ -z "$localboot" ]; then umount "$boot_partition" || true - echo "$boot_partition /boot ext2 defaults 0 0" > /etc/fstab + if ! grep -q ' /boot ' /etc/fstab; then + echo "$boot_partition /boot ext2 defaults 0 0" >> /etc/fstab + fi mke2fs -t ext2 -F "$boot_partition" mount /boot rsync -av /usr/local/boot/ /boot/ - grub-install /dev/sda + grub-install /dev/$LABSYNC_DISK sed -i 's/^\(GRUB_DEVICE=\).*$/\1""/' /usr/sbin/grub-mkconfig #sed -i 's/^\(GRUB_CMDLINE_LINUX_DEFAULT=\).*$/\1'"'quiet boot=labsync labsync_localboot=\"$LABSYNC\"'/" /etc/default/grub sed -i 's/^\(GRUB_CMDLINE_LINUX=\).*$/\1'"'boot=labsync labsync_localboot=\"$LABSYNC\"'/" /etc/default/grub diff --git a/packer/debian-stretch.json b/packer/debian-stretch.json index 06df95d..c75aab8 100644 --- a/packer/debian-stretch.json +++ b/packer/debian-stretch.json @@ -58,7 +58,7 @@ "echo overlay >> /etc/initramfs-tools/modules", "echo 'RESUME=none' > /etc/initramfs-tools/conf.d/resume", "mkdir /usr/local/boot", - "apt-get -f -y install aria2 linux-image-amd64 lvm2", + "apt-get -f -y install aria2 ca-certificates linux-image-amd64 lvm2", "mkdir /artifacts", "cp $(find /boot/ -name 'initrd.img-*' | sort -V | tail -n 1) /artifacts/initramfs", "cp $(find /boot/ -name 'vmlinuz-*' | sort -V | tail -n 1) /artifacts/linux" diff --git a/packer/initramfs/labsync b/packer/initramfs/labsync index 4b4ae0a..6043cc6 100755 --- a/packer/initramfs/labsync +++ b/packer/initramfs/labsync @@ -95,7 +95,7 @@ labsync_mount_root() { lv_name_overlay="ovly-$torrent_name" labsync_info "Updating partitions" - size_disk=$(blockdev --getsz ${labsync_disk}) + size_disk=$(blockdev --getsz /dev/${labsync_disk}) size_part_1=$((labsync_partsize_boot * 1024 * 1024 / 512)) size_part_2=$(((size_disk - labsync_partsize_boot) * 1024 * 1024 / 512)) start_part_2=$((size_part_1 + 2048)) @@ -111,22 +111,22 @@ labsync_mount_root() { dmsetup ls --tree - sfdisk --force -q ${labsync_disk} << PARTTABLE + sfdisk --force -q /dev/${labsync_disk} << PARTTABLE label: dos label-id: 0xdeadbeef -device: ${labsync_disk} +device: /dev/${labsync_disk} unit: sectors -${labsync_disk}1 : start= 2048, size= $size_part_1, type=83 -${labsync_disk}2 : start=$start_part_2, size= $size_part_2, type=8e +/dev/${labsync_disk}1 : start= 2048, size= $size_part_1, type=83 +/dev/${labsync_disk}2 : start=$start_part_2, size= $size_part_2, type=8e PARTTABLE - while ! blockdev --rereadpt /dev/sda; do + while ! blockdev --rereadpt /dev/${labsync_disk}; do sleep 1 done labsync_info "Doing lvm stuff" - pv_device="${labsync_disk}2" + pv_device="/dev/${labsync_disk}2" lvm pvcreate -t "$pv_device" pvstatus=$? @@ -187,6 +187,7 @@ PARTTABLE labsync_set_environment LABSYNC_TORRENT "${labsync_torrent}" labsync_set_environment LABSYNC_SQUASHFS_FILE "$squashfs_file" labsync_set_environment LABSYNC_SQUASHFS_LV "$lv_path_squashfs" + labsync_set_environment LABSYNC_DISK "$labsync_disk" fi case "$labsync_wait" in diff --git a/txt.cfg b/txt.cfg index b1119e0..98ca8e5 100644 --- a/txt.cfg +++ b/txt.cfg @@ -1,7 +1,7 @@ label labsync menu label ^labsync kernel images/debian-stretch.linux - append initrd=images/debian-stretch.initramfs.dev boot=labsync labsync_disk=/dev/sda labsync_partsize_boot=512 labsync_torrent=http://10.2.2.1/debian-stretch.torrent quiet vga=792 ip=10.2.2.10:::255.255.255.0:qemu-host:ens3:off labsync_wait=pause + append initrd=images/debian-stretch.initramfs.dev boot=labsync labsync_disk=sda labsync_partsize_boot=512 labsync_torrent=http://10.2.2.1/debian-stretch.torrent quiet vga=792 ip=10.2.2.10:::255.255.255.0:qemu-host:ens3:off labsync_wait=pause label install menu label ^Install From 5e9e6e089597bf2532d78173334ae01add06990b Mon Sep 17 00:00:00 2001 From: jalr Date: Wed, 21 Mar 2018 20:59:19 +0100 Subject: [PATCH 31/49] variable squashfs compression level --- Makefile | 3 +++ docker/entrypoint.sh | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0511afb..a03b3f7 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,8 @@ DOCKER_IMAGE ?= labsync-builder CWD=$(abspath $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))) +COMPRESSION_LEVEL ?= 5 + qemu_ifname_br = brlabsync qemu_ifname_tap = taplabsync qemu_hostname = qemumachine @@ -52,6 +54,7 @@ images/debian-stretch.squashfs: images -e "group=`id -g`" \ -e "ANNOUNCE=$(ANNOUNCE)" \ -e "WEBSEED=$(WEBSEED)" \ + -e "COMPRESSION_LEVEL=$(COMPRESSION_LEVEL)" \ $(ci_environment) \ "$(DOCKER_IMAGE)" \ debian-stretch diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 50c592e..b365b70 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -58,7 +58,7 @@ run_packer() { mksquashfs build/rootfs "/images/$SQUASHFS_FILE" \ -comp lzo \ - -Xcompression-level 9 + -Xcompression-level $COMPRESSION_LEVEL rm -rf build From e001325c8f0e8393d769d5f7515280e836bd82a7 Mon Sep 17 00:00:00 2001 From: jalr Date: Wed, 21 Mar 2018 22:58:02 +0100 Subject: [PATCH 32/49] Fix selection of initramfs for qemu --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a03b3f7..575ce2e 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ qemu_target ?= debian-stretch qemu_kernel = $(qemu_target).linux qemu_torrent = $(qemu_target).torrent qemu_initramfs = $(shell \ -if [ -e $(qemu_target).initramfs.dev ] && [ `date -r $(qemu_target).initramfs.dev +%s` -gt `date -r $(qemu_target).initramfs +%s` ]; then \ +if [ -e images/$(qemu_target).initramfs.dev ] && [ `date -r images/$(qemu_target).initramfs.dev +%s` -gt `date -r images/$(qemu_target).initramfs +%s` ]; then \ echo "$(qemu_target).initramfs.dev"; \ else \ echo "$(qemu_target).initramfs"; \ From 19f766ce8d802021d6e61045715a59881b5d519b Mon Sep 17 00:00:00 2001 From: jalr Date: Wed, 21 Mar 2018 22:58:42 +0100 Subject: [PATCH 33/49] Only add iptables masquerading rule if missing --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 575ce2e..06dbe5c 100644 --- a/Makefile +++ b/Makefile @@ -125,7 +125,9 @@ qemu-network: /sys/devices/virtual/net/$(qemu_ifname_br)/brif/$(qemu_ifname_tap fi sudo ip link set $(qemu_ifname_tap) up sudo ip link set $(qemu_ifname_br) up - sudo iptables -t nat -A POSTROUTING -s $(qemu_network)/$(qemu_netmask) ! -o $(qemu_ifname_br) -j MASQUERADE + if ! sudo iptables -t nat -L POSTROUTING | grep -q "$(qemu_network)/$(qemu_netmask)"; then \ + sudo iptables -t nat -A POSTROUTING -s $(qemu_network)/$(qemu_netmask) ! -o $(qemu_ifname_br) -j MASQUERADE; \ + fi .PHONY: qemu qemu: qemu-network $(qemu_disk) docker-services From 822e083ee0a26b700fcb16fa15640fd4a995d1c2 Mon Sep 17 00:00:00 2001 From: jalr Date: Wed, 21 Mar 2018 23:20:18 +0100 Subject: [PATCH 34/49] vgexport vg before re-partitioning disk --- packer/initramfs/labsync | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packer/initramfs/labsync b/packer/initramfs/labsync index 6043cc6..779099c 100755 --- a/packer/initramfs/labsync +++ b/packer/initramfs/labsync @@ -102,10 +102,10 @@ labsync_mount_root() { dmsetup ls --tree - lvm vgs -o NAME --noheadings | while read vg; do - if [ "$vg" != "$vg_name" ]; then - lvm vgchange -an "$vg" - find /dev -mindepth 1 -maxdepth 1 -name "$vg" -exec dmsetup remove '{}' \; + lvm pvs -o PV_NAME,VG_NAME --noheadings | while read pv vg; do + if echo "$pv" | grep -q "^/dev/${labsync_disk}"; then + lvm vgchange -a n "$vg" + lvm vgexport $vg fi done @@ -121,9 +121,7 @@ unit: sectors /dev/${labsync_disk}2 : start=$start_part_2, size= $size_part_2, type=8e PARTTABLE - while ! blockdev --rereadpt /dev/${labsync_disk}; do - sleep 1 - done + lvm vgimport -a labsync_info "Doing lvm stuff" pv_device="/dev/${labsync_disk}2" From cedfb6642361cc84fe7a667729541649fcc0d4ca Mon Sep 17 00:00:00 2001 From: jalr Date: Wed, 21 Mar 2018 23:21:09 +0100 Subject: [PATCH 35/49] Use different compression levels for master and feature-branches --- .gitlab-ci.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 30c3e66..b6a2991 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ dockerimage: tags: - fablab -squashfs: +.squashfs_template: &squashfs_template stage: build script: - make images/debian-stretch.squashfs @@ -41,3 +41,17 @@ squashfs: expire_in: 2 weeks tags: - fablab + +squashfs_featurebranch: + <<: *squashfs_template + variables: + COMPRESSION_LEVEL: 5 + except: + - master + +squashfs_master: + <<: *squashfs_template + variables: + COMPRESSION_LEVEL: 7 + only: + - master From 17ed958b90505456f386f340ae42dfdbba4a7b84 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Thu, 22 Mar 2018 16:57:05 +0000 Subject: [PATCH 36/49] activate lvs --- packer/initramfs/labsync | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packer/initramfs/labsync b/packer/initramfs/labsync index 779099c..32e5de9 100755 --- a/packer/initramfs/labsync +++ b/packer/initramfs/labsync @@ -139,6 +139,8 @@ PARTTABLE lvm vgcreate "$vg_name" "$pv_device" fi + lvm lvchange -ay vglab + labsync_create_or_resize_lv "$vg_name" "$lv_name_sqashfs" $((image_size_bytes * 2)) $image_size_bytes labsync_create_or_resize_lv "$vg_name" "$lv_name_overlay" $((10000 * 1024 * 1024)) From c0c3d73ad24afdd1d69e242bc3d69687b61352bc Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Thu, 22 Mar 2018 18:12:39 +0000 Subject: [PATCH 37/49] fix guest session path --- .../roles/windowmanager/tasks/lightdm.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packer/ansible/roles/windowmanager/tasks/lightdm.yml b/packer/ansible/roles/windowmanager/tasks/lightdm.yml index 0bac791..b4ae96f 100644 --- a/packer/ansible/roles/windowmanager/tasks/lightdm.yml +++ b/packer/ansible/roles/windowmanager/tasks/lightdm.yml @@ -33,13 +33,13 @@ - name: genereate guest-session directory file: - path: /etc/guest-session + path: /usr/share/lightdm/guest-session state: directory - name: link guest-session configs file: src: /etc/skel - dest: /etc/guest-session/skel + dest: /usr/share/lightdm/guest-session/skel state: link - name: get guest-account scripts @@ -49,15 +49,15 @@ mode: "0755" with_items: - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-session-setup.sh - dest: /etc/guest-session/setup.sh + dest: /usr/share/lightdm/guest-session/setup.sh - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-account.sh dest: /usr/local/sbin/guest-account -- name: modify guest-account script - lineinfile: - path: /usr/local/sbin/guest-account - regexp: '^dist_gs=.*$' - line: 'dist_gs=/etc/guest-session' + #- name: modify guest-account script + # lineinfile: + # path: /usr/local/sbin/guest-account + # regexp: '^dist_gs=.*$' + # line: 'dist_gs=/etc/guest-session' - name: configure lightdm ini_file: From c6313d9848f7936e1384436f77158e075a590a3b Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Thu, 22 Mar 2018 18:43:19 +0000 Subject: [PATCH 38/49] support for non-free firmware --- packer/ansible/playbook.yml | 18 ++++++++++++++---- .../ansible/roles/hardware/tasks/firmware.yml | 6 ++++++ packer/ansible/roles/hardware/tasks/main.yml | 2 ++ packer/ansible/roles/packages/tasks/main.yml | 1 + .../ansible/roles/packages/tasks/sources.yml | 15 +++++++++++++++ 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 packer/ansible/roles/hardware/tasks/firmware.yml create mode 100644 packer/ansible/roles/hardware/tasks/main.yml create mode 100644 packer/ansible/roles/packages/tasks/sources.yml diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index e9d8d4b..52ab4e8 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -2,15 +2,15 @@ - hosts: default any_errors_fatal: yes roles: + - role: packages + tags: + - packages - role: superuser tags: - superuser - role: auth tags: - auth - - role: packages - tags: - - packages - role: labsync tags: - labsync @@ -26,11 +26,13 @@ - role: fablab tags: - fablab + - role: hardware + tags: + - hardware vars: auth: sudo: group: fablab - l10n: keyboard: layout: de @@ -50,3 +52,11 @@ version: 1.8.5 visicut: url: "https://github.com/t-oster/VisiCut/releases/download/1.7_310/visicut_1.7-310-gcf8c087-1_all.deb" + apt_sources: + debian_sections: + - main + - contrib + - non-free + hardware: + firmware: + - firmware-amd-graphics diff --git a/packer/ansible/roles/hardware/tasks/firmware.yml b/packer/ansible/roles/hardware/tasks/firmware.yml new file mode 100644 index 0000000..63a2fda --- /dev/null +++ b/packer/ansible/roles/hardware/tasks/firmware.yml @@ -0,0 +1,6 @@ +--- +- name: install firmware + apt: + name: "{{ item }}" + state: present + with_items: "{{ hardware.firmware }}" diff --git a/packer/ansible/roles/hardware/tasks/main.yml b/packer/ansible/roles/hardware/tasks/main.yml new file mode 100644 index 0000000..e269158 --- /dev/null +++ b/packer/ansible/roles/hardware/tasks/main.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: firmware.yml diff --git a/packer/ansible/roles/packages/tasks/main.yml b/packer/ansible/roles/packages/tasks/main.yml index c01e82f..721c6b9 100644 --- a/packer/ansible/roles/packages/tasks/main.yml +++ b/packer/ansible/roles/packages/tasks/main.yml @@ -1,2 +1,3 @@ --- +- import_tasks: sources.yml - import_tasks: debian.yml diff --git a/packer/ansible/roles/packages/tasks/sources.yml b/packer/ansible/roles/packages/tasks/sources.yml new file mode 100644 index 0000000..2841021 --- /dev/null +++ b/packer/ansible/roles/packages/tasks/sources.yml @@ -0,0 +1,15 @@ +--- +- name: configure main repo + apt_repository: + repo: "deb http://deb.debian.org/debian stretch {{ apt_sources.debian_sections | join(' ') }}" + state: present + +- name: configure updates repo + apt_repository: + repo: "deb http://deb.debian.org/debian stretch-updates {{ apt_sources.debian_sections | join(' ') }}" + state: present + +- name: configure security updates repo + apt_repository: + repo: "deb http://security.debian.org stretch/updates {{ apt_sources.debian_sections | join(' ') }}" + state: present From ceeb370d398e393bc94401d739e0bc289a8f96d0 Mon Sep 17 00:00:00 2001 From: jalr Date: Thu, 22 Mar 2018 20:54:50 +0100 Subject: [PATCH 39/49] Add ansible target --- Makefile | 22 ++++++++++++++++++++++ docker/entrypoint.sh | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/Makefile b/Makefile index 06dbe5c..92082f5 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,9 @@ CWD=$(abspath $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))) COMPRESSION_LEVEL ?= 5 +ANSIBLE_LIMIT ?= qemumachine +ANSIBLE_TAGS ?= + qemu_ifname_br = brlabsync qemu_ifname_tap = taplabsync qemu_hostname = qemumachine @@ -71,6 +74,25 @@ images/debian-stretch.torrent: images "$(DOCKER_IMAGE)" \ debian-stretch +.PHONY: ansible +ansible: + docker run \ + --rm \ + -v "${PWD}/packer/ansible:/ansible" \ + -e "user=`id -u`" \ + -e "group=`id -g`" \ + -e "ANNOUNCE=$(ANNOUNCE)" \ + -e "WEBSEED=$(WEBSEED)" \ + -e "TASK=ansible" \ + -v "${SSH_AUTH_SOCK}:/var/run/ssh_auth_sock" \ + -e "SSH_AUTH_SOCK=/var/run/ssh_auth_sock" \ + "$(DOCKER_IMAGE)" \ + -i inventories \ + $(if $(ANSIBLE_TAGS),-t $(ANSIBLE_TAGS),) \ + -l $(ANSIBLE_LIMIT) \ + --ssh-extra-args="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \ + playbook.yml + # updates the initramfs # only used for development images/debian-stretch.initramfs.dev: tmp/initramfs-extracted/debian-stretch packer/initramfs/labsync diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index b365b70..aadd840 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -88,4 +88,8 @@ fi if [ -z "$TASK" ] || [ "$TASK" == "torrent" ]; then make_torrent "$NAME.squashfs" fi +if [ "$TASK" == "ansible" ]; then + cd /ansible + /usr/bin/ansible-playbook "$@" +fi From 035e95a6b902a597b289e09f6335539067e0d11e Mon Sep 17 00:00:00 2001 From: jalr Date: Thu, 22 Mar 2018 20:58:42 +0100 Subject: [PATCH 40/49] Add guest account scripts to repo instead of downloading it on build-time --- .../windowmanager/files/guest-account.sh | 232 ++++++++++++++++++ .../files/guest-session-setup.sh | 36 +++ .../roles/windowmanager/tasks/lightdm.yml | 16 +- 3 files changed, 273 insertions(+), 11 deletions(-) create mode 100644 packer/ansible/roles/windowmanager/files/guest-account.sh create mode 100644 packer/ansible/roles/windowmanager/files/guest-session-setup.sh diff --git a/packer/ansible/roles/windowmanager/files/guest-account.sh b/packer/ansible/roles/windowmanager/files/guest-account.sh new file mode 100644 index 0000000..38c2cc7 --- /dev/null +++ b/packer/ansible/roles/windowmanager/files/guest-account.sh @@ -0,0 +1,232 @@ +#!/bin/sh -e +# (C) 2008 Canonical Ltd. +# Author: Martin Pitt +# License: GPL v2 or later +# modified by David D Lowe and Thomas Detoux +# +# Setup user and temporary home directory for guest session. +# If this succeeds, this script needs to print the username as the last line to +# stdout. + +# github.com/CanonicalLtd/lightdm +# debian/guest-account.sh + +export TEXTDOMAINDIR=/usr/share/locale-langpack +export TEXTDOMAIN=lightdm + +# set the system wide locale for gettext calls +if [ -f /etc/default/locale ]; then + . /etc/default/locale + LANGUAGE= + export LANG LANGUAGE +fi + +is_system_user () +{ + UID_MIN=$(cat /etc/login.defs | grep UID_MIN | awk '{print $2}') + SYS_UID_MIN=$(cat /etc/login.defs | grep SYS_UID_MIN | awk '{print $2}') + SYS_UID_MAX=$(cat /etc/login.defs | grep SYS_UID_MAX | awk '{print $2}') + + SYS_UID_MIN=${SYS_UID_MIN:-101} + SYS_UID_MAX=${SYS_UID_MAX:-$(( UID_MIN - 1 ))} + + [ ${1} -ge ${SYS_UID_MIN} ] && [ ${1} -le ${SYS_UID_MAX} ] +} + +add_account () +{ + temp_home=$(mktemp -td guest-XXXXXX) + GUEST_HOME=$(echo ${temp_home} | tr '[:upper:]' '[:lower:]') + GUEST_USER=${GUEST_HOME#/tmp/} + if [ "${GUEST_HOME}" != "${temp_home}" ]; then + mkdir -m 700 "${GUEST_HOME}" || { + echo "Failed to create ${GUEST_USER}'s home directory (${GUEST_HOME})" + exit 1 + } + rmdir "${temp_home}" + fi + + # if ${GUEST_USER} already exists, it must be a locked system account with no existing + # home directory + if PWSTAT=$(passwd -S ${GUEST_USER}) 2>/dev/null; then + if [ $(echo ${PWSTAT} | cut -f2 -d' ') != L ]; then + echo "User account ${GUEST_USER} already exists and is not locked" + exit 1 + fi + + PWENT=$(getent passwd ${GUEST_USER}) || { + echo "getent passwd ${GUEST_USER} failed" + exit 1 + } + + GUEST_UID=$(echo ${PWENT} | cut -f3 -d:) + + if ! is_system_user ${GUEST_UID}; then + echo "Account ${GUEST_USER} is not a system user" + exit 1 + fi + + GUEST_HOME=$(echo ${PWENT} | cut -f6 -d:) + + if [ ${GUEST_HOME} != / ] && [ ${GUEST_HOME#/tmp} = ${GUEST_HOME} ] && [ -d ${GUEST_HOME} ]; then + echo "Home directory of ${GUEST_USER} already exists" + exit 1 + fi + else + # does not exist, so create it + useradd --system --home-dir ${GUEST_HOME} --comment $(gettext "Guest") --user-group --shell /bin/bash ${GUEST_USER} || { + rm -rf ${GUEST_HOME} + exit 1 + } + fi + + dist_gs=/usr/share/lightdm/guest-session + site_gs=/etc/guest-session + + # create temporary home directory + mount -t tmpfs -o mode=700,uid=${GUEST_USER} none ${GUEST_HOME} || { + rm -rf ${GUEST_HOME} + exit 1 + } + + if [ -d ${site_gs}/skel ] && [ "$(ls -A ${site_gs}/skel)" ]; then + # Only perform union-mounting if BindFS is available + if [ -x /usr/bin/bindfs ]; then + bindfs_mount=true + + # Try OverlayFS first + if modinfo -n overlay >/dev/null 2>&1; then + mkdir ${GUEST_HOME}/upper ${GUEST_HOME}/work + chown ${GUEST_USER}:${GUEST_USER} ${GUEST_HOME}/upper ${GUEST_HOME}/work + + mount -t overlay -o lowerdir=${dist_gs}/skel:${site_gs}/skel,upperdir=${GUEST_HOME}/upper,workdir=${GUEST_HOME}/work overlay ${GUEST_HOME} || { + umount ${GUEST_HOME} + rm -rf ${GUEST_HOME} + exit 1 + } + # If OverlayFS is not available, try AuFS + elif [ -x /sbin/mount.aufs ]; then + mount -t aufs -o br=${GUEST_HOME}:${dist_gs}/skel:${site_gs}/skel none ${GUEST_HOME} || { + umount ${GUEST_HOME} + rm -rf ${GUEST_HOME} + exit 1 + } + # If none of them is available, fall back to copy over + else + cp -rT ${site_gs}/skel/ ${GUEST_HOME} + cp -rT ${dist_gs}/skel/ ${GUEST_HOME} + chown -R ${GUEST_USER}:${GUEST_USER} ${GUEST_HOME} + bindfs_mount=false + fi + + if ${bindfs_mount}; then + # Wrap ${GUEST_HOME} in a BindFS mount, so that + # ${GUEST_USER} will be seen as the owner of ${GUEST_HOME}'s contents. + bindfs -u ${GUEST_USER} -g ${GUEST_USER} ${GUEST_HOME} ${GUEST_HOME} || { + umount ${GUEST_HOME} # union mount + umount ${GUEST_HOME} # tmpfs mount + rm -rf ${GUEST_HOME} + exit 1 + } + fi + # If BindFS is not available, just fall back to copy over + else + cp -rT ${site_gs}/skel/ ${GUEST_HOME} + cp -rT ${dist_gs}/skel/ ${GUEST_HOME} + chown -R ${GUEST_USER}:${GUEST_USER} ${GUEST_HOME} + fi + else + cp -rT /etc/skel/ ${GUEST_HOME} + cp -rT ${dist_gs}/skel/ ${GUEST_HOME} + chown -R ${GUEST_USER}:${GUEST_USER} ${GUEST_HOME} + fi + + # setup session + su ${GUEST_USER} -c "env HOME=${GUEST_HOME} site_gs=${site_gs} ${dist_gs}/setup.sh" + + # set possible local guest session preferences + source_local_prefs() { + local USER=${GUEST_USER} + local HOME=${GUEST_HOME} + . ${site_gs}/prefs.sh + chown -R ${USER}:${USER} ${HOME} + } + if [ -f ${site_gs}/prefs.sh ]; then + source_local_prefs + fi + + echo ${GUEST_USER} +} + +remove_account () +{ + GUEST_USER=${1} + + PWENT=$(getent passwd ${GUEST_USER}) || { + echo "Error: invalid user ${GUEST_USER}" + exit 1 + } + + GUEST_UID=$(echo ${PWENT} | cut -f3 -d:) + + if ! is_system_user ${GUEST_UID}; then + echo "Error: user ${GUEST_USER} is not a system user." + exit 1 + fi + + GUEST_HOME=$(echo ${PWENT} | cut -f6 -d:) + + # kill all remaining processes + if [ -x /bin/loginctl ] || [ -x /usr/bin/loginctl ]; then + loginctl --signal=9 kill-user ${GUEST_USER} >/dev/null || true + else + while ps h -u ${GUEST_USER} >/dev/null + do + killall -9 -u ${GUEST_USER} || true + sleep 0.2; + done + fi + + if [ ${GUEST_HOME} = ${GUEST_HOME#/tmp/} ]; then + echo "Warning: home directory ${GUEST_HOME} is not in /tmp/. It won't be removed." + else + umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # BindFS mount + umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # union mount + umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # tmpfs mount + rm -rf ${GUEST_HOME} + fi + + # remove leftovers in /tmp + find /tmp -mindepth 1 -maxdepth 1 -uid ${GUEST_UID} -print0 | xargs -0 rm -rf || true + + # remove possible {/run,}/media/guest-XXXXXX folder + for media_dir in /run/media/${GUEST_USER} /media/${GUEST_USER}; do + if [ -d ${media_dir} ]; then + for dir in $(find ${media_dir} -mindepth 1 -maxdepth 1); do + umount ${dir} || true + done + + rmdir ${media_dir} || true + fi + done + + userdel --force ${GUEST_USER} +} + +case ${1} in + add) + add_account + ;; + remove) + if [ -z ${2} ] ; then + echo "Usage: ${0} remove [account]" + exit 1 + fi + + remove_account ${2} + ;; + *) + echo "Usage: ${0} add" + echo " ${0} remove [account]" + exit 1 +esac diff --git a/packer/ansible/roles/windowmanager/files/guest-session-setup.sh b/packer/ansible/roles/windowmanager/files/guest-session-setup.sh new file mode 100644 index 0000000..5e4f963 --- /dev/null +++ b/packer/ansible/roles/windowmanager/files/guest-session-setup.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +# github.com/CanonicalLtd/lightdm +# debian/guest-session-setup.sh + +HOME=${HOME:-$(getent passwd $(whoami) | cut -f6 -d:)} + +# disable some services that are unnecessary for the guest session +services="jockey-kde.desktop jockey-gtk.desktop update-notifier.desktop user-dirs-update-gtk.desktop" + +for service in ${services}; do + if [ -e /etc/xdg/autostart/${service} ]; then + [ -f ${HOME}/.config/autostart/${service} ] || cp /etc/xdg/autostart/${service} ${HOME}/.config/autostart + echo "X-GNOME-Autostart-enabled=false" >> ${HOME}/.config/autostart/${service} + fi +done + +# disable Unity shortcut hint +[ -d ${HOME}/.cache/unity ] || mkdir -p ${HOME}/.cache/unity +touch ${HOME}/.cache/unity/first_run.stamp + +[ -d ${HOME}/.kde/share/config ] || mkdir -p ${HOME}/.kde/share/config +echo "[Basic Settings]" >> ${HOME}/.kde/share/config/nepomukserverrc +echo "Start Nepomuk=false" >> ${HOME}/.kde/share/config/nepomukserverrc + +echo "[Event]" >> ${HOME}/.kde/share/config/notificationhelper +echo "hideHookNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper +echo "hideInstallNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper +echo "hideRestartNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper + +# Load restricted session +#dmrc='[Desktop]\nSession=guest-restricted' +#/bin/echo -e ${dmrc} > ${HOME}/.dmrc + +# delay the launch of info dialog +echo "export DIALOG_SLEEP=4" >> ${HOME}/.profile diff --git a/packer/ansible/roles/windowmanager/tasks/lightdm.yml b/packer/ansible/roles/windowmanager/tasks/lightdm.yml index b4ae96f..7393fc1 100644 --- a/packer/ansible/roles/windowmanager/tasks/lightdm.yml +++ b/packer/ansible/roles/windowmanager/tasks/lightdm.yml @@ -42,23 +42,17 @@ dest: /usr/share/lightdm/guest-session/skel state: link -- name: get guest-account scripts - get_url: - url: "{{ item.url }}" +- name: copy guest-account scripts + copy: + src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "0755" with_items: - - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-session-setup.sh + - src: guest-session-setup.sh dest: /usr/share/lightdm/guest-session/setup.sh - - url: https://raw.githubusercontent.com/CanonicalLtd/lightdm/master/debian/guest-account.sh + - src: guest-account.sh dest: /usr/local/sbin/guest-account - #- name: modify guest-account script - # lineinfile: - # path: /usr/local/sbin/guest-account - # regexp: '^dist_gs=.*$' - # line: 'dist_gs=/etc/guest-session' - - name: configure lightdm ini_file: path: /etc/lightdm/lightdm.conf From b9581a9fa383a48bcf4a0c918c42ef9f109eace8 Mon Sep 17 00:00:00 2001 From: jalr Date: Thu, 22 Mar 2018 21:48:28 +0100 Subject: [PATCH 41/49] Add defaults; clear sources.list --- packer/ansible/playbook.yml | 10 +++++----- packer/ansible/roles/packages/defaults/main.yml | 4 ++++ packer/ansible/roles/packages/tasks/sources.yml | 16 +++++++++++++--- 3 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 packer/ansible/roles/packages/defaults/main.yml diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 52ab4e8..9bff890 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -52,11 +52,11 @@ version: 1.8.5 visicut: url: "https://github.com/t-oster/VisiCut/releases/download/1.7_310/visicut_1.7-310-gcf8c087-1_all.deb" - apt_sources: - debian_sections: - - main - - contrib - - non-free + debian_sections: + - main + - contrib + - non-free + debian_mirror: http://ftp.de.debian.org/debian hardware: firmware: - firmware-amd-graphics diff --git a/packer/ansible/roles/packages/defaults/main.yml b/packer/ansible/roles/packages/defaults/main.yml new file mode 100644 index 0000000..766cd0c --- /dev/null +++ b/packer/ansible/roles/packages/defaults/main.yml @@ -0,0 +1,4 @@ +debian_mirror: http://deb.debian.org/debian +debian_mirror_security: http://security.debian.org/ +debian_sections: + - main diff --git a/packer/ansible/roles/packages/tasks/sources.yml b/packer/ansible/roles/packages/tasks/sources.yml index 2841021..2ed5381 100644 --- a/packer/ansible/roles/packages/tasks/sources.yml +++ b/packer/ansible/roles/packages/tasks/sources.yml @@ -1,15 +1,25 @@ --- +- name: clear sources.list + copy: + content: "" + dest: /etc/apt/sources.list + - name: configure main repo apt_repository: - repo: "deb http://deb.debian.org/debian stretch {{ apt_sources.debian_sections | join(' ') }}" + filename: "{{ ansible_distribution_release }}" + repo: "deb {{ debian_mirror }} {{ ansible_distribution_release }} {{ debian_sections | join(' ') }}" state: present - name: configure updates repo apt_repository: - repo: "deb http://deb.debian.org/debian stretch-updates {{ apt_sources.debian_sections | join(' ') }}" + filename: "{{ ansible_distribution_release }}-updates" + repo: "deb {{ mirror }} {{ ansible_distribution_release }}-updates {{ debian_sections | join(' ') }}" state: present + vars: + mirror: "{{ debian_mirror_updates | default(debian_mirror) }}" - name: configure security updates repo apt_repository: - repo: "deb http://security.debian.org stretch/updates {{ apt_sources.debian_sections | join(' ') }}" + filename: "{{ ansible_distribution_release }}-security" + repo: "deb {{ debian_mirror_security }} {{ ansible_distribution_release }}/updates {{ debian_sections | join(' ') }}" state: present From 98a75381ed5df67261a54525379ecad5daf3c495 Mon Sep 17 00:00:00 2001 From: jalr Date: Thu, 22 Mar 2018 22:38:25 +0100 Subject: [PATCH 42/49] Add docker --- packer/ansible/playbook.yml | 3 + packer/ansible/roles/docker/files/docker.asc | 62 +++++++++++++++++++ packer/ansible/roles/docker/tasks/main.yml | 4 ++ .../ansible/roles/docker/tasks/packages.yml | 24 +++++++ 4 files changed, 93 insertions(+) create mode 100644 packer/ansible/roles/docker/files/docker.asc create mode 100644 packer/ansible/roles/docker/tasks/main.yml create mode 100644 packer/ansible/roles/docker/tasks/packages.yml diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 9bff890..1dcea81 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -29,6 +29,9 @@ - role: hardware tags: - hardware + - role: docker + tags: + - docker vars: auth: sudo: diff --git a/packer/ansible/roles/docker/files/docker.asc b/packer/ansible/roles/docker/files/docker.asc new file mode 100644 index 0000000..ee7872e --- /dev/null +++ b/packer/ansible/roles/docker/files/docker.asc @@ -0,0 +1,62 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +YT90qFF93M3v01BbxP+EIY2/9tiIPbrd +=0YYh +-----END PGP PUBLIC KEY BLOCK----- diff --git a/packer/ansible/roles/docker/tasks/main.yml b/packer/ansible/roles/docker/tasks/main.yml new file mode 100644 index 0000000..460e943 --- /dev/null +++ b/packer/ansible/roles/docker/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- import_tasks: packages.yml + tags: + - docker:packages diff --git a/packer/ansible/roles/docker/tasks/packages.yml b/packer/ansible/roles/docker/tasks/packages.yml new file mode 100644 index 0000000..fc43430 --- /dev/null +++ b/packer/ansible/roles/docker/tasks/packages.yml @@ -0,0 +1,24 @@ +--- +- name: install dependencies + apt: + name: "{{ item }}" + state: present + with_items: + - apt-transport-https + - ca-certificates + +- name: Add apt key + apt_key: + data: "{{ lookup('file', 'docker.asc') }}" + state: present + +- name: Add repository + apt_repository: + repo: "deb [arch=amd64] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable" + filename: docker + state: present + +- name: install docker-ce + apt: + name: "docker-ce" + state: present From a5ab66220b203eee9375bd7237ee182b7a8364a8 Mon Sep 17 00:00:00 2001 From: jalr Date: Fri, 23 Mar 2018 00:01:02 +0100 Subject: [PATCH 43/49] Add python-apt --- packer/ansible/roles/packages/tasks/sources.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packer/ansible/roles/packages/tasks/sources.yml b/packer/ansible/roles/packages/tasks/sources.yml index 2ed5381..d6befbc 100644 --- a/packer/ansible/roles/packages/tasks/sources.yml +++ b/packer/ansible/roles/packages/tasks/sources.yml @@ -1,4 +1,9 @@ --- +- name: install python-apt + apt: + name: "python-apt" + state: present + - name: clear sources.list copy: content: "" From c65745a5ba43e98cd64afae4b17ba234fd9aef99 Mon Sep 17 00:00:00 2001 From: jalr Date: Thu, 29 Mar 2018 19:32:15 +0200 Subject: [PATCH 44/49] use $rootmnt instead of hard-coded /root; change overlay and squashfs mount points --- packer/initramfs/labsync | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packer/initramfs/labsync b/packer/initramfs/labsync index 32e5de9..30855ee 100755 --- a/packer/initramfs/labsync +++ b/packer/initramfs/labsync @@ -1,10 +1,10 @@ #!/bin/sh labsync_set_environment() { - if grep -q "^${1}=" /root/etc/environment; then - sed -i "s/^\(${1}\)=.*$/\1='${2}'/" /root/etc/environment + if grep -q "^${1}=" /${rootmnt}/etc/environment; then + sed -i "s/^\(${1}\)=.*$/\1='${2}'/" /${rootmnt}/etc/environment else - echo "${1}='${2}'" >> /root/etc/environment + echo "${1}='${2}'" >> /${rootmnt}/etc/environment fi } @@ -175,12 +175,14 @@ PARTTABLE labsync_info "Mounting squashfs and overlay" modprobe overlay - mkdir -p /root - mkdir /ro_root /rw_root - mount -t squashfs "$(realpath "$lv_path_squashfs")" /ro_root - mount -t ext4 "$lv_path_overlay" /rw_root - mkdir -p /rw_root/upper /rw_root/work - mount -t overlay overlay -o lowerdir=/ro_root,upperdir=/rw_root/upper,workdir=/rw_root/work /root + mkdir -p /rom /overlay + mount -t squashfs "$(realpath "$lv_path_squashfs")" /rom + mount -t ext4 "$lv_path_overlay" /overlay + mkdir -p /overlay/upper /overlay/work + mount -t overlay overlay -o lowerdir=/rom,upperdir=/overlay/upper,workdir=/overlay/work ${rootmnt} + mkdir -p ${rootmnt}/overlay ${rootmnt}/rom + mount -n -o move /overlay ${rootmnt}/overlay + mount -n -o move /rom ${rootmnt}/rom if [ -z "$labsync_localboot" ]; then labsync_set_environment LABSYNC "$torrent_name" From c1f1f8dcf9bbb23c7e0e8fb4046144f09352de18 Mon Sep 17 00:00:00 2001 From: jalr Date: Sat, 31 Mar 2018 21:22:10 +0200 Subject: [PATCH 45/49] build docker image with pull --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 92082f5..8ee8dde 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ clean: .PHONY: dockerimg dockerimg: - docker build -t "$(DOCKER_IMAGE)" --build-arg "PACKER_VERSION=$(PACKER_VERSION)" docker + docker build --pull -t "$(DOCKER_IMAGE)" --build-arg "PACKER_VERSION=$(PACKER_VERSION)" docker images: [ ! -d "$@" ] && mkdir "$@" From 657336cf7c267b883548d88b2d8361ad1fd3ab7d Mon Sep 17 00:00:00 2001 From: jalr Date: Sat, 31 Mar 2018 21:45:23 +0200 Subject: [PATCH 46/49] Add cache-from to use cache layers --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8ee8dde..df0153c 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ clean: .PHONY: dockerimg dockerimg: - docker build --pull -t "$(DOCKER_IMAGE)" --build-arg "PACKER_VERSION=$(PACKER_VERSION)" docker + docker build --pull -t "$(DOCKER_IMAGE)" --cache-from "$(DOCKER_IMAGE)" --build-arg "PACKER_VERSION=$(PACKER_VERSION)" docker images: [ ! -d "$@" ] && mkdir "$@" From 2bc4d064b321f277a61f23cde25ea3f947ae7da7 Mon Sep 17 00:00:00 2001 From: jalr Date: Sun, 1 Apr 2018 02:12:03 +0200 Subject: [PATCH 47/49] build squashfs in packer; set hostname using mac address --- Makefile | 1 + docker/Dockerfile | 2 +- docker/entrypoint.sh | 35 +++------------------------ packer/debian-stretch.json | 48 ++++++++++++++++++++++++++++++++++---- packer/hosts | 6 +++++ packer/initramfs/labsync | 4 ++++ 6 files changed, 58 insertions(+), 38 deletions(-) create mode 100644 packer/hosts diff --git a/Makefile b/Makefile index df0153c..9fdab82 100644 --- a/Makefile +++ b/Makefile @@ -55,6 +55,7 @@ images/debian-stretch.squashfs: images -v "${PWD}/images:/images" \ -e "user=`id -u`" \ -e "group=`id -g`" \ + -e "IMAGES=${PWD}/images" \ -e "ANNOUNCE=$(ANNOUNCE)" \ -e "WEBSEED=$(WEBSEED)" \ -e "COMPRESSION_LEVEL=$(COMPRESSION_LEVEL)" \ diff --git a/docker/Dockerfile b/docker/Dockerfile index ba2e7b7..51f3419 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM docker:dind +FROM docker RUN apk add --no-cache \ ca-certificates \ diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index aadd840..4d44b05 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -37,36 +37,10 @@ make_torrent() { } run_packer() { - packer build "$PACKER_JSON" - - mkdir -p build/rootfs - tar xf build/rootfs.tar -C build/rootfs - - mv build/rootfs/artifacts/initramfs "/images/$INITRAMFS_FILE" - mv build/rootfs/artifacts/linux "/images/$LINUX_FILE" - - rm -rf build/rootfs/artifacts - - rm -- \ - build/rootfs/.dockerenv \ - build/rootfs/initrd.* \ - build/rootfs/vmlinuz* - - if [ -e "/images/$SQUASHFS_FILE" ]; then - rm "/images/$SQUASHFS_FILE" - fi - - mksquashfs build/rootfs "/images/$SQUASHFS_FILE" \ - -comp lzo \ - -Xcompression-level $COMPRESSION_LEVEL - - rm -rf build + packer build "$NAME.json" if [ "$user" != "" ] && [ "$group" != "" ]; then - chown $user:$group \ - "/images/$INITRAMFS_FILE" \ - "/images/$LINUX_FILE" \ - "/images/$SQUASHFS_FILE" + chown $user:$group "/images/${NAME}."* fi } @@ -77,10 +51,7 @@ if [ "$NAME" = "" ]; then exit 1 fi -export PACKER_JSON="$NAME.json" -export INITRAMFS_FILE="$NAME.initramfs" -export LINUX_FILE="$NAME.linux" -export SQUASHFS_FILE="$NAME.squashfs" +export NAME if [ -z "$TASK" ] || [ "$TASK" == "packer" ]; then run_packer diff --git a/packer/debian-stretch.json b/packer/debian-stretch.json index c75aab8..2587fa6 100644 --- a/packer/debian-stretch.json +++ b/packer/debian-stretch.json @@ -1,5 +1,11 @@ { "variables": { + "name": "{{env `NAME`}}", + "squashfs_file": "{{env `NAME`}}.squashfs", + "initramfs_file": "{{env `NAME`}}.initramfs", + "linux_file": "{{env `NAME`}}.linux", + "compression_level": "{{env `COMPRESSION_LEVEL`}}", + "images": "{{env `IMAGES`}}", "ci_job_id": "{{env `CI_JOB_ID`}}", "ci_commit_sha": "{{env `CI_COMMIT_SHA`}}", "ci_commit_tag": "{{env `CI_COMMIT_TAG`}}", @@ -16,7 +22,15 @@ { "type": "docker", "image": "debian:stretch", - "export_path": "build/rootfs.tar" + "discard": true, + "run_command": [ + "-d", + "-i", + "-t", + "-v", "{{user `images`}}:/tmp/images", + "{{.Image}}", + "/bin/bash" + ] } ], "provisioners": [ @@ -58,10 +72,9 @@ "echo overlay >> /etc/initramfs-tools/modules", "echo 'RESUME=none' > /etc/initramfs-tools/conf.d/resume", "mkdir /usr/local/boot", - "apt-get -f -y install aria2 ca-certificates linux-image-amd64 lvm2", - "mkdir /artifacts", - "cp $(find /boot/ -name 'initrd.img-*' | sort -V | tail -n 1) /artifacts/initramfs", - "cp $(find /boot/ -name 'vmlinuz-*' | sort -V | tail -n 1) /artifacts/linux" + "apt-get -f -y install aria2 linux-image-amd64 lvm2", + "cp $(find /boot/ -name 'initrd.img-*' | sort -V | tail -n 1) '/tmp/images/{{user `initramfs_file`}}'", + "cp $(find /boot/ -name 'vmlinuz-*' | sort -V | tail -n 1) '/tmp/images/{{user `linux_file`}}'" ] }, { @@ -76,6 +89,31 @@ { "type": "shell", "inline": [ "rm /boot && mkdir /boot" ] + }, + { + "type": "shell", + "inline": [ + "set -x", + "apt-get -y install squashfs-tools", + "dpkg -L squashfs-tools liblzo2-2 | while read f; do [ -f \"$f\" ] && echo \"$f\"; done > /tmp/ignore_files", + "echo '/etc/resolv.conf' >> /tmp/ignore_files", + "echo '/etc/hostname' >> /tmp/ignore_files", + "echo '/etc/hosts' >> /tmp/ignore_files", + "mkdir -p /tmp/extra/tmp /tmp/extra/proc /tmp/extra/sys /tmp/extra/etc" + ] + }, + { + "type": "file", + "source": "hosts", + "destination": "/tmp/extra/etc/hosts" + }, + { + "type": "shell", + "inline": [ + "if [ -e '/tmp/images/{{user `squashfs_file`}}' ]; then rm '/tmp/images/{{user `squashfs_file`}}'; fi", + "squashfs_content=\"$(find / -mindepth 1 -maxdepth 1 | grep -vE '^/(proc|sys|tmp|[.]dockerenv|packer-files)$')\"", + "mksquashfs $squashfs_content /tmp/extra/* '/tmp/images/{{user `squashfs_file`}}' -comp lzo -Xcompression-level {{user `compression_level`}} -ef /tmp/ignore_files" + ] } ] } diff --git a/packer/hosts b/packer/hosts new file mode 100644 index 0000000..37435a4 --- /dev/null +++ b/packer/hosts @@ -0,0 +1,6 @@ +127.0.0.1 localhost +127.0.1.1 @@HOSTNAME@@ + +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters diff --git a/packer/initramfs/labsync b/packer/initramfs/labsync index 30855ee..d603a9d 100755 --- a/packer/initramfs/labsync +++ b/packer/initramfs/labsync @@ -184,6 +184,10 @@ PARTTABLE mount -n -o move /overlay ${rootmnt}/overlay mount -n -o move /rom ${rootmnt}/rom + hostname=$(ip -o link show | sed -ne 's#^.*link/ether \([0-9a-f:]*\).*$#\1#p' | sed -ne '1{s/://g;p}') + echo $hostname > ${rootmnt}/etc/hostname + sed -i "s/@@HOSTNAME@@/$hostname/" ${rootmnt}/etc/hosts + if [ -z "$labsync_localboot" ]; then labsync_set_environment LABSYNC "$torrent_name" labsync_set_environment LABSYNC_TORRENT "${labsync_torrent}" From 44d7e19960b9403aef413c156bfbc801b3f5abe3 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 1 Apr 2018 15:58:07 +0000 Subject: [PATCH 48/49] user new cura (AppImage) --- packer/ansible/playbook.yml | 2 ++ .../ansible/roles/fablab/files/cura.desktop | 9 +++++++++ packer/ansible/roles/fablab/files/cura.png | Bin 0 -> 2710 bytes packer/ansible/roles/fablab/tasks/cura.yml | 19 ++++++++++++++---- 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 packer/ansible/roles/fablab/files/cura.desktop create mode 100644 packer/ansible/roles/fablab/files/cura.png diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 1dcea81..6d73054 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -55,6 +55,8 @@ version: 1.8.5 visicut: url: "https://github.com/t-oster/VisiCut/releases/download/1.7_310/visicut_1.7-310-gcf8c087-1_all.deb" + cura: + version: 3.2.1 debian_sections: - main - contrib diff --git a/packer/ansible/roles/fablab/files/cura.desktop b/packer/ansible/roles/fablab/files/cura.desktop new file mode 100644 index 0000000..0c5e228 --- /dev/null +++ b/packer/ansible/roles/fablab/files/cura.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Cura +GenericName=Cura +Comment=3D slicer +Exec=/opt/cura.AppImage +Icon=/opt/cura.png +Terminal=false +Type=Application +Categories=Graphics diff --git a/packer/ansible/roles/fablab/files/cura.png b/packer/ansible/roles/fablab/files/cura.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd6f4169100dfed65c69ab9a36e2ad9e911a33d GIT binary patch literal 2710 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 literal 0 HcmV?d00001 diff --git a/packer/ansible/roles/fablab/tasks/cura.yml b/packer/ansible/roles/fablab/tasks/cura.yml index cee1d95..ef680b3 100644 --- a/packer/ansible/roles/fablab/tasks/cura.yml +++ b/packer/ansible/roles/fablab/tasks/cura.yml @@ -1,5 +1,16 @@ --- -- name: install cura (OOOOLD!) - apt: - deb: "https://software.ultimaker.com/current/Cura-2.3.1-Linux.deb" - state: present +- name: install cura + get_url: + url: "http://software.ultimaker.com/current/Cura-{{ fablab.cura.version }}.AppImage" + dest: /opt/cura.AppImage + mode: 775 + +- name: get cura icon + copy: + src: cura.png + dest: /opt/cura.png + +- name: install cura dekstop file + copy: + src: cura.desktop + dest: /usr/share/applications/cura.desktop From 79aa57d84ed65141eaf7bd8cf4b3b0f3ad581b99 Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 1 Apr 2018 16:00:46 +0000 Subject: [PATCH 49/49] do not change position of panels --- .../roles/windowmanager/files/autostart | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/packer/ansible/roles/windowmanager/files/autostart b/packer/ansible/roles/windowmanager/files/autostart index 8b288bc..c8083e3 100755 --- a/packer/ansible/roles/windowmanager/files/autostart +++ b/packer/ansible/roles/windowmanager/files/autostart @@ -1,4 +1,12 @@ #!/bin/bash +# set background image +gsettings set org.mate.background picture-filename '/etc/lightdm/bg.jpg' + +# set fonts +#gsettings set org.mate.interface monospace-font-name 'Monospace 10' +gsettings set org.mate.interface font-name 'Roboto 10' +gsettings set org.mate.interface document-font-name 'Roboto 10' + if echo $USER | grep -E 'guest-*'; then gsettings set org.mate.screensaver lock-enabled false zenity \ @@ -7,15 +15,3 @@ if echo $USER | grep -E 'guest-*'; then --width=500 \ --text='Hallo!\n\nDu hast Dich mit einem Gast-Account angemeldet. Alle Daten werden nach der Anmeldung gelöscht. Wenn Du Deine Daten dauerhaft speichern möchtest, lege Dir bitte einene Account an!' fi - -# set background image -gsettings set org.mate.background picture-filename '/etc/lightdm/bg.jpg' - -# set panel position -gsettings set org.mate.panel.toplevel:/org/mate/panel/toplevels/bottom/ orientation 'top' -gsettings set org.mate.panel.toplevel:/org/mate/panel/toplevels/top/ orientation 'bottom' - -# set fonts -#gsettings set org.mate.interface monospace-font-name 'Monospace 10' -gsettings set org.mate.interface font-name 'Roboto 10' -gsettings set org.mate.interface document-font-name 'Roboto 10'