• ansible笔记(8):初识ansible playbook


    回顾总结我们来想象一个工作场景,看看怎样把之前的知识点应用到这个工作场景中。假设,我们想要在192.168.10.2主机上安装nginx并启动,我们可以在ansible控制主机中执行如下3条命令。

    [root@ansible-control /]#ansible 192.168.10.2 -m yum_repository -a 'name=aliEpel description="alibaba EPEL" baseurl=https://mirrors.aliyun.com/epel/$releaseverServer/$basearch/'
    [root@ansible-control /]#ansible 192.168.10.2 -m yum -a 'name=nginx disable_gpg_check=yes enablerepo=aliEpel'
    [root@ansible-control /]#ansible 192.168.10.2 -m service -a "name=nginx state=started"

      通过上述3条命令,先确定配置了对应的yum源,然后使用yum模块安装了nginx,最后使用service模块启动了nginx,最终达到了我们的目的。但是效率太低。
    但是在实际的工作环境中,我们可能需要经常在新主机上安装nginx,难道每次有新的服务器加入工作环境,我们都要修改上述3条命令中的主机名并且重新将每一条命令执行一遍吗?这样似乎有些麻烦,肯定有更好的办法,没错,我们可以将上述命令写成脚本,每次修改一些变量,然后执行脚本就行了,这样似乎方便了不少,而ansible天生就提供了这种类似脚本的功能,在ansible中,类似脚本的文件被称作剧本,剧本的英文名称为playbook,我们只需要将要做的事情编写成playbook,把不同的模块按照顺序编排在剧本中,ansible就会按照剧本一步一步的执行,最终达到我们的目的,虽然playbook的功能与脚本类似,但是剧本并不是简单的将ad-hoc命令按照顺序堆砌在一个可执行文件中,编写剧本需要遵循YAML语法,如果你没有接触过YAML语法,不用害怕,坚持看完后面的示例,熟悉一些固定套路以后,你也可以自己编写playbook。
    那么怎样编写playbook呢?我们先从一个简单的示例开始吧

    1.编写playbook初级:

      (1)创建一个YAML格式的playbook文件。playbook文件以.yaml或者.yml作为文件名后缀,此处我们创建一个名为test.yml的剧本文件。

      (2)示例:

          ansible  192.168.10.2  -m ping

          ansible  192.168.10.2  -m  file  -a  'path=/test/AAA  state=directory'

      (3)开始编写playbook:注意空格

    【playbook解析】

    第一行使用三个横杠作为开始,在yml语法中,“---”表示文档开始。
    第二行使用“-”作为开头(注意横杠后面有空格),hosts关键字表示对应将操作的主机是哪台。如果有多台主机,可以使用逗号将其隔开,hosts: 192.168.10.2,192.168.10.3。如果清单分了组,也可以使用组名。
    第三行使用remote_user关键字可以指定在进行远程操作时使用哪个用户进行操作,remote_user: root表示使用192.168.10.2主机上的root用户进行操作。注意:在YAML语法中进行缩进时,不能使用tab键进行缩进,必须使用空格。
    第四行使用tasks关键字指明要进行操作的任务列表,之后的行都属于tasks键值对中的值。每个任务都以"-"开头,每个任务都有自己的名字,使用name关键字进行指定。

     2.运行剧本(playbook):

      [root@ansible-control playbook]# ansible-playbook p1.yml 

    3.在一个playbook中编写多个play:

     4.检测playbook中是否存在语法错误:

    [root@ansible-control playbook]# ansible-playbook --syntax-check p1.yml 

    如果只返回playbook名称则无语法错误!

     

    5.模拟执行playbook,预估playbook是否能够正常运行,实际并不会造成任何改变:

      [root@ansible-control playbook]# ansible-playbook --check p1.yml 

    学习大哥:http://www.zsythink.net/archives/2602

  • 相关阅读:
    centos7grub2 引导win10
    必测的支付漏洞(一)——使用fiddler篡改支付金额
    使用Fiddler进行IOS APP的HTTP抓包
    Fiddler实现手机抓包——小白入门
    信息收集工具recon-ng详细使用教程
    Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
    Dear Project Manager, I Hate You
    敏捷中的沟通与故事点
    项目经理与敏捷开发
    C#中使用反射获取结构体实例
  • 原文地址:https://www.cnblogs.com/python-wen/p/11356328.html
Copyright © 2020-2023  润新知