ansible/roles/base/tasks/main.yml
sascha 94c58a80ce Pi5 'butler' (arm64) als AI-Orchestrator-Host aufnehmen
- pfannkuchen.ini: neue Gruppe [ai] mit butler (10.5.85.2), child in all/backup/hawser
- docker-Rolle: arch dynamisch via 'dpkg --print-architecture' statt hardcoded amd64
  (check_mode:false, damit --check auf ARM nicht leeres arch erzeugt) -> arm64-tauglich
- base-Rolle: Raspberry Pi OS erkennen (raspi.sources) -> sources.list-Ueberschreibung
  und qemu-guest-agent auf Pi ueberspringen, damit Pi-Kernel/Firmware-Repos intakt bleiben

Erster Bare-Metal-ARM-Host der Flotte. base+docker+borg+hawser+sysctl erfolgreich
ausgerollt, Docker 29.6.0 arm64 + Hawser aktiv, raspi-Repos unberuehrt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 10:29:39 +02:00

163 lines
4.2 KiB
YAML

---
- name: Raspberry Pi OS erkennen (raspi-Repo vorhanden?)
stat:
path: /etc/apt/sources.list.d/raspi.sources
register: raspi_repo
- name: Fakt is_raspberry setzen
set_fact:
is_raspberry: "{{ raspi_repo.stat.exists }}"
- name: Hostname setzen
hostname:
name: "{{ inventory_hostname }}"
- name: /etc/hosts aktualisieren
lineinfile:
path: /etc/hosts
regexp: '^127\.0\.1\.1'
line: "127.0.1.1 {{ inventory_hostname }}.local {{ inventory_hostname }}"
- name: Prüfe ob Benutzer {{ base_user }} existiert
getent:
database: passwd
key: "{{ base_user }}"
register: base_user_check
ignore_errors: yes
- name: SSH Public Key für Benutzer {{ base_user }} hinterlegen
ansible.posix.authorized_key:
user: "{{ base_user }}"
state: present
key: "{{ vault_ssh_pubkey }}"
when: base_user_check is succeeded
- name: SSH Private Key für Benutzer {{ base_user }} deployen
copy:
content: "{{ vault_ssh_privkey }}\n"
dest: "/home/{{ base_user }}/.ssh/id_ed25519"
owner: "{{ base_user }}"
group: "{{ base_user }}"
mode: "0600"
when: base_user_check is succeeded
- name: SSH Public Key Datei für Benutzer {{ base_user }} deployen
copy:
content: "{{ vault_ssh_pubkey }}\n"
dest: "/home/{{ base_user }}/.ssh/id_ed25519.pub"
owner: "{{ base_user }}"
group: "{{ base_user }}"
mode: "0644"
when: base_user_check is succeeded
- name: SSH Key auch für root hinterlegen
ansible.posix.authorized_key:
user: root
state: present
key: "{{ vault_ssh_pubkey }}"
- name: SSH Private Key für root deployen
copy:
content: "{{ vault_ssh_privkey }}\n"
dest: /root/.ssh/id_ed25519
owner: root
group: root
mode: "0600"
- name: Standard Debian Trixie Repositories setzen (nicht auf Raspberry Pi OS)
copy:
dest: /etc/apt/sources.list
content: |
deb http://ftp.gwdg.de/debian/ trixie main non-free-firmware non-free contrib
deb-src http://ftp.gwdg.de/debian/ trixie main non-free-firmware non-free contrib
deb http://security.debian.org/debian-security trixie-security main non-free-firmware non-free contrib
deb-src http://security.debian.org/debian-security trixie-security main non-free-firmware non-free contrib
deb http://ftp.gwdg.de/debian/ trixie-updates main non-free-firmware non-free contrib
deb-src http://ftp.gwdg.de/debian/ trixie-updates main non-free-firmware non-free contrib
owner: root
group: root
mode: '0644'
register: repo_status
when: not is_raspberry
- name: Apt Cache aktualisieren (falls Repos geändert wurden)
apt:
update_cache: yes
when: repo_status.changed
- name: Installiere benötigte Basis-Pakete
apt:
name:
- curl
- gnupg
- ca-certificates
- sudo
- wget
- vim
- mc
state: present
update_cache: yes
- name: Locales-Paket sicherstellen
apt:
name: locales
state: present
- name: de_DE.UTF-8 Locale generieren
locale_gen:
name: de_DE.UTF-8
state: present
- name: Systemweite Sprache auf de_DE.UTF-8 setzen
debconf:
name: locales
question: locales/default_environment_locale
value: de_DE.UTF-8
vtype: select
- name: Locale-Datei manuell schreiben (Sicherheitsnetz)
copy:
dest: /etc/default/locale
content: |
LANG=de_DE.UTF-8
LC_ALL=de_DE.UTF-8
- name: Zeitzone auf Europe/Berlin setzen
timezone:
name: Europe/Berlin
- name: Gruppe sudo passwortloses sudo erlauben
lineinfile:
path: /etc/sudoers
state: present
regexp: '^%sudo'
line: '%sudo ALL=(ALL:ALL) NOPASSWD: ALL'
validate: '/usr/sbin/visudo -cf %s'
- name: Benutzer {{ base_user }} zu sudo Gruppe hinzufügen
user:
name: "{{ base_user }}"
groups: sudo
append: yes
when: base_user_check is succeeded
- name: Unnötige Pakete entfernen
apt:
autoremove: yes
- name: QEMU Guest Agent installieren (nur VMs, nicht Raspberry Pi)
apt:
name: qemu-guest-agent
state: present
ignore_errors: yes
when: not is_raspberry
- name: QEMU Guest Agent aktivieren (nur VMs, nicht Raspberry Pi)
service:
name: qemu-guest-agent
state: started
enabled: yes
ignore_errors: yes
when: not is_raspberry