运维自动化工具Ansible
[TOC] 一、Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事。 1、Ansible特点 Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次开发相对比较容易; Ansible丰富的内置模块,几乎可以满足一切要求; 管理模式非常简单,一条命令可以影响上千台主机; 无客户端模式,底层通过SSH通信; Ansible发布后,也陆续被AWS、Google Cloud Platform、Microsoft Azure、Cisco、HP、VMware、Twitter等大公司接纳并投入使用; 二、Ansible的角色 使用者:如何使用Ansible实现自动化运维? Ansible工具集:Ansible可以实现的功能? 作用对象:Ansible可以影响哪些主机? 1、使用者 如下图所示:Ansible使用者可以采用多种方式和Ansible交互,图中展示了四种方式: CMDB:CMDB存储和管理者企业IT架构中的各项配置信息,是构建ITIL项目的核心工具,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达到的目标; PUBLIC/PRIVATE方式:Ansible除了丰富的内置模块外,同时还提供丰富的API语言接口,如PHP、Python、PERL等多种流行语言,基于PUBLIC/PRIVATE,Ansible以API调用的方式运行; Ad-Hoc命令集:Users直接通过Ad-Hoc命令集调用Ansible工具集来完成任务; Playbooks:Users预先编写好Ansible Playbooks,通过执行 Playbooks中预先编排好的任务集,按序执行任务; 2、Ansible工具集 Ansible工具集包含Inventory、Modules、Plugins和API。其中: Inventory:用来管理设备列表,可以通过分组实现,对组的调用直接影响组内的所有主机; Modules:是各种执行模块,几乎所有的管理任务都是通过模块执行的; Plugins:提供了各种附加功能; API:为编程人员提供一个接口,可以基于此做Ansible的二次开发; 具体表现如下: Ansible Playbooks:任务脚本,编排定义Ansible任务及的配置文件,由Ansible按序依次执行,通常是JSON格式的YML文件; Inventory:Ansible管理主机清单; Modules:Ansible执行命令功能模块,多数为内置的核心模块,也可自定义; Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不太常用; API:供第三方程序调用的应用程序编程接口; Ansible:该部分图中表现得不太明显,组合Inventory、API、Modules、Plugins可以理解为是Ansible命令工具,其为核心执行工具; 3、作用对象 Ansible的作用对象不仅仅是Linux和非Linux操作系统的主机,也可以作用于各类PUBLIC/PRIVATE、商业和非商业设备的网络设施。 使用者使用Ansible或Ansible-Playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或Playbooks后,Ansible会遵循预选安排的规则将Playbooks逐步拆解为Play,再将Play组织成Ansible可以识别的任务,随后调用任务涉及的所有模块和插件,根据Inventory中定义的主机列表通过SSH将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果是临时文件则执行完毕后自动删除。 三、Ansible的配置 1、Ansible安装 Ansible的安装部署非常简单,以RPM安装为例,其依赖软件只有Python和SSH,且系统默认均已安装。Ansible的管理端只能是Linux,如Redhat、Debian、Centos。 1)通过YUM安装Ansible 可以自行从互联网上直接下载Ansible所需软件包 [root@centos01 ~]# cd /mnt/ansiblerepo/ansiblerepo/repodata/ [root@centos01 ansiblerepo]# vim /etc/yum.repos.d/local.repo [local] name=centos baseurl=file:///mnt/ansiblerepo/ansiblerepo <!--修改yum路径--> enabled=1 gpgcheck=0 [root@centos01 ~]# yum -y install ansible <!--安装Ansible自动化运维工具--> 2)验证安装结果 [root@centos01 ~]# ansible --version <!--如果命令可以正常执行,则表示Ansible工具安装成功--> ansible 2.3.1.0 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides python version = 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] 3)创建SSH免交互登录 Ansible通过SSH对设备进行管理,而SSH包含两种认证方式:一种是通过密码认证,另一种是通过密钥对验证。前者必须和系统交互,而后者是免交互登录。如果希望通过Ansible自动管理设备,应该配置为免交互登录被管理设备。 ...