hannseman.raspbian

ansible-raspbian

Ansible 角色 Travis (.org)

此角色将设置一个带有合理默认值的安全基本 Raspbian 环境。

它将会:

  • 安装指定的系统包。
  • 配置主机名。
  • 配置区域设置。
  • 在写入密集的目录上挂载 tmpfs,以延长 SD 卡的使用寿命。
  • 更改默认用户的密码。
  • 设置默认文本编辑器。
  • 设置安全的 SSH 配置。
  • 配置 UFW(防火墙)。
  • 配置 /boot/config.txt。
  • 运行 raspi-config。
  • 配置 Postfix 通过 SMTP 中继发送电子邮件。
  • 启用无用户干预升级。
  • 安装 Fail2ban。
  • 配置 Logwatch 以发送每周报告。

它不会:

  • 更新系统包。
  • 运行 apt-get update。请在预任务中执行此操作。参见 示例剧本
  • 安装安全补丁,但无用户干预升级应该会处理这个问题。

安装设置

  • 通过运行 pip install -r requirements.txt 安装 Python 依赖。
  • 通过运行 sudo apt-get install sshpass 安装 sshpass。
  • 使用 Raspbian Stretch Lite 刷写 SD 卡。
  • 在刷写的 SD 卡的引导分区中添加一个名为 ssh 的空文件。
  • 可选:要启用 WiFi,在刷写的 SD 卡的引导分区中放置一个名为 wpa_supplicant.conf 的文件,内容如下:
network={
        ssid="您的SSID"
        psk="您的密码"
}
  • 运行剧本。

清单

首次运行 Ansible 时需要 sshpass,默认密码为 raspberry。然后将禁用基于密码的 SSH 认证,改为使用 ssh_public_keys 中指定的公钥认证。 您的清单应包含以下内容:

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

变量

# 设置系统主机名
system_hostname: "raspberrypi"
# ansible_ssh_user 的系统密码(应配置为 pi)。
# 注意:应更改为安全的密码。
system_ssh_user_password: "raspberry"
# 使用的密码盐。
# 注意:应更改为安全且随机的值。
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 公钥。
# 注意:这些密钥中需包含 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_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
拥有者