概述

本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含:

  • Centos 下的安装
  • 主机配置
  • Ad-Hoc command(命令行执行)
  • Playbook (任务剧本)

Ansible 和 Saltstack 是目前主流的两个自动化运维工具,都可以用于同时对大量主机进行系统配置,应用部署等工作,利用这种集成化的自动运维工具最大的优势在于运维体系结构的持续可维护性。本文先着眼于 Ansible 的基础使用,不会进行太多扩展,通过本文可以快速上手使用 Ansible。

安装

Ansible 的一大特点是 agentless,可以通过 SSH 来对服务器进行管理,意味着只需要将 Ansible 部署到一台服务器。

Ansible 并非一定使用 ssh 来与服务器进行通信,它也支持 ZeroMq 的扩展。事实上,如果不是总要同时对一个庞大主机群进行操作,通过 ssh 进行通信在效率上的损失还是可以接受的。

在 Centos 系统上,Ansible 可以用过 yum 来进行安装,前提是需要 EPEL 的源。

以 Centos7 为例执行下列命令安装 EPEL 源:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安装 Ansible

yum install ansible

通常情况下,Ansible 可以部署到登录服务器上,登录服务器存放 ssh 私钥,这样在对操作主机群时就无需每次输入密码。

主机配置

Ansible 默认主机配置文件在 /etc/ansible/hosts,你也可以创建新的配置文件来管理主机,如果使用其他主机配置,在执行命令行时就需要通过 -i <path> 参数指定主机配置。

下边是一个主机配置的例子,foo.example.com 这些就是主机的定义,webservers 是主机组的定义,在使用 Ansible 时,可以通过主机组对一组服务器进行操作。

[webservers]
foo.example.com
bar.example.com

Ad-Hoc Command

Ad-Hoc Command 指那些希望立即执行对一组服务器进行操作,而这个操作过程不需要进行保存的方式。例如临时需要对 webservers 这组主机下的 /opt/testfile 文件进行删除,而这种操作是没有必要保存成 Playbook (剧本模式,稍后会说到)的。

$ ansible webservers -m command -a "rm -f /opt/testfile" 

参数 -m 指定使用的功能模块是 command-a 设置模块所需参数队列,对于 command 模块来讲,这个参数就是你需要执行的命令。

事实上,command 模块也有几个参数,当需要指定多个参数时,就需要使用 arg1=value1 arg2=value2 这样的键值对方式指定,当没有指定参数时,在这里实际上使用 command 的是 free_form 参数。

Ansible 默认使用的模块是 command,这意味着上述命令行并不需要显式指定功能模块,可以直接使用下列命令行
ansible webservers -a "rm -f /opt/testfile"

再举个简单的例子,批量文件分发:

$ ansible webservers -m copy -a "src=/etc/hosts dest=/tmp/hosts"

上述命令将本地 /etc/hosts 分发到 webservers/tmp/hosts

使用 ansible-doc -l 可以查看 Ansible 支持哪些模块,也可以直接前往 这里 去查看。

使用 ansible-doc -s module_name 可以获取模块的使用帮助。

Playbook

Playbook 可以称之为任务剧本,它允许你按照剧本的方式编排需要完成的任务,使用 YAML 的语法格式。

早期,我们可能使用脚本来完成一些流程相对繁多的任务,脚本可以很好的执行,但可读性差。YAML 这种配置性的语法格式则可读性很好,并且对于没有编程基础的运维人员来讲,它也更容易上手。

看一个 playbook 的例子:

---
- hosts: webserversremote_user: roottasks:- name: ensure apache is at the latest versionyum: name=httpd state=latest- name: write the apache config filetemplate: src=/srv/httpd.j2 dest=/etc/httpd.confnotify:- restart apache- name: ensure apache is running (and enable it at boot)service: name=httpd state=started enabled=yeshandlers:- name: restart apacheservice: name=httpd state=restarted

这个简单的例子完成的任务是部署或更新 webservers 这一组主机的 apache。

  • hosts:定义操作的主机组

  • remote_user:使用的用户

  • task:任务步骤,共分为三步:

    • 1 通过 yum 模块确认 apache 是否安装以及是否是最新版本,如果不是则安装或更新;
    • 2 通过 template 模块来设置配置文件,如果配置有更新则通知 handler 重启 apache;
    • 3 通过 service 模块来判断 apache 是否在运行,如果没有则启动 apache。
  • handlers:事件处理,处理任务中的 notify

