Ansible变量介绍

命令规则

  • 变量的名字由字母、下划线和数字组成,必须以字母开头
  • 保留关键字不能作为变量名称
add, append, as_integer_ratio, bit_length, capitalize, center, clear, 
conjugate, copy, count, decode, denominator, difference, 
difference_update, discard, encode, endswith, expandtabs, 
extend, find, format, fromhex, fromkeys, get, has_key, hex, 
imag, index, insert, intersection, intersection_update, isalnum, 
isalpha, isdecimal, isdigit, isdisjoint, is_integer, islower, 
isnumeric, isspace, issubset, issuperset, istitle, isupper, 
items, iteritems, iterkeys, itervalues, join, keys, ljust, lower,
 lstrip, numerator, partition, pop, popitem, real, remove,
 replace, reverse, rfind, rindex, rjust, rpartition, rsplit, rstrip,
 setdefault, sort, split, splitlines, startswith, strip, swapcase,
symmetric_difference, symmetric_difference_update, title, 
translate, union, update, upper, values, viewitems, viewkeys,
viewvalues, zfill

变量类型

根据作用范围大概分为这几种变量:

变量优先级:全局变量 > 剧本变量 > 资产变量

1、全局变量

通过执行playbook时指定,使用-e指定

在这里插入图片描述

1、可以在命令行定义

ansible all -i localhost, -m debug -a "msg='my key is {{ key }}'" -e "key=value"

2、也可以通过引入文件定义

# cat a.json
{"key":"value","type":"school"}
# ansible all -i localhost, -m debug -a "msg='key is {{ key  }}, type is {{ type }}'" -e @a.json

在这里插入图片描述

2、剧本变量

此种变量在playbook中指定

1、通过PLAY 属性 vars 定义

---
- name: test play vars 
  hosts: all
  vars:
    user: jflin
    home: /home/lilei

2、通过PLAY 属性 vars_files 定义

将变量单独拿出来形成一个.yml文件,再在playbook中进行指定,放在当前playbook同级目录下的vars文件夹中

---
- name: test play vars
  hosts: all
  vars_files:
    - vars/users.yml

如何在playbook中使用变量?

使用 “{{ 变量名 }}” 来使用变量,当不加双引号时,name: {{ user }} 是一个字典的开始,会导致ansible解析有误

---
- name: test play vars 
  hosts: all
  vars:
    user: jflin
    home: /home/lilei
  tasks:
    - name: create the user {{ user }}
      user:
        name: "{{ user }}"
        home: "{{ home }}"
3、资产变量

此种变量对应了我们资产中的主机,在资产文件中进行定义

主机变量:

此种变量只针对特点的主机有效

[web_servers]
172.18.0.3 user=jflin
172.18.0.4
主机组变量:

此种变量针对该主机组的所有主机有效

[web_servers]
172.18.0.3 user=jflin
172.18.0.4

[web_servers:vars]
home="/home/jflin"

优先级?

当主机变量与主机组变量重复时,主机变量优先级较高

4、Inventory 内置变量

此种变量是ansible内置的变量

ansible_ssh_host
      将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.

ansible_ssh_port
      ssh端口号.如果不是默认的端口号,通过此变量设置.

ansible_ssh_user
      默认的 ssh 用户名

ansible_ssh_pass
      ssh 密码(这种方式并不安全,官方强烈建议使用 --ask-pass 或 SSH 密钥)

ansible_sudo_pass
      sudo 密码(这种方式并不安全,官方强烈建议使用 --ask-sudo-pass)

ansible_sudo_exe (new in version 1.8)
      sudo 命令路径(适用于1.8及以上版本)

ansible_ssh_private_key_file
      ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.

ansible_python_interpreter
      目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如   /usr/local/bin/python3
hostvars
	查看ansible的信息,包括ansible版本、主机清单等

在这里插入图片描述

5、Facts变量

Facts变量不需要我们人为去声明变量名及赋值。

它收集了有关被管理服务器的操作系统的版本、服务器的IP地址、主机名,磁盘的使用情况、CPU个数、内存大小等等有关被管理服务器的私有信息

在每次PlayBook运行的时候都会发现在PlayBook执行前都会有一个Gathering Facts的过程。这个过程就是收集被管理服务器的Facts信息过程。

ansible all -c local -m setup

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值