• 百战RHCE(第五十一战:运维工程师必会技-Ansible学习6-编写和执行Playbook)


    哈喽哈喽哈喽,大家好啊,很高兴大家能看到这篇文章!

    首先,本人目前是计算机专业的大一学生,基于对Linux操作系统的爱好,参与了RHCE的培训班,而我这次编写的 《百战RHCE》文章,是基于我自己的学习经验浓缩而来的,保证简洁,方便理解!

    而作为一名大学生,我想通过坚持的高水平文章编写带给我自己本身经验的不断进步,同时也希望让更多的Linux新手能接触到更加系统的文章学习。本次《百战RHCE》,会由浅入深,从最基本的命令行,到编写非常复杂的Ansible 自动化脚本 

    因为本人和你一样也是学习者,所以文章中出现的错误,还望多多指出。

    还有注意了哦,我所用的系统为Centos7,如果你还没下载的话,可以在到我的第一章节,那里有下载教材和镜像地址哦~

    最后最后我在说最后一句话,引用下我们老师的话:“不要尝试背下所有指令,多记笔记!多敲命令!”

    创作内容不易,学习的朋友麻烦关注下博主,后面学习不迷路。有不会的问题也可以论坛咨询博主,博主也会及时回复~~

    前面讲到的临时命令只能作为一次性命令对一组目标主机运行一项简单的任务。不过,若要真正发挥Ansible的力量,就必须学会编写Playbook

    目录

    一.名词介绍和基本要求

    二.实例讲解


    一.名词介绍和基本要求

    首先我们先来了解两个名词

    play:针对清单中选定的主机运行的一组有序任务

    playbook:playbook 是一个文本文件,其中包含由一个或多个按照特定顺序运行的play组成的列表

    首先Playbook是以YAML格式编写的文本文件使用扩展名yml保存。Playbook使用空格字符缩进来表示其数据结构。YAML对于缩进的空格数量没有严格的要求,但有两条基本的规则。

    1.处于层次机构中同一级别的数据元素必须具有相同对的缩进量。

    2.如果项目属于其他项目的子项,其缩进量必须大于父项。


    二.实例讲解

    这里我们以一个实例带入讲解

    首先看到红色括号 这里我创建了一个Ansible 的Playbook 命为service.yml,光从这个名字当中我想你大概就已经可以猜出我这个主要就是跟服务配置有关的了。

    看service.yml的内容。

    第一个绿色括号

    ---:这个是playbook的开头(必须得加)

    第二个绿色括号

    - name:play的标签,第一便于我们日常的编写,第二当运行多个play时,一旦出了问题我们可以根据 - name 快速找到出错目标

    hosts: 受控主机(这里看我格式缩进 name hosts 和后面的 tasks 属于同一级别的,所以必须保持相同的缩进)

    蓝色括号

    tasks:该play运行的任务的列表

    service: 模块,负责service方面的模块(这里主要学习playbook的格式,这里只做了解,后面争对模块的教学我会详细讲解的)

    name: service名字

    enabled: 是否启动服务,ture启动,false不启动。

    (name,enabled都是service模块的功能)

    脚本编写完成后,我们要使用命令先来检查一下Playbook YAML语法

    格式: ansible-playbook --syntax-check  playbook 名字

    这样就说明语法没有问题,这里我稍微把缩进改下,我们看下会如何报错

    这里我把tasks的缩进给往后退了。这个时候我们在使用命令来验证下语法

    第一个黄色括号这里系统就会提示我们错误的地方在第四行的11列,第二个黄色括号会给的更加的详细,根据这些提示我们就可以大概判断错误的地方了。

    当语法也检查过无误了我们就可以开始运行playbook了。运行命令:

    Ansible-playbook  playbook名字

    这里我们看第一个红色大括号,这里系统会执行一个收集事实的任务(后面会详细讲解的,这里只需要知道有这个东西就好了)

    然后大家可以发现我 web server is enabled 任务当中centos1 和 centos2 主机失败了,这主要是这两台主机我都没有安装httpd服务,所以会报错了。我这里重新安装下就不会报错了(也可以通过模块安装,我是直接在主机上面用命令安装)

    一个playbook当中除了对一个特定的主机或主机组的用户执行相应操作之外还可以对对其他的主机或用户执行play。下面请看实例。

    注意绿色括号部分是我们之前就有的,而蓝色部分是我新添加的,作用就是利用yum模块来帮助我在centos2主机下载httpd服务。这里重点说下 在 service.yml当中存在两个playbook,一个是绿色括号的 configure the service 另外一个是 蓝色括号 install the service。这两个playbook针对不同主机执行不同的任务。

    最后查看运行结果可以看到系统反馈的是回来centos2主机ok,并没有下载,这是因为我前面已经把httpd下载好了,所以从这里看出来Ansible自动化脚本是非常的智能的。


    好了好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,今天的学习内容很多也很难需要多看很多遍才能学会,如果有啥不会的朋友记得论坛里面提问哈~

    如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

  • 相关阅读:
    java Date
    Cordova插件开发:集成南方测绘RTK实现高精度卫星定位
    【springboot系列】springboot启动过程源码分析,【最全源码源码,手把手教】
    代码随想录第五十天|123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
    Gartner:2022年全球IT支出将超4万亿美元,软件增速最高
    USB Type-C详细介绍
    Express项目
    eNSP简单配置命令以及DHCP
    cppcheck新手指引
    HiveSql调优系列之Hive严格模式,如何合理使用Hive严格模式
  • 原文地址:https://blog.csdn.net/little_startoo/article/details/126846119