fpiesche.raspi_setup
ansible-role-raspi-setup
Un rol de Ansible para realizar la configuración básica en un grupo de hosts Raspberry Pi, destinado a usarse con máquinas sin pantalla.
Cuando se ejecuta en una instalación nueva de Raspberry Pi OS con solo ssh habilitado (¡agrega un archivo vacío llamado ssh
en la partición boot
de la tarjeta SD antes del primer arranque para hacer esto!), este rol puede usarse para:
- Establecer el
hostname
para que coincida con el nombre de host dado en el inventario de Ansible o de una variable llamadalocal_hostname
. - Configurar varias opciones en el
config.txt
de diferentes Pis desde una variable llamadaconfig_settings
. - Agregar claves ssh autorizadas al usuario
pi
para iniciar sesión sin contraseña desde una variable llamadaauthorized_keys
. - Cambiar la contraseña predeterminada del usuario
pi
desde una variable llamadapi_password
.
Para omitir cualquiera de los pasos, simplemente deja la variable relevante sin establecer.
Recomiendo combinar esto con el dev-sec.ssh-hardening
, que limitará el acceso ssh para deshabilitar el inicio de sesión por contraseña, así como realizar una serie de otras mejoras de seguridad en la configuración predeterminada de sshd.
Además, puedes usar el geerlingguy.swap
para configurar un archivo de intercambio si es necesario.
Ejemplo de playbook
Playbook principal playbook.yml
- hosts: raspis
roles:
- role: fpiesche.raspi_setup
vars:
authorized_keys: ["{{ lookup('file', lookup('env', 'HOME') + '/.ssh/id_rsa.pub') }}",
"/home/otheruser/.ssh/id_rsa.pub",
"ssh-rsa ..."]
pi_password: "{{ raspberry | password_hash('sha512') }}"
- role: dev-sec.ssh-hardening
become: yes
- role: geerlingguy.swap
become: yes
Inventario hosts.yml
Aquí hay un fragmento del hosts.yml que uso para mi clúster de Docker con varias versiones de Pi:
---
all:
children:
raspis:
vars:
ansible_python_interpreter: /usr/bin/python3
ansible_user: pi
ansible_password: raspberry
hosts:
pi-1-a.local:
pi_password: "{{ pi1-password | password_hash('sha512') }}"
config_settings:
- name: "gpu_mem"
value: 16
- 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
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
- 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