Mercurial > code > home > repos > infra
comparison system.py @ 288:3af02e24eaf9
minor
author | drewp@bigasterisk.com |
---|---|
date | Sun, 21 Apr 2024 17:01:13 -0700 |
parents | a46eb2a77df7 |
children | 65e28d2e0cd8 |
comparison
equal
deleted
inserted
replaced
287:c094d23b7943 | 288:3af02e24eaf9 |
---|---|
3 from pyinfra import host | 3 from pyinfra import host |
4 from pyinfra.facts.server import LinuxDistribution | 4 from pyinfra.facts.server import LinuxDistribution |
5 from pyinfra.operations import apt, files, server, systemd | 5 from pyinfra.operations import apt, files, server, systemd |
6 | 6 |
7 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux'] | 7 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux'] |
8 | |
9 TZ = 'America/Los_Angeles' | 8 TZ = 'America/Los_Angeles' |
10 | 9 |
11 | 10 |
12 def timezone(): | 11 def timezone(): |
13 files.link(path='/etc/localtime', target=f'/usr/share/zoneinfo/{TZ}') | 12 files.link(path='/etc/localtime', target=f'/usr/share/zoneinfo/{TZ}') |
31 | 30 |
32 | 31 |
33 def no_sleep(): | 32 def no_sleep(): |
34 server.shell(commands=['systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target']) | 33 server.shell(commands=['systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target']) |
35 | 34 |
35 | |
36 def nfs_server(): | 36 def nfs_server(): |
37 # remove when we're on longhorn | |
37 apt.packages(packages=['nfs-kernel-server']) | 38 apt.packages(packages=['nfs-kernel-server']) |
38 files.template(src='templates/bang_exports.j2', dest='/etc/exports') | 39 files.template(src='templates/bang_exports.j2', dest='/etc/exports') |
40 | |
39 | 41 |
40 def smaller_journals(): | 42 def smaller_journals(): |
41 files.line(name='shorter systemctl log window, for disk space', | 43 files.line(name='shorter systemctl log window, for disk space', |
42 path='/etc/systemd/journald.conf', | 44 path='/etc/systemd/journald.conf', |
43 line='MaxFileSec', | 45 line='MaxFileSec', |
44 replace="MaxFileSec=7day") | 46 replace="MaxFileSec=7day") |
45 | 47 |
48 | |
46 def web_forward(): | 49 def web_forward(): |
47 for port in [80, 443]: | 50 for port in [80, 443]: |
48 files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/web_forward_{port}.service", serv_host='bang', port=port, name='web', fam='tcp') | 51 svc = f'web_forward_{port}' |
49 systemd.service(service=f'web_forward_{port}', enabled=True, restarted=True) | 52 files.template(src="templates/webforward.service.j2", |
53 dest=f"/etc/systemd/system/{svc}.service", | |
54 serv_host='bang', | |
55 port=port, | |
56 name='web', | |
57 fam='tcp') | |
58 systemd.service(service=svc, enabled=True, restarted=True) | |
50 | 59 |
51 def minecraft_forward(): | 60 def minecraft_forward(): |
52 port = 25765 | 61 port = 25765 |
53 for fam in ['tcp', 'udp']: | 62 for fam in ['tcp', 'udp']: |
54 files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/mc_smp_{fam}_forward_{port}.service", serv_host='ditto', port=port, name='mc_smp', fam=fam) | 63 svc = f'mc_smp_{fam}_forward_{port}' |
55 systemd.service(service=f'mc_smp_{fam}_forward_{port}', enabled=True, restarted=True) | 64 files.template(src="templates/webforward.service.j2", |
65 dest=f"/etc/systemd/system/{svc}.service", | |
66 serv_host='ditto', | |
67 port=port, | |
68 name='mc_smp', | |
69 fam=fam) | |
70 systemd.service(service=svc, enabled=True, restarted=True) | |
56 | 71 |
57 server.hostname(hostname=host.name) | 72 server.hostname(hostname=host.name) |
58 timezone() | 73 timezone() |
59 fstab() | 74 fstab() |
60 | 75 |
61 if not is_pi: | 76 if not is_pi: |
62 files.line(path='/etc/update-manager/release-upgrades', line="^Prompt=", replace="Prompt=normal") | 77 files.line(path='/etc/update-manager/release-upgrades', line="^Prompt=", replace="Prompt=normal") |
63 | 78 |
64 if is_pi and host.name != 'pipe': | 79 if is_pi and host.name != 'pipe': |
65 pi_tmpfs() | 80 pi_tmpfs() |
66 | |
67 # this now lives on pipe in /opt/dnsmasq/tftp/f63f14b6/config.txt | |
68 #files.template(src='templates/boot_config.txt.j2', dest='/boot/config.txt') | |
69 | 81 |
70 if host.name in ['bang', 'pipe', 'ditto']: | 82 if host.name in ['bang', 'pipe', 'ditto']: |
71 no_sleep() | 83 no_sleep() |
72 | 84 |
73 if host.name in ['bang', 'ditto']: | 85 if host.name in ['bang', 'ditto']: |
80 | 92 |
81 # for space, consider: | 93 # for space, consider: |
82 # k3s crictl rmi --prune | 94 # k3s crictl rmi --prune |
83 # snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi; done | 95 # snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi; done |
84 # podman system reset | 96 # podman system reset |
85 |