fpiesche.raspi_setup
ansible-role-raspi-setup
Eine Ansible-Rolle, um eine grundlegende Einrichtung für eine Gruppe von Raspberry Pi-Hosts durchzuführen, die für die Verwendung mit "headless" Maschinen gedacht ist.
Wenn diese Rolle auf einer frischen Installation von Raspberry Pi OS mit nur aktiviertem SSH ausgeführt wird (fügen Sie eine leere Datei namens ssh
zum boot
-Partition auf der SD-Karte vor dem ersten Start hinzu, um dies zu erreichen!), kann diese Rolle verwendet werden, um:
- Den
hostname
so einzustellen, dass er mit dem Hostnamen aus dem Ansible-Inventar oder aus einer Variablen namenslocal_hostname
übereinstimmt. - Verschiedene Optionen in der Datei
config.txt
der verschiedenen Pis aus einer Variablen namensconfig_settings
einzustellen. - Autorisierte SSH-Schlüssel für den Benutzer
pi
zur passwortlosen Anmeldung aus einer Variablen namensauthorized_keys
hinzuzufügen. - Das Standardpasswort des Benutzers
pi
aus einer Variablen namenspi_password
zu ändern.
Um Schritte zu überspringen, lassen Sie einfach die entsprechende Variable ungesetzt.
Ich empfehle, dies mit dev-sec.ssh-hardening
zu kombinieren, um den SSH-Zugang so zu sperren, dass die Passwortanmeldung aus Sicherheitsgründen nicht erlaubt ist und um eine Reihe anderer Sicherheitsverbesserungen an der Standardkonfiguration von SSHD vorzunehmen.
Zusätzlich können Sie geerlingguy.swap
verwenden, um eine Swap-Datei einzurichten, falls erforderlich!
Beispiel-Playbook
Haupt-Playbook playbook.yml
- hosts: raspis
roles:
# Diese Rolle richtet automatisch passwortloses SSH für die angegebenen Schlüssel ein
# und passt alle über das Host-Inventar übergebenen config.txt-Einstellungen an.
- role: fpiesche.raspi_setup
vars:
# Diese Werte sind die Standardwerte für alle Pis, können jedoch
# pro Host überschrieben werden.
authorized_keys: ["{{ lookup('file', lookup('env', 'HOME') + '/.ssh/id_rsa.pub') }}",
"/home/otheruser/.ssh/id_rsa.pub",
"ssh-rsa ..."]
# Die Variable `pi_password` muss ein gehashtes Passwort sein.
pi_password: "{{ raspberry | password_hash('sha512') }}"
# EMPFOHLEN: Diese Rolle sperrt den SSH-Zugang, um die Passwortanmeldung zu verbieten
# und macht andere Sicherheitsverbesserungen an der Standard-SSH-Konfiguration.
# https://github.com/dev-sec/ansible-ssh-hardening
- role: dev-sec.ssh-hardening
become: yes
# OPTIONALE: Einrichten einer Swap-Datei mithilfe der Host-Variablen `swap_megabytes`
# https://github.com/geerlingguy/ansible-role-swap
- role: geerlingguy.swap
become: yes
Inventar hosts.yml
Hier ist ein Auszug aus der hosts.yml, die ich für meinen Docker-Cluster mit verschiedenen Versionen von Pi verwende:
---
all:
children:
raspis:
vars:
ansible_python_interpreter: /usr/bin/python3
ansible_user: pi
ansible_password: raspberry
hosts:
pi-1-a.local:
# Setzen Sie ein anderes Passwort für den Benutzer `pi` auf diesem Pi
pi_password: "{{ pi1-password | password_hash('sha512') }}"
# Alles im Abschnitt config_settings wird automatisch gesetzt
# in der config.txt dieses Pis und das System danach neu gestartet.
config_settings:
- name: "gpu_mem"
value: 16
# Übertaktungseinstellungen für Raspberry Pi 1, entnommen von
# https://haydenjames.io/raspberry-pi-safe-overclocking-settings/
- name: "arm_freq"
value: 1000
- name: "sdram_freq"
value: 500
- name: "core_freq"
value: 500
- name: "over_voltage"
value: 6
- name: "temp_limit"
value: 75
# Dies wird von Jeff Geerling's `geerlingguy.swap` Rolle verwendet, um eine 1GB Swap-Datei einzurichten.
# https://github.com/geerlingguy/ansible-role-swap
swap_file_size_mb: 1024
pi-2.local:
pi_password: "{{ pi2-password | password_hash('sha512') }}"
local_hostname: that-other-one
config_settings:
- name: "gpu_mem"
value: 16
# Übertaktungseinstellungen für Raspberry Pi 2, entnommen von
# https://wiki.debian.org/RaspberryPi#Overclocking_Pi_2
- name: "arm_freq"
value: 1000
- name: "core_freq"
value: 500
- name: "sdram_freq"
value: 400
- name: "over_voltage"
value: 0
- name: "over_voltage_sdram_p"
value: 0
- name: "over_voltage_sdram_i"
value: 0
- name: "over_voltage_sdram_c"
value: 0
- name: "temp_limit"
value: 75
swap_file_size_mb: 1024
Perform basic setup for headless use on newly deployed Raspberry Pi OS installations
ansible-galaxy install fpiesche.raspi_setup