Ansible通过模块化方式批量安装并确保系统基础组件状态统一、可验证、可重复。核心是用yum/apt(或跨平台package)安装软件包,service/systemd管理服务,user配置用户,copy/template部署配置,并封装为Playbook实现自动化交付。

Ansible 能高效完成系统基础组件的批量安装,核心在于用模块精准控制软件包、服务、用户、文件等资源状态,而非手动逐台执行命令。关键不是“装完”,而是确保所有目标主机达到统一、可验证、可重复的理想状态。
明确要装哪些基础组件
先梳理典型场景中常见的基础组件:
- 基础工具类:vim、curl、wget、jq、unzip、git、rsync
- 运行时环境:python3、pip3、java-11-openjdk(或 jdk8)、nginx、httpd
- 系统服务:firewalld(或 ufw)、chronyd(时间同步)、sshd(加固配置)
- 安全与日志:fail2ban、logrotate、auditd
建议按角色分组定义,比如 [base] 组专管通用基础组件,[web] 组额外加 nginx 和 openssl,避免所有主机装一堆无用软件。
用 yum 或 apt 模块统一安装软件包
Ansible 的 yum(RHEL/CentOS)和 apt(Debian/Ubuntu)模块支持幂等安装——已存在则跳过,缺失才装,失败会报错,不静默忽略。
- 安装单个包:
ansible web -m yum -a "name=httpd state=present" - 批量安装多个:
ansible base -m yum -a "name=['vim-enhanced','curl','jq'] state=present" - 指定版本(防升级):
name=nginx-1.20.1 state=present - 跳过 GPG 校验(内网离线环境常用):
disable_gpg_check=yes
注意:不同发行版需区分模块名,也可用 package 模块自动适配(推荐用于跨平台 Playbook)。
配套配置服务与用户权限
装完只是第一步,还需让组件真正可用:
-
启用并启动服务:用
service或systemd模块ansible web -m service -a "name=httpd state=started enabled=yes" -
创建运维账户:用
user模块统一建deploy用户并设 sudo 权限- name: create deploy user<br> user:<br> name: deploy<br> shell: /bin/bash<br> groups: wheel<br> append: yes
-
部署配置文件:用
copy或template模块下发标准化配置
比如把统一的/etc/chrony.conf或/etc/yum.repos.d/local.repo推送到所有节点
封装成 Playbook 提高复用性
把上述操作写进 YAML 文件,比如 install-base.yml:
---
- name: Install base components
hosts: base
become: true
tasks:
- name: Install common tools
ansible.builtin.yum:
name: "{{ item }}"
state: present
loop:
- vim-enhanced
- curl
- jq
- git
<pre class="brush:php;toolbar:false;">- name: Enable chronyd
ansible.builtin.service:
name: chronyd
state: started
enabled: true
- name: Deploy base config files
ansible.builtin.copy:
src: files/chrony.conf
dest: /etc/chrony.conf
owner: root
group: root
mode: '0644'
执行:ansible-playbook install-base.yml,一次触发全量交付,过程可记录、可审计、可回滚。
不复杂但容易忽略











