mirror of
https://github.com/chatmail/relay.git
synced 2026-05-13 09:24:43 +00:00
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
from pathlib import Path
|
|
|
|
from pyinfra.operations import apt, files, systemd, server
|
|
|
|
|
|
def openfile(basename):
|
|
# on newer python versions:
|
|
# importlib.resources.files(__package__).joinpath(basename).open("rb")
|
|
# but here we use a way supported on old pythons
|
|
dirpath = Path(__path__[0])
|
|
return dirpath.joinpath(basename).open("rb")
|
|
|
|
|
|
def deploy_acmetool(nginx_hook=False, email="", domains=[]):
|
|
"""Deploy acmetool."""
|
|
apt.packages(
|
|
name="Install acmetool",
|
|
packages=["acmetool"],
|
|
)
|
|
|
|
files.put(
|
|
src=openfile("acmetool.cron"),
|
|
dest="/etc/cron.d/acmetool",
|
|
user="root",
|
|
group="root",
|
|
mode="644",
|
|
)
|
|
|
|
if nginx_hook:
|
|
files.put(
|
|
src=openfile("acmetool.hook"),
|
|
dest="/usr/lib/acme/hooks/nginx",
|
|
user="root",
|
|
group="root",
|
|
mode="744",
|
|
)
|
|
|
|
files.template(
|
|
src=openfile("response-file.yaml.j2"),
|
|
dest="/var/lib/acme/conf/responses",
|
|
user="root",
|
|
group="root",
|
|
mode="644",
|
|
email=email,
|
|
)
|
|
|
|
service_file = files.put(
|
|
src=openfile("acmetool-redirector.service"),
|
|
dest="/etc/systemd/system/acmetool-redirector.service",
|
|
user="root",
|
|
group="root",
|
|
mode="644",
|
|
)
|
|
systemd.service(
|
|
name="Setup acmetool-redirector service",
|
|
service="acmetool-redirector.service",
|
|
running=True,
|
|
enabled=True,
|
|
restarted=service_file.changed,
|
|
)
|
|
|
|
for domain in domains:
|
|
server.shell(
|
|
name=f"Request certificate for {domain}",
|
|
commands=[f"acmetool want {domain}"],
|
|
)
|