文章目录

  • playbook介绍:
  • 编写和运行playbook
  • 取消收集主机信息加快执行时间



本章目标:编写基本的ansibleplaybook

playbook介绍:

playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。
可以这么理解,将ansible执行的两种模式adhoc及playbook比作为shall中的命令行操作及脚本,adhoc对应的是命令行操作,playbook则对应脚本,相当于将在playbook写多条命令去执行。
所以当我们每天重复去对受管主机进行多项维护时,在shall里使用命令行的操作方式会很繁琐,使用playbook就会大大减小运维人员的工作量。

编写和运行playbook

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

配置文件:

ansibleplaybook 修改文件 ansible playbook编写_apache


清单:

ansibleplaybook 修改文件 ansible playbook编写_执行时间_02

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

演示1:查询受管主机是否存在kiosk(uid=1000)的用户:
查询用户使用的是user模块。
ad-hoc:

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

-m 指定模块

-a 指定参数

ansibleplaybook 修改文件 ansible playbook编写_配置文件_03


playbook:

编写语法要求:

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

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

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

在工作目录中建立user.yml

playbook以—开头

以…结尾。(可以省略)

ansibleplaybook 修改文件 ansible playbook编写_配置文件_04


编写完成后保存退出。

首先可以使用

ansible-playbook  - -syntax-check  目标playbook

来检测是否有语法错误。

ansibleplaybook 修改文件 ansible playbook编写_apache_05


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

ansibleplaybook 修改文件 ansible playbook编写_配置文件_06

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

ansibleplaybook 修改文件 ansible playbook编写_配置文件_07


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

ansibleplaybook 修改文件 ansible playbook编写_运维_08

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

ansibleplaybook 修改文件 ansible playbook编写_linux_09


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

ansibleplaybook 修改文件 ansible playbook编写_运维_10

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

ansibleplaybook 修改文件 ansible playbook编写_配置文件_11

没有报错,语法没问题。空运行看看是否能成功执行:

ansibleplaybook 修改文件 ansible playbook编写_apache_12


无报错,空执行成功。正式执行:ansible-playbook apache.yml

ansibleplaybook 修改文件 ansible playbook编写_执行时间_13


执行成功!检测:

ansibleplaybook 修改文件 ansible playbook编写_运维_14


serverc.westos.com主机安装apache成功,启动并开机自启。关闭serverc.westos.com防火墙,进行http访问测试:

ansibleplaybook 修改文件 ansible playbook编写_apache_15

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

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

playbook:

ansibleplaybook 修改文件 ansible playbook编写_配置文件_16


ansibleplaybook 修改文件 ansible playbook编写_apache_17


编写完成后保存退出。

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

ansibleplaybook 修改文件 ansible playbook编写_运维_18


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

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

ansibleplaybook 修改文件 ansible playbook编写_apache_19


执行成功!访问成功!serverb.westos.com之前卸载的firewalld及apache正常运行:

ansibleplaybook 修改文件 ansible playbook编写_linux_20


ansibleplaybook 修改文件 ansible playbook编写_配置文件_21


serverb.westos.com火墙策略:

ansibleplaybook 修改文件 ansible playbook编写_apache_22


页面访问:

ansibleplaybook 修改文件 ansible playbook编写_执行时间_23

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

在不使用ansible_facts时,可以不用收集主机信息,默认执行时收集主机信息。这会消耗相当多时间。
ps:ansible_facts会在后边博客讲述。

ansibleplaybook 修改文件 ansible playbook编写_运维_24


可以在playbook中添加:

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

ansibleplaybook 修改文件 ansible playbook编写_apache_25


执行时:

ansibleplaybook 修改文件 ansible playbook编写_运维_26


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

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