热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)

playbook是由一个或多个“play”组成的列表play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用an

playbook是由一个或多个“play”组成的列表

 

play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的module。将多个play组织在一个playbook中,即可让他们联通起来按事先编排的机制运行。

 

Playbook 采用yaml 语言编写每一个ansible 的 playbook 都是一个yaml格式的文件,因此要学习编写剧本(playbook), 我们先来了解 yaml 语法的基本用法

 

一、YAML介绍

YAML 是一个可读性高的用阿里表达资料序列的格式。YAML参考了其他多种语言,包括:XML、

C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种

语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者

 

二、特性

 

 

YAML的可读性好

 

 

YAML和脚本语言的交互性好

 

 

YAML使用实现语言的数据类型

 

 

YAML有一个一致的信息模型

 

 

YAML易于实现

 

 

YAML可以基于流来处理

 

 

YAML表达能力强,扩展性好

 

YAML语法格式:

 

1.在单一档案中,可用连续三个连字号(——)区分多个档案。另外,还有选择性的连续三个点号

( … )用来表示档案结尾

 

2.次行开始正常写Playbook的内容,一般建议写明该Playbook的功能

 

3.使用#号注释代码

 

4.缩进必须是统一的,不能空格和tab混用

 

5.缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结

合换行来实现的

 

6.YAML文件内容和Linux系统大小写判断方式保持一致,是区别大小写的,k/v的值均需大小写敏感

 

7.k/v的值可同行写也可换行写。同行使用:分隔

 

8.v可是个字符串,也可是另一个列表

 

9.一个完整的代码块功能需最少元素需包括 name: task

 

10.一个name只能包括一个task

 

11.YAML文件扩展名通常为yml或yaml

 

YAML语法简介:

[列表]

List:列表,其所有元素均使用“-”打头

 

示例:

# A list of tasty fruits

– Apple

– Orange

– Strawberry

– Mango

 

[字典]

Dictionary:字典,通常由多个key与value构成

 

示例:

# An employee record

name: Example Developer

job: Developer

skill: Elite

 

也可以将key:value放置于{}中进行表示,用,分隔多个key:value

示例:

# An employee record

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

 

三、剧本 playbook (如果使用变量,则加上2个大括号,如:[[ ansible_fqdn ]])

 

Playbook核心元素:

Hosts:执行的远程主机列表

 

Tasks:任务列表

 

Varniables:内置变量或自定义变量在playbook中调用

 

Templates:模板,可替换模板文件中的变量并实现一些简单逻辑的文件

 

Handlers:和notify结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行

 

tags:标签,指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幂等性。因此

会自动跳过没有变化的部分。此时,如果确信其没有变化,就可以通过tags跳过此些代码片段

 

示例3:hosts文件中定义普通变量

vim /etc/ansible/hosts

192.168.30.101 httpd_port=81

192.168.30.102 httpd_port=82

 

vim hostname.yml

– hosts: websrvs

  remote_user: root

 

  tasks:

    – name: set hostname

      hostname: name=www{{httpd_port}}.magedu.com

 

ansible-playbook -C hostname.yml

 

示例4:hosts文件中定义分组变量

vim /etc/ansible/hosts

[websrv:vars]

nodename=www

domainname=wxlinux.com

vim var.yml

– hosts: websrvs

  remote_user: root

 

  tasks:

    – name: create log file

      file: name=/data/{{ ansible_fqdn }}.log state=touch

 

示例6:定义变量到一个文件中

vim vars.yml

var1: httpd

var2: vsftpd

vim testvar.yml

– hosts: websrvs

  remote_user: root

  vars_files:

    – vars.yml

 

  tasks:

    – name: install package

      yum: name={{ var1 }}

    – name: create file

      file: name=/data/{{ var2 }}.log state=touch

 


推荐阅读
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • SWIG 3.0.12 Windows官方版下载:实现C语言与PHP、Java、Python等多语言代码互调接口
    SWIG 3.0.12 Windows官方版是一款强大的接口生成工具,能够实现C语言与多种高级编程语言(如Java、C#)及脚本语言(如PHP、JavaScript、Python)之间的互操作性。它不仅支持跨语言调用,还提供了丰富的封装选项,确保了代码的高效性和可维护性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Python默认字符解析:深入理解Python中的字符串处理
    在Python中,字符串是编程中最基本且常用的数据类型之一。尽管许多初学者是从C语言开始接触字符串,通常通过经典的“Hello, World!”程序入门,但Python对字符串的处理方式更为灵活和强大。本文将深入探讨Python中的字符串处理机制,包括字符串的创建、操作、格式化以及编码解码等方面,帮助读者全面理解Python字符串的特性和应用。 ... [详细]
  • 本文详细探讨了Zebra路由软件中的线程机制及其实际应用。通过对Zebra线程模型的深入分析,揭示了其在高效处理网络路由任务中的关键作用。文章还介绍了线程同步与通信机制,以及如何通过优化线程管理提升系统性能。此外,结合具体应用场景,展示了Zebra线程机制在复杂网络环境下的优势和灵活性。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 在使用Keil C51创建51单片机项目时,启动代码中包含多个关键元素,这些元素确保了系统的正确初始化和运行。主要包括复位向量、中断向量表、系统时钟配置、寄存器初始化以及主函数入口等。这些组件共同协作,为后续的应用程序执行提供稳定的基础。 ... [详细]
  • 本文作为《Java学习笔记》的开篇,旨在为初学者提供一个全面的概览。文章首先介绍了Java的基本概念及其在编程语言中的地位,强调了Java与其他主流编程语言的共通之处,特别是其核心结构,如控制语句的重要性。通过详细的目录和前言,读者可以快速了解Java的基础知识和学习路径。此外,文章还探讨了控制语句在编程中的关键作用,为后续深入学习打下坚实基础。 ... [详细]
  • 如何有效解决MySQL中预编译语句失效的问题及专业应对策略 ... [详细]
  • Perl编程基础:深入理解标量数据类型
    2019独角兽企业重金招聘Python工程师标准标量即单数名词,相对应的,列表、数组和散列则是多个名词的集合。不论单数名词还是复数名词࿰ ... [详细]
  • PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑。PHP正则表达式的定义 ... [详细]
author-avatar
超级独自旅行也快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有