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_editordbs_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_
