1、简介
ansible是什么?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具;其目标是:自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。
ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
- 连接插件connection plugins:负责和被监控端实现通信;
- host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
- 各种模块核心模块、command模块、自定义模块;
- 借助于插件完成记录日志邮件等功能;
- playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
运维工具常见的工作模式
- agent模式: 基于ssl实现,代理工作在被监控端,如:puppet
- agentless模式: 基于ssh服务实现工作在被监控端,监控端是ssh的客户端。
ansible工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。幂等性不会重复执行相同的指令。例如不会重复安装软件 ;期望状态只需要告诉被监控端的期望状态
2、总体架构
3、特性
- no agents:不需要在被管控主机上安装任何客户端;
- no server:无服务器端,使用时直接运行命令即可;
- modules in any languages:基于模块工作,可使用任意语言开发模块;
- yaml,not code:使用yaml语言定制剧本playbook;
- ssh by default:基于SSH工作;
- strong multi-tier solution:可实现多级指挥。
4、优点
- 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
- 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
- 使用python编写,维护更简单,ruby语法过于复杂;
- 支持sudo。
5、任务执行流程
说明:
- 以上内容大多是基于他人分享的基础上总结而来,学习借鉴之用;
- 本次安装基于 CentOS 6.4x86_64系统环境。
二、Ansible基础安装与配置
下载以下软件包准备编译安装
1、Ansible基础安装
控制服务器(Master)需要安装Python2.6/7,windows上无法使用ansible。被管理的服务器(Managed Node)需要安装Python2.4以上的版本,如果低于2.5,需要安装python-simplejson。
(1)python2.7安装
https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件
修改yum脚本,使其指向旧版本的python,已避免其无法运行
[root@DQ ~]# vim /usr/bin/yum
!/usr/bin/python --> #!/usr/bin/python2.6
(2)setuptools模块安装
https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
[root@DQ ansible]# tar xf setuptools-7.0.tar.gz -C /usr/src/
[root@DQ ansible]# cd /usr/src/setuptools-7.0/
[root@DQ setuptools-7.0]# python setup.py install
(3)pycrypto模块安装
https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
[root@DQ ansible]# tar xf pycrypto-2.6.1.tar.gz -C /usr/src/
[root@DQ