stackbuilders.sb-debian-base

警告: 此库已被弃用且不再维护。不会再提供任何安全补丁、功能或错误修复,保留在 GitHub 上仅用于存档目的。如果您想使用它,建议您复制此存储库并在使用前审核代码库。如需更多信息,请通过 info@stackbuilders.com 联系我们。

推荐角色:

Stack Builders - Debian 基础

构建状态 Ansible Galaxy

通用的 Debian 服务器镜像。此 Galaxy 需要 Ansible 2.7.0

支持的平台

  • Debian

    • 10 (buster)
    • 9 (stretch)
  • Ubuntu

    • 18.04 (bionic)
    • 16.04 (xenial)

重大变更:

  • 此角色中移除了 Haskell 任务,因此 install_haskell_stackinstall_haskell_dependencies 变量不再使用。

如何使用此角色

当前版本使用 Ansible 流程控制 (当:foo 已定义) 来运行不同阶段的任务,但保留了一些有用的标签,例如设置主机名或创建部署目录。

首先,确保您创建了 requirements.yml 文件并添加对该存储库的引用,如下所示:

---
- src: [email protected]:stackbuilders/sb-debian-base.git
  version: <标签、提交或分支>
  path: external-roles

之后,您需要运行以下命令:

ansible-galaxy install -r requirements.yml

创建一个剧本

创建一个剧本文件,并在角色部分设置您需要运行的任务组。作为示例,您可以使用 tests/site.yml 或下面的示例:

# site.yml
- hosts: all
  remote_user: foo
  vars:
    sb_debian_base_admin_user_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc1E ADMIN_USER_1
      - ssh-rsa AAAAB3Nzac2Yc2e ADMIN_USER_2
    sb_debian_base_deploy_user_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc1E DEPLOY_USER_1
      - ssh-rsa AAAAB3Nzac2Yc2e DEPLOY_USER_2
  roles:
    - role: sb-debian-base
      prebootstrap: yes
    - role: sb-debian-base
      bootstrap: yes
      add_remove_keys: yes
      vars:
        sb_debian_base_deploy_user: deployer
        sb_debian_base_supplementary_packages: [ "pkg-config", "traceroute" ]
        sb_debian_base_environment_variables:
          ONE: "uno"
          TWO: "dos"

您也可以运行临时任务,尽管这不是推荐的方式:

ansible-playbook -l local -i hosts site.yml -k -u root -e "prebootstrap: yes"

以如下方式运行剧本:

# 基础镜像
ansible-playbook -l local -i hosts site.yml -k -u root

# 管理员账户
ansible-playbook -l local -i hosts site.yml -u administrator

可用的任务组如下:

预引导 (prebootstrap)

此标签包含基本的设置任务,例如:

  • 添加管理员用户
    • 默认在 Debian 中为 admin,在 Ubuntu 中为 ubuntu。您可以定义 变量 {{ sb_debian_base_admin_user }}
  • 更新软件包缓存
  • 安装 sudo 包
  • 为 sudo 组允许无需密码使用 sudo
  • 为管理员用户设置授权 SSH 密钥
    • 您需要定义 {{ sb_debian_base_admin_user_authorized_keys }}

引导 (bootstrap)

此标签包含更高级的设置任务,例如:

  • 禁用 SSH 会话的密码认证
  • 禁用 root 用户的 SSH 访问
  • 设置主机名
    • 您可以定义 {{ hostname }}
  • 设置时区
    • 您可以定义 {{ sb_debian_base_ntp_timezone }}
  • 使用 systemd-timesyncd 启用 NTP
  • 确保持久存储 journald 数据
  • 升级所有软件包
  • 安装基本软件包
    • 例如:vim、tmux、htop、atop、tree、ufw、emacs、git、curl
  • 安装补充软件包 - 不仅仅是 sb_debian_base_extra_packages
  • 使用 UFW 启用防火墙
    • 打开常规端口(例如 SSH 端口、HTTP 端口;默认是 SSH)
      • 您可以定义 {{ ports }}
    • 为特定 IP 打开特定端口
      • 您可以定义 {{ port_ips }}
    • 您可以通过 sb_debian_base_firewall: no 禁用 UFW
  • 设置和更新环境变量
    • 您需要定义 {{ sb_debian_base_environment_variables }}
  • 为部署用户创建 Unix 用户和组
    • 您需要定义变量 {{ sb_debian_base_deploy_user }} (例如 deployer)
    • 可选定义变量 {{ sb_debian_base_deploy_user_group }} (例如 deployer),否则,它将与 {{ sb_debian_base_deploy_user }} 相同
  • 创建应用程序部署目录
  • 为 GitHub 的“部署密钥”添加 SSH 密钥
  • 为部署用户设置授权 SSH 密钥
    • 您需要定义 {{ sb_debian_base_deploy_user_authorized_keys }}
  • 确保 github.com 是已知主机
    • 您需要定义 {{ sb_debian_base_deploy_user }}
    • 此变量默认将 GitHub 添加为已知主机,但可以通过覆盖 {{ sb_debian_base_known_hosts }} 进行更改
  • 设置全局 bash 历史配置,格式如下: 285 Thu 08 Aug 2019 01:43:40 PM UTC some command 有关可用变量,请参见下文。

设置主机名 (set-hostname)

  • 将主机名设置为特定主机的变量
    • 您需要定义 {{ hostname }}

设置 bash 历史配置:

  • 启用/禁用历史配置 sb_debian_base_bash_history: true

  • sb_debian_base_bash_history_config:

    • 设置保存在历史缓冲区中的行数 histsize: '5000'
    • 设置保存在历史文件中的行数 histfilesize: '3000'
    • 设置每个历史命令之前附加的时间格式(请参见 man history 以获取完整选项) histtimeformat: '%c%t'

创建应用程序目录 (create-app-directory)

  • 创建应用程序部署目录
    • 当定义了 {{ sb_debian_base_deploy_user }} 时

包含在此引导任务组中的外部依赖项 (Galaxies)

  • kamaln7.swapfile(设置交换文件)
    • 您可以定义变量 {{ sb_debian_base_swap_file_size }}(例如 2048MB)
  • 安装 unattended-upgrades 仅用于安全补丁

更新授权 SSH 密钥 (add-remove-keys)

  • 更新 SSH 授权密钥:

    • 您需要定义以下包含管理员和部署用户的 SSH 公钥列表的变量:
{{ sb_debian_base_admin_user_authorized_keys }}
{{ sb_debian_base_deploy_user_authorized_keys }}

许可证

MIT,详情请见本存储库中的 LICENSE 文件。

作者信息

Justin Leitgeb,Stack Builders Inc.

安装
ansible-galaxy install stackbuilders.sb-debian-base
许可证
mit
下载
14k
拥有者
Our team pushes the boundaries of the software industry through quality, pragmatic custom solutions that bring the visions of our clients to life.