Mercurial > code > home > repos > infra
diff dns.py @ 278:4e424a144183
for netboot pi
author | drewp@bigasterisk.com |
---|---|
date | Sat, 30 Mar 2024 00:15:46 -0700 |
parents | 075ceead3673 |
children | 5c5c314051c5 |
line wrap: on
line diff
--- a/dns.py Sat Mar 23 14:22:20 2024 -0700 +++ b/dns.py Sat Mar 30 00:15:46 2024 -0700 @@ -1,9 +1,11 @@ from io import StringIO import subprocess -from tempfile import NamedTemporaryFile + from pyinfra import host -from pyinfra.operations import files, systemd +from pyinfra.operations import files, systemd, server +from pyinfra.facts.server import Arch, LinuxDistribution +is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux'] def dnsmasq_instance(net_name, house_iface, @@ -36,10 +38,38 @@ def standard_host_dns(): files.template(src='templates/hosts.j2', dest='/etc/hosts') - files.link(path='/etc/resolv.conf', target='/run/systemd/resolve/resolv.conf', force=True) - files.template(src='templates/resolved.conf.j2', dest='/etc/systemd/resolved.conf') - systemd.service(service='systemd-resolved.service', running=True, restarted=True) + if is_pi: + files.put(dest='/etc/resolv.conf', src=StringIO(''' +# written by pyinfra +nameserver 10.2.0.3 +search bigasterisk.com + ''')) + else: + files.link(path='/etc/resolv.conf', target='/run/systemd/resolve/resolv.conf', force=True) + files.template(src='templates/resolved.conf.j2', dest='/etc/systemd/resolved.conf') + systemd.service(service='systemd-resolved.service', running=True, restarted=True) + +def rpi_net_boot(): + files.directory(path='/opt/dnsmasq/tftp') + for pi_serial, _ in pi_serial_hostname: + files.directory(path=f'/opt/dnsmasq/tftp/{pi_serial}') + # then we transfer from pi to here + +def rpi_iscsi_volumes(): + iscsi_dir = '/d2/rpi-iscsi' + for _, pi_hostname in pi_serial_hostname: + out= f'{iscsi_dir}/{pi_hostname}.disk' + files.directory(path=iscsi_dir) + server.shell(f'dd if=/dev/zero of={out} count=0 bs=1 seek=4G conv=excl || true') + files.put(dest=f"/etc/tgt/conf.d/{pi_hostname}.conf", src=StringIO(f""" +<target iqn.2024-03.com.bigasterisk:{pi_hostname}.target> + backing-store {out} + initiator-name iqn.2024-03.com.bigasterisk:{pi_hostname}.initiator +</target> + """)) + systemd.service(service='tgt.service', running=True, restarted=True) + standard_host_dns() @@ -51,8 +81,10 @@ dnsmasq_instance('10.5', house_iface='unused', dhcp_range='unused', listen_address='unused') # only works after wireguard is up - +elif host.name == 'ditto': + rpi_iscsi_volumes() # move out of this file- it's not dns elif host.name == 'pipe': + rpi_net_boot() files.directory(path='/opt/dnsmasq') dnsmasq_instance('10.2', house_iface='eth1',