剧本(playbook)
现在,可以写各种临时命令
但如果,想把所有步骤,集合到一起,写到同一个文件里
让ansible自动按顺序执行
就必须要写“剧本”
剧本里面,也可以写临时命令,但是剧本有规范的文本格式
一个剧本里(playbook)
1.可以写多个“剧集”,每一集是一个“play”
2.每个play里
指明,对哪些客户机操作,操作什么,顺序
具体格式
1.整个playbook开头,顶头写:---(三个横杠,没有空格)
2.往后退一层/一级,play的标题/名字
顶头写:一个横杠一个空格name冒号名字
---
- name: xxxxxxx
3.再往下
和上面一行的name对其
文件名,以“.yml”结尾
如果写完了playbook,让ansible执行:
#ansible-playbook xxx.yml
可以在执行前,进行“格式检查”,不是运行检查,只检查剧本的格式
#ansible-playbook --syntax-check xxx.yml
空运行
演练、彩排?
能看到剧本执行的过程、流程、预期结果
来看一些例子(用法)
先来盘点一下,现在能写出来的,以及涉及到的
剧本内容->模块
yum或dnf模块
管理软件包
可以安装软件包,卸载软件包,更新软件包
于是,就会有个小问题,看上面的例子
用yum模块,指定了俩软件包httpd和firewalld
并没写类似与install之类的选项,默认就是安装?
其实,看最后state
也就是说,要通过yum,保证上面列出的两个软件包,处于哪个状态……
比如
present保证存在,absent确保不存在
这俩选项,比较通用,不光在yum模块里用到
对于yum模块,还有一个latest,确保存在并且是最新版本
再比如下面这个
copy这个模块,通常用来传文件
但是,看上面的例子,也可以直接把文本内容传进目标文件
于是~给客户机生成文件,就有多种方式
比如
copy把整个文件,传过去
copy把内容传过去
lineinfile确保目标文件里有某一行内容
继续
关于服务
Linux->软件包->执行->持续执行->守护进程->服务
可用的模块:service和systemd
state和enabled,分别管理一个服务的当前状态和开机启动设置
再然后,关于防火墙
主要是firewalld,不是iptables(是别的玩意)
首先是防火墙自己也是个服务
需要放行,每一个业务相关的其他服务
service、state
接下来两个不太一样
immediate,立即生效
permanent,永久生效(写入配置文件)
有了各个部分的内容,包括
安装软件、文件生成、服务启动、防火墙放行
再然后,需要安排什么事情?
需要编排剧本里每个部分的大顺序以及小顺序