ansible playbook 应用---------1介绍

1、playbook描述

之前的模块都是使用Ad-hoc方式(Ad-hoc方式是一种可以快速输入的命令,而且不需要保存起来的命令)点对点命令执行,可以管理远程主机,但如果服务器数量比较多,配置信息也比较多,可以利用Ansible PlayBook编写剧本,以更加简便的方式实现任务处理的自动化和流程化。

playbook是ansible的配、部署、和编排的语言。playbook可以定制设置,他们可以按照你的指定的操作步骤有序执行,支持同步和异步方式。

形象点的说就是:如果ansible的各模块(能实现各种功能)是车间里的各工具;playbook就是指导手册,目标远程主机就是库存和原料对象。

playbook可作为一个适合部署复杂应用程序的基础。

PlayBook是由一个或多个“play”组成的列表,在play中的内容被我们称之为tasks,也叫任务,也就是说多个tasks组成了一个play,task调用Ansible的各种模块(module)。将多个play组织在一个playbook剧本中,组成一个完整的流程控制集合,完成一个复杂的工作

下面就是一个只包括了两个的playbook

       说明:

       playbook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户身份执行任务。

       hosts用于指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组。

       vars 执行对应任务时,携带的到远端主机的变量信息

       remote_user则用于指定远程主机上的执行任务的用户。

       play的主体部分是task list。task list中的各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在运行自上而下某playbook时,如果中途发生错误,所有已执行任务都将回滚,因此,在更正playbook后重新执行一次即可。

       task的目的是使用指定的参数执行模块,而在模块参数中可以使用变量。模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致。

       每个task都应该有其name,name 是我们对当前任务的说明,用于playbook的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤。如果未提供name,则执行的模块名将用于输出。

       定义task的action(动作)可以使用module_name:module_args”。

       一个name只能包括一个task。

       在众多模块中,只有command和shell模块仅需要给定一个列表而无需使用“key=value”格式

        

 

       注:

       如果命令或脚本的退出码不为零,可以使用如下方式替代:

tasks:

   - name: run this command and ignore the result

    shell: /usr/bin/somecommand || /bin/true

       或者使用ignore_errors来忽略错误信息:

tasks:

  - name: run this command and ignore the result

   shell: /usr/bin/somecommand   

   ignore_errors: True

       playbook是基于YAML语言格式配置,通过YAML格式来进行描述定义的,扩展名是yml或yaml。

       总结:简单来说playbook就是一个用yaml语法把多个模块堆起来的一个文件而已,把不同的模块按照顺序编排在剧本中,ansible就会按照剧本一步一步的执行,最终达到我们的目的

2、yaml有几个基本规则

       1、yaml文件以---开头,以表明这是一个yaml文件,就像xml文件在开头使用<?xml version="1.0" encoding="utf-8"?>宣称它是xml文件一样。但即使没有使用---开头,也不会有什么影响。

       2、yaml中使用"#"作为注释符。

       3、大小写敏感

       4、使用缩进表示层级关系:YAML使用一个固定的缩进风格表示层级结构,同样的缩进代表同样的级别。缩进时不允许使用Tab键,只允许使用空格。

       注:缩进的空格数目没有限制,但要求同一层级左对齐。判断是否是同一级别是通过缩进结合换行来实现的。

       5、冒号,以冒号结尾的除外,其他所有冒号后面必须有空格。

6、短横线,表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表。

       7、关于布尔值的书写格式,即true/false的表达方式。其实playbook中的布尔值类型非常灵活,可分为两种情况:

    模块的参数:这时布尔值作为字符串被ansible解析。接受yes/on/1/true/no/off/0/false。例如上面示例中的update_cache=yes。

    非模块的参数:这时布尔值被yaml解释器解析,完全遵循yaml语法。接受不区分大小写的true/yes/on/y/false/no/off/n。例如gather_facts: True。

       建议遵循ansible的官方规范,模块的布尔参数采用yes/no,非模块的布尔参数采用True/False。

       8、YAML文件扩展名通常为yml或yaml

3、playbook核心元素及常用的参数

1、target:定义playbook的远程主机组

2、variables:定义playbook使用变量

3、tasks:定义远主机上执行的任务列表

4、handlers:处理器,当某条件满足时,触发执行的操作

5、roles:角色,用于层次性、结构化的组织playbook。roles能够根据层次结构自动装载变量文件、tasks以及haslers等

       2、target常用参数详解

    hosts:运行指定任务的目标主机,可以是一个主机组、主机、多个主机,中间以冒号分隔,也可以用all参数表示所有主机。

    remote_user:指定远程主机上的执行任务的用户。

    gather_facks:获取远程主机facts基础信息

       注:remote_user参数以前称为user。它在ansibe1.4中被重命名,以使其与用户模块(用于在远程系统上创建用户)区别。

       注:gather_facts: True 表示在远程主机运行setup模块,获取远程主机的facts,facts就是变量,内建变量 。每个主机的各种信息,cpu颗数、内存大小等,会存在facts中的某个变量中,调用后返回很多对应主机的信息。

       3、variable常用参数详解

    vars:在yaml文件中定义变量赋值。定义格式,变量名:变量值

    vars_files:指定变量文件,在文件中定义变量

       4、tasks常用参数详解

    name:任务显示名称也是屏幕显示信息

    module_name: module_args: 需要使用的模块名字: 模块参数

关于task说明:

1、Play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务。

 2、在运行playbook时(从上到下执行),如果一个host执行task失败,整个tasks都会回滚,请修正playbook 中的错误,然后重新执行即可。

 3、每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。   如果没有定义name,‘action’的值将会用作输出信息中标记特定的task。   

4、定义一个task,常见的格式:” module_name: module_args” 例如:yum: name=httpd state=absent update_cache=yes

ansible的自带模块中,command模块和shell模块无需使用key=value格式

5、handler: 常用参数详解

    notify: “notify”这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。

    handler: 也是task的列表。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。

4、playbook运行方式

1、ansible-playbook --check playbook.yanl      #只检测可能会发生的改变但不真只执行

2、ansible-playbook --list-hosts plsybook     #列出运行任务主机

3、ansible-playbook --syntax-check    #检查yaml文件语法是否正确

4、ansible-playbook -t TAGS_NAME playbook.yaml   #表示跳过标签前的步骤,直接从标签位置开始执行。-t 选项执行指定的tag标签任务

5、ansible-playbook playbook      #运行剧本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值