Moved nginx config deployment to pyinfra_nginx module
This commit is contained in:
parent
d6b8e08bc3
commit
0f3271a1e9
|
@ -1 +1 @@
|
||||||
from .nginx import deploy_nginx
|
from .nginx import deploy_nginx, add_nginx_domain
|
||||||
|
|
|
@ -5,8 +5,9 @@ from io import StringIO
|
||||||
|
|
||||||
from pyinfra import host
|
from pyinfra import host
|
||||||
from pyinfra.api.deploy import deploy
|
from pyinfra.api.deploy import deploy
|
||||||
from pyinfra.operations import files, server, apt
|
from pyinfra.operations import files, server, apt, systemd
|
||||||
from pyinfra.facts.deb import DebPackages
|
from pyinfra.facts.deb import DebPackages
|
||||||
|
from pyinfra_acmetool import deploy_acmetool
|
||||||
|
|
||||||
def _install_nginx():
|
def _install_nginx():
|
||||||
if not host.get_fact(DebPackages):
|
if not host.get_fact(DebPackages):
|
||||||
|
@ -18,6 +19,48 @@ def _install_nginx():
|
||||||
_sudo = True,
|
_sudo = True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def add_nginx_domain(domain: str, config_path: str, enabled=True):
|
||||||
|
"""Let a domain be handled by nginx, create a Let's Encrypt certificate for it, and deploy the config.
|
||||||
|
|
||||||
|
:param domain: the domain of the website
|
||||||
|
:param config_path: the local path to the nginx config file
|
||||||
|
:param enabled: whether the site should be enabled at /etc/nginx/sites-enabled
|
||||||
|
"""
|
||||||
|
default_config_link = files.link(
|
||||||
|
path="/etc/nginx/sites-enabled/default", present=False
|
||||||
|
)
|
||||||
|
need_restart = default_config_link.changed
|
||||||
|
|
||||||
|
deploy_acmetool(nginx_hook=True, domains=[domain])
|
||||||
|
|
||||||
|
config = files.put(
|
||||||
|
src=config_path,
|
||||||
|
dest=f"/etc/nginx/sites-available/{domain}",
|
||||||
|
user="root",
|
||||||
|
group="root",
|
||||||
|
mode="644",
|
||||||
|
)
|
||||||
|
|
||||||
|
if enabled:
|
||||||
|
config_link = files.link(
|
||||||
|
path=f"/etc/nginx/sites-enabled/{domain}",
|
||||||
|
target=f"/etc/nginx/sites-available/{domain}",
|
||||||
|
user="root",
|
||||||
|
group="root",
|
||||||
|
present=enabled,
|
||||||
|
)
|
||||||
|
|
||||||
|
if config.changed or config_link.changed:
|
||||||
|
need_restart = True
|
||||||
|
|
||||||
|
systemd.service(
|
||||||
|
name="NGINX should be enabled and running",
|
||||||
|
service="nginx.service",
|
||||||
|
running=True,
|
||||||
|
enabled=True,
|
||||||
|
restarted=need_restart,
|
||||||
|
)
|
||||||
|
|
||||||
@deploy("Deploy nginx")
|
@deploy("Deploy nginx")
|
||||||
def deploy_nginx():
|
def deploy_nginx():
|
||||||
_install_nginx()
|
_install_nginx()
|
||||||
|
|
Loading…
Reference in a new issue