hannseman.raspbian

ansible-raspbian

Ansible Role Travis (.org)

Este rol configurará un entorno básico de Raspbian seguro con configuraciones sensatas.

Hará:

  • Instalar paquetes del sistema específicos.
  • Configurar el nombre del host.
  • Configurar la región e idioma.
  • Montar tmpfs en directorios que escriben mucho para aumentar la duración de la tarjeta SD.
  • Cambiar la contraseña del usuario predeterminado.
  • Establecer el editor predeterminado.
  • Configurar SSH de forma segura.
  • Configurar UFW.
  • Configurar /boot/config.txt.
  • Ejecutar raspi-config.
  • Configurar Postfix para enviar correos electrónicos a través de un servidor SMTP.
  • Habilitar actualizaciones automáticas.
  • Instalar Fail2ban.
  • Configurar Logwatch para enviar informes semanales.

No hará:

  • Actualizar paquetes del sistema.
  • Ejecutar apt-get update. Por favor, haz esto en una tarea previa. Ver Ejemplo de Playbook.
  • Instalar parches de seguridad, pero las actualizaciones automáticas deberían encargarse de eso.

Configuración

  • Instala los requisitos de Python ejecutando pip install -r requirements.txt.
  • Instala sshpass ejecutando sudo apt-get install sshpass.
  • Graba la tarjeta SD con Raspbian Stretch Lite.
  • Agrega un archivo vacío llamado ssh en la partición de arranque de la tarjeta SD grabada.
  • Opcional: Para habilitar Wi-Fi, coloca un archivo llamado wpa_supplicant.conf en la partición de arranque de la tarjeta SD grabada con el siguiente contenido:
network={
        ssid="tu ssid"
        psk="tu contraseña"
}
  • Ejecuta el playbook.

Inventario

Se requiere sshpass para realizar la primera ejecución de Ansible con la contraseña predeterminada raspberry. La autenticación por contraseña sobre SSH se desactivará en favor de la autenticación por clave pública con las claves especificadas en ssh_public_keys. Tu inventario debe contener lo siguiente:

[all:vars]
ansible_connection=ssh
ansible_user=pi
ansible_ssh_pass=raspberry

Variables

# Establece el nombre del sistema
system_hostname: "raspberrypi"
# La contraseña del sistema para ansible_ssh_user (debe configurarse como pi).
# NOTA: Debe ser cambiada a algo seguro.
system_ssh_user_password: "raspberry"
# La sal para la contraseña a utilizar.
# NOTA: Debe ser cambiada a algo seguro y aleatorio.
system_ssh_user_salt: "salt"
# La localidad del sistema
system_locale: "en_US.UTF-8"
# La zona horaria del sistema
system_timezone: "Europe/Stockholm"
# Lista de diccionarios de montajes tmpfs deseados.
system_tmpfs_mounts:
  - { src: "/run", size: "10%", options: "nodev,noexec,nosuid" }
  - { src: "/tmp", size: "10%", options: "nodev,nosuid" }
  - { src: "/var/log", size: "10%", options: "nodev,noexec,nosuid" }
# installa paquetes listados por apt-get
system_packages: []
# Ruta al editor predeterminado
system_default_editor_path: "/usr/bin/vi"

# Directorio de caché de Logwatch
logwatch_tmp_dir: /var/cache/logwatch
# Correo que recibe los informes de Logwatch
logwatch_mailto: "root"
# Nivel de detalle del informe de Logwatch
logwatch_detail: "Low"
# Con qué frecuencia se recibe el informe de Logwatch, puede ser semanal o diario
logwatch_interval: "weekly"

postfix_hostname: "{{ ansible_hostname }}"
postfix_mailname: "{{ ansible_hostname }}"
postfix_mydestination:
  - "{{ postfix_hostname }}"
  - localdomain
  - localhost
  - localhost.localdomain
postfix_relayhost: smtp.gmail.com
postfix_relayhost_port: 587
# Campo requerido, establece esto con tu dirección de Gmail
postfix_sasl_user:
# Campo requerido, establece esto con tu contraseña de Gmail
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt

# Actualiza /boot/config.txt con `{{ key }}: {{ value }}`
rpi_boot_config: {}
# ejecuta raspi-config -noint do_{{ key }} {{ value }]. Opciones: https://github.com/raspberrypi-ui/rc_gui/blob/master/src/rc_gui.c#L23-L70
rpi_cmdline_config: {}

ssh_sshd_config: "/etc/ssh/sshd_config"
# Campo requerido, lista de claves públicas SSH para actualizar ~/.authorized_keys.
# Nota: Una de estas claves necesita ser la que Ansible está usando.
ssh_public_keys: []
# Cadena para presentar al conectarse al host por ssh
ssh_banner:

# Las reglas de UFW siempre deben permitir SSH para que Ansible funcione
ufw_rules:
  - { rule: "allow", port: "22", proto: "tcp" }
# Configura si se debe permitir tráfico igmp
ufw_allow_igmp: false

# Destinatario del informe de actualizaciones automáticas
unattended_upgrades_email_address: root
# ¿Deberíamos reiniciar cuando se encuentra /var/run/reboot-required?
unattended_upgrades_auto_reboot: false

# Variable interna utilizada al ejecutar pruebas - no se debe usar.
ansible_raspbian_testing: false

Ejemplo de Playbook

- hosts: servers
  become: true
  pre_tasks:
    - name: actualizar caché de apt
      apt:
        cache_valid_time: 600
  roles:
    - role: hannseman.raspbian
  vars:
    system_packages:
      - apt-transport-https
      - vim
    system_default_editor_path: "/usr/bin/vim.basic"
    system_ssh_user_password: hunter2
    system_ssh_user_salt: pepper
    postfix_sasl_user: [email protected]
    postfix_sasl_password: hunter2

    ssh_public_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJXTGInmtpoG9rYmT/3DpL+0o/sH2shys+NwJLo8NnCj
Acerca del proyecto

Setup a secure basic Raspbian environment with sensible defaults.

Instalar
ansible-galaxy install hannseman.raspbian
Licencia
mit
Descargas
248
Propietario