fpiesche.raspi_setup

ansible-role-raspi-setup

Raspberry Piホストのグループに対して基本的なセットアップを行うためのAnsibleロールです。ヘッドレスマシンでの使用を目的としています。

Raspberry Pi OSの新しいインストールで、SSHだけが有効になっている状態で実行すると、このロールを使用して以下のことを行うことができます(初回起動前にSDカードのbootパーティションに空のsshというファイルを追加してください!):

  • Ansibleインベントリに指定されたホスト名、またはlocal_hostnameという変数の値に合わせてhostnameを設定する
  • config_settingsという変数から、各Raspberry Piのconfig.txtにさまざまなオプションを設定する
  • authorized_keysという変数から、パスワードなしでログインするためのpiユーザーの認証済みSSHキーを追加する
  • pi_passwordという変数から、piユーザーのデフォルトパスワードを変更する

ステップをスキップしたい場合は、関連する変数を未設定のままにしておいてください。

このロールは、SSHアクセスをロックダウンし、パスワードログインを禁止するためのセキュリティ強化を行うdev-sec.ssh-hardeningロールと組み合わせることをお勧めします。また、sshdのデフォルト設定に対して他のさまざまなセキュリティ向上を行います。

さらに、必要に応じてgeerlingguy.swapを使用してスワップファイルを設定することもできます!

例のプレイブック

メインプレイブック playbook.yml

- hosts: raspis
  roles:
    # このロールは指定されたキーのためにパスワードなしのSSHを自動的に設定し、
    # ホストインベントリから渡されたconfig.txtの設定をカスタマイズします。
    - role: fpiesche.raspi_setup
      vars:
        # これらの値はすべてのRaspberry 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

以下は、私が様々なバージョンのPiのDockerクラスターに使用しているhosts.ymlの一部です。

---
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セクションの内容は自動的に
          # このPiのconfig.txtに設定され、システムはその後再起動されます。
          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
          # これはJeff Geerlingの`geerlingguy.swap`ロールに使用され、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
            # 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.raspi_setup
ライセンス
Unknown
ダウンロード
382
所有者