From 6f36c11791960c121f0db4a6fd50965b95cb2c49 Mon Sep 17 00:00:00 2001 From: Fenris Wolf Date: Sat, 12 Oct 2024 11:57:04 +0200 Subject: [PATCH] [add] role:zeitbild_backend --- roles/zeitbild_backend/defaults/main.json | 15 ++++ roles/zeitbild_backend/tasks/main.json | 78 +++++++++++++++++++ roles/zeitbild_backend/templates/conf.json.j2 | 1 + .../templates/systemd_unit.j2 | 14 ++++ roles/zeitbild_backend/vardef.json | 64 +++++++++++++++ 5 files changed, 172 insertions(+) create mode 100644 roles/zeitbild_backend/defaults/main.json create mode 100644 roles/zeitbild_backend/tasks/main.json create mode 100644 roles/zeitbild_backend/templates/conf.json.j2 create mode 100644 roles/zeitbild_backend/templates/systemd_unit.j2 create mode 100644 roles/zeitbild_backend/vardef.json diff --git a/roles/zeitbild_backend/defaults/main.json b/roles/zeitbild_backend/defaults/main.json new file mode 100644 index 0000000..a20dc0b --- /dev/null +++ b/roles/zeitbild_backend/defaults/main.json @@ -0,0 +1,15 @@ +{ + "var_zeitbild_backend_directory": "/opt/zeitbild", + "var_zeitbild_backend_user": "zeitbild", + "var_zeitbild_backend_git_reference": "master", + "var_zeitbild_backend_verbosity": "notice", + "var_zeitbild_backend_address": "::", + "var_zeitbild_backend_port": 7845, + "var_zeitbild_backend_database_kind": "sqlite", + "var_zeitbild_backend_database_data_sqlite_path": "data.sqlite", + "var_zeitbild_backend_database_data_postgresql_host": "postgresql.example.org", + "var_zeitbild_backend_database_data_postgresql_port": 5432, + "var_zeitbild_backend_database_data_postgresql_username": "zeitbild_user", + "var_zeitbild_backend_database_data_postgresql_password": "REPLACE_ME", + "var_zeitbild_backend_database_data_postgresql_schema": "zeitbild" +} diff --git a/roles/zeitbild_backend/tasks/main.json b/roles/zeitbild_backend/tasks/main.json new file mode 100644 index 0000000..6fa418c --- /dev/null +++ b/roles/zeitbild_backend/tasks/main.json @@ -0,0 +1,78 @@ +[ + { + "name": "packages", + "become": true, + "ansible.builtin.apt": { + "update_cache": true, + "pkg": [ + "git", + "make", + "rsync", + "nodejs" + ] + } + }, + { + "name": "user and directory", + "become": true, + "ansible.builtin.user": { + "name": "{{var_zeitbild_backend_user}}", + "create_home": true, + "home": "{{var_zeitbild_backend_directory}}" + } + }, + { + "name": "program | fetch", + "become": true, + "become_user": "{{var_zeitbild_backend_user}}", + "ansible.builtin.git": { + "repo": "https://forgejo.linke.sx/zeitbild/backend", + "version": "{{var_zeitbild_backend_git_reference}}", + "dest": "/tmp/zeitbild-backend-repo" + } + }, + { + "name": "program | build", + "become": true, + "become_user": "{{var_zeitbild_backend_user}}", + "ansible.builtin.command": { + "chdir": "/tmp/zeitbild-backend-repo", + "cmd": "tools/build" + } + }, + { + "name": "program | deploy", + "become": true, + "become_user": "{{var_zeitbild_backend_user}}", + "ansible.builtin.command": { + "chdir": "/tmp/zeitbild-backend-repo", + "cmd": "tools/deploy localhost --target-directory={{var_zeitbild_backend_directory}}" + } + }, + { + "name": "conf", + "become": true, + "ansible.builtin.template": { + "src": "conf.json.j2", + "dest": "{{var_zeitbild_backend_directory}}/conf.json", + "owner": "{{var_zeitbild_backend_user}}" + } + }, + { + "name": "systemd unit", + "become": true, + "ansible.builtin.template": { + "src": "systemd_unit.j2", + "dest": "/etc/systemd/system/zeitbild.service" + } + }, + { + "name": "run", + "become": true, + "ansible.builtin.systemd_service": { + "name": "zeitbild", + "enabled": true, + "state": "restarted" + } + } +] diff --git a/roles/zeitbild_backend/templates/conf.json.j2 b/roles/zeitbild_backend/templates/conf.json.j2 new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/roles/zeitbild_backend/templates/conf.json.j2 @@ -0,0 +1 @@ +{} diff --git a/roles/zeitbild_backend/templates/systemd_unit.j2 b/roles/zeitbild_backend/templates/systemd_unit.j2 new file mode 100644 index 0000000..a1ebe4a --- /dev/null +++ b/roles/zeitbild_backend/templates/systemd_unit.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Zeitbild +After=network.target + +[Service] +WorkingDirectory={{var_zeitbild_backend_directory}} +ExecStart={{var_zeitbild_backend_directory}}/zeitbild serve +Type=simple +Restart=always +User={{var_zeitbild_backend_user}} + +[Install] +WantedBy=default.target +RequiredBy=network.target diff --git a/roles/zeitbild_backend/vardef.json b/roles/zeitbild_backend/vardef.json new file mode 100644 index 0000000..7742d7a --- /dev/null +++ b/roles/zeitbild_backend/vardef.json @@ -0,0 +1,64 @@ +{ + "directory": { + "type": "string", + "mandatory": false + }, + "user": { + "type": "string", + "mandatory": false + }, + "git_reference": { + "type": "string", + "mandatory": false + }, + "verbosity": { + "type": "string", + "options": [ + "debug", + "info", + "notice", + "warning", + "error" + ], + "mandatory": false + }, + "address": { + "type": "string", + "mandatory": false + }, + "port": { + "type": "integer", + "mandatory": false + }, + "database_kind": { + "type": "string", + "options": [ + "sqlite" + ], + "mandatory": false + }, + "database_data_sqlite_path": { + "type": "string", + "mandatory": false + }, + "database_data_postgresql_host": { + "type": "string", + "mandatory": false + }, + "database_data_postgresql_port": { + "type": "integer", + "mandatory": false + }, + "database_data_postgresql_username": { + "type": "string", + "mandatory": false + }, + "database_data_postgresql_password": { + "type": "string", + "mandatory": false + }, + "database_data_postgresql_schema": { + "type": "string", + "mandatory": false + } +}