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
hostnameso einzustellen, dass er mit dem Hostnamen aus dem Ansible-Inventar oder aus einer Variablen namenslocal_hostnameübereinstimmt. - Verschiedene Optionen in der Datei
config.txtder verschiedenen Pis aus einer Variablen namensconfig_settingseinzustellen. - Autorisierte SSH-Schlüssel für den Benutzer
pizur passwortlosen Anmeldung aus einer Variablen namensauthorized_keyshinzuzufügen. - Das Standardpasswort des Benutzers
piaus einer Variablen namenspi_passwordzu ä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