from pyinfra import host from pyinfra.operations import apt, server, files, systemd from pyinfra.facts.files import File, Directory SUDO = True server.user( name='Add user benpro', user='benpro', groups=['sudo'], public_keys='ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFs7yO0auvwFL8HTLMUq6lET6DMYLhqhd32rqFfZUsjL openpgp:0xA32E99AD', shell='/bin/bash', present=True, ) #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.get_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.get_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, )