📜  Ansible变量

📅  最后修改于: 2020-12-26 12:22:23             🧑  作者: Mango

Ansible变量

在剧本中,变量与在编程语言中使用变量非常相似。它可以帮助您为变量分配值,并在剧本中的任何位置使用它。您可以将条件放在变量的值周围,并相应地在剧本中使用它们。

创建有效的变量名

在开始使用变量之前,重要的是要知道什么是有效的变量名。

变量名称应为字母,数字和下划线。该变量应始终以字母开头。

foo_port和foo2都是正确或有效的变量名。

Foo端口,foo端口,foo.port和10foo都是无效的变量名称。

YAML支持将键映射到值的字典。例如:

foo:
  field1: one
  field2: two

然后,您可以使用方括号符号或点符号来引用字典中的特定字段:

foo['field1']
foo.field1

两者都将引用相同的值“一个”。但是,如果选择使用点表示法,请注意某些键可能会引起问题,因为它们与Python词典的属性和方法冲突。如果您使用以两个下划线或任何已知的公共属性作为开头和结尾的键,则应使用方括号而不是点号:

- hosts :  
vars:
tomcat_port : 8080 

在上面的示例中,定义了一个变量名称tomcat_port并将值8080分配给该变量,并可以在您的剧本中视需要使用它。

以下代码来自其中一个角色(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语法。
  • 名称:用于记录日志,并帮助调试所有块均已成功执行。
  • 操作:操作是YAML中使用的Ansible关键字。
  • register:通过使用register关键字来注册动作标签的输出。
  • 始终:它也是Ansible关键字;它说下面仍然会执行。
  • msg:显示消息。