第一章ansible简介
1、ansible的起源
Ansible的初始版本是0.0.1,发布于2012年3月9日,其作者兼创始人是Michael DeHaan。Michael DeHaan曾经供职于Puppet Labs、RedHat、Michael,在配置管理和架构设计方面有丰富的经验。其在RedHat任职期间主要开发了Cobble,经历了各种系统简化、自动化基础架构操作的失败和痛苦,在尝试了Puppet、Chef、Cfengine、Capistrano、Fabric、Function、Plain SSH等各式工具后,决定自己打造一款能结合众多工具优点的自动化工具,Ansible由此诞生。
Ansible版本更新速度非常快,有时会一天推出多个Dev版本,7天推出一个稳定版本。所以使用Ansible的过程中也需多留意官网的更新。
2、ansible的介绍
ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作,Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.
ansible被定义为配置管理工具,配置管理工具通常具有以下功能:
1.确保所依赖的软件包已经被安装
2.配置文件包含正确的内容和正确的权限
3.相关服务被正确运行
常用的自动化运维工具技术特性比较:
3、Ansible的组成
Ansible主要由一下6部分组成
(1)Ansible Playbooks:任务集,编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是json格式的YML文件。
(2)Inventory:Ansible管理主机的清单。
(3)Modules:Ansible执行命令的功能模块,多数为内置的核心模块,也支持自定义
(4)Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,改功能不常用。
(5)API:供第三方程序调用的应用程序编程接口;
(6)Ansible:此处指的是组合nventory、Modules、Plugins、API的Ansible命令工具,其为核心执行工具
第二章ansible基础
1、什么是ansible
ansible是2013年推出的一款IT自劢化和DevOps软 件,2015年被RedHat收购。是基亍Python研发, 糅合很多老运维工具的优点,实现了批量操作系统配 置,批量程序部署,批量运行命令等功能
ansible可以实现:
自劢化部署APP、自劢化管理配置项、自劢化持续交付、自劢化(AWS)于服务管理
2、ansible优点
只需要SSH和Python即可使用
无客户端
ansible功能强大,模块丰富
上手容易,门槛低
基亍Python开发,做二次开发更容易
使用公司比较多,社区活跃
3、ansible特性
模块化设计,调用特定的模块完成特定任务
基于Python语言实现
Paramiko、PyYAML (半结构化诧言)
Jinja2
其模块支持JSON等标准输出格式,可以采用任何编 程语言重写
部署简单
主从模式工作
支持自定义模块
支持playbook
易亍使用
支持多层部署
支持异构IT环境
4、ansible工作流程
使用Ansible或Ansible-playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或palybook后,Ansible会遵循预先编排的规则将Playbooks逐条拆解为Play,再将paly组织成Ansible可识别的任务(Task),随后调用任务涉及的所有模块(modules)和插件(plugins),根据Inventory中定义的主机列表通过SSH将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果是临时文件,则执行完毕后自动删除。
ansible大体执行过程
5、ansible安装
软件依赖关系
(1)对管理主机
要求Python 2.6版本以上
ansible 使用以下模块,都需要安装
paramiko、PyYAML、Jinja2、httplib2、six
(2)对于被托管主机
<1>ansible默认通过SSH协议管理机器
<2>被管理主机要开吭ssh服务,允许ansible主机登彔
<3>在托管节点上也需要安装Python2.5以上的版本,如果托管节点上开了SElinux,需要安装libselinux-python
ansible源码安装
wget http://releases.ansible.com/ansible/ansible-latest.tar.gz
#下载ansible源码包不同版本地址不一样
apt-get install gcc python-pip python-dev libffi-dev sshpass
#源码编译器需要安装以下包才能顺利编译
pip install paramiko PyYAML Jinja2 httplib2 six #安装ansible的依赖
tar -xf ansible-latest.tar.gz # 解压缩
cd ansible-2.9.9/ #切到ansible安装目录
python setup.py build
python setup.py install #编译安装
mkdir /etc/ansible #创建ansible目录
cp ansible-2.9.9/examples/* /etc/ansible/ #把ansible配置文件复制到ansible目录下
Ansible的apt安装
pip install paramiko PyYAML Jinja2 httplib2 six #安装ansible的依赖
apt install -y ansible #安装ansible
6、ansible配置文件
配置文件: /