PLAYBOOK basis (a)

A ansible seven weapons

About two JSON

About three YAML

Four Jinja2 template Introduction

#############################################

A ansible seven weapons

(1)ansible 命令,
	用于执行临时性的工作,必须掌握
(2)ansible-doc
	是ansible模块的文档说明针对每个模
	块都有详细的说明及应用案例介绍,功能和Linux系统
	man命令类似,必须掌握
(3)ansible-console
	ansible为用户提供的交互式工具,
	用户可以在ansible-console虚拟出来的终端上像Shell
	一样使用ansible内置的各种命令,这为习惯使用Shell
	交互方式的用户提供了良好的使用体验
(4)ansible-galaxy
	从github上下载管理Roles的一款工具,与python的pip类似
(5)ansible-playbook
	是日常应用中使用频率最高的命令,工作机制:通过读取先编写好的playbook文件实现批量管理,可以理解为按一定条件组成的ansible任务集,必须掌握
(6)ansible-vault
	主要用于配置文件加密,如编写的playbook文件中包含敏感信息,想其他人随意查看,可用它加密/解密这个文件
(7)ansible-pull
	– ansible有两种工作模式pull/push ,默认使用push模式工作,pull和push工作模式机制刚好相反
	– 适用场景:有大批量机器需要配置,即便使用高并发线程依旧要花费很多时间
	– 通常在配置大批量机器的场景下使用,灵活性稍有欠缺,但效率几乎可以无限提升,对运维人员的技术水平和前瞻性规划有较高要求

About two JSON

1.JSON是什么
	– JSON是JavaScript对象表示法,它是一种基于文本独立于语言的轻量级数据交换格式
	– JSON中的分隔符限于单引号" ' " 、小括号" () " 、中括号" [ ] " 、大括号" { } " 、冒号 " : " 和逗号 " , "
2.JSON特性
	– JSON是纯文本
	– JSON具有"自我描述性"(人类可读)
	– JSON具有层级结构(值中存在值)
	– JSON可通过JavaScript进行解析
3.JSON语法规则
	– 数据在名称/值对中
	– 数据由逗号分隔
	– 大括号保存对象
	– 中括号保存数组
4.JSON 数据的书写格式是:名称/值对
	– 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值,例如:
		"水果 " :"苹果"
5.JSON语法规则之数组
	{ "诗人":
		["李白", "杜甫", "白居易", "李贺"]
	}
6.复合复杂类型
	{ "诗人":
	  [ {"李白":"诗仙", "年代":"唐"},
	    {"杜甫":"诗圣", "年代":"唐"},
	    {"白居易":"诗魔", "年代":"唐"},
	    {"李贺":"诗鬼", "年代":"唐"}
	  ]
	}

About three YAML

1.YAML是什么
	– 是一个可读性高,用来表达数据序列的格式
	– YAML(YAML Ain't Markup Language)
	– YAML参考了多种语言,如:C语言、Python、Perl等,并从XML、电子邮件的数据格式中获得灵感,Clark Evans在2001年首次发表了这种语言,目前已有数种编程语言或脚本语言支持这种语言
2.YAML基础语法
	– YAML的结构通过空格来展示
	– 数组使用"- "来表示
	– 键值对使用": "来表示
	– YAML使用一个固定的缩进风格表示数据层级结构关系
	– 一般每个缩进级别由两个以上空格组成
	– # 表示注释
	(注意:
	– 不要使用tab,缩进是初学者容易出错的地方之一
	– 同一层级缩进必须对齐)
3.YAML的键值表示方法
	– 采用冒号分隔
	– : 后面必须有一个空格
	– YAML键值对例子
		"诗仙" : "李白"
	– 或
		"李白":
		"诗仙"
4.复杂YAML的键值对嵌套
	"诗人":
		"李白": "诗仙"
	或
	"诗人":
	   "李白":
	      "诗仙"
	数组
	["李白", "杜甫", "白居易", "李贺"]
5.YAML 数组表示方法
	– 使用一个短横杠加一个空格
	– YAML数组例子
		- "李白"
		- "杜甫"
		- "白居易"
		- "李贺"
	– 哈希数组复合表达式
		"诗人":
		- "李白"
		- "杜甫"
		- "白居易"
		- "李贺"

6.高级复合表达式 
	"诗人":
	  -  
	   "李白": "诗仙"
	   "年代": "唐"
	  -
	   "杜甫": "诗圣"
	   "年代": "唐“
	  -
	  "白居易": "诗魔"
	  "年代": "唐"	
	 -
	  "李贺": "诗鬼"
	  "年代": "唐"

Four Jinja2 template Introduction

1.Jinja2是什么
	– Jinja2是基于Python的模板引擎,包含变量和表达式两部分,两者在模板求值时会被换为值,模板中还有标签,控制模板的逻辑
2.Jinja2模版基本语法
	– 模板的表达式都是包含在分隔符"{{ }}"内的
	– 控制语句都是包含在分隔符"{% %}"内的
	– 模板支持注释,都是包含在分隔符"{# #}" 内,支持块注释
	– 调用变量
			{{varname}}
	– 计算
			{{2+3}}
	– 判断
			{{1 in [1,2,3]}}
3.Jinja2模版控制语句
		{% if name == '诗仙' %}
			李白
		{% elif name == '诗圣' %}
			杜甫
		{% elif name == '诗魔' %}
			白居易
		{% else %}
			李贺
		{% endif %}
4.Jinja2模版控制语句
		{% if name == ... ... %}
		... ...
		{% elif name == '于谦' %}
		{% for method in [抽烟, 喝酒, 烫头] %}
		{{do method}}
		{% endfor %}
		... ...
		{% endif %}
5.Jinja2过滤器
	– 变量可以通过过滤器修改。过滤器与变量用管道符号( | )分割,也可以用圆括号传递选参数,多个过滤器可以链式调用,前一个过滤器的输出会被作为后一个过滤器的输入
例如
	– 加密一个字符串:{{ 'astr'|password_hash('sha512')}}
	– 过滤器这里不再一一列举,需要的可以查询在线文档
	http://docs.jinkan.org/docs/jinja2/templates.html
	#builtin-filters

Guess you like

Origin blog.csdn.net/qq_44839276/article/details/91946036