fpiesche.raspi_setup

ansible-role-raspi-setup

Rola Ansible do podstawowej konfiguracji grupy urządzeń Raspberry Pi, przeznaczona do użycia z maszynami bez interfejsu graficznego.

Po uruchomieniu na nowej instalacji systemu Raspberry Pi OS, z włączonym tylko ssh (dodaj pusty plik o nazwie ssh do partycji boot na karcie SD przed pierwszym uruchomieniem!), ta rola może być używana do:

  • Ustawienia hostname zgodnie z nazwą hosta podaną w inwentarzu Ansible lub z zmiennej o nazwie local_hostname
  • Ustawienia różnych opcji w pliku config.txt różnych Pi z zmiennej o nazwie config_settings
  • Dodania autoryzowanych kluczy ssh do użytkownika pi dla logowania bez hasła z zmiennej o nazwie authorized_keys
  • Zmiana domyślnego hasła użytkownika pi z zmiennej o nazwie pi_password

Aby pominąć jakikolwiek krok, wystarczy zostawić odpowiednią zmienną niewypełnioną.

Zalecam połączenie tego z dev-sec.ssh-hardening, co zablokuje dostęp ssh na logowanie hasłem dla bezpieczeństwa oraz wprowadzi szereg innych poprawek do domyślnej konfiguracji sshd.

Dodatkowo można użyć geerlingguy.swap, aby ustawić plik wymiany, jeśli zajdzie taka potrzeba!

Przykładowy playbook

Główny playbook playbook.yml

- hosts: raspis
  roles:
    # Ta rola automatycznie skonfiguruje bezhasłowe SSH dla podanych kluczy
    # i dostosuje wszelkie ustawienia config.txt przekazane w inwentarzu hostów.
    - role: fpiesche.raspi_setup
      vars:
        # Te wartości będą domyślnymi dla wszystkich Pi, ale mogą być
        # nadpisywane na poziomie pojedynczego hosta.            
        authorized_keys: ["{{ lookup('file', lookup('env', 'HOME') + '/.ssh/id_rsa.pub') }}",
                          "/home/otheruser/.ssh/id_rsa.pub",
                          "ssh-rsa ..."]
        # Zmienna `pi_password` musi być hasłem w postaci skrótu.
        pi_password: "{{ raspberry | password_hash('sha512') }}"

    # ZALECANE: Ta rola zablokuje dostęp ssh, aby uniemożliwić logowanie hasłem
    # oraz wprowadzi inne poprawki bezpieczeństwa do domyślnej konfiguracji ssh.
    # https://github.com/dev-sec/ansible-ssh-hardening
    - role: dev-sec.ssh-hardening
      become: yes
    
    # OPCJONALNE: Ustawienie pliku wymiany przy użyciu zmiennej hosta `swap_megabytes`
    # https://github.com/geerlingguy/ansible-role-swap
    - role: geerlingguy.swap
      become: yes

Inwentarz hosts.yml

Oto fragment hosts.yml, którego używam dla mojego klastra Docker z różnymi wersjami Pi:

---
all:
  children:
    raspis:
      vars:
        ansible_python_interpreter: /usr/bin/python3
        ansible_user: pi
        ansible_password: raspberry
      hosts:
        pi-1-a.local:
          # Ustawienie innego hasła dla użytkownika `pi` na tym Pi
          pi_password: "{{ pi1-password | password_hash('sha512') }}"
          # Wszystko w sekcji config_settings będzie automatycznie ustawione
          # w pliku config.txt tego Pi, a system zostanie uruchomiony ponownie.
          config_settings:
            - name: "gpu_mem"
              value: 16
            # Ustawienia podkręcania Raspberry Pi 1 pochodzące z
            # 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
          # Jest to używane przez rolę `geerlingguy.swap` Jeffa Geerlinga do ustawienia pliku wymiany 1GB.
          # 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
            # Ustawienia podkręcania Raspberry Pi 2 pochodzące z
            # 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
O projekcie

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

Zainstaluj
ansible-galaxy install fpiesche.raspi_setup
Licencja
Unknown
Pobrania
382
Właściciel