ansible之variable

来源:互联网 发布:菠萝饭软件怎么样 编辑:程序博客网 时间:2024/05/22 08:09

变量的命名

和大多数编程语言类似,ansible的变量允许使用字母数字下划线来取,但是变量名始终以字母开头

yaml语法可以定义一个字典:

foo:  field1: 1  field2: 2

调用可以使用括号和点:

foo['field1']foo.field1

点有时候会和python的某些属性调用冲突,所以尽量使用括号法。

变量的定义

  • 变量可以在inventory中定义
[atlanta]host1 http_port=80 maxRequestsPerChild=808host2 http_port=303 maxRequestsPerChild=909
  • 变量可以在playbook中定义
- hosts: webservers  vars:    http_port: 80

这将很利于阅读playbook

  • 变量可以在roles和incloud的结构中定义
    在主目录中建立group_vars目录,在其中写入yaml格式定义的变量。

使用变量

My amp goes to {{ max_amp_value }}
这是简单的例子,双大括号内部就是变量名。

在playbook中,同样的使用:template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg

注意

在yaml语法中,如果你需要引用变量作为一行的开头,你要加上双引号,否则不能调用变量而是创建字典。

这是错的:

- hosts: app_servers  vars:      app_path: {{ base_path }}/22

这是对的:

- hosts: app_servers  vars:       app_path: "{{ base_path }}/22"

从系统获取变量:facts

有一种变量不是手动定义的,而是从系统获取的,facts就是这种变量的集合。

要获得一台主机的facts,使用这个命令:ansible hosts -m setup
这将会返回很多的内容的,其实就是facts变量的组成的字典。
例如:"ansible_distribution": "CentOS"这一项{{ansible_distribution}}的值就是“CentOS”。

原创粉丝点击