Ansible的基础元素和YAML介绍

本节内容:

  • YAML
  • Ansible常用的数据类型
  • Ansible基础元素

一、YAML

1. YAML介绍

YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言,另外Ingy d?t Net与Oren Ben-Kiki也是这语言的共同设计者。

YAML Ain‘t Markup Language,即YAML不是XML。不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。其特性:

  • YAML的可读性好
  • YAML和脚本语言的交互性好
  • YAML使用实现语言的数据类型
  • YAML有一个一致的信息模型
  • YAML易于实现
  • YAML可以基于流来处理
  • YAML表达能力强,扩展性好

更多的内容及规范参见http://www.yaml.org。

2. YAML语法

YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。下面是一个示例。YAML是用键值对和缩进来表示的。

name: John Smith
age: 41
gender: Male
spouse:
       name: Jane Smith
       age: 37
       gender: Female
children:
       - name: Jimmy Smith
         age: 17
         gender: Male
       - name: Jenny Smith
         age 13
         gender: Female

YAML文件扩展名通常为.yaml,如example.yaml。

二、Ansible常用的数据类型

1. list

列表中的所有元素都使用“-”打头,例如:A list of tasty fruits

  • Apple
  • Orange
  • Strawberry
  • Mango

2. dictionary

字典通过key与value进行标识,例如:
---
An employee record:

name: Example Developer
job: Developer
skill: Elite

也可以将key:value放置于{}中进行表示,例如:

---
An employ record:

{name: Example Developer, job: Developer, skill: Elite}

三、Ansible基础元素

1. 变量

(1)变量命名

变量名仅能由字母、数字和下划线组成,而且只能以字母开头。

(2)facts

facts是由正在通信的远程目标主机发回的信息,这些信息被保存在ansible变量中。要获取指定的远程主机所支持的所有facts,可使用如下命令进行:

# ansible hostname -m setup

(3)register

把任务的输出定义为变量,然后用于其他任务,示例如下:

tasks:
   - shell: /usr/bin/foo
     register: foo_result
     ignore_errors: True

(4)通过命令行传递变量

在运行playbook的时候也可以传递一些变量供playbook使用,示例如下:

ansible-playbook test.yml --extra-vars "hosts=www user=magedu"

就是说hosts和user这两个变量可以在test.yml文件中直接调用

(5)通过roles传递变量

当给一个主机应用角色的时候可以传递变量,然后在角色内使用这些变量,示例如下:

- hosts: webservers
  roles:
        - common
        - { role: foo_app_instance, dir: ‘/web/htdocs/a.com‘, port: 8080 }

注意:role、dir、port是变量名,冒号后面的是变量值。

2. Inventory

ansible的主要功能在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名。默认的inventory file为/etc/ansible/hosts。
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成。

(1)inventory文件格式

inventory文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号标明。

[webservers]
www1.wisedu.com:8888
www2.wisedu.com

如果主机名称遵循相似的命名模式,还可以使用列表的方式标识各主机,例如:

(2)主机变量

时间: 2024-07-31 00:58:19

Ansible的基础元素和YAML介绍的相关文章

Ansible自动化运维之YAML介绍

YAML是一种用来表达资料序列的格式,由于参考了其他多种语言,所以具有很高的可读性.YAML是YAML Ain't Markup Language的缩写. 特性如下: 1.具有很好的可读性,易于实现: 2.表达能力强,扩展性号: 3.和脚本语言的交互性好: 4.有一个一致的信息模型: 5.可以基于流来处理. YAML语法 YAML的语法和其他语言类似,也可以表达散列表.标量等数据结构.其中: 结构(structure)通过空格来展示: 序列(sequence)里的项用"-"来代表: M

自动化运维系列之Ansible的YAML、基础元素介绍

自动化运维系列之Ansible的YAML.基础元素介绍 YAML简介 YAML是一种用来表达资料序列的格式.YAML是YAML Ain't Markup Lanaguage的缩写,即YAML不是XML. 特点 1.具有很好的可读性,易于实现: 2.表达能力强,扩展性好: 3.和脚本语言的交互性好: 4.有一个一致的信息模型: 5.可以基于流来处理. YAML语法 YAML的语法和其他语言类似,也可以表达散列表.标量等数据结构. YAML结构通过空格来展示:序列里的项用"-"来代表:Ma

