Wie man auch schon auf dem Video sehen konnte, war die Konfiguration nach der Installation… nenne ich es mal spartanisch:
Kein Benutzer
Kein doas.conf file
Kein Netzwerk
Keine zusätzlichen Pakete
etc.
Benutzer einrichten
Minimum was ich brauche, ist ein administrativer Benutzer (nicht root
)…
useradd -m -G wheel deploy echo "permit nopass setenv { PKG_PATH ENV PS1 SSH_AUTH_SOCK } :wheel" >> /etc/doas.conf
Warum nicht root
? Aus Sicherheitsgründen:
Wenn ich aus der Entfernung ein netzwerkfähiges Gerät administrieren will, sollte ich auch die Möglichkeit haben, mich per ssh
zu verbinden. Jetzt ist root
allerdings der schon immer am meisten attackierte Benutzer:
Gefolgt von
admin
und administrator
Ich will auf meiner, sonst sicheren Maschine, keinen Benutzer mit (zwangsläufig) einem Passwort, der sich per
ssh
einloggen kann.
Benutzer ohne Passwort sind da viel besser. Ich hab auch die ~/.ssh/authorized_keys
vom Benutzer deploy
über die serielle Verbindung eingerichtet. Paranoider geht es wohl kaum.
Netzwerk einrichten
Ich habe vorläufig nur eine der drei Netzwerk Schnittstellen eingerichtet. em0
ist bei der APU.2 die Schnittstelle, die neben der seriellen DP9 liegt.
Auf die schnelle mit
ifconfig em0 192.168.0.200/24
eingerichtet um festzustellen ob ich überhaupt die richtige Schnittstelle angeschlossen habe. Nach der Feststellung dann mit dhclient em0
was erstmal ausreicht.Ich hab es dann noch für den nächsten
reboot
auch fest eingetragen mit:
echo dhcp >> /etc/hostname.em0
Man will sich ja nicht dauernd über seriell verbinden müssen.
Auf Ansible Orchestrierung vorbereiten
Als Ansible Fan, will ich natürlich auch die APU und andere OpenBSD Geräte damit verwalten. Bloss hat OpenBSD im Basis System kein Python integriert.
In meinen Vagrant
Boxen hab ich es bereits beim erstellen mit rein gebracht, was hier nur eingeschränkt möglich wäre.
Als erstes hab ich mal ein Inventory
Datei, mit der APU darin, erstellt.
Wie die Meisten anderen UNIXOIDEN Betriebssysteme hat OpenBSD ein eigenes Paket System. Um dieses benutzen zu können benötige ich eine /etc/pkg.conf
Datei mit einem Installationspfad, wo sich die Pakete befinden. Eine Beispieldatei befindet sich im lokalen Pfad:
/etc/examples/pkg.conf
Man könnte sie bereits jetzt über Ansible auslesen:
ansible -i hosts -m raw -a "cat /etc/examples/pkg.conf" -u deploy -b --become-method=doas puffy-1
Die /etc/pkg.conf
hab ich ebenfalls mit drei Ansible raw
Kommandos eingerichtet. Wo eigentlich nur eines nötig gewesen wäre.
ansible -i hosts -m raw -a "echo 'installpath = http://ftp.halifax.rwth-aachen.de/openbsd/%c/packages/%a/' > pkg.conf; doas mv pkg.conf /etc/; doas chown root:wheel /etc/pkg.conf" -u deploy -b --become-method=doas puffy-1
Danach konnte ich python-2.7.13
mit pkg_add
auf der APU installieren.
ansible -i hosts -m raw -a "pkg_add python-2.7.13" -u deploy -b --become-method=doas puffy-1
Als Antwort kam folgendes zurück:
puffy-1 | SUCCESS | rc=0 >> quirks-2.280 signed on 2017-02-02T14:50:17Z quirks-2.280: ok python-2.7.13:sqlite3-3.14.2: ok python-2.7.13:libiconv-1.14p3: ok python-2.7.13:gettext-0.19.8.1: ok python-2.7.13:libffi-3.2.1p2: ok python-2.7.13:bzip2-1.0.6p8: ok python-2.7.13: ok --- +python-2.7.13 ------------------- If you want to use this package as your default system python, as root create symbolic links like so (overwriting any previous default): ln -sf /usr/local/bin/python2.7 /usr/local/bin/python ln -sf /usr/local/bin/python2.7-2to3 /usr/local/bin/2to3 ln -sf /usr/local/bin/python2.7-config /usr/local/bin/python-config ln -sf /usr/local/bin/pydoc2.7 /usr/local/bin/pydoc Shared connection to 192.168.0.35 closed.
Sie zeigt, das sich Python in einem anderem, als dem von Ansible erwarteten /usr/bin/python
Pfad befindet.
Ich hab die Variable ansible_python_interpreter="/usr/local/bin/python2.7"
erst einmal in die vorhin schon erwähnte Inventory
Datei gepackt.
Ich war zu faul jetzt schon eine group_var/openbsd/main.yml
Datei an zu legen.
Jetzt kann die APU auch Ansible Module abseits von raw
verarbeiten.