comparison system.py @ 126:fe3ae7c95e65

collect all apt/sources.list into a central template
author drewp@bigasterisk.com
date Wed, 21 Dec 2022 12:36:06 -0800
parents 69058ad170be
children 168bc1c44e6f
comparison
equal deleted inserted replaced
125:faccf5f8c808 126:fe3ae7c95e65
1 import os 1 import os
2 2
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.facts.files import FindFiles
5 from pyinfra.operations import apt, files, server, systemd 6 from pyinfra.operations import apt, files, server, systemd
6 7
7 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux'] 8 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux']
8 9
9 TZ = 'America/Los_Angeles' 10 TZ = 'America/Los_Angeles'
11 server.hostname(hostname=host.name) 12 server.hostname(hostname=host.name)
12 13
13 def timezone(): 14 def timezone():
14 files.link(path='/etc/localtime', target=f'/usr/share/zoneinfo/{TZ}') 15 files.link(path='/etc/localtime', target=f'/usr/share/zoneinfo/{TZ}')
15 files.replace(path='/etc/timezone', text='.*', replace=TZ) 16 files.replace(path='/etc/timezone', text='.*', replace=TZ)
17
18 def apt_sources():
19 server.shell(commands=['dpkg --add-architecture i386'])
20
21 files.template(src='templates/sources.list.j2', dest='/etc/apt/sources.list.j2')
22 if host.get_fact(FindFiles, '/etc/apt/sources.list.d/', quote_path=True):
23 raise SystemExit(f"new files in {host.name} /etc/apt/sources.list.d/ - please remove")
16 apt.packages(update=True, 24 apt.packages(update=True,
17 cache_time=86400, 25 cache_time=86400,
18 packages=['tzdata'], 26 packages=['tzdata'],
19 force=True, 27 force=True,
20 _env={ 28 _env={
69 files.put(src='files/zfs_metrics/zfs_space_metrics.service', 77 files.put(src='files/zfs_metrics/zfs_space_metrics.service',
70 dest=f'/etc/systemd/system/zfs_space_metrics.service') 78 dest=f'/etc/systemd/system/zfs_space_metrics.service')
71 systemd.service(service=f'zfs_space_metrics', enabled=True, restarted=True, daemon_reload=True) 79 systemd.service(service=f'zfs_space_metrics', enabled=True, restarted=True, daemon_reload=True)
72 80
73 timezone() 81 timezone()
82 apt_sources()
74 fstab() 83 fstab()
75 84
76 if not is_pi: 85 if not is_pi:
77 files.line(path='/etc/update-manager/release-upgrades', line="^Prompt=", replace="Prompt=normal") 86 files.line(path='/etc/update-manager/release-upgrades', line="^Prompt=", replace="Prompt=normal")
78 87