forked from rc/classroom
Compare commits
66 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0eaf4a5d40 | ||
![]() |
7c4c3ac93e | ||
![]() |
889083aee0 | ||
![]() |
61e9e01978 | ||
![]() |
d39dd739ca | ||
![]() |
725737321d | ||
![]() |
c1ade197c3 | ||
![]() |
04c02ecbef | ||
![]() |
cccf0d86d1 | ||
![]() |
8ca99c1f3a | ||
02a44e9186 | |||
![]() |
7f57513b1c | ||
![]() |
f1c8801774 | ||
![]() |
eb4a2974ad | ||
![]() |
78e7df1fb1 | ||
![]() |
09138174d4 | ||
![]() |
0f8f8486f0 | ||
![]() |
3e7b20423e | ||
![]() |
4c69926932 | ||
![]() |
ca58fd58a1 | ||
![]() |
6a6dabe4f4 | ||
![]() |
5f34e04926 | ||
![]() |
84c21cd863 | ||
![]() |
99c9ae8848 | ||
![]() |
e4ba740edf | ||
![]() |
e0de1f5493 | ||
![]() |
ab1e0da566 | ||
![]() |
674ea7977c | ||
![]() |
14a0096779 | ||
![]() |
76dff08c65 | ||
![]() |
5db95e8709 | ||
![]() |
d03aa86378 | ||
![]() |
a0713cd89a | ||
![]() |
8b2bbbd240 | ||
![]() |
9d90dbffbe | ||
![]() |
15eb772ba0 | ||
![]() |
bdc4fa2fc5 | ||
![]() |
fc01fec18c | ||
![]() |
99a8aa06db | ||
![]() |
9e9d487d57 | ||
![]() |
529623497c | ||
![]() |
d985d8ff84 | ||
![]() |
07f4a73dae | ||
![]() |
7559b049a2 | ||
![]() |
4d3b5f20a7 | ||
![]() |
93b01e5d53 | ||
![]() |
0d1e32c626 | ||
![]() |
c15d6f1edf | ||
79293545d3 | |||
![]() |
c5754dece2 | ||
![]() |
957cd67eb7 | ||
![]() |
beb1dbb757 | ||
![]() |
707090192c | ||
![]() |
4175f483db | ||
![]() |
41b392ee1e | ||
![]() |
8136635a6f | ||
![]() |
782f385a29 | ||
![]() |
bcb4d836b2 | ||
![]() |
d0b2a77216 | ||
![]() |
eb1e6012bd | ||
![]() |
e1ac068953 | ||
![]() |
90421ef1d1 | ||
![]() |
15ea864ddc | ||
![]() |
5620a7ebfe | ||
![]() |
e2b92f7a31 | ||
![]() |
5954f4e3ba |
131 changed files with 1864 additions and 266 deletions
36
README.md
36
README.md
|
@ -1,5 +1,39 @@
|
|||
# Using the ansible scripts
|
||||
|
||||
Ansible playbooks for deploying classroom computers. Run with something like:
|
||||
ansible-playbook --user <local admin> -k -K -i inventory.yml setup.py
|
||||
|
||||
or, for Apple computers:
|
||||
ansible-playbook --user <local admin> -k -K -i inventory.yml macsetup.py
|
||||
ansible-playbook --user <local admin> -k -K -i inventory.yml macsetup.py
|
||||
|
||||
# How classroom computers are prepared at FRI
|
||||
|
||||
The computers are prepared as follows:
|
||||
- Ask teachers to check their requirements.
|
||||
- Fix ansible scripts according to the requirements.
|
||||
- Set up a fresh Windows and Linux install on a VM, using files in unattended\_install.
|
||||
- Use ansible to deploy the software, fixing fresh bugs due to changes in the install processes along the way.
|
||||
- Fix root filesystem UUIDs to what they were last year so the network-booted menu still works.
|
||||
- Create partition table image and partition images using [FRI Backup](https://github.com/UL-FRI/ansible_classroom_deploy/tree/main/fri_backup).
|
||||
- Deploy the images on separate VMs - one for Linux, one for Windows.
|
||||
- Have teachers check their software in the VMs, report any problems.
|
||||
- Fix problems on the VMs.
|
||||
- Create partition images for Windows on one VM, for Linux on the other.
|
||||
- Deploy the images on a limited number of computers in the classrooms using FRI Backup.
|
||||
- Test the newly deployed computers, fix identified problems on the VMs.
|
||||
- Join the Linux VM into AD. One AD account is used for all computers.
|
||||
- Deploy the partition tables and partitions to the classrooms using [custom ansible scripts](https://github.com/UL-FRI/ansible_classroom_deploy/tree/main/polz_scripts) running FRI Backup and [UDPCast](https://www.udpcast.linux.lu/cmd.html).
|
||||
- Join Windows into AD.
|
||||
|
||||
# Immutable computers
|
||||
|
||||
Some pieces of modern software assume that a computer is only used by one user who has practically unlimited space in their home folder. Examples of such software are Android Studio, Visual Studio Code, Matlab, Windows Subsystem for Linux (WSUS) and others. Instead of trying to get the software to work, we might just give up and have everyone use the same account on each computer, then wipe all data after they log out / reboot.
|
||||
|
||||
## Windows
|
||||
|
||||
We intend to use [UWF](https://learn.microsoft.com/en-us/windows/configuration/wcd/wcd-unifiedwritefilter).
|
||||
|
||||
## Linux
|
||||
|
||||
We intend to use [snapper](https://wiki.archlinux.org/title/Snapper).
|
||||
|
||||
|
|
19
join_ad.yml
Normal file
19
join_ad.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
- name: Gather facts / setup connection
|
||||
hosts: '*'
|
||||
gather_facts: false
|
||||
become: false
|
||||
vars_files:
|
||||
- vars/credentials.yml
|
||||
roles:
|
||||
- facts
|
||||
|
||||
- name: Join AD
|
||||
hosts: '*'
|
||||
become: true
|
||||
debugger: on_failed
|
||||
vars_files:
|
||||
- vars/credentials.yml
|
||||
vars:
|
||||
domain_name: "FRI1.UNI-LJ.SI"
|
||||
roles:
|
||||
- ad_joined
|
|
@ -1,8 +1,8 @@
|
|||
- hosts: ucilnice-prototip
|
||||
- hosts: classroom
|
||||
become_method: sudo
|
||||
become: true
|
||||
vars:
|
||||
ansible_port: 1001
|
||||
# ansible_port: 1001
|
||||
ansible_ssh_extra_args: '-o ForwardX11=yes'
|
||||
# ansible_become_pass: '{{ lookup("env", "ANSIBLE_PASSWORD") }}'
|
||||
# ansible_password: '{{ lookup("env", "ANSIBLE_PASSWORD") }}'
|
||||
|
@ -12,7 +12,8 @@
|
|||
- vars/credentials.yml
|
||||
- vars/software_keys.yml
|
||||
roles:
|
||||
# - orange
|
||||
# - nodejs
|
||||
# - qcadesigner-e
|
||||
- all_classes
|
||||
# - fri_base
|
||||
# - powerdesigner
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
# Digitalno načrtovanje
|
||||
# Nejc.Ilc@fri.uni-lj.si
|
||||
# ratko.pilipovic@fri.uni-lj.si
|
||||
# Windows, Vivado 2022.1
|
||||
dependencies:
|
||||
- role: vivado
|
||||
- role: iverilog
|
||||
- role: cocotb
|
||||
- role: surfer-project
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
# Digitalno procesiranje signalov
|
||||
# Aleks.Huc@fri.uni-lj.si
|
||||
# metod.celestina@dewesoft.si
|
||||
# Windows, GNU/Linux, Matlab, wfdb, Octave, Audacity
|
||||
dependencies:
|
||||
- role: matlab
|
||||
- role: wfdb
|
||||
- role: octave
|
||||
- role: audacity
|
||||
- role: numpy
|
||||
- role: matplotlib
|
||||
|
|
|
@ -7,3 +7,6 @@
|
|||
dependencies:
|
||||
- role: jupyter
|
||||
- role: openssl
|
||||
- role: cryptodome
|
||||
- role: pwntools
|
||||
- role: python3
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# Načrtovanje digitalnih naprav
|
||||
# Miran.Koprivec@fri.uni-lj.si, Miha.Moskon@fri.uni-lj.si
|
||||
# Windows, Vivado 2022.1
|
||||
# Načrtovanje digitalnih naprav
|
||||
# Miha.Moskon@fri.uni-lj.si
|
||||
# Miran.Koprivec@fri.uni-lj.si, Miha.Moskon@fri.uni-lj.si, ratko.pilipovic@fri.uni-lj.si
|
||||
# Windows, Vivado 2022.1
|
||||
dependencies:
|
||||
- role: putty
|
||||
- role: vivado
|
||||
- role: cp2102_driver
|
||||
- role: cocotb
|
||||
- role: iverilog
|
||||
- role: surfer-project
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Windows, Logisim, Logisim Evolution, RAVINOR, CubeIDE + Tools, VSCode + ST plugin, Putty
|
||||
dependencies:
|
||||
- role: logisim
|
||||
- role: stm32cube
|
||||
# - role: stm32cube
|
||||
- role: vscode
|
||||
- role: putty
|
||||
- role: stm32duino
|
||||
|
|
|
@ -6,3 +6,4 @@ dependencies:
|
|||
- role: gedit
|
||||
- role: mono
|
||||
- role: vscode
|
||||
- role: notepad++
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
# Tomaz.Dobravec@fri.uni-lj.si
|
||||
# Windows, Pelles C
|
||||
dependencies:
|
||||
- role: pelles-c
|
||||
- role: clion
|
||||
|
|
18
roles/PR-63765/meta/main.yml
Normal file
18
roles/PR-63765/meta/main.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Podatkovno rudarjenje
|
||||
# rok.gomiscek@fri.uni-lj.si
|
||||
#
|
||||
dependencies:
|
||||
- role: jupyter
|
||||
- role: pandas
|
||||
- role: matplotlib
|
||||
- role: plotly
|
||||
- role: seaborn
|
||||
- role: altair
|
||||
- role: scikit-learn
|
||||
- role: mlxtend
|
||||
- role: networkx
|
||||
- role: transformers
|
||||
- role: datasets
|
||||
- role: evaluate
|
||||
- role: torch # includes torchvision
|
||||
- role: streamlit
|
|
@ -2,7 +2,7 @@
|
|||
# Ziga.Pusnik@fri.uni-lj.si, Robert.Rozman@fri.uni-lj.si
|
||||
# Windows, CubeIDE + tools, STMDuino, VSCode, WinIdea 9.21 + GCC + QEMU, Visual2
|
||||
dependencies:
|
||||
- role: stm32cube # (CubeMonitor sem vzel samo exe)
|
||||
# - role: stm32cube # (CubeMonitor sem vzel samo exe)
|
||||
- role: stm32duino
|
||||
- role: vscode
|
||||
- role: putty
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Robert.Rozman@fri.uni-lj.si
|
||||
# Windows, CubeIDE + Tools, STMDuino, VSCode, LTSpice, PulseView,Putty, STM32 Algobuilder & Unicleo GUI
|
||||
dependencies:
|
||||
- role: stm32cube
|
||||
#- role: stm32cube
|
||||
- role: stm32duino
|
||||
- role: vscode
|
||||
- role: ltspice
|
||||
|
|
|
@ -14,4 +14,5 @@ dependencies:
|
|||
- role: jdk
|
||||
- role: jupyter
|
||||
- role: pycharm
|
||||
- role: cryptography
|
||||
- role: flask
|
||||
|
|
38
roles/ad_joined/files/pam_mount.conf.xml
Normal file
38
roles/ad_joined/files/pam_mount.conf.xml
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
|
||||
|
||||
<pam_mount>
|
||||
<!-- Example using CIFS -->
|
||||
<debug enable="0" />
|
||||
<volume
|
||||
fstype="cifs"
|
||||
server="ucilnicesmb.fri1.uni-lj.si"
|
||||
path="profiles/%(DOMAIN_USER).%(DOMAIN_NAME)"
|
||||
mountpoint="~/"
|
||||
options="sec=krb5i,cruid=%(USERUID),nobrl,sfu,mfsymlinks"
|
||||
>
|
||||
<not>
|
||||
<or>
|
||||
<user>local_admin</user>
|
||||
<user>root</user>
|
||||
<user>lightdm</user>
|
||||
<sgrp>users</sgrp>
|
||||
</or>
|
||||
</not>
|
||||
</volume>
|
||||
<!-- <volume
|
||||
fstype="cifs"
|
||||
server="ucilnicesmb.fri1.uni-lj.si"
|
||||
path="profiles/%(DOMAIN_USER).V6"
|
||||
mountpoint="~/win_profile"
|
||||
options="sec=krb5i,cruid=%(USERUID)"
|
||||
>
|
||||
<not>
|
||||
<or>
|
||||
<user>local_admin</user>
|
||||
<user>root</user>
|
||||
<sgrp>users</sgrp>
|
||||
</or>
|
||||
</not>
|
||||
</volume> -->
|
||||
</pam_mount>
|
|
@ -1,25 +1,39 @@
|
|||
- name: Enable create homedir on login
|
||||
command: pam-auth-update --enable mkhomedir
|
||||
become: true
|
||||
- name: Install required packages
|
||||
apt:
|
||||
name:
|
||||
- realmd
|
||||
- sssd
|
||||
- libpam-mount
|
||||
- heimdal-clients
|
||||
|
||||
- name: Remove krb5-user
|
||||
apt:
|
||||
name:
|
||||
krb5-user
|
||||
state: absent
|
||||
|
||||
- name: Set OU
|
||||
set_fact:
|
||||
ou_path: "OU={{locations[0]}},OU=Ucilnice"
|
||||
|
||||
- name: Show state
|
||||
debug:
|
||||
msg: "Host: {{inventory_hostname}}, OU: {{ou_path}}"
|
||||
# - import_tasks: ne_sysprep.yaml
|
||||
|
||||
- name: "Rename"
|
||||
# Racunalnik najprej preimenujmo, da ne bosta v domeni obenem 2 z istim imenom
|
||||
hostname:
|
||||
name: "{{inventory_hostname}}-linux"
|
||||
register: hostname_res
|
||||
|
||||
- name: Check whether we already joined
|
||||
command: /bin/bash -c "/usr/sbin/realm list"
|
||||
register: realm_list_results
|
||||
- name: Set OU
|
||||
set_fact:
|
||||
ou_path: "OU={{locations[0]}},OU=Ucilnice"
|
||||
- name: Show state
|
||||
debug:
|
||||
msg: "Host: {{inventory_hostname}}, OU: {{ou_path}}"
|
||||
# - import_tasks: ne_sysprep.yaml
|
||||
- name: "Rename"
|
||||
# Racunalnik najprej preimenujmo, da ne bosta v domeni obenem 2 z istim imenom
|
||||
hostname:
|
||||
name: "{{inventory_hostname}}"
|
||||
register: hostname_res
|
||||
|
||||
- name: Join using realmd
|
||||
expect:
|
||||
command: realm join --user={{ad_join_user}} --computer-ou={{ou_path}} FRI1.UNI-LJ.SI
|
||||
command: realm join --user={{ad_join_user}} --computer-ou={{ou_path}} {{domain_name}}
|
||||
responses:
|
||||
(?i)Password: "{{ad_join_password}}"
|
||||
ignore_errors: yes
|
||||
|
@ -32,3 +46,20 @@
|
|||
owner: root
|
||||
mode: 0600
|
||||
|
||||
- name: Configure libpam-mount
|
||||
copy:
|
||||
src: pam_mount.conf.xml
|
||||
dest: /etc/security/pam_mount.conf.xml
|
||||
|
||||
- name: Enable libpam-mount
|
||||
command: pam-auth-update --enable libpam-mount
|
||||
become: true
|
||||
|
||||
- name: Disable libpam-mkhomedir
|
||||
command: pam-auth-update --disable mkhomedir
|
||||
become: true
|
||||
|
||||
- name: Restart sssd
|
||||
service:
|
||||
name: sssd
|
||||
state: restarted
|
||||
|
|
|
@ -1,18 +1,22 @@
|
|||
- name: Set OU
|
||||
set_fact:
|
||||
ou_path: "OU={{locations[0]}},OU=Ucilnice,DC=fri1,DC=uni-lj,DC=si"
|
||||
|
||||
- name: "Rename"
|
||||
# Racunalnik najprej preimenujmo, da ne bosta v domeni obenem 2 z istim imenom
|
||||
win_hostname:
|
||||
name: "{{inventory_hostname}}"
|
||||
register: hostname_res
|
||||
|
||||
- name: "Reboot after hostname change"
|
||||
win_reboot:
|
||||
when: hostname_res.reboot_required
|
||||
|
||||
- name: Stop Windows Update Service
|
||||
win_service:
|
||||
name: wuauserv
|
||||
state: stopped
|
||||
|
||||
- name: Clear WSUS ID from registry
|
||||
win_regedit:
|
||||
path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate
|
||||
|
@ -24,25 +28,40 @@
|
|||
- AccountDomainSid
|
||||
- SusClientId
|
||||
- SusClientIDValidation
|
||||
|
||||
- name: Start Windows Update Service
|
||||
win_service:
|
||||
name: wuauserv
|
||||
state: started
|
||||
|
||||
- name: "Join domain"
|
||||
win_domain_membership:
|
||||
domain_admin_user: "{{adjoin_user}}"
|
||||
domain_admin_password: "{{adjoin_password}}"
|
||||
domain_admin_user: "{{ad_join_user}}"
|
||||
domain_admin_password: "{{ad_join_password}}"
|
||||
dns_domain_name: "{{domain_name}}"
|
||||
domain_ou_path: "{{ou_path}}"
|
||||
hostname: "{{inventory_hostname}}"
|
||||
state: domain
|
||||
register: domain_state
|
||||
|
||||
- name: Reset WSUS authorization
|
||||
win_command: wuauclt.exe /resetauthorization /detectnow
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Update windows
|
||||
win_command: wuauclt.exe /updatenow
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Fix broken display settings - start CDPSvc
|
||||
win_regedit:
|
||||
path: "{{item}}"
|
||||
name: "Start"
|
||||
type: dword
|
||||
data: 0x00000002
|
||||
with_items:
|
||||
- HKLM\SYSTEM\CurrentControlSet\Services\CDPSvc
|
||||
- HKLM\SYSTEM\CurrentControlSet\Services\CDPUserSvc
|
||||
|
||||
- name: Reboot
|
||||
win_command: "shutdown /r"
|
||||
when: domain_state.reboot_required
|
||||
|
|
|
@ -3,6 +3,7 @@ config_file_version = 2
|
|||
domains = fri1.uni-lj.si
|
||||
enable_files_domain = False
|
||||
services = nss, pam
|
||||
default_domain_suffix = student.uni-lj.si
|
||||
|
||||
[nss]
|
||||
filtered_groups = root
|
||||
|
@ -27,5 +28,7 @@ krb5_store_password_if_offline = True
|
|||
default_shell = /bin/bash
|
||||
ldap_id_mapping = True
|
||||
use_fully_qualified_names = True
|
||||
full_name_format = %1$s@%3$s
|
||||
fallback_homedir = /home/%u@%d
|
||||
access_provider = ad
|
||||
krb5_ccname_template = FILE:%d/krb5cc_%U
|
||||
|
|
4
roles/altair/tasks/main.yml
Normal file
4
roles/altair/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/altair/tasks/main_lin.yml
Normal file
4
roles/altair/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install altair
|
||||
apt:
|
||||
name: python3-altair
|
||||
state: latest
|
2
roles/altair/tasks/main_win.yml
Normal file
2
roles/altair/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install altair
|
||||
win_command: pip install altair
|
|
@ -1,27 +1,80 @@
|
|||
- name: Set Android Studio version
|
||||
set_fact:
|
||||
sdk_path: C:\android-sdk
|
||||
studio_version: "2025.1.2.11"
|
||||
tools_version: "latest"
|
||||
studio_path: "{{ large_prog_dir }}\\android-studio"
|
||||
sdk_path: "{{ large_prog_dir }}\\android-sdk"
|
||||
studio_version: "2025.1.2.13"
|
||||
tools_version: "13114758_latest"
|
||||
|
||||
- name: Set Android command-line tools path
|
||||
set_fact:
|
||||
tools_path: "{{ studio_path }}\\cmdline-tools\\latest"
|
||||
|
||||
- name: Check Android Studio
|
||||
win_stat:
|
||||
path: "{{ studio_path }}\\bin\\studio64.exe"
|
||||
register: studio
|
||||
|
||||
- when: not studio.stat.exists
|
||||
block:
|
||||
- name: Download Android Studio
|
||||
win_get_url:
|
||||
url: "https://redirector.gvt1.com/edgedl/android/studio/ide-zips/{{ studio_version }}/android-studio-{{ studio_version }}-windows.zip"
|
||||
dest: "{{ large_prog_dir }}\\"
|
||||
|
||||
- name: Extract Android Studio
|
||||
win_unzip:
|
||||
src: "{{ large_prog_dir }}\\android-studio-{{ studio_version }}-windows.zip"
|
||||
dest: "{{ large_prog_dir }}\\"
|
||||
delete_archive: yes
|
||||
|
||||
- name: Check Android Studio tools
|
||||
win_stat:
|
||||
path: "{{ sdk_path }}\\platform-tools\\adb.exe"
|
||||
path: "{{ tools_path }}\\bin\\sdkmanager.bat"
|
||||
register: tools
|
||||
|
||||
- when: not tools.stat.exists
|
||||
block:
|
||||
- name: Download Android Studio tools
|
||||
win_get_url:
|
||||
# url: "https://dl.google.com/android/repository/commandlinetools-win-{{ tools_version }}.zip"
|
||||
url: "https://dl.google.com/android/repository/platform-tools-{{ tools_version }}-windows.zip"
|
||||
dest: C:\
|
||||
url: "https://dl.google.com/android/repository/commandlinetools-win-{{ tools_version }}.zip"
|
||||
# url: "https://dl.google.com/android/repository/platform-tools-{{ tools_version }}-windows.zip"
|
||||
dest: "{{ studio_path }}"
|
||||
|
||||
- name: Extract Android Studio tools
|
||||
win_unzip:
|
||||
src: "C:\\platform-tools-{{ tools_version }}-windows.zip"
|
||||
dest: "{{ sdk_path }}\\"
|
||||
# src: "{{ large_prog_dir }}\\platform-tools-{{ tools_version }}-windows.zip"
|
||||
src: "{{ studio_path}}\\commandlinetools-win-{{ tools_version }}.zip"
|
||||
dest: "{{ studio_path }}\\cmdline-tools\\"
|
||||
delete_archive: yes
|
||||
- name: Move cmdline-tools to expected location
|
||||
ansible.windows.win_powershell:
|
||||
script: move "{{ studio_path }}\\cmdline-tools\\cmdline-tools" "{{ tools_path }}"
|
||||
|
||||
- name: Create Android Studio data directory
|
||||
win_file:
|
||||
path: "{{ large_prog_dir }}\\.android"
|
||||
state: directory
|
||||
|
||||
- name: Create Android Studio SDK directory
|
||||
win_file:
|
||||
path: "{{ sdk_path }}"
|
||||
state: directory
|
||||
|
||||
|
||||
- name: Create Android Studio shortcut
|
||||
win_shortcut:
|
||||
dest: "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Android Studio\\Android Studio.lnk"
|
||||
src: "{{ studio_path }}\\bin\\studio64.exe"
|
||||
|
||||
- name: Set Android Studio environment variables
|
||||
win_environment:
|
||||
level: machine
|
||||
variables:
|
||||
ANDROID_HOME: "{{ studio_path }}"
|
||||
ANDROID_SDK_ROOT: "{{ sdk_path }}"
|
||||
ANDROID_PREFS_ROOT: "{{ large_prog_dir }}\\"
|
||||
GRADLE_USER_HOME: "{{ large_prog_dir }}\\.gradle"
|
||||
|
||||
|
||||
# - name: Accept Android SDK licenses
|
||||
# win_shell: sh -c "yes | /c/android-sdk/cmdline-tools/cmdline-tools/bin/sdkmanager.bat --licenses"
|
||||
|
@ -29,35 +82,21 @@
|
|||
- name: Include Android SDK packages
|
||||
include_vars: androidsdk_packages.yml
|
||||
|
||||
#- name: Install Android SDK
|
||||
# win_shell: |
|
||||
# {{ sdk_path }}\\cmdline-tools\\cmdline-tools\\bin\\sdkmanager --install "{{ item }}"
|
||||
# loop: "{{ AndroidSDK_packages }}"
|
||||
- name: Install Android SDK packages
|
||||
win_shell: |
|
||||
{{ tools_path }}\bin\sdkmanager.bat --install "{{ item }}"
|
||||
loop: "{{ AndroidSDK_packages }}"
|
||||
|
||||
|
||||
# {{ sdk_path }}\\cmdline-tools\\cmdline-tools\\bin\\sdkmanager --install "{{ AndroidSDK_packages | join(' ') }}"
|
||||
# {{ sdk_path }}\\cmdline-tools\\cmdline-tools\\bin\\sdkmanager --install "build-tools;33.0.0" "cmdline-tools;latest" "emulator" "ndk-bundle" "ndk;25.1.8937393" "platform-tools" "platforms;android-33" "sources;android-33" "system-images;android-33;google_apis;arm64-v8a" "system-images;android-33;google_apis;x86_64"
|
||||
|
||||
- name: Install Android Studio
|
||||
win_package:
|
||||
path: "https://redirector.gvt1.com/edgedl/android/studio/install/{{ studio_version }}/android-studio-{{ studio_version }}-windows.exe"
|
||||
arguments: /S /AllUsers
|
||||
expected_return_code: [0, 1223, 3010]
|
||||
creates_path: "%ProgramFiles%\\Android\\Android Studio\\bin\\studio64.exe"
|
||||
|
||||
- name: Create Android Studio data directory
|
||||
win_file:
|
||||
path: D:\.android
|
||||
state: directory
|
||||
|
||||
- name: Set Android Studio environment variables
|
||||
win_environment:
|
||||
level: machine
|
||||
variables:
|
||||
ANDROID_HOME: "{{ sdk_path }}"
|
||||
ANDROID_PREFS_ROOT: D:\
|
||||
GRADLE_USER_HOME: D:\.gradle
|
||||
|
||||
#- name: Install Android Studio
|
||||
# win_package:
|
||||
# path: "https://redirector.gvt1.com/edgedl/android/studio/install/{{ studio_version }}/android-studio-{{ studio_version }}-windows.exe"
|
||||
# arguments: /S /AllUsers
|
||||
# expected_return_code: [0, 1223, 3010]
|
||||
# creates_path: "%ProgramFiles%\\Android\\Android Studio\\bin\\studio64.exe"
|
||||
#- name: Check HAXM install status
|
||||
# win_stat:
|
||||
# path: "%ProgramFiles%\\Intel\\HAXM"
|
||||
|
|
|
@ -8,8 +8,9 @@
|
|||
- name: Install Arduino-cli
|
||||
win_package:
|
||||
# path: https://downloads.arduino.cc/arduino-ide/arduino-ide_2.0.0_Windows_64bit.exe
|
||||
path: https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_64bit.zip
|
||||
arguments: /S /AllUsers
|
||||
path: https://github.com/arduino/arduino-cli/releases/download/v1.3.0/arduino-cli_1.3.0_Windows_64bit.msi
|
||||
# path: https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_64bit.zip
|
||||
# arguments: /S /AllUsers
|
||||
# creates_path: "%ProgramFiles%\\Arduino IDE\\Arduino IDE.exe"
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,32 @@
|
|||
- name: Install blender
|
||||
apt:
|
||||
name: blender
|
||||
state: latest
|
||||
#- name: Add blender PPA
|
||||
# command: add-apt-repository -y ppa:savoury1/blender
|
||||
|
||||
#- name: Add blender PPA
|
||||
# apt_repository:
|
||||
# repo: ppa:savoury1/blender
|
||||
# state: present
|
||||
# update_cache: True
|
||||
|
||||
#- name: Install blender
|
||||
# apt:
|
||||
# name: blender
|
||||
# state: latest
|
||||
- name: Download and unpack blender
|
||||
unarchive:
|
||||
src: https://download.blender.org/release/Blender4.5/blender-4.5.3-linux-x64.tar.xz
|
||||
dest: /usr/local/lib/
|
||||
remote_src: yes
|
||||
creates: /usr/local/lib/blender-4.5.3-linux-x64/blender-launcher
|
||||
|
||||
- name: Create blender symlink
|
||||
file:
|
||||
src: /usr/local/lib/blender-4.5.3-linux-x64/blender-launcher
|
||||
dest: /usr/local/bin/blender
|
||||
state: link
|
||||
|
||||
- name: Copy blender .desktop file
|
||||
copy:
|
||||
src: "/usr/local/lib/blender-4.5.3-linux-x64/blender.desktop"
|
||||
dest: "/usr/local/share/applications"
|
||||
remote_src: yes
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
- name: Install Blender
|
||||
win_package:
|
||||
path: https://ftp.nluug.nl/pub/graphics/blender/release/Blender3.3/blender-3.3.0-windows-x64.msi
|
||||
path: https://ftp.nluug.nl/pub/graphics/blender/release/Blender4.5/blender-4.5.3-windows-x64.msi
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
# state: present
|
||||
# update_cache: True
|
||||
# validate_certs: False
|
||||
- name: Remove Chromium snap
|
||||
community.general.snap:
|
||||
name: chromium
|
||||
state: absent
|
||||
|
||||
- name: Install Chromium instead of Chrome
|
||||
apt:
|
||||
|
|
11
roles/clion/files/clion.desktop
Normal file
11
roles/clion/files/clion.desktop
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Name=CLion
|
||||
GenericName=CLion
|
||||
Comment=JetBrains CLion IDE
|
||||
MimeType=text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-moc;text/x-c;text/x-c++;
|
||||
Exec=/opt/CLion/bin/clion.sh
|
||||
Icon=clion
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Education;Development;ComputerScience;
|
||||
StartupNotify=true
|
4
roles/clion/tasks/main.yml
Normal file
4
roles/clion/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
32
roles/clion/tasks/main_lin.yml
Normal file
32
roles/clion/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
- name: Install CLion
|
||||
block:
|
||||
- name: Create destination for JetBrains CLion
|
||||
file:
|
||||
path: /opt/CLion
|
||||
state: directory
|
||||
- name: Download and unpack JetBrains CLion
|
||||
unarchive:
|
||||
src: https://data.services.jetbrains.com/products/download?code=CL&platform=linux
|
||||
dest: /opt/CLion
|
||||
extra_opts: --strip-components=1
|
||||
creates: /opt/CLion/build.txt
|
||||
remote_src: yes
|
||||
|
||||
- name: Install icon
|
||||
block:
|
||||
- file:
|
||||
path: /usr/local/share/icons
|
||||
state: directory
|
||||
- copy:
|
||||
src: /opt/CLion/bin/clion.svg
|
||||
remote_src: true
|
||||
dest: /usr/local/share/icons/clion.svg
|
||||
|
||||
- name: Create .desktop file
|
||||
block:
|
||||
- file:
|
||||
path: /usr/local/share/applications
|
||||
state: directory
|
||||
- copy:
|
||||
dest: /usr/local/share/applications/clion.desktop
|
||||
src: clion.desktop
|
7
roles/clion/tasks/main_win.yml
Normal file
7
roles/clion/tasks/main_win.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
# TODO fix / test this
|
||||
- name: Install Clion
|
||||
win_package:
|
||||
path: "https://data.services.jetbrains.com/products/download?code=CL&platform=windows"
|
||||
arguments: /S
|
||||
creates_path: "%ProgramFiles(x86)%\\JetBrains\\IntelliJ IDEA Community Edition {{ target_version }}\\bin\\idea64.exe"
|
4
roles/cocotb/tasks/main.yml
Normal file
4
roles/cocotb/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/cocotb/tasks/main_lin.yml
Normal file
4
roles/cocotb/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install Cocotb
|
||||
pip:
|
||||
executable: pipx
|
||||
name: cocotb[bus]
|
2
roles/cocotb/tasks/main_win.yml
Normal file
2
roles/cocotb/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install cocoTB
|
||||
win_command: pip install cocotb[bus]
|
|
@ -2,3 +2,5 @@
|
|||
win_chocolatey:
|
||||
ignore_checksums: true
|
||||
name: cp210x-vcp-drivers-win10
|
||||
#TODO remove ignore_errors once the package is repaired/updated
|
||||
ignore_errors: true
|
||||
|
|
4
roles/cryptodome/tasks/main.yml
Normal file
4
roles/cryptodome/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
5
roles/cryptodome/tasks/main_lin.yml
Normal file
5
roles/cryptodome/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Install python-pycryptodome
|
||||
apt:
|
||||
name:
|
||||
- python3-pycryptodome
|
||||
state: latest
|
2
roles/cryptodome/tasks/main_win.yml
Normal file
2
roles/cryptodome/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install python3-pycryptodome
|
||||
win_command: pip install pycryptodome
|
4
roles/cryptography/tasks/main.yml
Normal file
4
roles/cryptography/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
5
roles/cryptography/tasks/main_lin.yml
Normal file
5
roles/cryptography/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Install python-cryptography
|
||||
apt:
|
||||
name:
|
||||
- python3-cryptography
|
||||
state: latest
|
2
roles/cryptography/tasks/main_win.yml
Normal file
2
roles/cryptography/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install python3-cryptography
|
||||
win_command: pip install cryptography
|
4
roles/datasets/tasks/main.yml
Normal file
4
roles/datasets/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/datasets/tasks/main_lin.yml
Normal file
4
roles/datasets/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install datasets
|
||||
pip:
|
||||
executable: pipx
|
||||
name: datasets
|
2
roles/datasets/tasks/main_win.yml
Normal file
2
roles/datasets/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install datasets
|
||||
win_command: pip install datasets
|
|
@ -12,4 +12,4 @@
|
|||
win_lineinfile:
|
||||
path: "%ProgramFiles%\\Eclipse {{ target_version }}\\eclipse\\eclipse.ini"
|
||||
regexp: "osgi.instance.area.default"
|
||||
line: "-Dosgi.instance.area.default=H:/Documents/eclipse-workspace"
|
||||
line: "-Dosgi.instance.area.default=D:/Documents/eclipse-workspace"
|
||||
|
|
4
roles/evaluate/tasks/main.yml
Normal file
4
roles/evaluate/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/evaluate/tasks/main_lin.yml
Normal file
4
roles/evaluate/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install evaluate
|
||||
pip:
|
||||
executable: pipx
|
||||
name: evaluate
|
2
roles/evaluate/tasks/main_win.yml
Normal file
2
roles/evaluate/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install evaluate
|
||||
win_command: pip install evaluate
|
17
roles/firefox/files/policies.json
Normal file
17
roles/firefox/files/policies.json
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"policies": {
|
||||
"OverrideFirstRunPage": "https://ucilnica.fri.uni-lj.si",
|
||||
"OverridePostUpdatePage": "https://ucilnica.fri.uni-lj.si",
|
||||
"DisableAppUpdate": true,
|
||||
"DisableSystemAddonUpdate": true,
|
||||
"DisableTelemetry": true,
|
||||
"UserMessaging": {
|
||||
"WhatsNew": false,
|
||||
"ExtensionRecommendations": false,
|
||||
"FeatureRecommendations": false,
|
||||
"UrlbarInterventions": false,
|
||||
"SkipOnboarding": true,
|
||||
"MoreFromMozilla": false
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,3 +31,13 @@
|
|||
- firefox
|
||||
state: latest
|
||||
allow_downgrade: True
|
||||
|
||||
- name: Create Firefox policies directory
|
||||
file:
|
||||
path: /etc/firefox/policies
|
||||
state: directory
|
||||
|
||||
- name: Set Firefox policies
|
||||
copy:
|
||||
dest: /etc/firefox/policies/policies.json
|
||||
src: policies.json
|
||||
|
|
|
@ -8,19 +8,4 @@
|
|||
- name: Set Firefox policies
|
||||
copy:
|
||||
dest: C:\Program Files\Mozilla Firefox\distribution\policies.json
|
||||
content: |
|
||||
{
|
||||
"policies": {
|
||||
"DisableAppUpdate": true,
|
||||
"DisableSystemAddonUpdate": true,
|
||||
"DisableTelemetry": true,
|
||||
"UserMessaging": {
|
||||
"WhatsNew": false,
|
||||
"ExtensionRecommendations": false,
|
||||
"FeatureRecommendations": false,
|
||||
"UrlbarInterventions": false,
|
||||
"SkipOnboarding": true,
|
||||
"MoreFromMozilla": false
|
||||
}
|
||||
}
|
||||
}
|
||||
src: policies.json
|
||||
|
|
5
roles/fri_base/files/authorized_keys
Normal file
5
roles/fri_base/files/authorized_keys
Normal file
|
@ -0,0 +1,5 @@
|
|||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM2Tn8+rH+fkFkBycxYrJ7TzhXQhuf3U+w23JFlZoRiX polz@povzpetnik"
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRpoWIH5u2g12IM39WNRzLsPksfSjfL/82fPnuZwZ7H polz@it-polz"
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCq7NrrDD53pe9Zpn/dRSPxWQLDIZ9INS0kz/ps/9fGsM8/H/J7jr/ecj0j0jfYig6QdV8G7VnpLWjcuJ65ul3u2rnQSN78Ms/hxlAhmyahQtBA2q2D2zqI2PDWsKAySWmfFg+2W5fYmE1+F9GEB0OWNOuClmfo2A1c8Ve76qSiehHgjYo0G1CQrXkmE00GBLqyqkbyyStLa9DUfaDwrbOu4tJChHo4jDGuLH5QCYcN+RRXjwPQKgk0L2yfu1479L0XqhbEo+KHoIZH501fkoE+gUKVyLERvkhKSiCgPhJmAgRN1bRsiyTwvQzoED4q1RwFmG0AKg0U5bHnAAOd77uyuIYmcFiaRGHROQ9ZbyB9tJ07QrFlzRkderDd5Z18mO7LtgDjFZ2B2DlRY6zxMiUqJyDRnHjDF3+3DTlHIUCC3aEtoYS8MPyRL1b8XenIqswXkM+vkYFeKh2ynjNu3C6VqDCXZFvIi6f1X0ojZXRrDmbiON8Y74HjxP0z6TB1U30= polz@ucilnicenfs-2020
|
||||
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRpoWIH5u2g12IM39WNRzLsPksfSjfL/82fPnuZwZ7H polz@it-polz
|
4
roles/fri_base/files/hide_users.conf
Normal file
4
roles/fri_base/files/hide_users.conf
Normal file
|
@ -0,0 +1,4 @@
|
|||
[Users]
|
||||
MinimumUid=999
|
||||
MaximumUid=999
|
||||
RememberLastUser=false
|
1
roles/fri_base/files/user.dconf
Normal file
1
roles/fri_base/files/user.dconf
Normal file
|
@ -0,0 +1 @@
|
|||
service-db:keyfile/user
|
|
@ -9,3 +9,4 @@ dependencies:
|
|||
- role: sumatrapdf
|
||||
- role: vlc
|
||||
- role: wget
|
||||
- role: prometheus-exporter
|
||||
|
|
|
@ -1,6 +1,55 @@
|
|||
- name: Enable multiarch
|
||||
command: dpkg --add-architecture i386
|
||||
|
||||
- name: Create swap btrfs subvolume
|
||||
command: btrfs subvolume create /swap
|
||||
ignore_errors: True
|
||||
|
||||
- name: Create swap directory if it does not exist
|
||||
file:
|
||||
path: /swap
|
||||
state: directory
|
||||
|
||||
- name: Create btrfs swap
|
||||
command: btrfs filesystem mkswapfile --size 4g /swap/swap.img
|
||||
ignore_errors: True
|
||||
|
||||
- name: Create swap image if it does not exist
|
||||
shell: fallocate -l 4G /swap/swap.img && mkswap /swap/swap.img
|
||||
args:
|
||||
creates: /swap/swap.img
|
||||
ignore_errors: True
|
||||
|
||||
- name: Change swap file permissions
|
||||
file: path="/swap/swap.img"
|
||||
owner=root
|
||||
group=root
|
||||
mode=0600
|
||||
|
||||
- name: Write swap entry in fstab
|
||||
mount: name=none
|
||||
src=/swap/swap.img
|
||||
fstype=swap
|
||||
opts=sw
|
||||
passno=0
|
||||
dump=0
|
||||
state=present
|
||||
|
||||
- name: Activate swap
|
||||
command: "swapon /swap/swap.img"
|
||||
ignore_errors: True
|
||||
|
||||
- name: Make sure default swap entry does not exist
|
||||
mount:
|
||||
path: none
|
||||
src: /swap.img
|
||||
fstype: swap
|
||||
state: absent
|
||||
|
||||
- name: Make sure default swap is not used
|
||||
command: swapoff /swap/swap.img
|
||||
ignore_errors: True
|
||||
|
||||
- name: Install generally useful packages
|
||||
apt:
|
||||
name:
|
||||
|
@ -13,7 +62,6 @@
|
|||
- kwrite
|
||||
- kate
|
||||
- krita
|
||||
- blender
|
||||
- inkscape
|
||||
- pcmanfm-qt
|
||||
- qutebrowser
|
||||
|
@ -24,9 +72,13 @@
|
|||
- qemu-utils
|
||||
- virt-manager
|
||||
- wine
|
||||
- wine64
|
||||
- wine32:i386
|
||||
- wine-binfmt
|
||||
- dosbox
|
||||
- htop
|
||||
- btop
|
||||
- iotop
|
||||
# - webext-ublock-origin-chromium
|
||||
# - webext-ublock-origin-firefox
|
||||
- nethack-console
|
||||
|
@ -49,8 +101,11 @@
|
|||
- neovim-qt
|
||||
- binwalk
|
||||
- iotop
|
||||
- evince
|
||||
- okular
|
||||
- htop
|
||||
- jdupes
|
||||
- snapper
|
||||
state: latest
|
||||
update_cache: yes
|
||||
|
||||
|
@ -59,8 +114,33 @@
|
|||
name:
|
||||
- xfce4-screensaver
|
||||
- xscreensaver
|
||||
- thunderbird
|
||||
- kmail
|
||||
state: absent
|
||||
|
||||
- name: Set volumes for snapper
|
||||
set_fact:
|
||||
snapper_volumes:
|
||||
- { confname: 'root', subvolume: '/'}
|
||||
- { confname: 'opt', subvolume: '/opt'}
|
||||
|
||||
- name: Create snapper configs
|
||||
command: snapper -c {{item.confname}} create-config {{item.subvolume}}
|
||||
ignore_errors: true
|
||||
loop: "{{snapper_volumes}}"
|
||||
|
||||
- name: Overwrite snapper configs
|
||||
template:
|
||||
src: snapper
|
||||
dest: /etc/snapper/configs/{{item.confname}}
|
||||
loop: "{{ snapper_volumes }}"
|
||||
|
||||
- name: Disable APT snapshots for snapper
|
||||
lineinfile:
|
||||
path: /etc/default/snapper
|
||||
regexp: '^DISABLE_APT_SNAPSHOT='
|
||||
line: 'DISABLE_APT_SNAPSHOT="yes"'
|
||||
|
||||
- name: Set up additional groups for students
|
||||
vars:
|
||||
additional_groups:
|
||||
|
@ -100,7 +180,7 @@
|
|||
mount:
|
||||
boot: true
|
||||
fstype: ntfs-3g
|
||||
src: UUID=A09E30889E30594C
|
||||
src: "PARTLABEL=Basic\\040data\\040partition"
|
||||
path: /mnt/C
|
||||
state: mounted
|
||||
opts: defaults,nofail
|
||||
|
@ -109,7 +189,7 @@
|
|||
mount:
|
||||
boot: true
|
||||
fstype: ntfs-3g
|
||||
src: "LABEL=D:"
|
||||
src: "PARTLABEL=D:"
|
||||
path: /mnt/D
|
||||
state: mounted
|
||||
opts: defaults,nofail
|
||||
|
@ -144,3 +224,42 @@
|
|||
copy:
|
||||
dest: /etc/udev/rules.d/
|
||||
src: 99-wakeonlan.rules
|
||||
|
||||
- name: Put dconf files in XDG_RUNTIME_DIR so dconf works on network-mounted homes
|
||||
block:
|
||||
- file:
|
||||
path: /etc/dconf/profile
|
||||
state: directory
|
||||
- copy:
|
||||
dest: /etc/dconf/profile/user
|
||||
src: user.dconf
|
||||
|
||||
- name: Shorten PS1 prompt
|
||||
replace:
|
||||
path: "{{ item }}"
|
||||
regexp: 'PS1=(.*)\\u@\\h'
|
||||
replace: PS1=\1${USER%@*}
|
||||
loop:
|
||||
- /etc/skel/.bashrc
|
||||
- /etc/profile
|
||||
- /etc/bash.bashrc
|
||||
|
||||
- name: Hide users in lightdm
|
||||
lineinfile:
|
||||
path: /etc/lightdm/lightdm.conf
|
||||
regexp: "#?greeter-hide-users="
|
||||
line: greeter-hide-users=true
|
||||
|
||||
- name: Hide users in sddm
|
||||
copy:
|
||||
dest: /etc/sddm.conf.d/
|
||||
src: hide_users.conf
|
||||
|
||||
|
||||
- name: Copy authorized_keys
|
||||
become: false
|
||||
ansible.posix.authorized_key:
|
||||
user: "{{ ansible_user }}"
|
||||
key: "{{ lookup('file', 'authorized_keys') }}"
|
||||
state: present
|
||||
exclusive: true
|
||||
|
|
|
@ -36,5 +36,15 @@
|
|||
allow_clobber: true
|
||||
state: present
|
||||
|
||||
- name: Copy admin ssh keys to authorized_keys
|
||||
win_copy:
|
||||
src: authorized_keys
|
||||
dest: "%USERPROFILE%\\.ssh"
|
||||
|
||||
- name: Copy admin keys to administrators_authorized_keys
|
||||
win_copy:
|
||||
src: authorized_keys
|
||||
dest: C:\ProgramData\ssh\administrators_authorized_keys
|
||||
|
||||
# TODO: turn on GPO to allow guest SMB logins
|
||||
# TODO: open firewall for Samba
|
||||
|
|
11
roles/idea/files/idea.desktop
Normal file
11
roles/idea/files/idea.desktop
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Name=IDEA
|
||||
GenericName=IDEA
|
||||
Comment=JetBrains IDEA
|
||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
||||
Exec=/opt/IDEA/bin/idea.sh
|
||||
Icon=idea
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;ComputerScience;
|
||||
StartupNotify=true
|
|
@ -6,7 +6,27 @@
|
|||
state: directory
|
||||
- name: Download and unpack JetBrains IDEA
|
||||
unarchive:
|
||||
src: https://download.jetbrains.com/idea/ideaIC-2023.2.1.tar.gz
|
||||
src: https://data.services.jetbrains.com/products/download?code=IIU&platform=linux
|
||||
dest: /opt/IDEA
|
||||
creates: /opt/IDEA/idea-IC-232.9559.62/build.txt
|
||||
extra_opts: --strip-components=1
|
||||
creates: /opt/IDEA/build.txt
|
||||
remote_src: yes
|
||||
|
||||
- name: Install icon
|
||||
block:
|
||||
- file:
|
||||
path: /usr/local/share/icons
|
||||
state: directory
|
||||
- copy:
|
||||
src: /opt/IDEA/bin/idea.svg
|
||||
remote_src: true
|
||||
dest: /usr/local/share/icons/idea.svg
|
||||
|
||||
- name: Create .desktop file
|
||||
block:
|
||||
- file:
|
||||
path: /usr/local/share/applications
|
||||
state: directory
|
||||
- copy:
|
||||
dest: /usr/local/share/applications/idea.desktop
|
||||
src: idea.desktop
|
||||
|
|
4
roles/iverilog/tasks/main.yml
Normal file
4
roles/iverilog/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/iverilog/tasks/main_lin.yml
Normal file
4
roles/iverilog/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install Icarus
|
||||
apt:
|
||||
name: iverilog
|
||||
state: latest
|
5
roles/iverilog/tasks/main_win.yml
Normal file
5
roles/iverilog/tasks/main_win.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Install Icarus Verilog
|
||||
win_chocolatey:
|
||||
name: iverilog
|
||||
version: '11.0'
|
||||
state: present
|
|
@ -1,6 +1,11 @@
|
|||
- name: Install OpenJDK 21
|
||||
- name: Install latest OpenJDK (25)
|
||||
apt:
|
||||
name: openjdk-21-jdk
|
||||
name: openjdk-25-jdk
|
||||
state: latest
|
||||
|
||||
- name: Install latest Java docs
|
||||
apt:
|
||||
name: openjdk-25-doc
|
||||
state: latest
|
||||
|
||||
- name: Install OpenJDK 17
|
||||
|
|
|
@ -28,6 +28,13 @@
|
|||
state: present
|
||||
scope: machine
|
||||
|
||||
- name: Add Java bin dir to PATH
|
||||
win_path:
|
||||
name: PATH
|
||||
elements: "{{ reg['raw_value'] }}\\bin"
|
||||
state: present
|
||||
scope: machine
|
||||
|
||||
- name: Disable Java updates
|
||||
win_regedit:
|
||||
path: HKLM:\SOFTWARE\WOW6432Node\JavaSoft\Java Update\Policy
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
dest: /opt/logisim
|
||||
remote_src: yes
|
||||
creates: /opt/logisim/META-INF/MANIFEST.MF
|
||||
- name: Create destination for Logisim - Evolution
|
||||
file:
|
||||
path: /opt/logisim-evolution
|
||||
state: directory
|
||||
- name: Download and unpack Logisim - Evolution
|
||||
unarchive:
|
||||
src: https://github.com/logisim-evolution/logisim-evolution/releases/download/v3.9.0/logisim-evolution-3.9.0-all.jar
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
set_fact:
|
||||
target_version: "R2025a_Update_1"
|
||||
license_path: \\ucilnicesmb.fri1.uni-lj.si\ucilnice_d\install\matlab\network.lic
|
||||
dest_dir: C:\matlab
|
||||
dest_dir: "{{ large_prog_dir }}\\matlab"
|
||||
|
||||
- name: Set ISO path
|
||||
set_fact:
|
||||
|
|
|
@ -1,4 +1,11 @@
|
|||
- name: Install maptplotlib
|
||||
- name: Install matplotlib
|
||||
apt:
|
||||
name: matplotlib
|
||||
state: latest
|
||||
name:
|
||||
- python3-matplotlib
|
||||
- python3-matplotlib-inline
|
||||
- python3-matplotlib-venn
|
||||
- python3-mpl-animators
|
||||
- python3-mpl-scatter-density
|
||||
- python3-mplcursors
|
||||
- python3-mplexporter
|
||||
state: latest
|
||||
|
|
4
roles/mlxtend/tasks/main.yml
Normal file
4
roles/mlxtend/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/mlxtend/tasks/main_lin.yml
Normal file
4
roles/mlxtend/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install mlxtend
|
||||
pip:
|
||||
executable: pipx
|
||||
name: mlxtend
|
2
roles/mlxtend/tasks/main_win.yml
Normal file
2
roles/mlxtend/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install pandas
|
||||
win_command: pip install mlxtend
|
4
roles/networkx/tasks/main.yml
Normal file
4
roles/networkx/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/networkx/tasks/main_lin.yml
Normal file
4
roles/networkx/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install networkx
|
||||
apt:
|
||||
name: python3-networkx
|
||||
state: latest
|
2
roles/networkx/tasks/main_win.yml
Normal file
2
roles/networkx/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install networkx
|
||||
win_command: pip install networkx
|
4
roles/numpy/tasks/main.yml
Normal file
4
roles/numpy/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
5
roles/numpy/tasks/main_lin.yml
Normal file
5
roles/numpy/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Install numpy
|
||||
apt:
|
||||
name:
|
||||
- python3-numpy
|
||||
state: latest
|
2
roles/numpy/tasks/main_win.yml
Normal file
2
roles/numpy/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install numpy
|
||||
win_command: pip install numpy
|
|
@ -2,3 +2,14 @@
|
|||
apt:
|
||||
name: ocaml
|
||||
state: latest
|
||||
|
||||
- name: Install opam
|
||||
apt:
|
||||
name: opam
|
||||
state: latest
|
||||
|
||||
- name: Init opam home
|
||||
command: opam init --reinit --root=/opt/opam --dot-profile=/etc/profile.d/opam.sh --comp=4.14.2 -a
|
||||
|
||||
- name: Install required opam packages
|
||||
shell: source /etc/profile.d/opam.sh; eval $(opam env --root=/opt/opam --set-root --switch=4.14.2); opam install --yes ocaml-lsp-server odoc ocamlformat utop dune menhir
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
- name: Set OMNet++ version
|
||||
set_fact:
|
||||
target_version: "6.2.0"
|
||||
target_dir: "C:\\OMNeT++"
|
||||
target_dir: "{{large_prog_dir}}\\OMNeT++"
|
||||
|
||||
- name: Check OMNet++ install status
|
||||
win_stat:
|
||||
|
@ -15,17 +15,23 @@
|
|||
- name: Download OMNet++
|
||||
win_get_url:
|
||||
url: "https://github.com/omnetpp/omnetpp/releases/download/omnetpp-{{ target_version }}/omnetpp-{{ target_version }}-windows-x86_64.7z"
|
||||
dest: C:\
|
||||
dest: "{{ large_prog_dir }}"
|
||||
register: download
|
||||
|
||||
- name: Unzip OMNet++
|
||||
win_unzip:
|
||||
src: "{{ download.dest }}"
|
||||
dest: C:\
|
||||
dest: "{{ large_prog_dir }}"
|
||||
delete_archive: yes
|
||||
|
||||
- name: Move OMNet++ to final location
|
||||
win_command: cmd.exe /c move "C:\omnetpp-{{ target_version }}" "{{ target_dir }}"
|
||||
ansible.windows.win_powershell:
|
||||
script: move "{{ large_prog_dir }}\omnetpp-{{ target_version }}" "{{ target_dir }}"
|
||||
# win_robocopy:
|
||||
# src: "{{ large_prog_dir }}\\omnetpp-{{ target_version }}"
|
||||
# dest: "{{ target_dir }}"
|
||||
# flags: "/move"
|
||||
# win_command: cmd.exe /c move "c:\omnetpp-{{ target_version }}" "{{ target_dir }}"
|
||||
|
||||
- name: Create OMNet++ compile script
|
||||
win_copy:
|
||||
|
@ -40,7 +46,7 @@
|
|||
line: call "%HOME%\\tools\\win32.x86_64\\msys2_shell.cmd" -mingw64 -c "./configure && make -j4" & exit
|
||||
|
||||
- name: Compile OMNet++
|
||||
win_command: cmd.exe /c "{{ target_dir }}\\mingwenv-install.cmd"
|
||||
win_command: cmd.exe /c "{{ target_dir }}\mingwenv-install.cmd"
|
||||
|
||||
- name: Copy OMNet++ shortcut
|
||||
win_copy:
|
||||
|
|
4
roles/plotly/tasks/main.yml
Normal file
4
roles/plotly/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/plotly/tasks/main_lin.yml
Normal file
4
roles/plotly/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install plotly
|
||||
apt:
|
||||
name: python3-plotly
|
||||
state: latest
|
2
roles/plotly/tasks/main_win.yml
Normal file
2
roles/plotly/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install plotly
|
||||
win_command: pip install plotly
|
|
@ -1,9 +1,13 @@
|
|||
# The installer does not work from powershell in silent mode.
|
||||
#
|
||||
- name: Prepare PowerDesigner setup.iss
|
||||
template:
|
||||
src: setup.iss
|
||||
dest: c:\powerdesigner_setup.iss
|
||||
|
||||
- name: Install PowerDesigner
|
||||
win_shell: |
|
||||
{{ installers }}\PowerDesigner_12.5\cd1\setup\setup.exe /s /f1"{{ installers }}\PowerDesigner_12.5\setup.iss" /f2"C:\powerdesigner_log.iss"
|
||||
|
||||
{{ installers }}\PowerDesigner_12.5\cd1\setup\setup.exe /s /f1"c:\powerdesigner_setup.iss" /f2"C:\powerdesigner_log.iss"
|
||||
args:
|
||||
executable: cmd
|
||||
|
||||
|
|
|
@ -3,37 +3,37 @@ Version=v7.00
|
|||
File=Response File
|
||||
[File Transfer]
|
||||
OverwrittenReadOnly=NoToAll
|
||||
[{{ powerdesigner_key }}-DlgOrder]
|
||||
Dlg0={{ powerdesigner_key }}-SdWelcome-0
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-DlgOrder]
|
||||
Dlg0={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdWelcome-0
|
||||
Count=10
|
||||
Dlg1={{ powerdesigner_key }}-SybSelectInstallMode-0
|
||||
Dlg2={{ powerdesigner_key }}-SybFlexLM-0
|
||||
Dlg3={{ powerdesigner_key }}-SybSelectPackage-0
|
||||
Dlg4={{ powerdesigner_key }}-Sybase License-0
|
||||
Dlg5={{ powerdesigner_key }}-SdAskDestPath-0
|
||||
Dlg6={{ powerdesigner_key }}-SdComponentTree-0
|
||||
Dlg7={{ powerdesigner_key }}-Graphic Select Folder-0
|
||||
Dlg8={{ powerdesigner_key }}-SdStartCopy-0
|
||||
Dlg9={{ powerdesigner_key }}-SdFinish-0
|
||||
[{{ powerdesigner_key }}-SdWelcome-0]
|
||||
Dlg1={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SybSelectInstallMode-0
|
||||
Dlg2={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SybFlexLM-0
|
||||
Dlg3={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SybSelectPackage-0
|
||||
Dlg4={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-Sybase License-0
|
||||
Dlg5={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdAskDestPath-0
|
||||
Dlg6={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdComponentTree-0
|
||||
Dlg7={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-Graphic Select Folder-0
|
||||
Dlg8={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdStartCopy-0
|
||||
Dlg9={DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdFinish-0
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdWelcome-0]
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-SybSelectInstallMode-0]
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SybSelectInstallMode-0]
|
||||
Mode=3
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-SybFlexLM-0]
|
||||
LicenseServer=todo.fri1.uni-lj.si
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SybFlexLM-0]
|
||||
LicenseServer=todo.fri.uni-lj.si
|
||||
PortNumber=27000
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-SybSelectPackage-0]
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SybSelectPackage-0]
|
||||
Package=Studio Enterprise
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-Sybase License-0]
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-Sybase License-0]
|
||||
Sybase_License=accept
|
||||
[{{ powerdesigner_key }}-SdAskDestPath-0]
|
||||
szDir=C:\Program Files (x86)\Sybase\PowerDesigner 12
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdAskDestPath-0]
|
||||
szDir={{ large_prog_dir }}\PowerDesigner 12
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-SdComponentTree-0]
|
||||
szDir=C:\Program Files (x86)\Sybase\PowerDesigner 12
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdComponentTree-0]
|
||||
szDir={{ large_prog_dir }}\PowerDesigner 12
|
||||
CR\FRM-type=string
|
||||
CR\FRM-count=2
|
||||
CR\FRM-0=CR\FRM\FRM_Xem
|
||||
|
@ -108,11 +108,6 @@ PDM-1=PDM\PDM_Examples
|
|||
PDM-2=PDM\PDM_Report
|
||||
PDM-3=PDM\PDM_Tools
|
||||
PDM-4=PDM\PDM_Addins
|
||||
RQM-type=string
|
||||
RQM-count=3
|
||||
RQM-0=RQM\RQM_License
|
||||
RQM-1=RQM\RQM_Examples
|
||||
RQM-2=RQM\RQM_Report
|
||||
XSM-type=string
|
||||
XSM-count=4
|
||||
XSM-0=XSM\XSM_License
|
||||
|
@ -135,6 +130,19 @@ PDF-5=PDF\PDF_PDM
|
|||
PDF-6=PDF\PDF_RQM
|
||||
PDF-7=PDF\PDF_XSM
|
||||
PDF-8=PDF\PDF_RPY
|
||||
VIDEO-type=string
|
||||
VIDEO-count=11
|
||||
VIDEO-0=VIDEO\Video_int
|
||||
VIDEO-1=VIDEO\Video_Gen
|
||||
VIDEO-2=VIDEO\Video_BPM
|
||||
VIDEO-3=VIDEO\Video_CDM
|
||||
VIDEO-4=VIDEO\Video_ILM
|
||||
VIDEO-5=VIDEO\Video_OOM
|
||||
VIDEO-6=VIDEO\Video_PDM
|
||||
VIDEO-7=VIDEO\Video_RQM
|
||||
VIDEO-8=VIDEO\Video_xsm
|
||||
VIDEO-9=VIDEO\Video_RPY
|
||||
VIDEO-10=VIDEO\Video_htm
|
||||
Component-type=string
|
||||
Component-count=10
|
||||
Component-0=CR
|
||||
|
@ -143,15 +151,15 @@ Component-2=CDM
|
|||
Component-3=ILM
|
||||
Component-4=OOM
|
||||
Component-5=PDM
|
||||
Component-6=RQM
|
||||
Component-7=XSM
|
||||
Component-8=RPY
|
||||
Component-9=PDF
|
||||
Component-6=XSM
|
||||
Component-7=RPY
|
||||
Component-8=PDF
|
||||
Component-9=VIDEO
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-Graphic Select Folder-0]
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-Graphic Select Folder-0]
|
||||
szFolder=Sybase\PowerDesigner 12
|
||||
Result=1
|
||||
[{{ powerdesigner_key }}-SdStartCopy-0]
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdStartCopy-0]
|
||||
Keep_Settings=0
|
||||
Result=1
|
||||
[Application]
|
||||
|
@ -159,7 +167,7 @@ Name=Sybase PowerDesigner 12.5
|
|||
Version=12.5.2169
|
||||
Company=Sybase
|
||||
Lang=0009
|
||||
[{{ powerdesigner_key }}-SdFinish-0]
|
||||
[{DA53ABD7-6592-45DA-A6DD-287A48F74D37}-SdFinish-0]
|
||||
Result=1
|
||||
bOpt1=0
|
||||
bOpt2=0
|
||||
|
|
4
roles/prometheus-exporter/tasks/main.yml
Normal file
4
roles/prometheus-exporter/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
5
roles/prometheus-exporter/tasks/main_lin.yml
Normal file
5
roles/prometheus-exporter/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Install prometheus-exporter
|
||||
apt:
|
||||
name:
|
||||
- prometheus-node-exporter
|
||||
state: latest
|
3
roles/prometheus-exporter/tasks/main_win.yml
Normal file
3
roles/prometheus-exporter/tasks/main_win.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
- name: Install prometheus exporter
|
||||
win_chocolatey:
|
||||
name: prometheus-windows-exporter.install
|
|
@ -10,6 +10,10 @@
|
|||
path: "{{ download.dest }}"
|
||||
arguments: /S /Verysilent /AllUsers
|
||||
|
||||
- name: Create PulseView Shortcut
|
||||
win_shortcut:
|
||||
src: "C:\\Program Files (x86)\\sigrok\\PulseView\\pulseview.exe"
|
||||
dest: "C:\\Users\\Public\\Desktop\\PulseView.lnk"
|
||||
#- name: Remove temporary files
|
||||
# win_file:
|
||||
# path: "{{ download.dest }}"
|
||||
|
|
4
roles/pwntools/tasks/main.yml
Normal file
4
roles/pwntools/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
5
roles/pwntools/tasks/main_lin.yml
Normal file
5
roles/pwntools/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Install python-pwntools
|
||||
apt:
|
||||
name:
|
||||
- python3-pwntools
|
||||
state: latest
|
2
roles/pwntools/tasks/main_win.yml
Normal file
2
roles/pwntools/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install python3-pwntools
|
||||
win_command: pip install pwntools
|
11
roles/pycharm/files/pycharm.desktop
Normal file
11
roles/pycharm/files/pycharm.desktop
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Name=PyCharm
|
||||
GenericName=PyCharm
|
||||
Comment=JetBrains PyCharm IDE
|
||||
MimeType=text/x-python;
|
||||
Exec=/opt/PyCharm/bin/pycharm.sh
|
||||
Icon=pycharm
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;ComputerScience;
|
||||
StartupNotify=true
|
|
@ -6,7 +6,27 @@
|
|||
state: directory
|
||||
- name: Download and unpack JetBrains PyCharm
|
||||
unarchive:
|
||||
src: https://download.jetbrains.com/python/pycharm-community-2023.2.1.tar.gz
|
||||
src: https://data.services.jetbrains.com/products/download?code=PCP&platform=linux
|
||||
dest: /opt/PyCharm
|
||||
creates: /opt/PyCharm/pycharm-community-2023.2.1/build.txt
|
||||
extra_opts: --strip-components=1
|
||||
creates: /opt/PyCharm/build.txt
|
||||
remote_src: yes
|
||||
|
||||
- name: Install icon
|
||||
block:
|
||||
- file:
|
||||
path: /usr/local/share/icons
|
||||
state: directory
|
||||
- copy:
|
||||
src: /opt/PyCharm/bin/pycharm.svg
|
||||
remote_src: true
|
||||
dest: /usr/local/share/icons/clion.svg
|
||||
|
||||
- name: Create .desktop file
|
||||
block:
|
||||
- file:
|
||||
path: /usr/local/share/applications
|
||||
state: directory
|
||||
- copy:
|
||||
dest: /usr/local/share/applications/pycharm.desktop
|
||||
src: pycharm.desktop
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
state: upgrade
|
||||
version: "{{ target_version }}"
|
||||
|
||||
# TODO set default project directory to H:\something
|
||||
# TODO set default project directory to {{large_prog_dir}}\something
|
||||
|
|
|
@ -10,3 +10,7 @@
|
|||
- ipython3
|
||||
state: latest
|
||||
|
||||
- name: Install generally useful libraries
|
||||
apt:
|
||||
name:
|
||||
- python3-tqdm
|
||||
|
|
4
roles/scikit/tasks/main.yml
Normal file
4
roles/scikit/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
6
roles/scikit/tasks/main_lin.yml
Normal file
6
roles/scikit/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
- name: Install scikit
|
||||
apt:
|
||||
name:
|
||||
- python3-sklearn
|
||||
- python3-sklearn-pandas
|
||||
state: latest
|
2
roles/scikit/tasks/main_win.yml
Normal file
2
roles/scikit/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install scikit
|
||||
win_command: pip install scikit-learn
|
4
roles/seaborn/tasks/main.yml
Normal file
4
roles/seaborn/tasks/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- import_tasks: main_win.yml
|
||||
when: ansible_os_family == 'Windows'
|
||||
- import_tasks: main_lin.yml
|
||||
when: ansible_os_family == 'Debian'
|
4
roles/seaborn/tasks/main_lin.yml
Normal file
4
roles/seaborn/tasks/main_lin.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: Install seaborn
|
||||
apt:
|
||||
name: python3-seaborn
|
||||
state: latest
|
2
roles/seaborn/tasks/main_win.yml
Normal file
2
roles/seaborn/tasks/main_win.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
- name: Install seaborn
|
||||
win_command: pip install seaborn
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
- name: Set SiFive Studio install location
|
||||
set_fact:
|
||||
download_filedest: C:\FreedomStudio-4.18.0.2021-04-1-x86_64-w64-mingw32.zip
|
||||
download_filedest: "{{ large_prog_dir }}\\FreedomStudio-4.18.0.2021-04-1-x86_64-w64-mingw32.zip"
|
||||
- name: Download SiFive
|
||||
win_command: wget "https://unilj-my.sharepoint.com/:u:/g/personal/bulic_fri1_uni-lj_si/EdiSnJpoClJLtc3AtcAtEQ4BI76_PeDvL-ZmhxG4OEyvig?e=xBRYcb&download=1" -O "{{ download_filedest }}"
|
||||
args:
|
||||
|
@ -14,12 +14,12 @@
|
|||
- name: Unzip SiFive Studio
|
||||
win_unzip:
|
||||
src: "{{ download_filedest }}"
|
||||
dest: C:\SiFive\
|
||||
creates: C:\SiFive\plugins
|
||||
dest: "{{ large_prog_dir }}\\SiFive\\"
|
||||
creates: "{{ large_prog_dir }}\\SiFive\\plugins"
|
||||
delete_archive: yes
|
||||
|
||||
- name: Create desktop shortcut
|
||||
win_shortcut:
|
||||
description: "SiFive Freedom Studio"
|
||||
src: C:\SiFive\FreedomStudio.exe
|
||||
src: "{{ large_prog_dir }}\\SiFive\\FreedomStudio.exe"
|
||||
dest: '%public%\Desktop\SiFive.lnk'
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue