Ansible 介绍
2017-12-20 00:00
260 查看
摘要: ansible的简单说明和本身提倡的思想
Ansible给我们提供了一个自动化利器,还提供了一种思考方式。Ansible不是以
控制机安装ansible,可以使用pip,yum或源码安装
在目标机上加入控制机的ssh pub key,在控制机上都ssh一下,将目标机加入到known-hosts中去
直接执行ansible命令或编写剧本来执行
ansible需要使用Python相关库,如果没有安装的话还需要安装,并且需要libselinux-python库(yum安装即可)。
譬如过说要安装一个rpm包,我们可以在playbook中写一个
- name: Install package.
yum:
name: /tmp/package.rpm
state: present
性能,ansible部署速度比chef,puppet要慢一些,在大量机器上就会显现出来
成熟度,ansible界面、可用模块不如puppet成熟
chef
saltstack
Fabric
网上有很多相关的比较,各有优势,看大家的应用场景。
ansible是什么
如果我们Google一下ansible,第一条出来的就是ansible的官网,它的title是“Ansible is Simple IT Automation”,从这里我们就能了解了ansible的目标:自动化。什么的自动化呢,其实是部署自动化(infrastructure as code),将你原先一步一步使用命令转变为通过一系列的状态检查来安装一个软件,可以实现批量部署,一键部署。
为什么用ansible
这个话题我们分两方面来对比,一是有无的对比,二是不同自动化工具的对比手工作坊与ansible自动化
以前安装一个软件我们需要在控制台里一个命令一个命令来配置需要的环境,安装依赖。如果有多台的话我们需要把前面的步骤再重复一遍,有的机器上存在相关依赖,有的不存在,我们需要手动检查,费时费力还容易出错。Ansible给我们提供了一个自动化利器,还提供了一种思考方式。Ansible不是以
动作来自动化软件安装,而是使用了
状态来实现自动化。一个系统只要最终状态满足软件的条件,那么这个软件就一定是可用的,而且
状态是幂等的,而动作是有副作用的。
其他的自动化工具相比的优势
ansible优势中最重要的就是简单。ansible无需你安装客户端,只需要在一台机器上安装好ansible,配置好ssh,就可以使用了。语法也很简单,使用一系列的task来指定要做的任务,yaml格式提供了很好的缩进,一目了然。如何使用ansible
ansible使用只需3步控制机安装ansible,可以使用pip,yum或源码安装
在目标机上加入控制机的ssh pub key,在控制机上都ssh一下,将目标机加入到known-hosts中去
直接执行ansible命令或编写剧本来执行
ansible需要使用Python相关库,如果没有安装的话还需要安装,并且需要libselinux-python库(yum安装即可)。
编写剧本需要注意的事项
一定要编写可重复执行的剧本,也就是说playbook要是一系列对状态的定义,而不是一系列动作,在执行完后系统要达到什么样的状态,这样在重复执行剧本不会出什么问题。对应到开发上的定义,我们说编写的剧本执行需要具备幂等性,一次执行与多次执行结果一致。
譬如过说要安装一个rpm包,我们可以在playbook中写一个
shell: rpm -ivh a.rpm,这是可以执行的,但是不符合ansible的哲学,因为当包已安装过后,再次执行就会报错。我们需要使用ansible提供的yum来定义状态
- name: Install package.
yum:
name: /tmp/package.rpm
state: present
ansible的弊端
上面说了ansible简单、易上手,但同时我们也要了解它存在的问题才能决定是否适合我们。性能,ansible部署速度比chef,puppet要慢一些,在大量机器上就会显现出来
成熟度,ansible界面、可用模块不如puppet成熟
替代性技术
puppetchef
saltstack
Fabric
网上有很多相关的比较,各有优势,看大家的应用场景。
总结
学习一门工具不要仅仅看它的API,它本身的设计哲学更值得我们需要关注。毕竟API看过就忘,但是哲学却会影响我们一生。相关文章推荐
- Ansible的基础元素和YAML介绍
- Ansible介绍
- Ansible之YMAL语法介绍以及playbook详解:
- ansible命令介绍
- ansible配置文件介绍及命令介绍
- ansible介绍与安装
- 1-1·Ansible简介、自动化介绍
- ansible使用及YAML语法介绍
- Ansible常用模块介绍
- Ansible之YAML,Inventory(主机清单)介绍
- Ansible之 Inventory 资源清单介绍
- Ansible基础介绍汇总
- ansible命令介绍
- Ansible介绍和实践
- Ansible之roles介绍
- Ansible介绍
- Ansible命令介绍
- Ansible常用模块介绍
- ansible的playbook介绍和实战
- 自动化运维工具ansible介绍(1)