ansible介绍与安装
一、ansible简介
1、Ansible是什么
Ansible是一款自动化运维工具,它用Python写成,类似于saltstack和puppet,但是有一个不同的优点是我们不需要在节点中安装任何客户端,实现了批量系统配置、批量程序部署、批量运行命令等功能。
它使用SSH来和节点进行通信。Ansible基于Python paramiko开发,分布式,无需客户端,轻量级,配置语法使用YAML及Jinja2模板语言,更强的远程命令执行操作。
2、ansible架构图
Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。
上图为ansible的基本架构,从上图可以了解到主要模块如下:
-
核心:ansible 核心模块(Core Modules):这些都是ansible自带的模块
-
扩展模块(CustomModules):如果核心模块不足以完成某种功能,可以添加扩展模块
-
插件(Plugins):完成模块功能的补充
-
剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
-
连接插件(ConnectiorPlugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
-
主机群(Host Inventory):定义ansible管理的主机
3、ansible特点和优点
3.1 特点
-
部署简单,没有客户端,只需在主控端部署Ansible环境,被控端无需做任何操作;
-
模块化:调用特定的模块,完成特定任务;
-
默认使用SSH协议对设备进行管理;
-
主从集中化管理;
-
配置简单、功能强大、扩展性强;
-
支持API及自定义模块,可通过Python轻松扩展;
-
通过Playbooks来定制强大的配置、状态管理;
-
对云计算平台、大数据都有很好的支持;
-
具有幂等性:一个操作在一个主机上执行一遍和执行N遍的结果是一样的
3.2 优点
-
跨平台支持:Ansible 提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
-
人类可读的自动化:Ansible Playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
-
完美描述应用:可以通过 Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面。 轻松管理版本控制:Ansible
-
Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。 支持动态清单:可以从外部来源动态更新 Ansible
-
管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。 编排可与其他系统轻松集成:能够利用环境中现有的 HP 、SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到 Ansible 工作流中。
二、 安装ansible
ansible网站:https://docs.ansible.com/
安装前注意事项
-
主控端python版本需要2.6以上
-
被控端python版本小于2.4需要安装python-simplejson
-
被控端如开启SElinux需要安装libselinux-python
-
Windows不能作为主控端
通过yum方式安装ansible:
//安装epel包
[root@wjj~]# yum install epel-release
//安装ansible
[root@wjj ~]# yum -y install ansible
//查看版本号
[root@wjj ~]# ansible --version
ansible 2.9.23
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
自动化工具特性比较
名称 | Puppet | Saltstack | Ansible |
---|---|---|---|
开发语言 | Ruby | Python | Python |
客户端 | 有 | 有 | 无 |
二次开发 | 不支持 | 支持 | 支持 |
通信验证 | 是 | 是 | 是 |
加密方式 | 标准SSL协议 | ASE加密 | OpenSSH |
平台支持 | AIX,BSD,HP-UX,Linux,Mac OS X,Solaris,Windows | BSD,Linux,Mac OS X,Solaris,Windows | AIX,BSD,HP-UX,Linux,Mac OS X,Solaris |
配置文件格式 | Ruby语法格式 | YAML | YAML |
Web UI | 提供 | 提供 | 提供(商业版) |
命令执行 | 不支持(配置模块可实现) | 支持 | 支持 |