Init first version
This commit is contained in:
parent
647c2c05e9
commit
507f8a7736
4 changed files with 133 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pyinfra-debug.log
|
114
deploy.py
Normal file
114
deploy.py
Normal file
|
@ -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,
|
||||||
|
)
|
17
files/uptime-kuma.service
Normal file
17
files/uptime-kuma.service
Normal file
|
@ -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
|
1
inventory.py
Normal file
1
inventory.py
Normal file
|
@ -0,0 +1 @@
|
||||||
|
my_hosts = ['uptime.benpro.fr']
|
Reference in a new issue