Linux的Playbook 的简单使用

Playbook的核心元素shell

    Hosts 主机
ide

    Tasks 任务测试

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

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

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

Playbook的基础组件it

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

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

    tasks:任务列表基础

简单的Playbook脚本

playbook脚本的后缀为.yaml

图片.png

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


图片.png

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

图片.png

再写一个脚本

一、安装telnet脚本

二、中止httpd服务

图片.png

图片.png

另外一个例子:

在playbook脚本中运行shell语句

图片.png

图片.png

handlers的使用

图片.png

图片.png

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


tags的使用

图片.png

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

可是此次经过指定tags,能够执行指定的任务

图片.png

这里只执行了install telnet的任务


variables使用

有些变量时ansible软件内置的,facts。这些参数能够经过ansible -m setup获取

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

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

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

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

图片.png


写一个脚本调用变量

图片.png

远端主机结果

图片.png

图片.png


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

图片.png

测试脚本

图片.png

经过这个脚本,安装任何软件均可以安装


再写一个自定义变量的

图片.png

命令试运行

图片.png


template 模板文件

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

template文件只能被playbook调用。

图片.png

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

先写一个模板文件

图片.png

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

图片.png

运行命令

图片.png

远端主机测试

图片.png

图片.png

Playbook的条件判断

图片.png

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

图片.png

因为远端主机的主版本都是7,因此跳过了

把判断语句改为7

图片.png

此次就没有跳过了

playbook的循环

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

图片.png

命令执行

图片.png

远端执行结果

图片.png


再写一个双因子的例子

user11属于group11 user12属于group12

图片.png

运行

图片.png

远端主机查看

图片.png

相关文章
相关标签/搜索