好的,阿杰 😄,我帮你整理了一份 Ansible 自动化运维工具详解(一),涵盖概念、安装、核心组件、基本使用,适合入门学习。


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

一、Ansible 简介

  • Ansible 是一款基于 Python 开发的自动化运维工具。
  • 特点:
    1. 无代理(Agentless):被控端无需安装任何软件,只需要 SSH 服务即可。
    2. 简单易学:使用 YAML 格式的 Playbook 描述任务,语法清晰。
    3. 可扩展性强:支持模块扩展、自定义模块、插件。
    4. 跨平台:支持 Linux、Windows(通过 WinRM)等操作系统。

应用场景

  • 批量服务器管理
  • 软件安装部署
  • 配置管理
  • 任务调度与执行

二、Ansible 核心组件

组件说明
控制节点(Control Node)安装 Ansible 的主机,通过 SSH 管理被控节点
被控节点(Managed Node)需要被管理的服务器,通常只需要有 SSH 和 Python 环境
Inventory(主机清单)用来定义被控节点列表,可以是静态文件或动态脚本
Module(模块)执行具体任务,如文件操作、软件安装、用户管理
Playbook(剧本)YAML 文件,用来定义任务流程和逻辑
Task(任务)Playbook 中的最小执行单元,调用模块完成操作
Role(角色)Playbook 组织方式,可复用任务和配置,结构化管理

三、Ansible 安装

1. 在控制节点安装

a. CentOS / RHEL

sudo yum install epel-release -y
sudo yum install ansible -y

b. Ubuntu / Debian

sudo apt update
sudo apt install ansible -y

2. 检查版本

ansible --version

输出示例:

ansible 2.14.0
  config file = /etc/ansible/ansible.cfg
  python version = 3.9

四、配置 Inventory(主机清单)

  1. 默认路径 /etc/ansible/hosts
  2. 示例:
[webservers]
192.168.1.101
192.168.1.102

[dbservers]

192.168.1.201

  1. 测试主机连通性:
ansible all -m ping -u root

输出:

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

五、使用 Module 执行任务

1. 基础命令

  • 执行 shell 命令:
ansible webservers -m shell -a "uptime" -u root
  • 安装软件(以 CentOS 为例):
ansible webservers -m yum -a "name=httpd state=present" -u root
  • 创建用户:
ansible all -m user -a "name=jack state=present" -u root

2. 常用模块

模块说明
yum / apt软件包管理
service服务管理
file文件和目录操作
copy复制文件
template使用 Jinja2 模板生成文件
user用户管理
cron定时任务管理
gitGit 仓库管理

六、Playbook 基础

  1. 创建 Playbook 文件 site.yml
---
- hosts: webservers
  become: yes
  tasks:
    - name: 安装 nginx
      yum:
        name: nginx
        state: present
    - name: 启动 nginx
      service:
        name: nginx
        state: started
  1. 执行 Playbook:
ansible-playbook site.yml -u root

become: yes 表示使用 sudo 提权。


七、Role(角色)初步

  • 目录结构:
roles/
  web/
    tasks/main.yml
    templates/
    files/
    handlers/main.yml
  • 作用:
    • 组织 Playbook,复用任务
    • 简化大规模部署管理

阿杰,这只是 Ansible 系列教程的第一部分,后续可以深入讲:

  1. 高级 Playbook 编写技巧
  2. Role、Handler、变量与条件判断
  3. 动态 Inventory
  4. Ansible Tower / AWX 可视化管理