ansible基础-playbook剧本的使用

                                        作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.YAML概述

1>.YAML的诞生

  YAML是一个可读性高,用来表达数据序列的格式。

  YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。

  Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。\

2>.YAML的命名

  YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。

  在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)。但为了强调这种语言以数据作为中心,而不是以标记语言为重点,而反向缩略语重命名。
3>.YAML的功能
  YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态、。

  它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
  尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料。
  由于YAML使用空白字符和分行来分隔资料,使得它他特别适合用grep、Python、Perl、Ruby操作。
  其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构中会变得复杂而难以辨认。

4>.JSON格式和YAML格式表现数据结构(基本数据结构)案例对比

JSON格式:
  {id:1,name:尹正杰,age:18,spouse:{id:2,name:jason,age:26},fav:[red,yellow,blue]}


YAML格式:
  id:1
  name:尹正杰
  age:18
  spouse:
    id:2
    name:jason
    age:26
  fav:
    -red
    -yellow
    -blue

 5>.YAML语法检查

  其实ansible自带的就有YAML语法检查的脚本,当然你也可以参考网页连接的检查:https://www.bejson.com/validators/yaml/

 

二.Playbook的核心元素

Hosts:
    定义可以操作的主机,

Tasks:
    定义我们需要执行的任务列表。

Variable:
  支持变量,流程控制语句,如循环语句等等。(YAML支持编程语言的基本语法,如条件表达式,循环语句,流程控制等等,这也是为什么ansible选择它的一个原因吧!) Templates: 包含了模板语法的文本文件。 Handlers: 处理器是由特定条件触发的任务。 Roles: 定义角色,其实我们可以理解角色是将服务器主机进行分组,然后基于组的方式进行批量管理。这个角色和MySQL8.0之后版本的角色功能很相似!
  

 

三.运行playbook的方式案例展示

1>.playbook的基础组件

playbook的基础组件:
    Hosts:
        运行指定任务的目标主机。
    remoute_user:
        在远程主机上执行任务的用户。
    tasks:
        任务列表。
         模块,模块参数
         格式:
             action:module arguments
             module:arguments
      温馨提示:
        shell和command模块后面直接跟命令,而非key=value类的参数列表。
   
  某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers。   
  任务可以通过“tags”打标签,而后可在ansible
-playbook命令上使用-t指定进行调用。

2>.运行playbook的步骤简介

运行playbook的方式:
  1>.测试
    ansible-playbook --check
      只检测可能会发生的改变,但不是真正执行操作。
    ansible-playbook --list-hosts
      列出运行任务的主机。
    ansible-playbook --list-tasks
      列出运行的任务列表。
    ansible-playbook --syntax-check
      语法检查。
  2>.运行

3>.编写剧本(注意,每个冒号后面都有一个空格,如果你没写的话,可能会报错!)

[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# cat memcached.yaml
- hosts: node102.yinzhengjie.org.cn 
  remote_user: root
  tasks: 
   - name: 'install memcached package'
     yum: 'name=memcached state=installed'
   - name: 'start memcached service'
     service: 'name=memcached enabled=true state=started'
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# 
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# 
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# cat memcached.yaml

相关文章: