第四节 ansible中关于playbook的基本介绍
有10台服务器-----10台服务器准备做成页面服务器---- apache服务器
在ansible主机端 ----,
搭建镜像服务器----ftp/http
编辑yum配置文件----baseurl=ftp/http
使用模块-----group模块创建组
-----user模块创建用户
-----Yum模块批量安装软件
-----copy模块分发文件(配置文件+页面文件)
-----service模块开机启动服务
但是ansible每次只能执行一个模块命令,多个模块,就需要执行多条ansible命令
就会用到playbook----剧本
4.1playbook
1.当我们想要部署多台服务器的时候,按照我们的期望去工作的时候,任务往往有很多个,我们再一个一个的执行ansible命令势必效率也是很低的,在这种情况下,我们需要借助ansible的playbook功能
2.ansible的playbook依赖于YAML语法
4.2yaml介绍
YAML是一个可读性高的用来表达资料序列的格式,YAML参考了其他多种语言,
YAML(YAML Ain’t Markup Language,)YAML不是标记语言,即XML.不过在开发这种语言的过程当中,YAML其实是"Yet Another MarkupLanguage"(仍是一种标记语言)
4.3yaml特点
- 可读性好
- 和脚本语言的交互性好
- 使用实现语言的数据类型
- 有一个一致的信息模型
- 易于实现
- 可以基于流来处理
- 表达性强,扩展性号
4.4yaml语法
YAML的语法和其他高阶语言类似,并且可以简单表达清单,散列表.标量等数据结构,其结构(structure)通过空格来展示,序列(sequence)里的项用"-“来代替, 散列(Map)里面的键值对用”:“分隔”,如下实例:
就是用于标记信息
4.5 创建自动化运维的playbook剧本
4.5.1创建文件—以.yaml结尾
Vim yyn.yaml
4.5.2编辑文件—严格的语法格式
全部都要有空格,并且空格都是一样的
hosts用于指定要执行指定任务的=主机,其可以是一个或者多个以冒号分隔的主机组
remote_user则用于指定远程主机上的执行任务的用户
task的目的使用指定的参数执行模块,而在模块参数中可以使用变量.模块执行是幂等的,这意味着多次执行也是安全的,因为其执行结果一致
定义task可以使用"action: module options " 或" module: actions" 的格式.
#此处出现的两种格式后面的为旧版本格式
推荐使用后者以实现向后兼容,如果action一行的内容过多,也可使用在行首使用几个空白字符进行换行
4.5.3运行剧本
4.6其他注意格式
1.remote_user也可以用于各个task中,也可以通过指定其通过sudo的方式在远程主机上执行任务,其可用于play全局或者某任务,甚至可以在sudo时使用sudo_user指定sudo切换的用户
例如:
- hosts: all
remote_user: lee
tasks: - name: execute a command
ping:
remote_user: lee
sudo: yes
- 在众多模块中,只有command和shell模块仅需要给定一个列表而无需使用"key=value"格式,
例如:
tasks:
- name: disable selinux
conmand: /sbin/setenforce 0