跳过介绍,转到安装步骤↓
介绍
Ansible 是一种自动化运维工具,基于 Paramiko 开发的,并且基于模块化工作,Ansible 是一种集
成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,它是基于 Python 语言,由 Paramiko 和
PyYAML 两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量
运行命令等功能。
Ansible 是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是 模块,Ansible 只是提供一种框架。
Ansible 所运行的Ansible 不需要在远程主机上安装 Client、Agents,因为它们是基于 SSH 来和远程主机通讯的。
Ansible的架构组成:
- 核心:Ansible
- 核心模块(Core Modules):这些都是Ansible 自带的模块
- 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
- 插件(Plugins):完成模块功能的补充
- 剧本(Playbooks):Ansible 的任务配置文件,将多个任务定义在剧本中,由Ansible 完成执行
- 连接插件(Connectior Plugins):Ansible 基于连接插件连接到各个主机上,
虽然 Ansible 是使用 SSH 连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
- 主机清单(Host Inventory):定义Ansible 管理的主机
Ansible 特性
- 模块化: 调用特定的模块完成特定任务,支持自定义模块,可使用任何编程语言写模块
- Paramiko( Python 对 SSH 的实现),PyYAML,Jinja2(模板语言)三个关键模块
- 基于 Python 语言实现
- 部署简单,基于 Python 和 SSH (默认已安装),agentless,无需代理不依赖 PKI( 无需 SSL )
- 安全, 基于 OpenSSH
- 幂等性: 一个任务执行 1 遍和执行 n 遍效果一样,不因重复执行带来意外情况,此特性非绝对。
(Shell 脚本想实现幂等性很困难)
- 支持 PlayBook 编排任务,YAML 格式,编排任务,支持丰富的数据结构(存在 分支,循环,判断,变量 等功能)
- 较强大的 多层解决方案 role( Role 角色管理 )
Puppet、SaltStack、Ansible工具比较
ansible安装与使用
-
安装软件包
yum -y install ansible
-
配置主机清单(最好免密)vim /etc/ansible/hosts
[groupname]
192.168.112.129
192.168.112.135
-
一些模块介绍
⭐ping模块-测试主机是否连通
- ansible [主机组] -m ping
- ansible all -m ping
⭐command模块-支持基础shell命令,不支持管道符|等复杂功能
- ansible all -m command -a "ifconfig"
⭐shell模块-支持shell命令
- ansible all -m command -a "ip a"
⭐script模块-执行shell脚本
- ansible all -m script -a a.sh
⭐cron定时任务模块-执行shell脚本
-
# 添加定时任务
ansible group1 -m cron -a 'minute=30 hour=2 weekday=2 job="date" name="backup" user=root state=present'
-
# 删除定时任务
ansible group1 -m cron -a 'minute=30 hour=2 weekday=2 job="date" name="backup" user=root state=absent'
⭐user模块-用户操作
- ansible all -m user -a 'name="test00" uid=1005'
⭐group模块-用户组操作
- ansible all -m group -a 'name=group1 gid=1006'
⭐file模块-文件操作
- ansible all -m file -a 'owner=root group=root mode=644 path=/root/dir1'
⭐hostname模块-主机名称操作
- ansible all -m hostname -a "name=node111"