HanXHX.debian_bootstrap

Ansible Debian/Devuan/Ubuntu/Raspbian 引导

Ansible Galaxy GitHub Workflow Status (with branch)

这个角色用于引导 Debian/Devuan/Ubuntu/Raspbian 主机:

  • 配置 APT(sources.list)
  • 安装最小包(vim, htop...)
  • 如有需要,安装 Intel/AMD 微码
  • 安装和配置 NTP 守护进程(OpenNTPdNTP
  • 添加组、用户并设置 SSH 密钥和 sudo 权限
  • 部署 root 用户的 bashrc 和 vimrc
  • 更新一些替代品
  • 配置系统:主机名、时区和区域设置
  • 如果需要,移除 systemd
  • 调整 sysctl 设置

支持的版本

操作系统 工作状态 稳定版本(支持中)
Debian Stretch (9)
Debian Buster (10)
Debian Bullseye (11)
Debian Bookworm (12)
Devuan Ascii (2)
Raspbian Stretch (9) 实验性
Raspbian Buster (10) 实验性
Raspbian Bullseye (11) 实验性
Ubuntu Bionic (18.04)
Ubuntu Focal (20.04) 实验性
Ubuntu Jammy (22.04) 实验性

要求

角色变量

APT 配置

这些变量定义了配置 APT 的主机名(正常仓库和回溯仓库):

  • dbs_apt_default_host: 仓库主机,可以用新主机替换(该角色已安装的最后一个)
  • dbs_apt_use_src: 安装 "deb-src" 仓库(默认:false)
  • dbs_apt_components: 在 sources.list 中使用的组件(默认:"main contrib non-free non-free-firmware")

角色设置

  • dbs_set_hostname: 如果为 true,改变主机名
  • dbs_clean_hosts: 如果为 true,管理 /etc/hosts 文件
  • dbs_set_locale: 如果为 true,配置区域设置
  • dbs_set_timezone: 如果为 true,设置时区
  • dbs_set_ntp: 如果为 true,安装和配置 OpenNTPd
  • dbs_set_apt: 如果为 true,配置 APT 仓库

系统配置

  • dbs_hostname: 系统主机名
  • dbs_hostname_use_strategy: 设置主机名所用的策略,检查 hostname module 中的 "use"。比如在 LXC 中遇到主机名设置失败时,可更新此变量。
  • dbs_default_locale: 默认系统区域设置
  • dbs_locales: 已安装的区域列表
  • dbs_timezone: 系统时区。如果需要 "标准" 时区,比如 UTC,必须使用前缀 "Etc/"(例: "Etc/UTC")
  • dbs_sysctl_config: 内核参数配置,参见: default/main.yml
  • dbs_use_systemd: 如果设为 false,则删除 systemd(持久性)
  • dbs_use_dotfiles: 重写 root 用户的点文件(bashrc, screenrc, vimrc)
  • dbs_uninstall_packages: 要卸载的包列表

替代选项

  • dbs_alternative_editor
  • dbs_alternative_awk

NTPd

  • dbs_ntp_hosts: NTP 服务器名称列表
  • dbs_ntp_pkg: 提供 NTP 的包:“openntpd” 或 “ntp”

  • dbs_groups: 组列表

每行包含几个键:

  • name: (M) 系统上的用户名
  • system: (O) 是/否(默认:否)
  • state: (O) 存在/不存在(默认:存在)

(M) 必须 (O) 可选

用户

  • dbs_users: 用户列表

每行包含几个键:

  • name: (M) 系统上的用户名
  • password: (O) 密码,使用散列格式(参见 ansible doc
  • clear_password: (O) 明文密码(不推荐)
  • update_password: (O) 始终 / 在创建时
  • shell: (O) 默认是 /bin/bash
  • comment: (O) 默认是空字符串
  • sudo: (O) 布尔值 (true = 可以 sudo)
  • group: (O) 主组(默认是 name,无密码)
  • groups: (O) 以逗号分隔的组列表
  • createhome: (O) 是/否
  • system: (O) 是/否(默认:否)
  • ssh_keys: (O) ssh 公钥列表
  • state: (O) 存在/不存在(默认:存在)

(M) 必须 (O) 可选

注释:

  • 如果指定了 password,则不会使用 clear_password
  • clear_passwordupdate_password = 始终(默认) 时不具备幂等性

有关更多信息,请查看 ansible user module doc

只读变量

  • dbs_packages: 要安装的包列表
  • dbs_microcode_apt_distribution: 安装微码的软件包位置
  • dbs_distro_packages: 与操作系统版本相关的特定包列表
  • dbs_is_docker: 布尔值。如果当前是 Docker 容器,则为 true

依赖

无。

示例 Playbook

- hosts: servers
  roles:
     - { role: HanXHX.debian_bootstrap }

关于 Docker

由于 Docker 的限制,以下功能已禁用:

  • 移除 systemd
  • 设置主机名
  • 配置 sysctl

如何开发和测试此角色

Vagrant 方法

安装 vagrant + virtualbox 或 docker

vagrant up debian-bullseye # 使用 virtualbox
vagrant up docker-debian-bullseye # 使用 docker

Molecule 方法

安装:

pip install molecule molecule[docker]

运行:

molecule -vv -c molecule/_shared/base.yml converge -s ubuntu-22.04

许可证

GPLv2

捐赠

如果这段代码对你有帮助,或者你在项目中使用了它,请随意请我喝一杯 :beers:

  • 比特币: 1BQwhBeszzWbUTyK4aUyq3SRg7rBSHcEQn
  • 以太坊: 0x63abe6b2648fd892816d87a31e3d9d4365a737b5
  • 莱特币: LeNDw34zQLX84VvhCGADNvHMEgb5QyFXyD
  • 门罗币: 45wbf7VdQAZS5EWUrPhen7Wo4hy7Pa7c7ZBdaWQSRowtd3CZ5vpVw5nTPphTuqVQrnYZC72FXDYyfP31uJmfSQ6qRXFy3bQ

没有加密货币?:star: 这个项目也是一种感谢的方式!:sunglasses:

作者信息

关于项目

Normalize and prepare a Debian/Devuan/Ubuntu Linux server

安装
ansible-galaxy install HanXHX.debian_bootstrap
许可证
gpl-2.0
下载
6.5k
拥有者
CEO/CTO/SRE triplestack.fr / daemonit.com