Ansible是近年越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。
ansible是一种自动化运维工具,基于paramiko开发的,并且基于模块化工作
Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署等多方面工作。ansible主要承担的工作有以下几种:
配置管理
服务即时开通
应用部署
流程编排
监控告警
日志记录
ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台
它是基于python语言,由Paramiko和PyYAML两个关键模块构建
集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能
ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.
ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的
常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric
Ansible发布于2012年,其作者兼创始人是Michael DeHaan。
红帽2015收购了Ansible母公司。
幂等性是什么?
也就是定义的任务已存在则不会做任何事情,意味着在同一台服务器上多次执行同一个playbook是安全的
ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台.
核心: ansible
Core Modules: ansible自带的模块
Custom Modules: 核心模块功能不足时,用户可以添加扩展模块
Plugins: 通过插件来实现记录日志,发送邮件或其他功能
Playbooks: 剧本,YAML格式文件,多个任务定义在一个文件中,
定义主机需要调用哪些模块来完成的功能
Connectior Plugins: ansible基于连接插件连接到各个主机上,默认是使用ssh
Host Inventory: (清单)记录由Ansible管理的主机信息,包括端口、密码、ip等
/etc/ansible/ansible.cfg #配置文件
/etc/ansible/hosts #主机库(host inventory
执行文件目录: /usr/bin/
/usr/bin/ansible #主程序
/usr/bin/ansible-doc #文档
/usr/bin/ansible-playbook #剧本
lib依赖库: /usr/lib/python2.7/site-packages/ansible/
help文件: /usr/lib/python2.7/site-packages/ansible
PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,
由Ansible顺序依次执行,通常是JSON格式的YML文件
INVENTORY:Ansible管理主机的清单/etc/anaible/hosts
MODULES:Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块
PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
API: 供第三方程序调用的应用程序编程接口
ANSIBLE:组合INVENTORY、 API、 MODULES、PLUGINS的绿框,
可以理解为是ansible命令工具,其为核心执行工具
1.ad-hoc模式(点对点模块)
使用单个模块,支持批量执行单条命令,相当与在bash中执行一句shell命令
2.playbook模式(剧本模式)
ansible主要的管理方式,通过多个task的集合完成一类功能,
可以理解为多个ad-hoc的配置文件
linux系统下是自带python2.X版本的,Linux的软件升级工具,红帽系的 yum,Debain/Ubuntu系的apt-get,都是基于Python。而且它们的版本要保持原始的一致,就算是升级Python版本,也要留意老版本的那些脚本还能正常使用。
daemon 英 [ˈdiːmən](守护进程)