变量
变量要求:
- 1.只能包括下划线、数字、字母
- 2.只能以下划线或字母为开头
变量级别: - 全局变量:在执行命令行或全局配置文件中设置、
- play变量:在playbook剧本中和相关的结构中进行设定
- 主机变量:由清单、事实中收集或注册的任务
play变量
在yml文件中设定变量:
在指定文件中设定变量:
主机变量与清单变量
在/home/westos/inventory清单内进行变量编辑
在yml剧本中使用变量
group_vars:清单变量
host_vars:主机变量
使用数组设定变量
命令优先级最高,用命令覆盖变量
魔法变量
命令 | 指定对象 |
---|---|
hostvars | absible软件内部信息 |
group_names | 当前受控主机所在组 |
groups | 列出清单中所有组和主机 |
inventory_hostname | 包含清单中配置的当前授权管理主机的名称 |
hostvars
group_names
groups
inventory_hostname
注册变量
registet
事实变量
ansible_facts.ens160.ipv4.address:受控主机的ipv4地址
ansible_facts.fdqn:受控主机的hostname
JINJA2模板
JINJA2介绍:jinja2是Python下一个被广泛应用的模板引擎,他的设计思想来源于Django的模板引擎,并拓展了其语法和一系列强大功能,其中最显著的是增加了沙箱执行功能和可选的自动转义功能
j2模板书写规则
{# /etc/hosts line #}
127.0.0.1 localhost
{{ansible_facts['all_ipv4_addresses']}} {{ansible_facts['fqdn']}}
jinja2的for循环
vim users.yml
users:
- westos
- linux
- ansible
vim test.j2
{% for NAME in users %}
{{ NAME }}
{%endfor%}
jinja的if判定
{% for NAME in users if not NAME == "ansible" %}
User number {{loop.index}} - {{NAME}}
{%endif%}