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 strives to push the boundaries of the software industry through quality, pragmatic custom solutions that bring the visions of our clients to life.