Playbook的核心元素shell
Hosts 主机
ide
Tasks 任务测试
Variables:包含了模板语言的文本文件spa
Handlers:由特定条件触发的任务
图片
某任务的状态在运行后为changed时,可经过notify通知给相应的handlersrem
Playbook的基础组件it
Hosts:运行指定任务的目标主机模板
remote_user:在远程主机上执行任务的用户class
tasks:任务列表基础
简单的Playbook脚本
playbook脚本的后缀为.yaml
--ckeck 仅仅只是试运行,并无在远程主机上执行,不过这个命令只要不报错就算成功了。
查看脚本会在哪些主机上运行
再写一个脚本
一、安装telnet脚本
二、中止httpd服务
另外一个例子:
在playbook脚本中运行shell语句
handlers的使用
notify调用了handler中定义的"echo a line"模块。在所在任务的状态为changed的时候执行notify指定的指令
tags的使用
正常状况下,ansible-playbook会执行两个任务
可是此次经过指定tags,能够执行指定的任务
这里只执行了install telnet的任务
variables使用
有些变量时ansible软件内置的,facts。这些参数能够经过ansible -m setup获取
还有一些变量是在/etc/ansible/hosts中设置的。
还有一些变量是用户在脚本中自定义的
首先演示/etc/hosts中的变量
一、在单个主机后面设置一个变量。而后给主机组一个变量
写一个脚本调用变量
远端主机结果
经过变量写一个安装软件的通用脚本
测试脚本
经过这个脚本,安装任何软件均可以安装
再写一个自定义变量的
命令试运行
template 模板文件
这个功能用处就打了,本地ansible只提供一个模板文件,ansible在执行命令过程当中会根据不一样主机在远端主机上生成不一样的文件。
template文件只能被playbook调用。
ansible开头的一本上都是内建的变量名
先写一个模板文件
以这个文件为模板在远端主机上生成一个文件
运行命令
远端主机测试
Playbook的条件判断
意思是如何远端主机版本是6,就执行任务,若是不是就不用执行了。
因为远端主机的主版本都是7,因此跳过了
把判断语句改为7
此次就没有跳过了
playbook的循环
循环的固定变量是item,而后要在tasks中使用with_item给定要循环元素的列表
命令执行
远端执行结果
再写一个双因子的例子
user11属于group11 user12属于group12
运行
远端主机查看