diff --git a/bundles/simple-icinga-dashboard/files/simple-icinga-dashboard.service b/bundles/simple-icinga-dashboard/files/simple-icinga-dashboard.service new file mode 100644 index 0000000..88c7b91 --- /dev/null +++ b/bundles/simple-icinga-dashboard/files/simple-icinga-dashboard.service @@ -0,0 +1,10 @@ +[Unit] +Description=simple-icinga-dashboard +After=network.target + +[Service] +User=icinga_dashboard +WorkingDirectory=/opt/simple-icinga-dashboard/src +Environment=VIRTUAL_ENV=/opt/simple-icinga-dashboard/venv +Environment=STATUSPAGE_CONFIG=/opt/simple-icinga-dashboard/config.toml +ExecStart=/opt/simple-icinga-dashboard/venv/bin/python /opt/simple-icinga-dashboard/src/service.py diff --git a/bundles/simple-icinga-dashboard/files/simple-icinga-dashboard.timer b/bundles/simple-icinga-dashboard/files/simple-icinga-dashboard.timer new file mode 100644 index 0000000..59f849f --- /dev/null +++ b/bundles/simple-icinga-dashboard/files/simple-icinga-dashboard.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Generate simple-icinga-dashboard + +[Timer] +OnCalendar=minutely +Persistent=false + +[Install] +WantedBy=timers.target diff --git a/bundles/simple-icinga-dashboard/items.py b/bundles/simple-icinga-dashboard/items.py index b3dc949..c69c9df 100644 --- a/bundles/simple-icinga-dashboard/items.py +++ b/bundles/simple-icinga-dashboard/items.py @@ -1,3 +1,23 @@ +actions = { + 'simple-icinga-dashboard_create_virtualenv': { + 'command': '/usr/bin/python3 -m virtualenv -p python3 /opt/simple-icinga-dashboard/venv/', + 'unless': 'test -d /opt/simple-icinga-dashboard/venv/', + 'needs': { + # actually /opt/simple-icinga-dashboard, but we don't create that + 'directory:/opt/simple-icinga-dashboard/src', + }, + }, + 'simple-icinga-dashboard_install_requirements': { + 'command': + 'cd /opt/simple-icinga-dashboard/src && ' + '/opt/simple-icinga-dashboard/venv/bin/pip install --upgrade pip && ' + '/opt/simple-icinga-dashboard/venv/bin/pip install --upgrade -r requirements.txt', + 'needs': { + 'action:simple-icinga-dashboard_create_virtualenv', + }, + 'triggered': True, + }, +} users = { 'icinga_dashboard': { @@ -16,11 +36,24 @@ git_deploy = { '/opt/simple-icinga-dashboard/src': { 'repo': 'https://git.kunsmann.eu/sophie/simple-icinga-dashboard.git', 'rev': 'main', + 'triggers': { + 'action:simple-icinga-dashboard_install_requirements', + }, }, } files = { - '/opt/simple-icinga-dashboard/src/config.toml': { + '/etc/systemd/system/simple-icinga-dashboard.service': { + 'triggers': { + 'action:systemd-reload', + }, + }, + '/etc/systemd/system/simple-icinga-dashboard.timer': { + 'triggers': { + 'action:systemd-reload', + }, + }, + '/opt/simple-icinga-dashboard/config.toml': { 'content_type': 'mako', 'needs': { 'git_deploy:/opt/simple-icinga-dashboard/src', @@ -36,3 +69,13 @@ symlinks = { }, }, } + +svc_systemd = { + 'simple-icinga-dashboard.timer': { + 'needs': { + 'action:simple-icinga-dashboard_install_requirements', + 'file:/etc/systemd/system/simple-icinga-dashboard.service', + 'file:/etc/systemd/system/simple-icinga-dashboard.timer', + }, + }, +} diff --git a/bundles/simple-icinga-dashboard/metadata.py b/bundles/simple-icinga-dashboard/metadata.py index 5d2780c..1d1b905 100644 --- a/bundles/simple-icinga-dashboard/metadata.py +++ b/bundles/simple-icinga-dashboard/metadata.py @@ -1,7 +1,4 @@ defaults = { - 'cron': { - 'simple-icinga-dashboard': '* * * * * icinga_dashboard cd /opt/simple-icinga-dashboard/src/ && ./service.py', - }, 'postfix': { 'aliases': { 'icinga_dashboard': {