ansible之variable

变量的命名

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

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

foo:
  field1: 1
  field2: 2

调用可以使用括号和点:

foo['field1']
foo.field1

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

变量的定义

  • 变量可以在inventory中定义
[atlanta]
host1 http_port=80 maxRequestsPerChild=808
host2 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”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值