Linux如何编写playbook脚本,ansible (playbook的基本编写)

文章目录

playbook介绍:

编写和运行playbook

取消收集主机信息加快执行时间

本章目标:编写基本的ansibleplaybook

playbook介绍:

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

可以这么理解,将ansible执行的两种模式adhoc及playbook比作为shall中的命令行操作及脚本,adhoc对应的是命令行操作,playbook则对应脚本,相当于将在playbook写多条命令去执行。

所以当我们每天重复去对受管主机进行多项维护时,在shall里使用命令行的操作方式会很繁琐,使用playbook就会大大减小运维人员的工作量。

编写和运行playbook

环境:当前工作目录必须含有ansible配置文件及受管主机清单。

配置文件:

6da90fab7e41a642dd349c26bbd3b1c7.png

清单:

c981eb6ae3ff93e2e55fc25c1f742247.png

playbook遵循的语法为yaml语法,playbook文件以yml为后缀。

演示1:查询受管主机是否存在kiosk(uid=1000)的用户:

查询用户使用的是user模块。

ad-hoc:

ansible all -m user -a "name=kiosk uid=1000 "

-m 指定模块

-a 指定参数

56c17f031213094f97b1dee2eccff851.png

playbook:

编写语法要求:

1、对于缩进并不严格,但是处在同一层次中的同一级别的元素必须有相同的缩进量。

2、如果项目时其他享目的子项目,则该项目的所尽量必须大于其父项目。

3、playbook里为键值对的集合。

创建playbook:

在工作目录中建立user.yml

playbook以—开头

以…结尾。(可以省略)

10f863a3b6576eca638e4a68ea975232.png

编写完成后保存退出。

首先可以使用

ansible-playbook - -syntax-check 目标playbook

来检测是否有语法错误。

fa294b8c20c52923507b68e5e6db2047.png

执行完之后没有报错即没有语法错误。

没有语法错误时可以使用ansible-playbook -C 目标playbook对目标playbook进行空运行。(此playbook较为简单)即显示运行结果,但并不在目标主机进行操作。可以清楚查看此playbook对目标主机产生的影响。

0b7db343532ce3c73c44b164df322412.png

接着使用ansible-playbook 目标playbook文件 对此playbook进行执行:

483e67fa02f137d8a38f68864b5802e2.png

也可以使用-v参数显示playbook的具体执行信息。可以显示当前playbook使用的配置文件:

6243cbc3b7e6b315c6560b9bbbbae5fc.png

playbook演示2:使用yum模块对目标主机进行安装apache,修改其发布页面,并配置使其启动并开机启动:

2453eea00d17e2e0e8e351758e92be24.png

替换的index.html:./files/index.html:

47de43ea87139eb1d1f00a9f1115c2e1.png

使用ansible-playbook - -syntax-check apache.yul对其进行语法检测:

6c476dce7cbcb52d6a1b71a72683cf0f.png没有报错,语法没问题。

空运行看看是否能成功执行:

cadc1402ea8b97aba4e1811692591b90.png

无报错,空执行成功。

正式执行:ansible-playbook apache.yml:

23b7ef9e8e7361e552eb83815dd32709.png

执行成功!

检测:

56230ab146d1d815bc7cac630d93d776.png

serverc.westos.com主机安装apache成功,启动并开机自启。

关闭serverc.westos.com防火墙,进行http访问测试:

85432ba9c3e459102ef34c790e7f742c.png

多任务playbook演示3:

这里继续使用上个演示的清单和配置文件。

在上个演示时,须手动关闭防火墙才能访问受管主机apache的默认发布页面,在此演示中,将火墙的打开及关闭及永久添加httpd和最后使用主机测试这些环节也添加进playbook。

首先卸载上个演示所安装的apache,firewalld。

playbook:

be6a2651413ec295da2b7a64bb22dd3a.png

847e073645dabf775b435c5da9d52f3e.png

编写完成后保存退出。

使用 ansible-playbook --syntax-check apache.yml对playbook语法进行检测:

0b12a312469b78cfc28ae35bdbe53e93.png

语法检测正常,语法正确!

使用asible-playbook apache.yml进行执行:

6abef76b79617e80e2cd01c0c3c48dfd.png

执行成功!访问成功!

serverb.westos.com之前卸载的firewalld及apache正常运行:

fceee18074ad9abe6d9458d4fea79b6f.png

bf6d7b27d30e73774105b3b7fc2a8d70.png

serverb.westos.com火墙策略:

cdb8e8bc9a4576e689bfd38e3bd7f358.png

页面访问:

e41d417aa3d4a8b88bfc669e71ac307a.png

取消收集主机信息加快执行时间

在不使用ansible_facts时,可以不用收集主机信息,默认执行时收集主机信息。这会消耗相当多时间。

ps:ansible_facts会在后边博客讲述。

91a708574ffbef941167362af5c3b74f.png

可以在playbook中添加:

gather_facts: no来禁用收集主机信息。

ea79705950b3a8bc26f08ea1d66b6f97.png

执行时:

c725e8d4f37a6c68e7eb9719592856b0.png

就没有了收集主机信息这一步,大大节约执行时间。

注意:当playbook中使用了事实时,不能取消收集主机信息!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值