raspi_setup

ansible-role-raspi-setup

Роль Ansible для базовой настройки группы хостов Raspberry Pi, предназначенная для работы с безголовыми машинами.

Когда эта роль запускается на свежей установке Raspberry Pi OS с включенным только ssh (добавьте пустой файл с именем ssh в раздел boot на SD-карте перед первым запуском!), она может использоваться для:

  • Установки hostname в соответствии с именем хоста, указанным в инвентаре Ansible или из переменной с именем local_hostname
  • Настройки различных параметров в config.txt разных Pi из переменной с именем config_settings
  • Добавления авторизованных ssh-ключей пользователю pi для входа без пароля из переменной с именем authorized_keys
  • Изменения пароля по умолчанию для пользователя pi из переменной с именем pi_password

Чтобы пропустить любой из шагов, просто оставьте соответствующую переменную неустановленной.

Я рекомендую комбинировать это с dev-sec.ssh-hardening, который ограничит доступ по ssh и запретит вход с паролем для повышения безопасности, а также внесет другие улучшения в стандартные настройки sshd.

Кроме того, вы можете использовать geerlingguy.swap, чтобы настроить файл подкачки, если это необходимо!

Пример плейбука

Основной плейбук playbook.yml

- hosts: raspis
  roles:
    # Эта роль автоматически настроит вход без пароля для заданных ключей
    # и изменит любые настройки config.txt, переданные через инвентарь хостов.
    - role: fpiesche.raspi_setup
      vars:
        # Эти значения будут являться значениями по умолчанию для всех Pi, но могут быть
        # переопределены для каждого хоста отдельно.
        authorized_keys: ["{{ lookup('file', lookup('env', 'HOME') + '/.ssh/id_rsa.pub') }}",
                          "/home/otheruser/.ssh/id_rsa.pub",
                          "ssh-rsa ..."]
        # Переменная `pi_password` должна быть хэшированным паролем.
        pi_password: "{{ raspberry | password_hash('sha512') }}"

    # РЕКОМЕНДУЕТСЯ: Эта роль ограничит доступ по ssh и запретит вход с паролем
    # и внесет другие улучшения безопасности в стандартные настройки ssh.
    # https://github.com/dev-sec/ansible-ssh-hardening
    - role: dev-sec.ssh-hardening
      become: yes
    
    # НЕОБЯЗАТЕЛЬНО: Настройте файл подкачки, используя хост-переменную `swap_megabytes`
    # https://github.com/geerlingguy/ansible-role-swap
    - role: geerlingguy.swap
      become: yes

Инвентарь hosts.yml

Вот часть файла hosts.yml, который я использую для своего кластера Docker с различными версиями Pi:

---
all:
  children:
    raspis:
      vars:
        ansible_python_interpreter: /usr/bin/python3
        ansible_user: pi
        ansible_password: raspberry
      hosts:
        pi-1-a.local:
          # Установите другой пароль для пользователя `pi` на этом Pi
          pi_password: "{{ pi1-password | password_hash('sha512') }}"
          # Все, что в разделе config_settings, будет автоматически 
          # установлено в config.txt этого Pi, и система будет перезагружена.
          config_settings:
            - name: "gpu_mem"
              value: 16
            # Настройки разгона для Raspberry Pi 1 взяты из 
            # 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
          # Это используется ролью `geerlingguy.swap` для настройки файла подкачки в 1 ГБ.
          # 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
            # Настройки разгона для Raspberry Pi 2 взяты из 
            # 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
О проекте

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

Установить
ansible-galaxy install fpiesche/ansible-role-raspi-setup
Лицензия
Unknown
Загрузки
365
Владелец