剧本(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,永久生效(写入配置文件)
有了各个部分的内容,包括
安装软件、文件生成、服务启动、防火墙放行
再然后,需要安排什么事情?
需要编排剧本里每个部分的大顺序以及小顺序
解决方法……
1.停止服务,分别对a和b做
0)可以一个playbook里,写两个play
这两个play,分别写自己的hosts,各自包含servera和serverb
1)用service模块或systemd
2)name里包含httpd、mysqld
name里包含nginx
2.停止服务后,原来的配置文件和工作目录的文件,都还在
0)这些文件,是否还要保留?
关于配置文件的备份,可以在服务器本机,也可以放到远程的其他主机
如果要有文件的备份,通常,在服务部署时就会备份一次
至于其他时候的备份,就得按照企业的计划……
1)如果不需要考虑文件的备份,可以直接删除软件包
探索一个问题:通过yum或dnf安装的软件包,修改了配置文件……
在停止服务并且删除软件包后,配置文件还在不在?
3.卸载软件包
1)模块:yum或dnf
2)state就变成了absent,也就是确保指定的软件未安装
4.在指定的文件里,添加一行内容,不影响原有内容
1)copy也可以,lineinfile也可以
2)还可以?
用command模块,执行临时命令(但是,不能保证幂等性)