1.ansible概述和运行机制
1.1ansible概述
Ansible是Red Hat公司使用python研发的开源的自动化运维工具,类似于saltstack和Puppet这样老牌的自动化运维工具。
ansible作为一个后起之秀,在发布的短时间内迅速崛起,超越了大部分老牌的自动化运维工具,其中就包括了Saltstack和Puppet,能获得这样成绩的原因,有一个不同和优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。所以只需要被管理节点具备SSH服务以及python即可,无需任何多余操作就可实现自动化管理,而管理节点只需要安装Ansible工具,以及python,openssl即可。
总的来说:Ansible是一个部署一群远程主机的工具;Ansible通过SSH协议实现远程节点和管理节点之间的通信。理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到。Ansible是python开发的,故依赖一些python库和组件,如:paramiko,PyYaml和jinja三个关键组件;
1.2官方网站
https://www.ansible.com/
1.3Ansible 的命名由来
此名取自 Ansible 作者最喜爱的《安德的游戏》小说,而这部小说更被后人改编成电影 -《战争游戏》
1.4ansible的基本架构
ansible系统由管理节点和被管理节点组成,Ansible 在管理节点将 Ansible 模块通过SSH 协议推送到被管理端执行,执行完之后自动删除,可以使用 SVN、GIT 等来管理自定义模块及编
由上图可以看到ansible的组成是由5个部分组成的
剧本:playbooks
Ansible: ansible的核心程序
Modules:包括 Ansible 自带的核心模块及自定义模块。
Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Inventory中的主机,就可以完成管理主机。
Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。
Plugins:模块功能补充,通过插件来实现记录日志,发送邮件或其他功能。
Connectior Plugins:连接插件, ansible基于连接插件连接到各个主机上,默认是使用ssh。
Playbooks:剧本,YAML格式文件。多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能定义,即实现自动化部署文件。
Host Inventory: 记录由Ansible管理的主机信息,包括端口、密码、ip等。 [ˈɪnvəntri] 清单。
右边绿色部分是被管理的主机(虚拟机,物理机,云主机等),从以上架构图中可以看出ansible是由主机清单,playbook以及各模块插件组成。
简单的说就是,用户(管理员)通过ansible的主机清单配置或Playbook配置(一组任务),调用ansible的各种模块及参数来对清单中的主机进行统一管理。
1.5ansible任务执行方式
ansible执行自动化任务,分为两种执行方式:
1.ad-hoc:即ansible命令,命令行界面,单条命令的批量执行,称之为ad-hoc。这种方式,主要用来进行功能测试,或者是简单的应用部署