hannseman.raspbian

ansible-raspbian

Ansible Role Travis (.org)

この役割は、適切なデフォルトで安全な基本的なRaspbian環境を設定します。

実行内容:

  • 指定されたシステムパッケージをインストールします。
  • ホスト名を設定します。
  • ロケールを設定します。
  • 書き込みが集中するディレクトリにtmpfsをマウントして、SDカードの寿命を延ばします。
  • デフォルトユーザーのパスワードを変更します。
  • デフォルトのエディタを設定します。
  • 安全なSSH設定を行います。
  • UFWを設定します。
  • /boot/config.txtを設定します。
  • raspi-configを実行します。
  • SMTP中継を通じてメールを送信するためにPostfixを設定します。
  • 自動アップグレードを有効にします。
  • Fail2banをインストールします。
  • Logwatchを設定して、週次レポートを送信します。

実行しない内容:

  • システムパッケージを更新しません。
  • apt-get updateを実行しません。事前タスクで実行してください。Example Playbookを参照。
  • 自動アップグレードが行うべきセキュリティパッチのインストールは行いません。

セットアップ

  • pip install -r requirements.txtを実行して、Pythonの要件をインストールします。
  • sudo apt-get install sshpassを実行してsshpassをインストールします。
  • Raspbian Stretch Liteを使ってSDカードをフラッシュします。
  • フラッシュしたSDカードのブートパーティションにsshという名前の空のファイルを追加します。
  • オプション: Wi-Fiを有効にするには、フラッシュしたSDカードのブートパーティションに次の内容のwpa_supplicant.confというファイルを置きます:
network={
        ssid="your ssid"
        psk="your password"
}
  • プレイブックを実行します。

インベントリ

sshpassは、デフォルトのパスワードraspberryで最初のAnsibleを実行するために必要です。その後、SSH経由のパスワード認証は無効になり、ssh_public_keysに指定された鍵での公開鍵認証が優先されます。 インベントリには以下を含める必要があります:

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

変数

# システムのホスト名を設定します
system_hostname: "raspberrypi"
# ansible_ssh_userのシステムパスワード(piとして設定する必要があります)。
# NOTE: 安全な何かに変更する必要があります。
system_ssh_user_password: "raspberry"
# 使用するパスワードソルト。
# NOTE: 安全でランダムなものに変更する必要があります。
system_ssh_user_salt: "salt"
# システムのロケール
system_locale: "en_US.UTF-8"
# システムのタイムゾーン
system_timezone: "Europe/Stockholm"
# 希望するtmpfsマウントのリストを辞書形式で設定します。
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によってインストールされるパッケージ
system_packages: []
# デフォルトエディタへのパス
system_default_editor_path: "/usr/bin/vi"

# Logwatchのキャッシュディレクトリ
logwatch_tmp_dir: /var/cache/logwatch
# Logwatchレポートを受け取るメールアドレス
logwatch_mailto: "root"
# Logwatchレポートの詳細レベル
logwatch_detail: "Low"
# Logwatchレポートを受け取る頻度を設定、週間または日次に設定可能
logwatch_interval: "weekly"

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
# 必須フィールド、これをあなたのGmailアドレスに設定
postfix_sasl_user:
# 必須フィールド、これをあなたのGmailパスワードに設定
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt

# /boot/config.txtを`{{ key }}: {{ value }}`で更新します
rpi_boot_config: {}
# raspi-configを実行 -noint do_{{ key }} {{ value }]を実行します。オプションは次の通り: 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"
# 必須フィールド、~/.authorized_keysを更新するためのssh公開鍵のリスト。
# 注意: これらの鍵の1つはAnsibleが使用する鍵でなければなりません。
ssh_public_keys: []
# SSHでホストに接続する際に表示する文字列
ssh_banner:

# UFWのルールは常にSSHを許可してAnsibleが機能するようにします
ufw_rules:
  - { rule: "allow", port: "22", proto: "tcp" }
# igmpトラフィックを許可するかどうかを設定します
ufw_allow_igmp: false

# unattended-upgradesレポートの受取人
unattended_upgrades_email_address: root
# /var/run/reboot-requiredが見つかったときに再起動すべきか?
unattended_upgrades_auto_reboot: false

# テストを実行する際に使用される内部変数 - 使用しないでください。
ansible_raspbian_testing: false

例プレイブック

- hosts: servers
  become: true
  pre_tasks:
    - name: 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
プロジェクトについて

Setup a secure basic Raspbian environment with sensible defaults.

インストール
ansible-galaxy install hannseman.raspbian
ライセンス
mit
ダウンロード
248
所有者