微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux的Playbook 的简单使用

Playbook的核心元素

    Hosts 主机

    Tasks 任务

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

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

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

Playbook的基础组件

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

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

    tasks:任务列表

简单的Playbook脚本

playbook脚本的后缀为.yaml

图片.png

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


图片.png

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

图片.png

再写一个脚本

1、安装telnet脚本

2、停止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中的变量

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

图片.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



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