4.7 KiB
Rolle bootstrap
Ersteinrichtung (Provisioning) eines frischen Debian-Hosts. Die Rolle legt den
Admin-User an, installiert Basispakete, härtet die SSH-Konfiguration, verteilt
autorisierte SSH-Keys, konfiguriert Tastaturlayout, MOTD, Bash-Aliase und
sysctl, und bindet optional die Rollen docker und monitoring ein.
Siehe auch das Top-Level-Playbook
bootstrap.ymlsowie die Repo-README.
Voraussetzungen
- Debian-Ziel-Host
- SSH-Zugang als Benutzer, der
becomedarf (Playbook nutztuser: admin) ansible.posixCollection (fürsysctl-Modul)
Einbindung
Die Rolle wird normalerweise über das Top-Level-Playbook bootstrap.yml
aufgerufen, kann aber auch direkt per include_role/import_role eingebunden
werden:
- hosts: all
become: true
user: admin
roles:
- role: bootstrap
ansible-playbook -i inventory/dmc12.yml --vault-password-file .vault_pass bootstrap.yml
Funktionsweise
tasks/main.yml reiht die Subtasks nacheinander aus und bindet am Ende
bedarfsabhängig die Rollen docker und monitoring ein:
install-basicpackages.yml– Basispakete installierencreate-admin-user.yml– Admin-User anlegen + sudoersset-motd.yml– MOTD via fastfetch (tags: motd)set-keyboardlayout.yml– QWERTZ-Layoutinstall-openssh.yml– OpenSSH Server/Client (tags: ssh)configure-ssh.yml– sshd_config härtbar (tags: ssh)add-ssh-keys.yml– authorized_keys verteilen (tags: ssh)setup-bashrc.yml– nützliche Aliase (tags: bashrc)configure-sysctl.yml– vm.swappiness = 10 (tags: sysctl)import_role: docker(sofern nichtskip_docker)import_role: monitoring(sofern nichtskip_monitoring)
Installierte Basispakete
fastfetch, htop, curl, wget, git, sudo, console-setup,
qemu-guest-agent, cron, net-tools, tcpdump, locales-all.
SSH-Härtung
Die Vorlage templates/sshd.conf.j2 deaktiviert Root-Login und
Passwort-Authentifizierung, erlaubt ausschließlich Publickey-Auth und setzt
restriktive Forwarding-/Logging-Optionen. Nach Änderung wird der sshd via
Handler neu gestartet.
Variablen
| Variable | Typ | Default | Beschreibung |
|---|---|---|---|
admin_authorized_keys |
list | siehe defaults/ |
Liste von { key, comment }-Einträgen für admin |
admin_password |
string | siehe defaults/ |
SHA-512-Hash des Admin-Passworts |
Steuer-Variablen (keine Defaults, optional setzen)
| Variable | Typ | Default | Beschreibung |
|---|---|---|---|
skip_docker |
bool | false |
Wenn true, wird die docker-Rolle übersprungen |
skip_monitoring |
bool | false |
Wenn true, wird die monitoring-Rolle übersprungen |
ssh_service_name |
string | sshd |
Name des SSH-Service (überschrieben bspw. für ssh) |
admin_authorized_keys wird auch pro Inventory in group_vars/external.yml
überschrieben. Der Handler Restart sshd verwendet ssh_service_name, sofern
gesetzt (z. B. ssh für gitea/ipam in inventory/dmc12.yml).
Templates
| Template | Ziel |
|---|---|
sshd.conf.j2 |
/etc/ssh/sshd_config (validiert via sshd -T) |
authorized_keys.j2 |
/home/admin/.ssh/authorized_keys |
sudoers-admin.j2 |
/etc/sudoers.d/10-admin (validiert via visudo -cf) |
keyboard.j2 |
/etc/default/keyboard |
Handler
| Handler | Auslöser |
|---|---|
Restart sshd |
Änderung an sshd_config |
Reload keyboard layout |
Änderung an /etc/default/keyboard |
Tags
motd, ssh, bashrc, sysctl – ermöglichen das gezielte Re-Apply einzelner
Teile, z. B.:
ansible-playbook bootstrap.yml -i inventory/dmc12.yml -t ssh
Abhängigkeiten
docker(optional, viaimport_role)monitoring(optional, viaimport_role)
Hinweise
configure-sysctl.ymlwird auf LXC-Containern übersprungen (virtualization_type != "lxc").setup-bashrc.ymllegt Aliase für alle regulären User inkl. root an.install-openssh.ymlentfernt ggf. das Meta-Paketsshvor der Installation vonopenssh-server/openssh-client.