Ansible简介
ansible是一个非常简单的it自动化平台,使得程序和系统更易于部署。ansible本质是一个进行封装的shell,优点在于它是去中心化的工具,可以直接通过ssh远程管理主机,实现无Agent的部署。
ansible是一种由python开发的自动化运维工具,集合了众多运维工具的优点,实现了批量系统配置,批量程序部署,批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正实现批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
1.连接插件connection plugins:负责和被监控端实现通信;ansible管理端和客户端基于ssh协议通信
2.host inventory: 指定操作的主机,是一个配置文件里面定义监控的主机;提供主机管理的列表,定义管理谁
3.各种模块核心模块,commend模块,自定义模块;提供了日常模块
4.借助于插件完成记录日志邮件等功能;提供需求后续添加模块啊,邮件,日志模块。
5.playbook:剧本执行多个任务时,非必须可以让节点一次性运行多个任务。一次发布多个指令给多个客户端。
特性:
1.no agents:不需要在被管控主机上安装任何客户端;
2.no server:无服务器端,使用时直接运行命令即可;
3.modules in any languages:基于模块工作。可使用任意语言开发
4.yaml,not code: 使用语言定制剧本playbook;
5.ssh by default : 基于SSH工作;
优点:
6.轻量级,无需在客户端安装agent,更新时,只需要在操作机上进行一次更新即可
7.批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
8.适应python编写,维护更简单,ruby语法更复杂
9.支持 sudo
Ansible awx简介
Ansible AWX是商业版 Ansible Tower的开源版本,AWX提供了一个基于web的用户界面,REST API和构建在Ansible之上的任务引擎。
借助图形化的AWX,能够方便的编排部署Ansible Playbook,并集中的日志记录,审计和系统跟踪,通过REST API和CLI轻松将ansible awx嵌入现有的工具流程中。
借助ansible AWX,您可以通过可视化仪表板,基于角色的访问控制,作业计划,集成通知和图形化管理集中控制it架构。
awx功能模块:
仪表板:awx资源管理可视化界面,包括资源统计信息,过往全部作业执行情况,近期使用模板,近期作业执行情况。
凭证:定义awx在目标服务器上的操作用户,密码以及sudo控制权限、
支持两种认证方式:基于密码和基于密钥
项目:关联ansible脚本目录,定义运行脚本。
作业: 模块每一次运行视为一次作业
机构:包含一组资源,包括用户团队,清单,项目,模板等
基本流程:
创建Credentials凭证,连接远程主机时认证。
创建inventory清单,定义主机,主机组以及变量。
创建projects项目,指向playbooks文件,可选本地目录,git仓库或远程urll归档等
创建templates模板,定义jobs模板,执行playbooks任务
Ansible playbook
palybook简介
用于配置,部署,和管理被节点的剧本
通过playbook的详细描述,执行其中的一些列tasks,可以让远端主机达到预期的状态。playbook就像ansible控制器给被控节点列出的一系列 to-do-list,而且被控节点必须要完成
playbook是有一个或者多个play组成的列表。
主要功能是将预定义的一组主机装办成事先通过ansible中的task定义好的角色。 task实际是调用ansible的一个模块。将多个play组织成一个playbook中,让他们联合起来,将事先编排的机制执行预定义的动作。
简化将 就是剧本,现实生活中的演员按照剧本表演,在ansible中,这次由被控计算机表演,进行安装,部署应用,提供对外的服务等,一级组织计算机处理各种的事情。
二. Ansible playbook使用场景
执行一些简单的任务,使用ad-hoc命令可以方便的解决问题(命令行)但是有时设施太过复杂,需要大量批量的操作时候,执行的ad-hoc命令是不合适的,这时候最好使用playbook。使用playbook可以方便重复使用这些代码。可以移植到不同的机器上面,像函数一样,最大化的利用代码。
Ansible playbook格式
格式简介
由YAML语言编写
yaml格式类似于json的文件格式。yaml用于文件的配置编写,json多用于开发设计
3.2核心元素
hosts: 主机组 tasks:任务列表
variables:变量,设置方式有四种
templates: 包含了模块语法的文本文件
handlers:由特定条件触发的任务