好的,阿杰 😄,我帮你整理了一份 Ansible 自动化运维工具详解(一),涵盖概念、安装、核心组件、基本使用,适合入门学习。
🛠️ 自动化运维工具 —— Ansible 详解(一)
一、Ansible 简介
- Ansible 是一款基于 Python 开发的自动化运维工具。
- 特点:
- 无代理(Agentless):被控端无需安装任何软件,只需要 SSH 服务即可。
- 简单易学:使用 YAML 格式的 Playbook 描述任务,语法清晰。
- 可扩展性强:支持模块扩展、自定义模块、插件。
- 跨平台:支持 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(主机清单)
- 默认路径
/etc/ansible/hosts
- 示例:
[webservers]
192.168.1.101
192.168.1.102
[dbservers]
192.168.1.201
- 测试主机连通性:
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 | 定时任务管理 |
git | Git 仓库管理 |
六、Playbook 基础
- 创建 Playbook 文件
site.yml
:
---
- hosts: webservers
become: yes
tasks:
- name: 安装 nginx
yum:
name: nginx
state: present
- name: 启动 nginx
service:
name: nginx
state: started
- 执行 Playbook:
ansible-playbook site.yml -u root
become: yes
表示使用 sudo 提权。
七、Role(角色)初步
- 目录结构:
roles/
web/
tasks/main.yml
templates/
files/
handlers/main.yml
- 作用:
- 组织 Playbook,复用任务
- 简化大规模部署管理
阿杰,这只是 Ansible 系列教程的第一部分,后续可以深入讲:
- 高级 Playbook 编写技巧
- Role、Handler、变量与条件判断
- 动态 Inventory
- Ansible Tower / AWX 可视化管理
发表回复