微信号:david-share

介绍:乐于分享,才有进步.

IT武林的一项绝学:Ansible

2016-09-17 20:40 魏新宇

IT的武林

如果把IT圈当成一个武林,里面有各大门派并充斥着各种武功的话,ansile绝对是一项杀伤力极强的内功。ansible本身配置和使用极为方便,并能够以此驱动其他武功,如操作系统、虚拟化、云计算、应用的部署和配置管理。接下来,我们先看一下这项神功的精妙所在。

 

IT武林的Ansible

而Ansible是什么?一句话而言:其本质是能够提供配置管理、应用部署、服务自动化的工具。这样的描述是不是太简单了?非也,我们进行展开讨论。

 

配置管理的对象通常是操作系统,谈到操作系统,Ansible管理操作系统的可以是RHEL,可以是centos,也可以是其他Linux。操作系统可以装在物理机上,可以装在虚拟机上,甚至可以装在云上。

 

其次说配置管理。对于很多IT运维老炮而言,配置管理那都是见怪不怪的了。比如,修改linux配置文件、打补丁、启动服务等都属于配置管理。大多数linux上的配置管理我们怎么做?SSH上去,敲命令行,或者实现写好一个脚本,上传到被配置的linux系统中,然后进行执行。

 

既然操作系统的配置管理是个已经存在了N年的事情,那么ansible的价值在哪?

 

首先来讲,在传统IT时代,10几台小型机、几台高端存储足以支撑中等规模的非IT企业的IT业务系统。那时候其实管理员的工作相对是小的。这点笔者在2005年做UNIX售后是深有感触的。

 

而随着X86,虚拟化的普及以及云时代的到来,以及很多应用实现了分布式,OSI(操作系统实例)数量倍增。不夸张的说,大型商业银行数据中心操作系统的数量,可能多达上万。而这些操作系统中,我相信windows应该占少数,而linux占多数。在这种情况下,系统的配置管理如何做?再挨个登录敲命令行一来太累,二来风险太大,哪天不想小心把 rm –rf ./* 的点没敲上,或是把屏幕上趴着的蚊子成了点,那是要出大事的。

 

与传统配置管理工具,如puppet相比,ansible的第一个好处是简单,不需要安装agent。Ansible也是分为管理节点和远程被管节点。那么管理节点和被管节点如何通讯?很简单,通过ssh。即在让管理节点可以无密码ssh登录被管节点即可。Ansible还有其他很多好处,比如配置简单、开销小等。


Ansible安装起来非常简单,如果是RHEL的话,一条命令足以:

#yum –y install ansible

 

而在被管理的节点上,只需安装python即可,而python,rhel是自带的。

 

谈到这里,会有读者问,如果OSI的数量太多,配置SSH的工作量也很大,其次,这种方式在企业级应用中,也存在安全风险。没有错,这个问题我也考虑过,ansible的另外一个组件帮我们解决了这个问题。

 

Ansible Tower

通过Ansible Tower来解决这个问题。Ansible Tower相当于Ansible的统一管理界面,类似虚拟化中的管理平台。它可以和AD,LDAP等认证方式做对接、通过统一图形化界面直观地看到被管系统的状态。



Ansible内功的三层心法

第一层:

利用ansible调用操作系统的一些bash命令或者执行一些shell脚本,进行一些简单的操作系统配置管理类操作,如修改配置文件、打补丁等。第一层心法修炼简单,有linux基础的同学可以直接使用。

在笔者的实验环境中,有四个虚拟机,第一个虚拟机上安装了ansible和ansible tower,是管理端。另外三个虚拟机是被管理的操作系统。四个操作系统都是RHEL7。管理节点可以无密码ssh登录被管理节点。


查看系统本地解析文件:


在/etc/ansible/hosts中还可以对不同的被管节点进行逻辑分组:



下面展示一些第一层心法的招数:

最简单的,查看三个被管系统上的时间:


下面来个稍微复杂点的,给三个被管系统安装mysql:


第二层:

通过调用playbook来进行操作。playbook说简单点就是ansible自身的脚本,而非shell。它是YAML格式的,以yml结尾。通过playbook,就可以实现一些更为复杂的操作。第二层心法要求修习者有一些简单的写脚本的能力,但不是很高。

那么问题来了,这些playbook从哪来?


两个方法:

  1. 自己进行编写。

  2. https://galaxy.ansible.com 网站有很多开源爱好者已经写好的playbook,我们拿来进行修改即可使用。


我们先来看一个简单的playbook的范例:


这个play做的事情大家应该比较容易看懂,在ansible1主机上创建davidwei用户



下面我们看看/galaxy.ansible里面的内容,登录网站,进行浏览查看。我们注意看一下分类,该网站已经根据具体的功能,对playbook进行分类。如:系统类、开发类、网络类等。


选择selinux的playbook,选择的时候,注意该playbook支持的操作系统版本:


查看该剧本安装的方式:


我们安装到实验环境上:


安装完以后,查看其主YMAL文件(tasks目录中的)


playbook根据需要进行修改即可使用。


第三层:

第三层心法,则是将ansible作为驱动,驱动更为高深的武功,如openstack,aws,cloudforms甚至应用。即实现自动部署、自动配置。这节点要求修习者有一定知识面。


将ansible tower与混合云平台对接,如Cloudforms。

在Cloudforms中添加ansible tower作为provider:


然后clourforms就可以利用ansible进行配置管理了。




总结:

ansible作为一项深奥的武功,虽然上手简单,但深入研究起来精妙无穷。例如各种模块、playbook的编写等。掌握一两种计算机语言,最终实现熟练使用ansible,并做到随心所欲的基础。







 
大卫分享 更多文章 原生KVM虚拟化方案"管理平台"配置步骤(RHV-M Appliance) 非网络专业人士再谈SDN--KVM虚拟网络的规划与设计 你见过基于纯开源的超融合(HCI)么? SDS那么火,你家有没有? 南沪艳阳谈U2L---我在金融行业座谈会上的分享
猜您喜欢 第三只眼:做好你自己就是对他人最好的交代 Java新手问题集锦 PyTips 0x0c - Python 知之深浅 大宝推荐设计师阅读书单,历史上最值得你分享的推荐干货 又一年,这 3 位前 Google 工程师就是想让 Android 和 Windows 真正的「Remix」在一起