Ansible 是一款基于 Python 开发的开源自动化运维工具,主要用于实现服务器配置管理、应用部署、任务自动化执行等功能。它通过 简单的 YAML 脚本(Playbook) 定义任务,结合 SSH 协议 对远程主机进行管理,无需在被控节点安装额外代理程序,具有轻量、易上手、模块化等特点。
- 优势:
- 无代理架构,远程主机无需安装代理,只需在控制主机上部署;
- YAML 语法简洁,易读易维护;
- 社区活跃,模块丰富(支持云计算、容器化等新兴技术)。
一、Ansible 核心概念与组件
- Modules(模块)
- 是 Ansible 的执行单元,封装了具体操作(如文件管理、系统配置、服务控制等)。
- 分为内置模块(如
shell、copy、yum)和自定义模块,通过 SSH 推送至被管理节点执行。 - 如:
selinux模块用于配置 SELinux 模式,copy模块用于文件拷贝。
常用模块:
| 模块名称 | 功能描述 | 示例代码 |
|---|---|---|
| command | 执行 shell 命令(不支持 $ 符号) | ansible all -m command -a “date” |
| shell | 执行 shell 命令(支持脚本) | ansible all -m shell -a “sh /script.sh” |
| copy | 复制文件到远程主机 | copy: src=/local/file dest=/remote/file |
| yum/apt | 软件包管理 | yum: name=nginx state=latest |
| service | 管理系统服务 | service: name=nginx state=restarted |
- Inventory(主机清单)
- 定义被管理主机的分组、IP/域名、连接参数(如端口、用户、密码)。
- 默认路径:
/etc/ansible/hosts,支持分组嵌套和变量继承。 - 格式示例:
#可以按照范围指定主机,一组相似的hostname []是匹配
[webservers]
www[01:50].example.com # 批量定义主机
[dbservers]
db-[a:f].example.com # 范围匹配
- Playbook(剧本)
- 自动化任务的脚本,以 YAML 格式定义任务流程,支持变量、条件判断和循环。
- 示例:
- hosts: webservers
tasks:
- name: 安装 Nginx
yum: name=nginx state=present
- name: 启动服务
service: name=nginx state=started
- Roles(角色)
- 用于组织和复用 Playbook,将任务按功能拆分为独立目录(如
nginx角色包含安装、配置、启动任务)。
- 用于组织和复用 Playbook,将任务按功能拆分为独立目录(如
- 目录结构:

5540

被折叠的 条评论
为什么被折叠?