Playbook 完成后,执行就可以完成对一组服务器的操作

ansible-playbook playbook.yml 

以上就是 Ansible 的基础使用方法,更多的可以去参考 Ansible 的文档。

Ansible - 自动化运维工具相关推荐

  1. Ansible自动化运维工具介绍

    介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...

  2. 【Ansible自动化运维工具】Ansible变量之lookup生成变量方法

    [Ansible自动化运维工具]Ansible变量之lookup生成变量方法 一.lookup插件介绍 1.lookup简介 2.lookup使用场景 3.lookup获取的数据源 4.lookup的 ...

  3. ansible自动化运维工具

    ansible自动化运维工具 ansible自动化运维脚本工具 ansible自动化运维工具 一.ssh工作原理和基本命令 1.ssh原理 2.ssh的基本命令 二.anible 自动化运维工具 1. ...

  4. 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]

    文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...

  5. Ansible自动化运维工具介绍与部署

    ansible自动化运维工具介绍与部署 文章目录 一.什么是自动化运维? 二.常用的自动化运维工具 2.1 Ansible 2.2 SaltStack 2.3 Puppet 2.4 三种自动化工具特点 ...

  6. 【Ansible自动化运维工具】Ansible变量之Facts变量

    [Ansible自动化运维工具]Ansible变量之Facts变量 一.Ansible facts介绍 1.facts组件简介 2.facts组件的使用场景 二.Ansible facts的基本使用 ...

  7. Ansible自动化运维工具使用

    概述 本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装 主机配置 Ad-Hoc command(命令行执行) Playbook (任务剧本) Ansible ...

  8. ansible——自动化运维工具

    目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ansible 执行流程 ansible 命 ...

  9. 16张图带你学会 Ansible 自动化运维工具

    作者 | yangyidba 来源 | https://mp.weixin.qq.com/s/vw_cQfPiBjSmkuMsCbXxeA Ansible 是近年来越来越火的一款开源运维自动化工具,通 ...

  10. Ansible自动化运维工具安装及使用

    <--目录--> 1)Ansible介绍 2)安装 3)Hosts配置 4)Ansible.cnf配置 5)Ansible的七个命令 6)命令行使用Ansile方法总结 7)Ad-hoc与 ...

最新文章

  1. Linux下搭建DNS服务器
  2. python基础题面试_python常见面试题
  3. k8s的pod资源管理与配置使用凭证的harbor仓库
  4. TCP选项:TCP_NODELAY和TCP_CORK
  5. android 页面icon拉伸_所有同学!注意咯!!设计师不可忽略的页面转场来咯!!...
  6. uva-10245-分治
  7. 2009年统考计算机考研真题
  8. 产品 电信nb接口调用_NB-IoT 平台对接常见问题(中国电信)
  9. n维球体,n维椭球体体积公式证明
  10. 奋斗在制造业----CAE行业感想
  11. 纳兰容若最经典的20首诗词,每一首都是经典,读完眼泪掉下来
  12. Bag of Tricks for Image Classification with Convolutional Neural Networks(卷积神经网络在图像分类中的技巧)
  13. 进制的运算(笔记借鉴编程达人)
  14. 高斯模糊磨皮——ps
  15. 为什么宝宝本来发高烧却手脚冰凉呢?
  16. Halcon 《ML_MLP》网格缺陷检测
  17. MTK机型手机指令介绍
  18. 2022年3月PMP考试时间定了 ---「3月27日」
  19. 深入浅出 “三门问题”
  20. 可以媲美TortoiseSVN的LINUX版SVN客户端软件RabbitVCS

热门文章

  1. DATAGUARD 添加修改REDOLOG大小
  2. Lowest Common Multiple Plus
  3. 《C语言到底能干什么》1.3 窗口程序的编写
  4. Google不要成为在垃圾桶里翻扒的猫
  5. XMLHttpRequest 对象获取服务端数据
  6. objective-c 汇编语言,Objective-C和C的区别?
  7. numpy中文件的存储和读取
  8. X window 概念及原理图
  9. 如何选择适合自己的 Linux 发行版
  10. 在Qtopia中添加国际化支持