Ansible批量初始化核心是免人工、可复用、一次写好多次执行;通过SSH连接集中下发配置,需完成控制节点安装、主机清单分组、SSH免密配置,再编写结构化Playbook覆盖主机名、DNS、镜像源、SELinux、时间同步、SSH加固等任务,并通过ansible-playbook命令执行与Git持续维护。

Ansible 实现多台服务器系统安装后的批量初始化,核心是“免人工、可复用、一次写好、多次执行”。它不依赖被控主机是否已装系统,而是在系统就绪后,通过 SSH 连接,集中下发标准化配置。整个过程无需在每台机器上重复敲命令,也不用登录跳转,真正实现“一条命令,百台同步”。
准备阶段:打通连接与清单
这是初始化的前提,必须先完成:
-
控制节点安装 Ansible:CentOS/RedHat 系统执行
yum install epel-release ansible -y;Ubuntu/Debian 执行apt install ansible -y -
配置主机清单:编辑
/etc/ansible/hosts,按逻辑分组,例如:[web]192.168.10.101192.168.10.102[db]192.168.10.201 -
建立 SSH 免密通信:在控制节点生成密钥(
ssh-keygen -t rsa),再用ssh-copy-id root@IP或 playbook 自动分发公钥。确保ansible all -m ping返回 SUCCESS
初始化任务设计:覆盖常见刚需项
典型初始化任务不是零散命令,而是结构化、幂等的 Playbook。关键任务包括:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
设置主机名:用
hostname模块,配合变量映射(如按 IP 匹配预设名称),避免 shell 脚本硬编码 -
配置 DNS 解析:用
lineinfile或blockinfile写入/etc/hosts,让各节点能互相通过主机名通信 -
替换 yum/dnf 镜像源:用
copy模块推送本地配置好的 repo 文件(如阿里云或清华源),再执行dnf makecache刷新缓存 -
关闭 SELinux 和防火墙:用
selinux模块设为disabled,用systemd模块禁用并停止firewalld或iptables -
时间同步:用
timezone设定时区,用chrony或systemd_timesyncd模块配置 NTP 服务 -
加固 SSH:修改
/etc/ssh/sshd_config(禁用密码登录、限制 root 登录、改端口等),再用systemd重启服务
编写与执行统一初始化 Playbook
把上述任务整合进一个 YAML 文件(如 init.yml),使用 gather_facts: false 加速执行(初始化阶段通常不需采集详细事实),并合理组织 vars 和 tasks:
- 变量可外置到
group_vars/web.yml或host_vars/192.168.10.101,便于不同环境差异化配置 - 每个 task 加
name描述,关键操作加when条件判断(如只对 CentOS 执行 yum 相关操作) - 执行命令:
ansible-playbook -i /etc/ansible/hosts init.yml -l web(-l 指定组,避免误操作全量)
验证与持续维护
初始化不是一劳永逸:
- 首次运行后,建议手动登录几台目标机,检查主机名、
/etc/hosts、sestatus、timedatectl status等输出是否符合预期 - 将 Playbook 纳入 Git 版本管理,每次变更留痕;配合 CI 工具(如 GitHub Actions)做语法校验和 dry-run 测试
- 后续新增服务器时,只需加入 inventory 并运行同一份 Playbook,即可自动完成全套初始化

















