playbook 基础

一、playbook基础
1.1 ansible七种武器
1.1.1 ad-doc

– ansible 命令,用于执行临时性的工作.
1.1.2 ansible-doc

– ansible-doc 是 Ansible模块文档说明,针对每个模块
都有详细的用法说明及应用案例介绍,功能和Linux系
统man命令类似,必须掌握
1.1.3 ansible-console

– ansible-console 是 Ansible 为用户提供的一款交互
式工具,用户可以在 ansible-console 虚拟出来的终
端上像 Shell 一样使用 Ansible 内置的各种命令,
这为习惯于使用 Shell 交互方式的用户提供了良好的
使用体验。
1.1.4 ansible-galaxy

– ansible-galaxy 从 github 上下载管理 Roles 的一款
工具,与 python 的 pip 类似。
1.1.5 ansible-playbook

– ansible-playbook 是日常应用中使用频率最高的命令,
其工作机制是:通过读取预先编写好的 playbook 文
件实现批量管理。要实现的功能与命令 ansible 一样,
可以理解为按一定条件组成的 ansible 任务集。
1.1.6 ansible-vault

– ansible-vault 主要用于配置文件加密,如编写的
Playbook 配置文件中包含敏感信息,不希望其他人随
意查看, ansible-vault 可加密/解密这个配置文件
1.1.7 ansible-pull

– Ansible 有两种工作模式 pull/push ,默认使用 push
模式工作,pull 模式和通常使用的 push 模式工作机
理刚好相反
– 适用场景:有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间,

通常在配置大批量机器的场景下会使用
1.2 json简介
1.2.1 什么是 json

– json 是 JavaScript 对象表示法,它是一种基于文本,
独立于语言的轻量级数据交换格式。
– JSON中的分隔符限于单引号 ' 、小括号 ()、中括号
[ ]、大括号 { } 、冒号 : 和逗号 ,
1.2.2 json 特性

1. JSON 是纯文本
2.JSON 具有层级结构(值中存在值)
3.JSON 可通过 JavaScript 进行解析
1.2.3 json 语法规则

1.数据在名称/值对中
2.数据由逗号分隔
3.大括号保存对象
4.中括号保存数组
1.2.4 json的书写格式

1.JSON基本格式

– "键":"值"

“帅哥”:“李俊”

2. json 数组格式

{ "爱好":
["篮球", "台球", "旅游","撩妹"]
}

3.复合复杂类型

{ "dogs":

      [ {"name":"laifu","color":"black"},

        {"name":"ahuang","color":"yellow"},

        {"name":"jiawang","color":"red"}

      ]

}
1.3 yaml简介
1.3.1 什么是yaml

yaml是一个可读性高,用来表达数据序列的格式
1.3.2 yaml 基础语法

– YAML的结构通过空格来展示
– 数组使用"-  "来表示
– 键值对使用":  "来表示
– YAML使用一个固定的缩进风格表示数据层级结构关系
– 一般每个缩进级别由两个以上空格组成
– # 表示注释
• 注意:
– 不要使用tab,缩进是容易出错的地方之一
– 同一层级缩进必须对齐
1.3.3 YAML的键值表示方法

1 采用冒号分隔
2 : 后面必须有一个空格
3. YAML键值对例子

“帅哥”: "李俊"

  或

“帅哥”:

  "李俊"

4.复杂YAML的键值对嵌套

“dogs”:

      "name":"laifu"

  或

“dogs”:

       "name":

              "laifu"

5.数组

["篮球", "台球", "旅游","撩妹"]

6.YAML 数组表示方法
– 使用一个短横杠加一个空格
– YAML 数组例子
    - "篮球"
    - "台球"
    - "旅游"
    - "撩妹"

7. 哈希数组复合表达式
"爱好":
    - "篮球"
    - "台球"
    - "旅游"
    - "撩妹"
1.4 jinja2模版简介
1.4.1 什么是jinja2

– Jinja2是基于python的模板引擎,包含 变量 和 表达
式两部分,这两者在模板求值的时候会被替换为值。
模板中还有标签,控制模板的逻辑。

–  playbook 的模板使用 python 的 jinja2 模块来处理的
1.4.2 jinja2 模版基本语法

– 模板的表达式都是包含在分隔符 "{{ }}" 内的;
– 控制语句都是包含在分隔符 "{% %}" 内的;
– 另外,模板也支持注释,都是包含在分隔符 "{# #}"
内,支持块注释。
1.5 playbook
1.5.1 什么是playbook

– playbook 是 ansible 用于配置,部署,和管理托管主
机的剧本。通过 playbook 的详细描述,执行其中的一系
列 tasks,可以让远端主机达到预期的状态。
1.5.2 playbook语法

– playbook由 YAML 语言编写,遵循 YAML 标准
– 在同一行中,#之后的内容表示注释
– 同一个列表中的元素应该保持相同的缩进
– playbook 由一个或多个 play 组成
– play 中 hosts,variables,roles,tasks 等对象的表示
方法都是键值中间以 ": " 分隔表示

–  所有的 YAML 文件开始行都应该是 ---. 这是 YAML 格式的一部分,
表明一个文件的开始
1.5.3 playbook 构成

– Target: 定义将要执行 playbook 的远程主机组
– Variable: 定义 playbook 运行时需要使用的变量
– Tasks: 定义将要在远程主机上执行的任务列表
– Handler: 定义 task 执行完成以后需要调用的任务
1.5.4 Playbook执行结果

– 使用 ansible-playbook 运行playbook文件,得到输
出内容为 JSON 格式。并且由不同颜色组成,便于识
别。一般而言
– 绿色代表执行成功
– ***代表系统代表系统状态发生改变
– 红色代表执行失败
1.5.5 第一个playbook

1.ping所有主机的playbook

---                        # 第一行,表示开始
- hosts: all
remote_user: root
tasks:
- ping:

~ ] #ansible-playbook myping.yml -f 5    # -f 并发进程数量,默认是 5

2.playbook参数说明:

2.1. hosts 行的内容是一个或多个组或主机的 patterns,以
逗号为分隔符
2.2  remote_user 就是账户名
2.3 tasks
– 每一个 play 包含了一个 task 列表(任务列表).
– 一个 task 在其所对应的所有主机上(通过 host
pattern 匹配的所有主机)执行完毕之后,下一个 task
才会执行.
1.5.6 编写playbook

• 编写 playbook 实现以下效果
– 安装 apache
– 修改 apache 监听的端口为 8080
– 为 apache 增加 ServerName 配置
– 设置默认主页 hello world
– 启动服务
– 设置开机自启动

注:要使用ansible-doc 模块名  查看帮助文档;
---------------------
作者:李俊的博客
来源:CSDN
原文:https://blog.csdn.net/qq_36441027/article/details/82116357
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值