Ansible: 简单易懂的自动化运维工具(一)

栏目: 服务器 · 发布时间: 8年前

内容简介:Ansible: 简单易懂的自动化运维工具(一)

Ansible: 简单易懂的自动化运维工具(一)

不知什么时候,Ansible的slogan从“IT Automation Software for System Administrators”变成了“AUTOMATION FOR EVERYONE”。

从一个给系统管理员使用的 工具 变成了给所有人使用的工具。

但是,现实中,发现了解Ansible的人,还是太少了。同时,自己断断续续学习Ansible也有一段时间,希望拿出来和大家交流。所以就决定不定期写写一个关于Ansible的系列。如果你觉得我写得还可以,到文末扫码请我喝杯茶。

此文为“Ansible: 简单易懂的自动化运维工具”系列文章的开篇 —— Ansible解决了什么问题

Ansible解决了什么问题

首先,它是一个运维工具。当然要解决运维过程中遇到的问题了。运维过程遇到了什么问题?

想像一下,你要在一台新的机器上安装Tomcat,你会怎么样呢,条件反射的:

ssh [email protected]
wget -c http://apache.fayea.com/tomcat/tomcat-8/v8.5.15/bin/apache-tomcat-8.5.15.tar.gz tar -zxf apache-tomcat-8.5.15.tar.gz .....省略

好,10分钟后你愉快地完成了老板给你的任务。但是现在你需要给100台机器安装Tomcat呢?手工的重复100次?

Ansible: 简单易懂的自动化运维工具(一)

而Ansible能让我们只定义一次,理论上可以在无限台机器上执行。换句话: 减少运维工作中的重复工作

同时,如果是人工执行100次,那么失误是难免的!自动化运维工具会严格根据我们所给指令来执行,而不会因为失恋而手抖执行了: sudo rm -rf /

不少人反对自动化,认为那样太危险,因为一不小心就在上百台机器删错文件。显然,他们没有注意到:自动化实现的是 准确地执行指令 ,解决人类执行任务时存在的指令理解不正确、执行不严格的问题。而机器不会。没有达到预期效果,往往是我们人类下达的指令不正确。

所以,Ansible还解决了 人执行指令不准确 的问题。

如果使用Ansible来实现上述的运维需求,怎么做呢?你需要做三件事情:

  • 定义目标机器的列表:一种被称为inventory的类ini文件
  • 定义这些机器的配置:使用 YAML 格式的文件来描述你机器的配置
  • 执行 ansible-playbook -i inventory playbook.yml

以下是inventory文件:

[tomcat-servers]
111.111.111.111
112.112.112.112
....

而这些ip的配置:

---
- hosts: tomcat-servers
  tasks:
    - name: download tomcat
      get_url:
          url: http://apache.fayea.com/tomcat/tomcat-8/v8.5.15/bin/apache-tomcat-8.5.15.tar.gz
          dest: /tmp
    - name: unarchive tomcat to /usr/local
      unarchive:
          src: /tmp/apache-tomcat-8.5.15.tar.gz
          dest: /usr/local/
.....省略

如果你想再添加100台机器,你需要做的,也只是在inventory文件里添加100个ip,再执行一遍ansible-playbook命令。

当然,写 shell 写得不错的人,也能实现上面的功能。

但是,使用Ansible有什么优势? 模块化和标准化! 手工写shell,甚至手工写python,要做到模块化和标准化,太困难了。

Ansible将大部分运维工作都抽象并标准化成一个个模块(module)。所有的模块都以这样形式使用:

- name: <描述说明(option)>
  <模块名>
  <属性名>: <属性值>

比如使用Ansible的file模块创建文件夹,而且file模块会自行判断该文件夹是否存在:

- name: create a directory
  file:
    path: "/tmp/aa"
    state: directory
    owner: "centos"
    group: "centos"
    mode: "ug=rwx,o=rx"

显然,不同的人使用shell或 python 在方法名上可能都不一样,是驼峰,还是使用下划线?是使用createDir?使用createDirectory?还是create_folder?

小结

我们小结一下Ansible到底解决了什么问题?

  • 自动化:避免运维工作中重复的工作,以及人的不确定性问题
  • 模块化:大部分运维工作能做到模块化,直接使用shell脚本或者python,还是过于低级,比如:
    if [ ! -d "/tmp/aa" ]; then
            mkdir /tmp/aa
        fi
        ....
  • 标准化:所有的模块的使用方式都是一样的,减少学习成本

然后,我个人认为Ansible解决以上问题都是为了实现一个最根本的目标: 自动化配置 !关于自动化配置,你可以看看我写的另一篇文章: 关于自动化配置还有什么好说的呢?

最后,这篇文章存在一个假设:手工运维、非模块化、非标准是问题,需要解决。如果你觉得这些都不是问题的话,这篇文章所说的也就都不成立了。


以上所述就是小编给大家介绍的《Ansible: 简单易懂的自动化运维工具(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机动画的算法基础

计算机动画的算法基础

鲍虎军 金小刚 彭群生 / 浙江大学出版社 / 2000-12 / 60.00元

《计算机应用技术前沿丛书:计算机动画的算法基础》主要内容简介:20世纪是一个科技、经济空前发展的时代,从世纪初相对论、量子理论的创立到今天以信息产业为龙头的高科技产业成为经济发展的第一支柱,人类社会发生了根本性的变革。而在这场以科学技术为社会发展直接动因的变革中,意义最深远、影响最广泛的就是计算机及其相关技术的发展和应用。在过去的50年里,计算机已从最初的协助人类进行精密和复杂运算的单一功能的运算......一起来看看 《计算机动画的算法基础》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码