HanXHX.debian_bootstrap
Ansible Debian/Devuan/Ubuntu/Raspbian 引导
这个角色用于引导 Debian/Devuan/Ubuntu/Raspbian 主机:
- 配置 APT(sources.list)
- 安装最小包(vim, htop...)
- 如有需要,安装 Intel/AMD 微码
- 安装和配置 NTP 守护进程(OpenNTPd 或 NTP)
- 添加组、用户并设置 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) | 实验性 | 否 |
要求
- Ansible >= 2.11
- 需要的集合: ansible.posix collection / community.general
角色变量
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,安装和配置 OpenNTPddbs_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.ymldbs_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/bashcomment
: (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_password
与update_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:
作者信息
- 推特: @hanxhx_