常用的自动化运维工具
- Ansible:python,Agentless,中小型应用环境
- Saltsack:python,一般需部署agent,执行效率更高
- Puppet:ruby,功能强大,配置复杂,重型,适合大型环境
- Fabric:python,agentless
- Chef:ruby,国内应用少
- Cfengine等等
自动化运维场景
- 文件传输
- 应用部署
- 配置管理
- 任务流编排
Ansible特性
- 模块化:调用特定的模块,完成特定任务
- Paramiko(python对ssh的实现),PyYAML,Jinja2(模块语言)三个关键模板
- 支持自定义模块,可使用任何编程语言写模块
- 基于python语言实现
- 部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖PKI(无需ssl)
- 安全,基于OpenSSH
- 冥等性:一个任务执行一遍和n遍效果一样,不因重复执行带来意外情况
- 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构
Ansible架构
Ansible组成
组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具
- INVENTORY:Ansible管理主机的清单/etc/ansible/hosts
- MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可以自定义
- PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过来插件等,该功能不常用
- API:供第三方程序调用的应用程序编程端口
Ansible命令执行来源
- USER普通用户,即SYSTEM ADMINISTARTOR
- PLAYBOOKS:任务剧本(任务集),编排自定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式YML文件
- CMDB(配置管理数据库)API调用
- PUBLIC/PRIVATE CLOUD API调用
- USER—Ansible Playbook—Ansible
注意事项
- 执行ansible的主机一般称为主控端,中控,master或堡垒机
- 主控端python版本需要2.6或以上
- 被控端python版本小于2.4需要安装python-simplejson
- 被控端如开启selinux需要安装libselinux-python
- Windows不能作为主控端
Ansible的安装
Ansible的安装方式有很多种
- EPEL源的rpm包安装:yum install -y epel-release
yum install -y ansible - 编程安装yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
tar xf ansible-1.5.4.tar .gz
cd ansible-1.5.4
python setup.py build
python setup.py install
mkdir /etc/ansible
cp -r examles/* /etc/ansible - pip安装pip是安装python包的管理器,类似yum
yum install python-pip python-devel
yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel
pip install --upgrade pip
pip install ansible –upgrade - 确认安装
ansible --version