Ansible 变量

Ansible 变量

playbook中的变量与在任何编程语言中使用变量非常相似。它帮助您使用并为变量分配一个值,然后在playbook中的任何地方使用该变量。可以在变量的值周围设置条件,并相应地在playbook中使用它们。

示例

- hosts : <your hosts> 
vars:
tomcat_port : 8080

在上面的例子中,我们定义了一个变量名tomcat_port,给它赋值8080,并且可以在你的playbook中根据需要使用它。 现在参考一下分享的例子。下面的代码是角色(install-tomcat)中的一个部分-

block: 
   - name: Install Tomcat artifacts 
      action: > 
      yum name = "demo-tomcat-1" state = present 
      register: Output 

   always: 
      - debug: 
         msg: 
            - "Install Tomcat artifacts task ended with message: {{Output}}" 
            - "Installed Tomcat artifacts - {{Output.changed}}"

这里,输出是使用的变量。

让我们了解上面代码中使用的所有关键字:

  • block - 用于执行给定块的Ansible语法。

  • name - 块的相关名称,用于日志记录和调试,以确定成功执行了哪些块。

  • action - 跟在action标签后面的代码是要执行的任务。action是yaml中使用的Ansible关键字。

  • register - 使用register关键字注册动作的输出,并且Output是保存动作输出的变量名。

  • always - 再次是Ansible关键字,表示以下内容将始终执行。

  • msg - 显示消息。

变量的用法 – {{Output}}

这将读取变量Output的值。同时,由于它用在msg标签中,它将打印出输出变量的值。

此外,您还可以使用变量的子属性。例如,在检查{{Output.changed}}是否输出发生更改的情况下,可以相应地使用它。

Playbook中的异常处理

在Ansible中的异常处理类似于任何编程语言中的异常处理。下面是Playbook中异常处理的示例。

tasks: 
   - name: Name of the task to be executed 
      block: 
         - debug: msg = 'Just a debug message , relevant for logging' 
         - command: <the command to execute> 

      rescue: 
         - debug: msg = 'There was an exception.. ' 
         - command: <Rescue mechanism for the above exception occurred) 

      always: 
         - debug: msg = "this will execute in all scenarios. Always will get logged"

以下是异常处理的语法。

  • rescuealways 是异常处理特定的关键字。

  • 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。

--- 
#Tsting 
- hosts: tomcat-node 
   tasks: 
      - name: Install Apache 
      shell: "ls *.war" 
      register: output 
      args: 
         chdir: /opt/ansible/tomcat/demo/webapps 

      - file: 
         src: '/opt/ansible/tomcat/demo/webapps/{{ item }}' 
         dest: '/users/demo/vivek/{{ item }}' 
         state: link 
      with_items: "{{output.stdout_lines}}"

Ansible 变量

整个剧本被分为块。执行的最小步骤以块的形式编写。将具体指令以块的形式编写有助于分离功能,并在需要时进行异常处理。

块的示例在上面的变量使用,异常处理和循环中进行了介绍。

条件

条件语句用于在特定条件基础上运行特定的步骤。

--- 
#Tsting 
- hosts: all 
   vars: 
      test1: "Hello Vivek" 
   tasks: 
      - name: Testing Ansible variable 
      debug: 
         msg: "Equals" 
         when: test1 == "Hello Vivek"

在这种情况下,当条件中提到test1变量等于时,Equals将被打印出来。 when 可以与逻辑OR和逻辑AND条件一起使用,就像所有的编程语言一样。

Ansible 变量

只需将test1变量的值从Hello Vivek更改为Hello World,然后查看输出结果。

Ansible 变量

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程