Ansible简介
ansible是一种自动化运维工具,基于paramiko模块开发,用于批量执行任务和发布工作。
Ansible特性
- 模块化:调用特定模块,完成一系列特定任务
- 有Paramiko,PyYAML,Jinja2(模板语言)
- 支持自定义模块
- 基于Python语言实现
- 部署建单,安全,被管理端无需安装agnet,只要配置满足条件的Python版本和OpenSSH(默认已安装),agentless
- 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构
- 幂等性:一个任务执行1遍和执行n遍效果是一样的,不因重复执行带来意外情况
- 无需代理不依赖PKI(无需ssl)
- 可使用任何编程语言写模块
- 较强大的多层解决方案
Ansible架构及原理
Ansible主要组成部分
- Ansible Playbook:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行。
- inventory:Ansible管理主机的清单/etc/ansible/hosts
- Modules:Ansible执行命令的功能模块,多数为核心模块,也可以自定义
- API:供第三方调用的的程序接口
Ansible 主要操作对象
- HOSTS主机
NETWORK网络设备
注意事项
- 执行Ansible的主机一般是主控端,中控,MASTER或堡垒机
- 主控端,被控端Python版本(主控端:Python2.6以上,被控端:如Python版本小于2.4需要安装python-simplejson)
- 被控端如果开启SElinux需要安装libselinx-python
Windows不能做主控端
Ansible执行过程
Ansible部署方式
GIT方式:
git clone https://github.com/ansible/ansible.git --recursive
cd ansible
source ./hacking/env-setup
pip方式:
pip3 install --upgrade pip
pip3 install ansible --upgrade
yum 方式:
yum -y install ansible
Ansible相关配置
/etc/ansible/ansible.cfg 主配置文件
/etc/ansible/hosts 主机清单
/etc/ansible/roles/ 存放角色目录
Ansible 程序
/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文件,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或roles模块的官方平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于console界面与用户交互的执行工具