fpiesche.raspi_setup

ansible-role-raspi-setup

Un rôle Ansible pour effectuer une configuration de base sur un groupe d'hôtes Raspberry Pi, destiné à être utilisé avec des machines sans écran.

Lorsqu'il est exécuté sur une installation fraîche de Raspberry Pi OS avec uniquement ssh activé (ajoutez un fichier vide appelé ssh à la partition boot de la carte SD avant le premier démarrage pour faire cela !), ce rôle peut être utilisé pour :

  • Définir le hostname pour qu'il corresponde au nom d'hôte donné dans l'inventaire Ansible ou à une variable appelée local_hostname
  • Définir diverses options dans le config.txt de différents Pi à partir d'une variable appelée config_settings
  • Ajouter des clés SSH autorisées à l'utilisateur pi pour une connexion sans mot de passe à partir d'une variable appelée authorized_keys
  • Changer le mot de passe par défaut de l'utilisateur pi à partir d'une variable appelée pi_password

Pour sauter une étape, il suffit de ne pas définir la variable correspondante.

Je recommande de combiner cela avec le dev-sec.ssh-hardening, qui verrouillera l'accès ssh pour interdire la connexion par mot de passe pour des raisons de sécurité, ainsi que d'apporter une série d'autres améliorations de sécurité à la configuration par défaut de sshd.

De plus, vous pouvez utiliser le geerlingguy.swap pour configurer un fichier d'échange si nécessaire !

Exemple de playbook

Playbook principal playbook.yml

- hosts: raspis
  roles:
    # Ce rôle configurera automatiquement SSH sans mot de passe pour les clés fournies
    # et personnalisera tous les paramètres config.txt passés via l'inventaire des hôtes.
    - role: fpiesche.raspi_setup
      vars:
        # Ces valeurs seront les valeurs par défaut pour tous les Pi, mais peuvent être
        # remplacées au cas par cas.            
        authorized_keys: ["{{ lookup('file', lookup('env', 'HOME') + '/.ssh/id_rsa.pub') }}",
                          "/home/otheruser/.ssh/id_rsa.pub",
                          "ssh-rsa ..."]
        # La variable `pi_password` doit être un mot de passe haché.
        pi_password: "{{ raspberry | password_hash('sha512') }}"

    # RECOMMANDÉ : Ce rôle verrouillera l'accès ssh pour interdire la connexion par mot de passe
    # et améliorera la sécurité de la configuration ssh par défaut.
    # https://github.com/dev-sec/ansible-ssh-hardening
    - role: dev-sec.ssh-hardening
      become: yes
    
    # OPTIONNEL : Configurer un fichier d'échange à l'aide de la variable hôte `swap_megabytes`
    # https://github.com/geerlingguy/ansible-role-swap
    - role: geerlingguy.swap
      become: yes

Inventaire hosts.yml

Voici un extrait du hosts.yml que j'utilise pour mon cluster Docker avec différentes versions de Pi :

---
all:
  children:
    raspis:
      vars:
        ansible_python_interpreter: /usr/bin/python3
        ansible_user: pi
        ansible_password: raspberry
      hosts:
        pi-1-a.local:
          # Définir un mot de passe différent pour l'utilisateur `pi` sur ce Pi
          pi_password: "{{ pi1-password | password_hash('sha512') }}"
          # Tout ce qui dans la section config_settings sera automatiquement configuré
          # dans le config.txt de ce Pi et le système redémarré par la suite.
          config_settings:
            - name: "gpu_mem"
              value: 16
            # Paramètres d'overclocking du Raspberry Pi 1 pris de
            # 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
          # Ceci est utilisé par le rôle `geerlingguy.swap` de Jeff Geerling pour configurer un fichier d'échange de 1 Go.
          # 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
            # Paramètres d'overclocking du Raspberry Pi 2 pris de
            # 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
À propos du projet

Perform basic setup for headless use on newly deployed Raspberry Pi OS installations

Installer
ansible-galaxy install fpiesche.raspi_setup
Licence
Unknown
Téléchargements
382
Propriétaire