From d372cd9f098a79f7fefff1e5c8d74fa3341f5bc0 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 14 Sep 2023 20:19:04 +0000 Subject: [PATCH 1/3] Move prusa-slicer to own role --- packer/ansible/playbook.yml | 91 ++++++++++--------- packer/ansible/roles/fablab/tasks/main.yml | 3 - .../tasks/configure.yml} | 7 +- .../roles/prusa-slicer/tasks/install.yml | 5 + .../ansible/roles/prusa-slicer/tasks/main.yml | 12 +++ 5 files changed, 64 insertions(+), 54 deletions(-) rename packer/ansible/roles/{fablab/tasks/prusa.yml => prusa-slicer/tasks/configure.yml} (78%) create mode 100644 packer/ansible/roles/prusa-slicer/tasks/install.yml create mode 100644 packer/ansible/roles/prusa-slicer/tasks/main.yml diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 22db53b..b994b60 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -12,6 +12,7 @@ - role: windowmanager - role: inkscape - role: lightburn + - role: prusa-slicer - role: fablab - role: hardware - role: docker @@ -45,51 +46,6 @@ version: 3.3.1 lightburn: dockerimage: r.jalr.de/fablab/lightburn - prusa_slicer: - settings: | - no_controller = 1 - no_defaults = 1 - preset_update = 0 - show_splash_screen = 0 - use_inches = 0 - version_check = 0 - view_mode = expert - - [filaments] - AmazonBasics TPU @MINI = 1 - Das Filament PLA = 1 - Generic PETG = 1 - Generic PETG @MINI = 1 - Generic PETG @MMU2 = 1 - Generic PLA = 1 - Generic PLA @MMU2 = 1 - Prusament ASA = 1 - Prusament ASA @MINI = 1 - Prusament ASA @MMU2 = 1 - Prusament PC Blend = 1 - Prusament PC Blend @MINI = 1 - Prusament PC Blend @MMU2 = 1 - Prusament PETG = 1 - Prusament PETG @MINI = 1 - Prusament PETG @MMU2 = 1 - Prusament PLA = 1 - Prusament PLA @MMU2 = 1 - Prusament PVB = 1 - Prusament PVB @MMU2 = 1 - Verbatim BVOH = 1 - Verbatim BVOH @MMU2 = 1 - - [presets] - filament = Prusament PLA - physical_printer = - print = 0.15mm QUALITY @MK3 - printer = Original Prusa i3 MK3 - sla_material = - sla_print = - - [vendor:PrusaResearch] - model:MK3 = 0.4 - model:MK3SMMU2S = 0.4 firefox: language_packs: - de @@ -113,3 +69,48 @@ lightburn: devices: - https://raw.githubusercontent.com/fablab-nea/LaserKutter/main/lightburn/LaserKutter.lbdev + prusa_slicer: + settings: | + no_controller = 1 + no_defaults = 1 + preset_update = 0 + show_splash_screen = 0 + use_inches = 0 + version_check = 0 + view_mode = expert + + [filaments] + AmazonBasics TPU @MINI = 1 + Das Filament PLA = 1 + Generic PETG = 1 + Generic PETG @MINI = 1 + Generic PETG @MMU2 = 1 + Generic PLA = 1 + Generic PLA @MMU2 = 1 + Prusament ASA = 1 + Prusament ASA @MINI = 1 + Prusament ASA @MMU2 = 1 + Prusament PC Blend = 1 + Prusament PC Blend @MINI = 1 + Prusament PC Blend @MMU2 = 1 + Prusament PETG = 1 + Prusament PETG @MINI = 1 + Prusament PETG @MMU2 = 1 + Prusament PLA = 1 + Prusament PLA @MMU2 = 1 + Prusament PVB = 1 + Prusament PVB @MMU2 = 1 + Verbatim BVOH = 1 + Verbatim BVOH @MMU2 = 1 + + [presets] + filament = Prusament PLA + physical_printer = + print = 0.15mm QUALITY @MK3 + printer = Original Prusa i3 MK3 + sla_material = + sla_print = + + [vendor:PrusaResearch] + model:MK3 = 0.4 + model:MK3SMMU2S = 0.4 diff --git a/packer/ansible/roles/fablab/tasks/main.yml b/packer/ansible/roles/fablab/tasks/main.yml index 02faee9..1bb8ab5 100644 --- a/packer/ansible/roles/fablab/tasks/main.yml +++ b/packer/ansible/roles/fablab/tasks/main.yml @@ -18,9 +18,6 @@ - import_tasks: visicut.yml tags: - fablab:visicut - - import_tasks: prusa.yml - tags: - - fablab:prusa # - import_tasks: platformio.yml # tags: # - fablab:platformio diff --git a/packer/ansible/roles/fablab/tasks/prusa.yml b/packer/ansible/roles/prusa-slicer/tasks/configure.yml similarity index 78% rename from packer/ansible/roles/fablab/tasks/prusa.yml rename to packer/ansible/roles/prusa-slicer/tasks/configure.yml index 8211e1c..817ae54 100644 --- a/packer/ansible/roles/fablab/tasks/prusa.yml +++ b/packer/ansible/roles/prusa-slicer/tasks/configure.yml @@ -1,9 +1,4 @@ --- -- name: install slic3r-prusa - apt: - name: slic3r-prusa - state: present - - name: create skel directories file: path: "/etc/skel/{{ item }}" @@ -21,5 +16,5 @@ - name: Copy Prusa slicer settings copy: - content: "{{ fablab.prusa_slicer.settings }}" + content: "{{ prusa_slicer.settings }}" dest: /etc/skel/.config/PrusaSlicer/PrusaSlicer.ini diff --git a/packer/ansible/roles/prusa-slicer/tasks/install.yml b/packer/ansible/roles/prusa-slicer/tasks/install.yml new file mode 100644 index 0000000..31a992c --- /dev/null +++ b/packer/ansible/roles/prusa-slicer/tasks/install.yml @@ -0,0 +1,5 @@ +--- +- name: install slic3r-prusa + apt: + name: slic3r-prusa + state: present diff --git a/packer/ansible/roles/prusa-slicer/tasks/main.yml b/packer/ansible/roles/prusa-slicer/tasks/main.yml new file mode 100644 index 0000000..6f1600a --- /dev/null +++ b/packer/ansible/roles/prusa-slicer/tasks/main.yml @@ -0,0 +1,12 @@ +--- +- block: + - import_tasks: install.yml + tags: + - prusa-slicer:install + + - import_tasks: configure.yml + tags: + - prusa-slicer:configure + + tags: + - prusa-slicer From 9e1f29dfd9e89984a6c47872d7b6b3af9534c0ec Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 14 Sep 2023 22:09:06 +0000 Subject: [PATCH 2/3] Download PrusaSlicer from GitHub --- packer/ansible/playbook.yml | 2 + .../roles/prusa-slicer/defaults/main.yml | 2 + .../files/PrusaGcodeviewer.desktop | 9 +++ .../prusa-slicer/files/PrusaSlicer.desktop | 12 ++++ .../roles/prusa-slicer/tasks/configure.yml | 27 ++++++++- .../tasks/install_from_github.yml | 60 +++++++++++++++++++ .../ansible/roles/prusa-slicer/tasks/main.yml | 8 ++- .../tasks/{install.yml => package.yml} | 0 8 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 packer/ansible/roles/prusa-slicer/defaults/main.yml create mode 100644 packer/ansible/roles/prusa-slicer/files/PrusaGcodeviewer.desktop create mode 100644 packer/ansible/roles/prusa-slicer/files/PrusaSlicer.desktop create mode 100644 packer/ansible/roles/prusa-slicer/tasks/install_from_github.yml rename packer/ansible/roles/prusa-slicer/tasks/{install.yml => package.yml} (100%) diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index b994b60..842fcd6 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -78,6 +78,8 @@ use_inches = 0 version_check = 0 view_mode = expert + tls_accepted_cert_store_location = /etc/ssl/certs/ca-certificates.crt + tls_cert_store_accepted = yes [filaments] AmazonBasics TPU @MINI = 1 diff --git a/packer/ansible/roles/prusa-slicer/defaults/main.yml b/packer/ansible/roles/prusa-slicer/defaults/main.yml new file mode 100644 index 0000000..cd9af8b --- /dev/null +++ b/packer/ansible/roles/prusa-slicer/defaults/main.yml @@ -0,0 +1,2 @@ +--- +prusa_slicer_use_package: false diff --git a/packer/ansible/roles/prusa-slicer/files/PrusaGcodeviewer.desktop b/packer/ansible/roles/prusa-slicer/files/PrusaGcodeviewer.desktop new file mode 100644 index 0000000..51d1b4d --- /dev/null +++ b/packer/ansible/roles/prusa-slicer/files/PrusaGcodeviewer.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Prusa GCode viewer +Exec=/opt/PrusaSlicer/bin/prusa-slicer --gcodeviewer %F +Icon=/opt/PrusaSlicer/resources/icons/PrusaSlicer-gcodeviewer.svg +Terminal=false +Type=Application +MimeType=text/x.gcode; +Categories=Graphics;3DGraphics; +Keywords=3D;Printing;Slicer; diff --git a/packer/ansible/roles/prusa-slicer/files/PrusaSlicer.desktop b/packer/ansible/roles/prusa-slicer/files/PrusaSlicer.desktop new file mode 100644 index 0000000..42680f4 --- /dev/null +++ b/packer/ansible/roles/prusa-slicer/files/PrusaSlicer.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=PrusaSlicer +GenericName=3D Printing Software +Terminal=false +Exec=/opt/PrusaSlicer/bin/prusa-slicer %F +Icon=/opt/PrusaSlicer/resources/icons/PrusaSlicer.png +Type=Application +MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;application/x-amf; +Categories=Graphics;3DGraphics;Engineering; +Keywords=3D;Printing;Slicer;slice;3D;printer;convert;gcode;stl;obj;amf;SLA +StartupNotify=false +StartupWMClass=prusa-slicer diff --git a/packer/ansible/roles/prusa-slicer/tasks/configure.yml b/packer/ansible/roles/prusa-slicer/tasks/configure.yml index 817ae54..c59887b 100644 --- a/packer/ansible/roles/prusa-slicer/tasks/configure.yml +++ b/packer/ansible/roles/prusa-slicer/tasks/configure.yml @@ -1,4 +1,12 @@ --- +- set_fact: + prusa_slicer_profiles_directory: /usr/share/PrusaSlicer/profiles + when: prusa_slicer_use_package | bool + +- set_fact: + prusa_slicer_profiles_directory: /opt/PrusaSlicer/resources/profiles + when: not prusa_slicer_use_package | bool + - name: create skel directories file: path: "/etc/skel/{{ item }}" @@ -10,11 +18,26 @@ - name: create symlink to vendor profiles file: - src: /usr/share/PrusaSlicer/profiles/PrusaResearch.ini + src: "{{ prusa_slicer_profiles_directory }}/PrusaResearch.ini" dest: /etc/skel/.config/PrusaSlicer/vendor/PrusaResearch.ini state: link +- name: Stat /opt/PrusaSlicer + stat: + path: /opt/PrusaSlicer + register: prusa_slicer_stat + +- name: Set version + set_fact: + prusa_slicer_version: "{{ prusa_slicer_stat.stat.lnk_target | regex_replace('^/opt/PrusaSlicer-(.*)-[0-9]{12}$', '\\1') }}" + when: prusa_slicer_stat.stat.exists and prusa_slicer_stat.stat.islnk + +- debug: + var: prusa_slicer_version + - name: Copy Prusa slicer settings copy: - content: "{{ prusa_slicer.settings }}" + content: | + version_system_info_sent = {{ prusa_slicer_version | default('') }} + {{ prusa_slicer.settings }} dest: /etc/skel/.config/PrusaSlicer/PrusaSlicer.ini diff --git a/packer/ansible/roles/prusa-slicer/tasks/install_from_github.yml b/packer/ansible/roles/prusa-slicer/tasks/install_from_github.yml new file mode 100644 index 0000000..c191e33 --- /dev/null +++ b/packer/ansible/roles/prusa-slicer/tasks/install_from_github.yml @@ -0,0 +1,60 @@ +--- +- name: Get latest release + uri: + url: https://api.github.com/repos/prusa3d/PrusaSlicer/releases/latest + return_content: true + register: prusa_slicer_release + +- name: Create tarball tempfile + tempfile: + state: file + suffix: .tar.gz + register: prusa_slicer_tarball + +- name: Select asset + set_fact: + prusa_slicer_asset: "{{ asset }}" + when: "asset.name | regex_search('PrusaSlicer-.*linux-x64-GTK3.*\\.tar\\.bz2$')" + loop: "{{ prusa_slicer_release.json.assets }}" + loop_control: + loop_var: asset + label: "{{ asset.name }}" + +- name: Download release file + get_url: + url: "{{ prusa_slicer_asset.browser_download_url }}" + dest: "{{ prusa_slicer_tarball.path }}" + force: true + +- name: Extract tarball + unarchive: + src: "{{ prusa_slicer_tarball.path }}" + dest: /opt + remote_src: true + +- name: Remove tarball + ansible.builtin.file: + path: "{{ prusa_slicer_tarball.path }}" + state: absent + when: prusa_slicer_tarball.path is defined + +- name: Create symlink + file: + src: "/opt/{{ prusa_slicer_directory }}" + dest: "/opt/PrusaSlicer" + state: link + vars: + prusa_slicer_directory: "{{ prusa_slicer_asset.name | regex_replace('\\.tar\\.bz2$', '') }}" + +- name: Create applications directory + file: + path: /usr/local/share/applications/ + state: directory + +- name: Copy desktop files + copy: + src: "{{ item }}.desktop" + dest: /usr/local/share/applications/{{ item }}.desktop + loop: + - PrusaSlicer + - PrusaGcodeviewer diff --git a/packer/ansible/roles/prusa-slicer/tasks/main.yml b/packer/ansible/roles/prusa-slicer/tasks/main.yml index 6f1600a..2487822 100644 --- a/packer/ansible/roles/prusa-slicer/tasks/main.yml +++ b/packer/ansible/roles/prusa-slicer/tasks/main.yml @@ -1,6 +1,12 @@ --- - block: - - import_tasks: install.yml + - import_tasks: package.yml + when: prusa_slicer_use_package | bool + tags: + - prusa-slicer:install + + - import_tasks: install_from_github.yml + when: not prusa_slicer_use_package | bool tags: - prusa-slicer:install diff --git a/packer/ansible/roles/prusa-slicer/tasks/install.yml b/packer/ansible/roles/prusa-slicer/tasks/package.yml similarity index 100% rename from packer/ansible/roles/prusa-slicer/tasks/install.yml rename to packer/ansible/roles/prusa-slicer/tasks/package.yml From 71122c46b6c06b3ab0a60a283f7a8c224df3c351 Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 14 Sep 2023 22:23:54 +0000 Subject: [PATCH 3/3] Add Ultimaker2 to Prusa slicer --- packer/ansible/playbook.yml | 3 +++ packer/ansible/roles/prusa-slicer/tasks/configure.yml | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packer/ansible/playbook.yml b/packer/ansible/playbook.yml index 842fcd6..773a7bc 100644 --- a/packer/ansible/playbook.yml +++ b/packer/ansible/playbook.yml @@ -116,3 +116,6 @@ [vendor:PrusaResearch] model:MK3 = 0.4 model:MK3SMMU2S = 0.4 + + [vendor:Ultimaker] + model:ULTIMAKER2 = 0.4 diff --git a/packer/ansible/roles/prusa-slicer/tasks/configure.yml b/packer/ansible/roles/prusa-slicer/tasks/configure.yml index c59887b..649fb4d 100644 --- a/packer/ansible/roles/prusa-slicer/tasks/configure.yml +++ b/packer/ansible/roles/prusa-slicer/tasks/configure.yml @@ -18,9 +18,12 @@ - name: create symlink to vendor profiles file: - src: "{{ prusa_slicer_profiles_directory }}/PrusaResearch.ini" - dest: /etc/skel/.config/PrusaSlicer/vendor/PrusaResearch.ini + src: "{{ prusa_slicer_profiles_directory }}/{{ item }}.ini" + dest: /etc/skel/.config/PrusaSlicer/vendor/{{ item }}.ini state: link + loop: + - PrusaResearch + - Ultimaker - name: Stat /opt/PrusaSlicer stat: