导语

面对数十台服务器的配置管理,手动逐个登录执行命令显然不现实。Ansible 作为轻量级自动化工具,通过「剧本(Playbook)」实现批量服务器操作,无需在被控节点安装额外软件,仅凭 SSH 即可完成配置部署、应用发布与系统管理。本文带你从零搭建 Ansible 自动化流程!

一、Ansible 核心概念

  • 控制节点(Controller):安装 Ansible 的管理主机,负责执行剧本。
  • 被控节点(Managed Nodes):通过 SSH 被管理的目标服务器,无需安装 Ansible。
  • Playbook:YAML 格式的自动化脚本,定义对被控节点的操作流程。
  • Inventory:被控节点的清单,记录服务器 IP、端口、认证信息等。

二、环境搭建与安装

1. 在控制节点安装 Ansible
# Ubuntu/Debian
sudo apt install ansible
# CentOS/RHEL
sudo dnf install ansible
# macOS(Homebrew)
brew install ansible
2. 配置 SSH 无密码登录

为避免执行剧本时频繁输入密码,需在控制节点生成 SSH 密钥并分发到被控节点:

# 生成密钥对
ssh-keygen -t rsa
# 分发公钥到目标服务器(假设 IP 为 192.168.1.100)
ssh-copy-id [email protected]

三、Inventory 与 Playbook 实战

1. 编写 Inventory 文件

创建 hosts 文件定义被控节点:

# 示例:hosts 文件
[web_servers]
web1.example.com ansible_host=192.168.1.101
web2.example.com ansible_host=192.168.1.102

[db_servers]
db1.example.com ansible_host=192.168.1.103
2. 编写 Playbook 剧本

以「安装开发环境依赖」为例,创建 setup_dev_env.yml

---
- name: 配置开发环境依赖
  hosts: web_servers,db_servers  # 同时作用于 web 和 db 服务器
  become: yes  # 使用 sudo 权限
  tasks:
    - name: 安装基础工具
      apt:
        update_cache: yes
        name:
          - build-essential
          - git
          - curl
          - vim
        state: present
    
    - name: 安装 Python 3 环境
      apt:
        name:
          - python3
          - python3-pip
          - python3-venv
        state: present
    
    - name: 安装 GitHub CLI
      apt:
        name: gh
        state: present
3. 执行 Playbook
ansible-playbook -i hosts setup_dev_env.yml

执行过程中,Ansible 会显示每台服务器的任务进度,失败任务会高亮标记。

四、进阶功能:变量与模板

1. 使用变量动态配置

在 Playbook 中定义变量:

---
- name: 部署应用
  hosts: web_servers
  vars:
    app_name: myapp
    app_version: 1.0.0
  tasks:
    - name: 创建应用目录
      file:
        path: /opt/
        state: directory
2. Jinja2 模板渲染

创建配置文件模板 config.j2

app_name = 
version = 
env = 

在 Playbook 中使用模板:

- name: 复制配置文件
  template:
    src: config.j2
    dest: /etc//config.ini
  vars:
    env_type: production

五、总结

Ansible 的「无代理」设计和 YAML 剧本语法降低了自动化运维的门槛,无论是批量安装软件、部署应用还是执行系统命令,都能通过代码化的方式实现可复用、可审计的操作流程。对于运维团队或多服务器管理场景,Ansible 是提升效率、减少人为错误的必备工具。