Ansible 变量
playbook中的变量与在任何编程语言中使用变量非常相似。它帮助您使用并为变量分配一个值,然后在playbook中的任何地方使用该变量。可以在变量的值周围设置条件,并相应地在playbook中使用它们。
示例
在上面的例子中,我们定义了一个变量名tomcat_port,给它赋值8080,并且可以在你的playbook中根据需要使用它。 现在参考一下分享的例子。下面的代码是角色(install-tomcat)中的一个部分-
这里,输出是使用的变量。
让我们了解上面代码中使用的所有关键字:
- block - 用于执行给定块的Ansible语法。
-
name - 块的相关名称,用于日志记录和调试,以确定成功执行了哪些块。
-
action - 跟在action标签后面的代码是要执行的任务。action是yaml中使用的Ansible关键字。
-
register - 使用register关键字注册动作的输出,并且Output是保存动作输出的变量名。
-
always - 再次是Ansible关键字,表示以下内容将始终执行。
-
msg - 显示消息。
变量的用法 – {{Output}}
这将读取变量Output的值。同时,由于它用在msg标签中,它将打印出输出变量的值。
此外,您还可以使用变量的子属性。例如,在检查{{Output.changed}}
是否输出发生更改的情况下,可以相应地使用它。
Playbook中的异常处理
在Ansible中的异常处理类似于任何编程语言中的异常处理。下面是Playbook中异常处理的示例。
以下是异常处理的语法。
- rescue 和 always 是异常处理特定的关键字。
-
Block是代码写在的地方(在Unix机器上要执行的任何内容)。
-
如果块特性中写的命令失败,则执行将到达rescue块并被执行。如果在块特性下的命令没有错误,则不会执行rescue。
-
Always 在所有情况下都会被执行。
-
如果与Java进行比较,则类似于try、catch和finally块。
-
在这里,Block类似于try块,您在其中编写要执行的代码,rescue类似于catch块,always类似于finally块。
循环
下面是一个演示在Ansible中使用循环的示例。
任务是将所有war文件从一个目录复制到tomcat webapps文件夹中。
下面的示例中使用的大多数命令已经在之前涵盖过。在这里,我们将集中讨论循环的用法。
在’shell’命令中,我们首先执行了ls *.war命令。这样,它将列出目录中的所有war文件。
该命令的输出存储在名为output的变量中。
要循环,使用了’with_items’语法。
with_items: “{{output.stdout_lines}}” –> output.stdout_lines给出了逐行输出,然后我们使用Ansible的with_items命令对输出进行循环。
附上示例输出,以便理解如何在with_items命令中使用stdout_lines。
块
整个剧本被分为块。执行的最小步骤以块的形式编写。将具体指令以块的形式编写有助于分离功能,并在需要时进行异常处理。
块的示例在上面的变量使用,异常处理和循环中进行了介绍。
条件
条件语句用于在特定条件基础上运行特定的步骤。
在这种情况下,当条件中提到test1变量等于时,Equals将被打印出来。 when 可以与逻辑OR和逻辑AND条件一起使用,就像所有的编程语言一样。
只需将test1变量的值从Hello Vivek更改为Hello World,然后查看输出结果。