Ansible 自动化运维实战:从配置管理到应用部署

Ansible 是 Red Hat 维护的自动化运维工具,以简单易用著称。它无需在目标机器安装 Agent,通过 SSH 执行任务。

一、安装和基本概念

# 安装
pip install ansible

# 验证
ansible --version

核心概念:

概念 说明
Control Node 运行 Ansible 的机器
Managed Node 被管理的目标机器
Inventory 主机清单
Playbook YAML 格式的任务剧本
Module 执行特定操作的模块

二、Inventory 配置

# hosts.ini
[web]
web1.example.com
web2.example.com

[db]
db1.example.com

[all:vars]
ansible_user=deploy
ansible_python_interpreter=/usr/bin/python3

三、Playbook 示例

---
- name: Configure Web Servers
  hosts: web
  become: yes
  vars:
    nginx_port: 80

  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes

    - name: Copy Nginx config
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/sites-available/default
      notify: restart nginx

    - name: Start Nginx
      service:
        name: nginx
        state: started
        enabled: yes

  handlers:
    - name: restart nginx
      service:
        name: nginx
        state: restarted

四、Role 组织

将 Playbook 组织成可复用的 Role:

roles/
  nginx/
    tasks/main.yml
    templates/nginx.conf.j2
    vars/main.yml
    handlers/main.yml
    defaults/main.yml

五、应用场景

场景 方案
服务器初始化 安装常用软件、配置 SSH、设置时区
应用部署 从 Git 拉取代码、构建、重启服务
配置管理 管理 Nginx、MySQL、Redis 配置
安全加固 防火墙规则、Fail2ban、SSH 加固