条件判断与循环的组合
情景:我们在执行tasks的时候,我们就需要检测这个任务的结果是否达到了理想的状态,如果没有达到我们预想的状态时,就需要退出整个playbook执行,这个时候我们需要对某个task结果一直循环检测了。
那么我们会写这样的一个脚本,
startswith在我们python里面就是查看文件里面是不是以什么开头的。(查看一个文本的开头)
retries是几秒执行一次
delay是执行几次
我们在在root根目录下写一个ansibel的文件。并且写上相应的字符,如下图:
一定注意是远程主机上面写
我们执行一下来看
25秒以后我们可以看到
出错了
这个时候我们再来验证一下,将ansible文件里面的的master放在前面。如下图:
更改ansible这个文件后在来执行。
这里我们就看到成功了
获取主机名与用户名并用循环输出
我们先写这样的一个脚本:
解释:这里我们先看一下这个脚本,里面有一个循环。这个循环是使用我们的标准模板格式,item,我们这里使用一个循环执行两个shell命令,并且把这个结果赋值给ret,那么我们这里可以理解一休register这个模块用于接收上面的执行循环后的值,赋值给ret。
我们在这个tasks下面再建一个任务这个任务的名字,我们取名为展示用户名和主机名。
再使用debug模块的msg参数输出以下的信息。
这里用到的是jinjia2语法。同学们可以去查一下jinjia2语法的使用规范:
控制结构 {% %}
变量取值 {{ }}
jinja2模板中使用 {{ }} 语法表示一个变量,它是一种特殊的占位符。当利用jinja2进行渲染的时候,它会把这些特殊的占位符进行填充/替换,jinja2支持python中所有的Python数据类型比如列表、字段、对象等。
注释 {# #}
所以这里我使用了msg="{%for i in ret.results%}{{i.stdout}}{%forend%}"
这里用了一个循环输出我们主机名和用户名。
执行脚本后会得到这样的一个结果,将uname与hostname一并进行输出。
有发现错误的同学及朋友们将改正后写在评论区。
祝同学们学习愉快,
感谢CSDN平台