added readmes (#1)
Co-authored-by: DerLinkman <derlinkman@gmail.com> Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
# 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.yml` sowie die
|
||||
> [Repo-README](../../README.md).
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Debian-Ziel-Host
|
||||
- SSH-Zugang als Benutzer, der `become` darf (Playbook nutzt `user: admin`)
|
||||
- `ansible.posix` Collection (für `sysctl`-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:
|
||||
|
||||
```yaml
|
||||
- hosts: all
|
||||
become: true
|
||||
user: admin
|
||||
roles:
|
||||
- role: bootstrap
|
||||
```
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
1. `install-basicpackages.yml` – Basispakete installieren
|
||||
2. `create-admin-user.yml` – Admin-User anlegen + sudoers
|
||||
3. `set-motd.yml` – MOTD via fastfetch (`tags: motd`)
|
||||
4. `set-keyboardlayout.yml` – QWERTZ-Layout
|
||||
5. `install-openssh.yml` – OpenSSH Server/Client (`tags: ssh`)
|
||||
6. `configure-ssh.yml` – sshd_config härtbar (`tags: ssh`)
|
||||
7. `add-ssh-keys.yml` – authorized_keys verteilen (`tags: ssh`)
|
||||
8. `setup-bashrc.yml` – nützliche Aliase (`tags: bashrc`)
|
||||
9. `configure-sysctl.yml` – vm.swappiness = 10 (`tags: sysctl`)
|
||||
10. `import_role: docker` (sofern nicht `skip_docker`)
|
||||
11. `import_role: monitoring` (sofern nicht `skip_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.:
|
||||
|
||||
```bash
|
||||
ansible-playbook bootstrap.yml -i inventory/dmc12.yml -t ssh
|
||||
```
|
||||
|
||||
## Abhängigkeiten
|
||||
|
||||
- `docker` (optional, via `import_role`)
|
||||
- `monitoring` (optional, via `import_role`)
|
||||
|
||||
## Hinweise
|
||||
|
||||
- `configure-sysctl.yml` wird auf LXC-Containern übersprungen
|
||||
(`virtualization_type != "lxc"`).
|
||||
- `setup-bashrc.yml` legt Aliase für alle regulären User inkl. root an.
|
||||
- `install-openssh.yml` entfernt ggf. das Meta-Paket `ssh` vor der
|
||||
Installation von `openssh-server`/`openssh-client`.
|
||||
Reference in New Issue
Block a user