1. Devops①
  2. Devops②
  3. Devops③
  4. Devops④
  5. Devops⑤
  6. Devops⑥
  7. Devops⑦
  8. Devops⑧
  9. Devops⑨

第 6 节 · Ansible 与 Packer —— 配置管理与镜像构建实战

🧠 什么是配置管理(Configuration Management)?

配置管理是指通过代码或脚本来管理服务器的状态,比如软件安装、服务启动、配置文件变更等。

目标是:

  • 自动化系统配置
  • 多台机器保持一致状态
  • 替代 SSH 手动操作

🧰 Ansible 是什么?

Ansible 是一款开源自动化运维工具,专注于“配置管理 + 应用部署 + 自动化运维”。

特点:

  • ✅ 无 Agent:只需目标机开启 SSH 即可
  • ✅ YAML 配置,易读易写
  • ✅ 可批量控制多台主机

📄 Ansible 示例:安装 nginx

- name: 安装 nginx
hosts: web
become: true
tasks:
- name: 更新 apt 缓存
apt:
update_cache: yes

- name: 安装 nginx
apt:
name: nginx
state: present

运行方式:

ansible-playbook install-nginx.yml -i hosts

🧱 Ansible 的关键组成

元素 说明
Inventory 目标主机清单(IP、分组)
Playbook 自动化任务列表(YAML 文件)
Roles 可复用任务模块(适合大型项目)
Modules 内置功能单元(如 apt、copy、service)

📦 Packer 是什么?

Packer 是 HashiCorp 出品的镜像构建工具。

可以用它提前“装好系统 + 环境 + 应用”,生成标准镜像(AMI / Docker image / ISO)

特点:

  • 支持多平台(AWS、Docker、VMware)
  • 可与 Ansible 配合构建镜像
  • 实现“即开即用”的部署方式

🔧 示例:用 Packer + Ansible 构建 AWS AMI

{
"builders": [
{
"type": "amazon-ebs",
"region": "ap-southeast-2",
"source_ami": "ami-0abc123456789xyz",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "packer-ansible-example"
}
],
"provisioners": [
{
"type": "ansible",
"playbook_file": "install-nginx.yml"
}
]
}

命令运行:

packer build template.json

🔄 Packer vs Terraform vs Ansible

工具 职责
Terraform 构建云资源(服务器、网络)
Packer 制作系统镜像(AMI、Docker)
Ansible 配置系统状态(安装软件、修改配置)

🎯 DevOps 场景中的组合用法


下一节预告 👉 第 7 节:Monitoring & Observability —— 监控与可观测性实战指南