Playbook的核心元素

    Hosts 主机

    Tasks 任务

    Variables:包含了模板语言的文本文件

    Handlers:由特定条件触发的任务

      某任务的状态在运行后为changed时,可通过notify通知给相应的handlers

Playbook的基础组件

    Hosts:运行指定任务的目标主机

    remote_user:在远程主机上执行任务的用户

    tasks:任务列表

简单的Playbook脚本

playbook脚本的后缀为.yaml

Linux的Playbook 的简单使用_第1张图片

--ckeck 仅仅只是试运行,并没有在远程主机上执行,不过这个命令只要不报错就算成功了。


Linux的Playbook 的简单使用_第2张图片

查看脚本会在哪些主机上运行

Linux的Playbook 的简单使用_第3张图片

再写一个脚本

1、安装telnet脚本

2、停止httpd服务

Linux的Playbook 的简单使用_第4张图片

Linux的Playbook 的简单使用_第5张图片

另一个例子:

在playbook脚本中运行shell语句

图片.png

Linux的Playbook 的简单使用_第6张图片

handlers的使用

Linux的Playbook 的简单使用_第7张图片

Linux的Playbook 的简单使用_第8张图片

notify调用了handler中定义的"echo a line"模块。在所在任务的状态为changed的时候执行notify指定的指令


tags的使用

Linux的Playbook 的简单使用_第9张图片

正常情况下,ansible-playbook会执行两个任务

但是这次通过指定tags,可以执行指定的任务

Linux的Playbook 的简单使用_第10张图片

这里只执行了install telnet的任务


variables使用

有些变量时ansible软件内置的,facts。这些参数可以通过ansible -m setup获取

还有一些变量是在/etc/ansible/hosts中设置的。

还有一些变量是用户在脚本中自定义的

首先演示/etc/hosts中的变量

1、在单个主机后面设置一个变量。然后给主机组一个变量

图片.png


写一个脚本调用变量

图片.png

远端主机结果

图片.png

图片.png


通过变量写一个安装软件的通用脚本

Linux的Playbook 的简单使用_第11张图片

测试脚本

Linux的Playbook 的简单使用_第12张图片

通过这个脚本,安装任何软件都可以安装


再写一个自定义变量的

Linux的Playbook 的简单使用_第13张图片

命令试运行

Linux的Playbook 的简单使用_第14张图片


template 模板文件

这个功能用处就打了,本地ansible只提供一个模板文件,ansible在执行命令过程中会根据不同主机在远端主机上生成不同的文件。

template文件只能被playbook调用。

Linux的Playbook 的简单使用_第15张图片

ansible开头的一本上都是内建的变量名

先写一个模板文件

图片.png

以这个文件为模板在远端主机上生成一个文件

Linux的Playbook 的简单使用_第16张图片

运行命令

Linux的Playbook 的简单使用_第17张图片

远端主机测试

图片.png

图片.png

Playbook的条件判断

图片.png

意思是如何远端主机版本是6,就执行任务,如果不是就不用执行了。

Linux的Playbook 的简单使用_第18张图片

由于远端主机的主版本都是7,所以跳过了

把判断语句改成7

Linux的Playbook 的简单使用_第19张图片

这次就没有跳过了

playbook的循环

循环的固定变量是item,然后要在tasks中使用with_item给定要循环元素的列表

Linux的Playbook 的简单使用_第20张图片

命令执行

Linux的Playbook 的简单使用_第21张图片

远端执行结果

图片.png


再写一个双因子的例子

user11属于group11 user12属于group12

Linux的Playbook 的简单使用_第22张图片

运行

Linux的Playbook 的简单使用_第23张图片

远端主机查看

Linux的Playbook 的简单使用_第24张图片