好的,我来帮你整理一篇 《自动化运维工具——Ansible详解(一)》 的完整讲解,适合作为技术文章或学习笔记,涵盖概念、特点、安装和基本使用示例。


自动化运维工具——Ansible详解(一)

在现代 IT 运维中,服务器数量越来越多,手工操作效率低且容易出错。Ansible 作为一款开源自动化运维工具,通过简单配置即可实现批量管理、应用部署和配置管理,大大提升运维效率。


1. 什么是 Ansible

Ansible 是一款基于 Python 开发的 自动化运维工具,无需在客户端安装代理(Agent),通过 SSH 协议与被管理主机通信。
它的核心目标是 “一次配置,多台执行”,实现:

  • 批量服务器管理
  • 软件安装和升级
  • 配置文件管理
  • 自动化部署与任务调度

2. Ansible 的特点

  1. 免 Agent(Agentless)
    • 不需要在目标主机安装任何客户端,节省维护成本,只需开启 SSH。
  2. 基于 YAML 的配置
    • 使用 Playbook(YAML 文件)描述任务,结构清晰,易于阅读和维护。
  3. 模块化管理
    • Ansible 提供丰富的内置模块,如:
      • yum / apt:安装软件包
      • service:管理服务
      • copy / template:管理文件和模板
      • command / shell:执行命令
    • 还可以自定义模块,扩展功能。
  4. 可扩展性
    • 支持动态库存(Dynamic Inventory)、角色(Roles)、回调插件、策略自动化等高级特性。
  5. 跨平台支持
    • Linux/Unix 为主,也支持 Windows(通过 WinRM 协议)。

3. Ansible 架构

Ansible 架构简单,主要由三部分组成:

  1. 控制节点(Control Node)
    • 安装 Ansible 的主机,用来执行 Playbook 并控制被管理节点。
  2. 被管理节点(Managed Node)
    • 目标服务器,通过 SSH 或 WinRM 与控制节点通信。
  3. 模块和插件
    • 模块:具体任务执行单元
    • 插件:扩展功能,如日志、缓存、回调等

工作流程
控制节点 → 通过 SSH 连接被管理节点 → 执行模块任务 → 返回执行结果


4. 安装 Ansible

在 Linux 上安装

  • CentOS / RHEL
sudo yum install epel-release -y
sudo yum install ansible -y
ansible --version

  • Ubuntu / Debian
sudo apt update
sudo apt install ansible -y
ansible --version

在 macOS 上安装

brew install ansible
ansible --version


5. 基本使用示例

1)配置库存文件(Inventory)

  • 默认库存文件路径:/etc/ansible/hosts
  • 示例:
[webservers]
192.168.1.101
192.168.1.102

[dbservers]

192.168.1.201

2)测试连接

ansible all -m ping -u root

  • 输出:
192.168.1.101 | SUCCESS => {"changed": false, "ping": "pong"}

3)执行命令

ansible webservers -m shell -a "uptime" -u root

4)编写 Playbook

# deploy.yml
- hosts: webservers
  become: yes
  tasks:
    - name: 安装 Nginx
      yum:
        name: nginx
        state: present

    - name: 启动 Nginx 服务
      service:
        name: nginx
        state: started

  • 执行 Playbook:
ansible-playbook deploy.yml -u root


6. Ansible 的优势

  • 效率高:批量管理数百台服务器,减少重复操作
  • 安全可靠:无需安装 Agent,使用 SSH 加密通信
  • 易读易维护:YAML Playbook,运维流程可视化
  • 社区丰富:拥有大量模块和开源角色库(Ansible Galaxy)

总结

Ansible 是一款 轻量级、免 Agent、模块化的自动化运维工具,适合服务器配置管理、应用部署和日常运维自动化。
通过控制节点 + Inventory + Playbook,可以快速批量管理服务器,减少人为错误。