Modules¶
fscm includes specialized modules for common infrastructure tasks.
Available Modules¶
systemd¶
Create and manage systemd services, timers, and socket units. Includes helpers for Gunicorn, Docker Compose, and user services.
docker¶
Docker and container management utilities. Check container status, manage volumes, and detect compose commands.
wireguard¶
WireGuard VPN configuration. Generate server and peer configs, manage keys, and set up iptables rules.
Usage¶
Import modules as needed:
from fscm.modules import systemd
from fscm.modules import docker
from fscm.modules import wireguard
from fscm.modules import pki
from fscm.modules import dotfiles
Module Dependencies¶
Some modules require optional dependencies:
| Module | Dependency | Install Command |
|---|---|---|
| wireguard | jinja2 | pip install jinja2 |
| pki | cryptography | pip install "fscm[pki]" |
Creating Custom Modules¶
You can create your own modules following the fscm patterns:
# mymodules/nginx.py
import fscm
from fscm import file, run, template
from fscm.modules import systemd
def setup_site(name: str, domain: str, root: str):
"""Set up an nginx site."""
# Create site config
config = template("nginx-site.j2", domain=domain, root=root)
file(f"/etc/nginx/sites-available/{name}", config)
# Enable site
run(f"ln -sf /etc/nginx/sites-available/{name} /etc/nginx/sites-enabled/")
# Test and reload
run("nginx -t")
run("systemctl reload nginx", sudo=True)
return fscm.CHANGELIST
Use your module: