Ansible PlayBook应用

导读:本篇文章讲解 Ansible PlayBook应用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1、Playbook概述

 2、PlayBook核心元素及常用参数

 3、playbook运行方式


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剧本中,组成一个完整的流程控制集合,完成一个复杂的工作。
    下面就是一个只包含了2个play的playbook:
Ansible 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。

Ansible PlayBook应用

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

Ansible PlayBook应用 

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

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就会按照剧本一步一步的执行,最终达到我们的目的。
    更多playbook官方说明参考:
    http://docs.ansible.com/ansible/latest/playbooks_intro.html
    Ansible中文学习手册
    https://ansible-tran.readthedocs.io/en/latest/docs/playbooks.html

 2、PlayBook核心元素及常用参数

1.PlayBook核心元素包括

  •     target:定义PlayBook的远程主机组
  •     variables:定义PlayBook使用的变量
  •     tasks:定义远程主机上执行的任务列表
  •     handlers:处理器,当某条件满足时,触发执行的操作。例如修改配置文件之后,启动跟handlers任务重启相关联的服务
  •     roles :角色,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。

2.target常用参数详解

  •     hosts:运行指定任务的目标主机,可以是一个主机组、主机、多个主机,中间以冒号分          隔,也可以用all参数表示所有主机。
  •     remote_user:指定远程主机上的执行任务的用户。
  •     gather_facks:获取远程主机facts基础信息

3.variable常用参数详解

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

4.tasks常用参数详解

  •     name:任务显示名称也是屏幕显示信息
  •     module_name: module_args: 需要使用的模块名字: 模块参数

Ansible PlayBook应用

 关于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
(5)、ansible的自带模块中,command模块和shell模块无需使用key=value格式

5.handler: 常用参数详解

  •     notify: “notify”这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。
  •     handler: 也是task的列表。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。

 3、playbook运行方式

     1、ansible-playbook –check playbook.yaml #只检测可能会发生的改变,但不真执行操作
     2、ansible-playbook –list-hosts playbook.yaml #列出运行任务的主机
     3、ansible-playbook –syntax-check playbook.yaml  #检查yaml文件的语法是否正确
     4、ansible-playbook -t TAGS_NAME playbook.yaml  #表示跳过标签前的步骤,直接从标签位             置开始。-t选项执行指定的tag标签任务
    注:通过tags参数给指定的任务定义一个调用标识。

格式:

– name: NAME
 module: arguments
 tags: TAG_ID

 例如:

Ansible PlayBook应用

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/22225.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!