梗概

Ansible 是一个开源的自动化运维工具,主要用于环境配置、应用部署、系统管理等任务。它更像是为运维人员设计的工具,帮助他们管理多台服务器、配置应用、启动服务等。

核心特点

无代理架构

  • 通过 SSH 连接远程主机,无需在目标机器上安装客户端
  • 减少了系统资源占用和维护复杂度

声明式配置

  • 使用 YAML 格式编写 Playbook,描述期望的系统状态
  • 具有幂等性,多次执行相同结果

批量管理

  • 可同时管理数百台服务器
  • 支持按组分类管理不同类型的主机

主要应用场景

配置管理

  • 统一配置多台服务器的系统参数
  • 安装和更新软件包
  • 管理用户账户和权限

应用部署

  • 自动化应用程序的部署流程
  • 配置负载均衡和反向代理
  • 管理应用服务的启停

系统维护

  • 批量执行系统更新
  • 监控系统健康状态
  • 备份和恢复操作

与其他工具的区别

工具主要用途特点
Ansible配置管理、运维自动化无代理、YAML配置、运维友好
Kubernetes容器编排容器化应用管理、自动扩缩容
JenkinsCI/CD流水线构建、测试、部署流水线
Docker容器化应用打包、隔离运行环境

基本概念

Inventory(清单)

定义要管理的主机列表,可以按组织结构分组:

[webservers]
web1.example.com
web2.example.com
 
[databases]
db1.example.com
db2.example.com

Playbook(剧本)

用 YAML 编写的任务集合,定义在哪些主机上执行什么操作:

---
- name: 配置Web服务器
  hosts: webservers
  tasks:
    - name: 安装Nginx
      yum:
        name: nginx
        state: present
    
    - name: 启动Nginx服务
      service:
        name: nginx
        state: started

Module(模块)

执行具体任务的功能单元,如文件操作、服务管理、软件包安装等。

适用场景

Ansible 特别适合传统的运维场景和需要精细控制系统配置的环境,是 DevOps 工具链中的重要组成部分,通常与 CD 工具配合使用,实现从代码到生产环境的完整自动化流程。