From 507f8a7736c5e2d16f2e84825aa188f889b87329 Mon Sep 17 00:00:00 2001 From: Benoit S Date: Sun, 12 Sep 2021 16:35:36 +0900 Subject: [PATCH] Init first version --- .gitignore | 1 + deploy.py | 114 ++++++++++++++++++++++++++++++++++++++ files/uptime-kuma.service | 17 ++++++ inventory.py | 1 + 4 files changed, 133 insertions(+) create mode 100644 .gitignore create mode 100644 deploy.py create mode 100644 files/uptime-kuma.service create mode 100644 inventory.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bc9d4da --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pyinfra-debug.log diff --git a/deploy.py b/deploy.py new file mode 100644 index 0000000..d7973cf --- /dev/null +++ b/deploy.py @@ -0,0 +1,114 @@ +from pyinfra import host +from pyinfra.operations import apt, server, files, systemd + +SUDO = True + +server.user( + name='Add user benpro', + user='benpro', + groups=['sudo'], + public_keys='ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFs7yO0auvwFL8HTLMUq6lET6DMYLhqhd32rqFfZUsjL openpgp:0xA32E99AD', + shell='/bin/bash', + present=True, +) + +server.hostname( + name='Set the hostname', + hostname='uptime.benpro.fr', +) + +apt.update( + name='Update apt repositories', +) + +apt.upgrade( + name='Upgrade apt packages', +) + +# Disabled because need to deal with Oracle pre-set rules =_= +#apt.packages( +# name='Install ufw', +# packages=['ufw'], +# update=False, +#) +# +#files.line( +# name='Set port 28 for SSH', +# path='/etc/ssh/sshd_config', +# line=r'Port .*', +# replace='Port 28', +#) +# +#systemd.service( +# name='Reload sshd', +# service='ssh.service', +# reloaded=True, +#) +# +#server.shell( +# name='Add ufw rules', +# commands=['ufw limit 28'], +#) +# +#server.shell( +# name='Enable ufw', +# commands=['yes | ufw enable'], +#) + +apt.packages( + name='Install skopeo', + packages=['skopeo'], + update=False, +) + +files.download( + name='Download undocker', + src='https://git.sr.ht/~motiejus/undocker/refs/download/v1.0.2/undocker-linux-amd64-v1.0.2', + dest='/usr/local/bin/undocker', + user='root', + group='root', + mode='755', + cache_time=604800, +) + +if not host.fact.file('/tmp/uptime-kuma.tar'): + server.shell( + name='Download uptime-kuma', + chdir='/tmp', + commands=['skopeo copy docker://docker.io/louislam/uptime-kuma:latest docker-archive:uptime-kuma.tar'], + ) + +files.directory( + name='Ensure /opt/uptime-kuma exists', + path='/opt/uptime-kuma', + user='root', + group='root', + mode=755 +) + +if not host.fact.directory('/opt/uptime-kuma/app'): + server.shell( + name='Undocker the app', + chdir='/opt/uptime-kuma', + commands=['undocker /tmp/uptime-kuma.tar - | tar -xv'], + ) + +files.put( + name='Update systemd service file', + src='files/uptime-kuma.service', + dest='/etc/systemd/system/uptime-kuma.service', + mode='644', +) + +systemd.daemon_reload( + name='Reload systemd', + user_mode=False, +) + +systemd.service( + name='Restart and enable uptime-kuma service', + service='uptime-kuma.service', + running=True, + restarted=True, + enabled=True, +) diff --git a/files/uptime-kuma.service b/files/uptime-kuma.service new file mode 100644 index 0000000..908dcc5 --- /dev/null +++ b/files/uptime-kuma.service @@ -0,0 +1,17 @@ +[Unit] +Description=uptime-kuma +After=network.target + +[Service] +Type=simple +DynamicUser=yes +PrivateUsers=true +StateDirectory=uptime-kuma +WorkingDirectory=/app +RootDirectory=/opt/uptime-kuma +ExecStartPre=+/bin/ln -sf /var/lib/uptime-kuma /app/data +ExecStart=/usr/local/bin/node server/server.js +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/inventory.py b/inventory.py new file mode 100644 index 0000000..21ee5c5 --- /dev/null +++ b/inventory.py @@ -0,0 +1 @@ +my_hosts = ['uptime.benpro.fr']