From 04c7efe70685b6a2dc148a6ce720ef59a6ef54f0 Mon Sep 17 00:00:00 2001 From: polz Date: Fri, 25 Jul 2025 17:09:43 +0200 Subject: [PATCH] Create registrator role --- .../registrator/files/garaze_racunovodstvo.sh | 12 ++ roles/registrator/files/get_siemens_logs.sh | 8 ++ .../files/push_siemens_to_spica.sh | 12 ++ roles/registrator/tasks/main.yml | 122 ++++++++++++++++++ .../apis_preslikava_kadrovskih_settings.py.j2 | 4 + roles/registrator/templates/loginconf.php.j2 | 0 .../templates/siemens_spica_settings.py.j2 | 16 +++ 7 files changed, 174 insertions(+) create mode 100644 roles/registrator/files/garaze_racunovodstvo.sh create mode 100644 roles/registrator/files/get_siemens_logs.sh create mode 100644 roles/registrator/files/push_siemens_to_spica.sh create mode 100644 roles/registrator/tasks/main.yml create mode 100644 roles/registrator/templates/apis_preslikava_kadrovskih_settings.py.j2 create mode 100644 roles/registrator/templates/loginconf.php.j2 create mode 100644 roles/registrator/templates/siemens_spica_settings.py.j2 diff --git a/roles/registrator/files/garaze_racunovodstvo.sh b/roles/registrator/files/garaze_racunovodstvo.sh new file mode 100644 index 0000000..28d1f7b --- /dev/null +++ b/roles/registrator/files/garaze_racunovodstvo.sh @@ -0,0 +1,12 @@ +#!/bin/sh +GARAZEDIR="~/garaze/tmp" +# RECIPIENTS="polz@fri.uni-lj.si" +# RECIPIENTS="anita.strmole@fri.uni-lj.si" +# RECIPIENTS="racunovodstvo@fri.uni-lj.si" +RECIPIENTS="$(cat ~/garage_recipients.txt)" + +# cd /home/registrator/siemens-spica-rilec + +rm $GARAZEDIR/*.xlsx +~/siemens-spica-rilec/garage_count.py --employee --calculation --format xlsx ~/data "$GARAZEDIR/garaze_{start}_{end}.xlsx" +echo "Garaže za pretekli mesec" | mail -s "Garaže za pretekli mesec" "$RECIPIENTS" -A $GARAZEDIR/*.xlsx diff --git a/roles/registrator/files/get_siemens_logs.sh b/roles/registrator/files/get_siemens_logs.sh new file mode 100644 index 0000000..623ed59 --- /dev/null +++ b/roles/registrator/files/get_siemens_logs.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +cd ~/data +echo "get -a -p -R /home/siemensfri/*" | sftp -P 2222 spicafri@dioda.fri.uni-lj.si +# echo "get -a -p -R /home/siemensfri/*" | sftp -P 2222 spicafri@nebi.fri1.uni-lj.si +find ~/data -mtime +365 -exec rm {} \; + +~/siemens-spica-rilec/siemens_to_spool.py 2>> ~/logs/siemens_to_spool.log diff --git a/roles/registrator/files/push_siemens_to_spica.sh b/roles/registrator/files/push_siemens_to_spica.sh new file mode 100644 index 0000000..11119e1 --- /dev/null +++ b/roles/registrator/files/push_siemens_to_spica.sh @@ -0,0 +1,12 @@ +#!/bin/sh + + +/home/registrator/siemens-spica-rilec/spooldirs_from_apis.py +/home/registrator/get_siemens_logs.sh 2> /dev/null > /dev/null +/home/registrator/siemens-spica-rilec/siemens_to_spool.py 2>> /home/registrator/logs/siemens_to_spool_errors.log + +today=$(date --iso) +/home/registrator/siemens-spica-rilec/add_fix.py --time "${today} 23:00" --type "odhod" /home/registrator/spool/*/fixes.csv +/home/registrator/siemens-spica-rilec/fix_events.py +/home/registrator/siemens-spica-rilec/spool_to_spica.py --commit + diff --git a/roles/registrator/tasks/main.yml b/roles/registrator/tasks/main.yml new file mode 100644 index 0000000..25fb1fd --- /dev/null +++ b/roles/registrator/tasks/main.yml @@ -0,0 +1,122 @@ +- name: Create registrator group + group: + name: registrator + system: yes + +- name: Create registrator user + user: + name: registrator + system: yes + home: /home/registrator + shell: /sbin/nologin + generate_ssh_key: yes + ssh_key_comment: "{{ inventory_hostname }}" + ssh_key_type: ed25519 + +- name: Install packages + package: + name: git,py3-pip + +- name: Clone siemens-spica-rilec + become: yes + become_user: registrator + become_method: su + become_flags: "-s /bin/sh" + git: + repo: 'https://github.com/polz113/siemens-spica-rilec' + dest: /home/registrator/siemens-spica-rilec + force: yes + +- name: Install requirements for spica-rilec + become: yes + become_user: registrator + become_method: su + become_flags: '-s /bin/sh' + pip: + requirements: /home/registrator/siemens-spica-rilec/requirements.txt + extra_args: --user --break-system-packages --no-warn-script-location + +- name: Configure spica-rilec settings + template: + dest: "/home/registrator/siemens-spica-rilec/{{ item }}" + src: "{{ item }}.j2" + owner: registrator + group: registrator + mode: 0600 + force: no + loop: + - siemens_spica_settings.py + - apis_preslikava_kadrovskih_settings.py + +- name: Clone web app + become: yes + become_user: registrator + become_method: su + become_flags: "-s /bin/sh" + git: + repo: 'https://github.com/polz113/registrator.git' + dest: /home/registrator/registrator + force: yes + +- name: Configure registrator settings + template: + dest: "/home/registrator/registrator/conf/{{ item }}" + src: "{{ item }}.j2" + owner: registrator + group: registrator + mode: 0600 + force: no + loop: + - loginconf.php + +- name: Create utility / cronjob scripts + copy: + dest: "/home/registrator/{{ item }}" + src: "{{ item }}" + mode: 0744 + owner: registrator + group: registrator + loop: + - get_siemens_logs.sh + - push_siemens_to_spica.sh + - garaze_racunovodstvo.sh + +- name: Create log/data directories + file: + dest: "/home/registrator/{{ item }}" + owner: registrator + loop: + - data + - logs + - spool + +- name: Create garaze config + copy: + dest: "/home/registrator/garaze_recipients.txt" + content: "{{ password.garaze_recipients }}" + +- name: Set up cronjob for fetching the logs + cron: + name: "get siemens logs" + job: "/home/registrator/get_siemens_logs.sh" + user: registrator + minute: "*/10" + +- name: Set up cronjob for garaze + cron: + name: "send garaze usage" + job: "/home/registrator/garaze_racunovodstvo.sh" + user: registrator + minute: "15" + hour: "00" + day: "1" + +- name: Set up cronjob for spica + cron: + name: "push events to spica" + job: "/home/registrator/push_siemens_to_spica.sh >> /home/registrator/logs/siemens_to_spica.log" + user: registrator + minute: "30" + hour: "23" + + diff --git a/roles/registrator/templates/apis_preslikava_kadrovskih_settings.py.j2 b/roles/registrator/templates/apis_preslikava_kadrovskih_settings.py.j2 new file mode 100644 index 0000000..dfff828 --- /dev/null +++ b/roles/registrator/templates/apis_preslikava_kadrovskih_settings.py.j2 @@ -0,0 +1,4 @@ +APIS_USERS_URL="{{password.apis_users_url}}/" +APIS_API_KEY="{{password.apis_api_key}}" +APIS_WEB_SPOOL_FIELD = "upn" +APIS_MAIN_SPOOL_FIELD = "OsebniPodatki__kadrovskaSt" diff --git a/roles/registrator/templates/loginconf.php.j2 b/roles/registrator/templates/loginconf.php.j2 new file mode 100644 index 0000000..e69de29 diff --git a/roles/registrator/templates/siemens_spica_settings.py.j2 b/roles/registrator/templates/siemens_spica_settings.py.j2 new file mode 100644 index 0000000..da45987 --- /dev/null +++ b/roles/registrator/templates/siemens_spica_settings.py.j2 @@ -0,0 +1,16 @@ +APIURL="{{password.spica_url}}" +SPICA_USER="{{password.spica_user}}" +SPICA_PASSWD="{{password.spica_passwd}}" +SPICA_KEY="{{password.spica_key}}" + +LOG_GLOB="/home/registrator/data/room-access*.csv" +SPOOL_DIR="/home/registrator/spool" +ULID_SPOOL_DIR="/home/registrator/registrator/spool" +# SPOOL_DIR="/home/apis/spool" + +OLD_LOG_LIST="/home/registrator/data/handled_logs.txt" + +SPOOL_FNAME="new_events.csv" +OLDEVENTS_FNAME="old_events.csv" +NOCOMMIT_FNAME="nocommit.csv" +FIX_FNAME="fixes.csv"