hannseman.raspbian

ansible-raspbian

Rôle Ansible Travis (.org)

Ce rôle va configurer un environnement Raspbian de base sécurisé avec des paramètres par défaut sensés.

Il fera :

  • Installer les paquets système spécifiés.
  • Configurer le nom d'hôte.
  • Configurer la langue.
  • Monter tmpfs sur les répertoires à écriture intensive pour augmenter la durée de vie de la carte SD.
  • Changer le mot de passe de l'utilisateur par défaut.
  • Définir l'éditeur par défaut.
  • Configurer SSH de manière sécurisée.
  • Configurer UFW.
  • Configurer /boot/config.txt.
  • Exécuter raspi-config.
  • Configurer Postfix pour envoyer des emails via un relais SMTP.
  • Activer les mises à jour automatiques.
  • Installer Fail2ban.
  • Configurer Logwatch pour envoyer des rapports hebdomadaires.

Il ne fera pas :

  • Mettre à jour les paquets système.
  • Exécuter apt-get update. Veuillez le faire dans une pré-tâche. Voir Exemple de Playbook.
  • Installer des correctifs de sécurité, mais les mises à jour automatiques devraient s'en charger.

Installation

  • Installez les dépendances Python en exécutant pip install -r requirements.txt.
  • Installez sshpass en exécutant sudo apt-get install sshpass.
  • Flashez la carte SD avec Raspbian Stretch Lite.
  • Ajoutez un fichier vide nommé ssh dans la partition de démarrage de la carte SD flashée.
  • Optionnel : Pour activer le Wi-Fi, placez un fichier nommé wpa_supplicant.conf dans la partition de démarrage de la carte SD flashée avec le contenu suivant :
réseau={
        ssid="votre ssid"
        psk="votre mot de passe"
}
  • Exécutez le playbook.

Inventaire

sshpass est nécessaire pour effectuer le premier lancement d'Ansible avec le mot de passe par défaut raspberry. L'authentification par mot de passe via SSH sera alors désactivée au profit de l'authentification par clé publique avec les clés spécifiées dans ssh_public_keys. Votre inventaire doit contenir les éléments suivants :

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

Variables

# Définit le nom d'hôte du système
system_hostname: "raspberrypi"
# Le mot de passe du système pour ansible_ssh_user (devrait être configuré comme pi).
# REMARQUE : Doit être changé pour quelque chose de sécurisé.
system_ssh_user_password: "raspberry"
# Le sel de mot de passe à utiliser.
# REMARQUE : Doit être changé pour quelque chose de sécurisé et aléatoire.
system_ssh_user_salt: "salt"
# La langue du système
system_locale: "en_US.UTF-8"
# Le fuseau horaire du système
system_timezone: "Europe/Stockholm"
# Liste des montages tmpfs souhaités.
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" }
# apt-get installe les paquets listés
system_packages: []
# Chemin vers l'éditeur par défaut
system_default_editor_path: "/usr/bin/vi"

# Répertoire cache de Logwatch
logwatch_tmp_dir: /var/cache/logwatch
# Email qui reçoit les rapports Logwatch
logwatch_mailto: "root"
# Niveau de détail du rapport Logwatch
logwatch_detail: "Faible"
# À quelle fréquence recevoir le rapport Logwatch, peut être défini sur hebdomadaire ou quotidien
logwatch_interval: "hebdomadaire"

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
# Champ requis, définissez ceci avec votre adresse Gmail
postfix_sasl_user:
# Champ requis, définissez ceci avec votre mot de passe Gmail
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt

# Met à jour /boot/config.txt avec `{{ key }}: {{ value }}`
rpi_boot_config: {}
# exécute raspi-config -noint do_{{ key }} {{ value }]. Options : 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"
# Champ requis, liste des clés publiques ssh à mettre à jour dans ~/.authorized_keys.
# Remarque : L'une de ces clés doit être celle que utilise Ansible.
ssh_public_keys: []
# Chaîne à présenter lors de la connexion à l'hôte via ssh
ssh_banner:

# Les règles UFW doivent toujours autoriser SSH pour que Ansible fonctionne
ufw_rules:
  - { rule: "allow", port: "22", proto: "tcp" }
# Configure si le trafic igmp doit être autorisé
ufw_allow_igmp: false

# Destinataire du rapport des mises à jour automatiques
unattended_upgrades_email_address: root
# Devons-nous redémarrer lorsque /var/run/reboot-required est trouvé ?
unattended_upgrades_auto_reboot: false

# Variable interne utilisée lors de l'exécution des tests - ne doit pas être utilisée.
ansible_raspbian_testing: false

Exemple de Playbook

- hosts: servers
  become: true
  pre_tasks:
    - name: mise à jour du cache 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
À propos du projet

Setup a secure basic Raspbian environment with sensible defaults.

Installer
ansible-galaxy install hannseman.raspbian
Licence
mit
Téléchargements
248
Propriétaire