Ansible学习手记一

Ansible学习手记一

Ansible简介

​ Ansible是一个运维工具,做运维的朋友无人不知。在架构上Ansible可以通过以一个主机为中心同时对多个应用服务器做配置、部署、命令执行等操作,大大降低了运维人员的操作。

​ 同时Ansible的有点还在于跨平台支持,提供linux,Windows,unix多个平台的运维支持。对于比较复杂的运维操作还提供了playbook剧本设计功能,将运维操作以描述性文本编写好后执行。从而减少了人为操作所带来的错误。

学习前准备

​ 既然ansible是一款简单的批量运维工具,那么我们在学习前就需要准备好我们学习用的基础环境。我们假设我们有两台运维服务器需要日常运维,并且我们还有一台空闲的服务器刚好用来安装ansible来批量运维我们的服务器。

1. 我在自己电脑上事先准备了3台虚拟机。配置都保持在2核2G50G盘即可。
2. 取其中一台,并将ip固定为192.168.204.128。这台机器准备作为安装ansible的主机使用。
3. 取另外两台,并将ip固定为192.168.204.129、192.168.204.130作为运维服务器使用。
4. 将192.168.204.129服务器与ansible主机(192.168.204.128),做互信,报证两台服务器间互信正常。(至于两台服务器间如何配置互信,请移步baidu.com)

Ansible安装

  1. Ansible有多种安装方式,这里ansible使用最简单的安装方式 yum安装。

  2. 安装ansible之前需要先安装epel源,根据安装主机的版本不同安装源也不同,根据自己的主机版本选择。如果主机版本为centos7则可直接使用如下命令即可。

     yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    
    1. 将epel源安装完毕后,可以直接安装ansible了。这里开始自动安装ansible,我们在192.168.204.128主机上直接运行如下命令
    yum install ansible -y
    
    1. 安装过程中看到如下图的提示则表示Ansible已安装成功。
      在这里插入图片描述

    2. 安装ansible完毕后,在/etc/ansible目录下会出现如下文件。

    ansible.cfg : 这里是ansible的配置文件

    hosts : ansible管理的主机清单都在这里配置

    roles : 如果我们管理目标主机有很复杂的逻辑时就需要用到roles了,这里先说明一下他是存放角色的目录

    这里面每个文件都会有它自己的作用,具体我们之后会在使用的时候一一讲解。
    在这里插入图片描述

  3. 验证ansible是否安装成功

    使用 ansible --version 命令即可查看ansible的安装版本,如下图所示

    ansible --version
    

    在这里插入图片描述

Ansible之 “Hello World !!”

  1. 在我们写第一个测试例子前,我们应该先看一下ansible的基本语法。

    使用命令 ansible --help 查看ansible的帮助文档

    ansible --help
    

    在这里插入图片描述

    如图我们先关注下-m这个参数,这个参数就是用来指定ansible的执行模块的。那么模块有是什么呢?

    实际上ansible本身是没有批量部署的功能的,正在实际意义上执行部署操作的是它的模块。ansible只是提供一个架子,而模块就类似于插件,当需要不同的功能的时候我们只需要选择合适的插件就可以了。

  2. 如何使用最简单的模块,完成主机对其他服务器的一次批量操作。

    前面我们通过准备工作,准备了三台虚拟机作为我们学习用的机器。192.168.204.128作为我们安装ansible的主机使用了。还有192.168.204.129、192.168.204.130两台机器我们可以作为测试用客户机使用。以下我们统一简称为ansible主机、129机器、130机器。

    我们现在需要使用ansible主机来首次连通以下其他两台机器,看它们之间的网络通讯是否正常。可直接使用如下命令:

    ansible all -m ping
    

    命令解析:

    • ansible : 命令的开头都使用ansible开头
    • all : 表示ansible需要操作哪些主机,这里可先直接制动all,表示所有
    • -m : 前面提到过的参数,后面直接跟着需要使用的模块
    • ping : 本次操作需要使用到的模块,这里我们使用ansible的ping模块。(我们在windows/linux中也会经常使用ping命令来检查网络是否连通)

    执行结果:
    在这里插入图片描述

    如上图所示,执行后提示警告信息:“提供的主机列表为空,只有localhost可用。请注意,隐式localhost与“all”不匹配”。这是因为我们没有配置ansible的主机列表,所以它不能匹配我们命令中”all“表达式。

    解决办法:我们前面在ansible安装完成后提到过,在以yum方式安装完成ansible后。在/etc/ansible目录下有三个文件,其中hosts文件就是用来管理主机列表的。我们只需要将我们的129机器及130机器的ip配置到hosts中即可。
    在这里插入图片描述

    修改完hosts文件后,再次执行命令,得到如下结果:
    在这里插入图片描述
    ​ 如上图所示,ansible已经顺利通过ping模块,完成了129机器及130机器的连通性测试。但是结果却不一样。129机器成功接收到ping请求并返回给ansible主 机pong的回应。但130机器提示ssh验证异常了。原因也很简单我们前面提到过的环境准备,我们故意只将129机器与ansible主机配置了互信,而130机器什 么也没做。现在我们将130机器的互信配置上去后再次执行命令,得到如下结果:
    在这里插入图片描述

​ 如上图所示,可直接证明,ansible作为一个简单实用的批量运维工具是非常简单的,客户机器上几乎不用做任何安装,做到了无侵入。但前提条件是需要与ansible主机保持互信的状态。

  1. 趁热打铁之“Hello World 2 !!”

    现在我们尝试将ansible主机上的一个文件,批量上传到两台服务器上的指定目录上去。

    先在ansible主机任意目录中创建一个文件名为test.log。
    在这里插入图片描述

    再使用如下命令:

    ansible all -m copy -a 'src=/zjdata/test.log dest=/zjdata/'
    

    ​ 命令与上一个例子差不多,只有如下两点差别

    • copy : 同样与ping都是一个模块,只是copy这个模块是专门做文件拷贝用的。
    • -a : 不同的模块有不同的用法,copy模块在使用时是需要准备参数的。后面的参数中分两部分src与dest。基本意思为:‘src=[ansible主机中的那个文件(绝对路径)] dest=[拷贝到客户机上的那个目录下]’

    执行后结果:
    在这里插入图片描述

​ 我们到129、130机器上就可以在相应目录下看到该文件了,批量文件复制成功。
在这里插入图片描述

到此我们的Ansible的最基本的入门就已经结束了,通过这篇文章我们了解了ansible的作用、安装方法、基本的结构、基本的使用方法。在之后的学习过程中我们还会对Ansible的其它功能,做更深入的学习。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值