Ansible自动化运维之YAML、基础元素

YAML介绍 YAML是一个可读性高的用来表达资料序列的格式.YAML参考了其他多种语言,包括:XML.C语言.Python.Perl等.YAML不是XML,不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Makup Language"(仍是一种标记语言) 特点: 1:具有很好的可读性,易于实现.2:表达能力强,扩展性好.3:和脚本语言的交互性好.4:有一个一致的信息模型.5:可以基于流来处理 YAML语法: YAML的语法和其他高阶语言类似,并且可以简单表达

自动化运维工具 Ansible ——YAML、基础元素

YAML 的介绍 YAML是一个可读性高的用来表达资料序列的格式.YAML参考了其他多种语言,包括:XML.C语言.Python.Perl等.YAML不是XML,不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Makup Language"(仍是一种标记语言) YAML 的特点 1:具有很好的可读性,易于实现.2:表达能力强,扩展性好.3:和脚本语言的交互性好.4:有一个一致的信息模型.5:可以基于流来处理. YAML 的语法 YAML的语法和其他高阶语言类似

自动化运维-Ansible (第三部:Playbook 介绍)

前言 之前有两篇文章分别讲了 Ansible 的部署.Ansible 的 模块使用,对 Ansible 有了最初的了解,这篇文章最主要是要介绍 Playbook.需要了解 Ansible 的部署请点击:Ansible 第一部 :部署需要了解 Ansible 的模块庆典节:Ansible 第二部:模块使用 Playbook 介绍 Playbook 是由一个或多个play 组成的列表,主要功能是将task 定义好的角色归并为一组进行统一管理,也就是通过task 调用 Asible 的模板将多个 pl

探索基础元素---基于WebGL的H5 3D游戏引擎BabylonJS

介绍 在本教程, 我们将学习如何使用Babylon.js创建基础元素, 比如盒子, 球体, 和平面. 娱乐场演示场景2 - 七个基本形状/网格 我怎么做到这个 ? 一个简单的方法是通过访问娱乐场演示场景 02来开始使用基础元素. 你可能想使用弹出菜单的'下载.zip压缩包' 选项. 你得到的zip压缩包里的index.html文件,包含有你开始创建基础元素所需的一切. 记住那个链接, 因为我们将更多的谈论到它. 我确定你已经读过Babylon.js初级教程 和 先前的教程, 因此你应该知道如何设

Spark基础与Java Api介绍

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html  一.Spark简介 1.什么是Spark 发源于AMPLab实验室的分布式内存计算平台,它克服了MapReduce在迭代式计算和交互式计算方面的不足. 相比于MapReduce,Spark能充分利用内存资源提高计算效率. 2.Spark计算框架 Driver程序启动很多workers,然后workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),最后对RD

前端基础-HTML常用标签介绍

前端基础-HTML常用标签介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTML是什么 1>.超文本标记语言(Hypertext Markup Language,HTML)通过标签语言来标记要显示的网页中的各个部分.一套规则,浏览器认识的规则: 2>.浏览器按顺序渲染网页文件,然后根据标记符解释和显示内容.但需要注意的是,对于不同的浏览器,对同一标签可能会有不完全相同的解释(兼容性): 3>.静态网页文件扩展名:".html "或 &qu

Cocos2d-x 基础元素

 Cocos2d-x  基础元素 看过本章,然后实践之后,应该会掌握以下的认识: 1.Cocos2d-x引擎的基本运转过程 2.Cocos2d-x引擎的一些初始设置 3.对导演及图层及现实对象的认识 4.如何定义自己的显示对象 1.引擎的运转 游戏设计的问题: 在游戏设计之初,我们就需要设置游戏是横屏的还是竖屏的. 展示图像的清晰度是多少? 帧数? 适配哪些屏幕? 在处理以上问题之前,我们需要了解引擎的运转是怎么样的? (以后补充) 关于XCode设置游戏屏幕竖屏的方式: 2.显示对象 每一个节