diff --git a/deploy.py b/deploy.py new file mode 100644 index 0000000..2d59b7f --- /dev/null +++ b/deploy.py @@ -0,0 +1,53 @@ +import os +import tasks + +from pyinfra import host, config +from pyinfra.facts.server import LinuxName, Which +from pyinfra.operations import server, apk, apt +from tasks.secrets import secrets +from tasks.croc import install_croc + +config.REQUIRE_PACKAGES = "requirements.txt" + + +if LinuxName == "Alpine": + # make sure template operations work smoothly + # because they run under smtp + apk.packages( + name="add openssh sftp package for pyinfra file operations", + packages=[ + "openssh-sftp-server", + ], + ) + +install_croc() + + +def main_operations(): + if LinuxName == "Ubuntu": + if host.data.remove_ubuntu_snap: + server.shell("snap remove lxd") + server.shell("snap remove core20") + server.shell("snap remove snapd") + apt.purge(["snapd"]) + + if "pleroma_hosts" in host.groups: + tasks.pleroma.install() + tasks.aproxy.install() + tasks.nginx.install_with_services() + + if "static_file_hosts" in host.groups: + tasks.nginx.install_with_services() + + if "monitoring_hosts" in host.groups: + tasks.uptime_kuma.install() + tasks.nginx.install_with_services() + + +# setting so that you can quickly iterate in a specific host +maybe_specific_group = os.environ.get("DEPLOY_GROUPS") +if maybe_specific_group: + if maybe_specific_group in host.groups: + main_operations() +else: + main_operations()