1.变量命名
- 只能包含数字,下划线,字母
- 只能用下划线或字母开头
2.变量级别
-
全局: 从命令行或配置文件中设定的
-
paly: 在play和相关结构中设定的
-
主机: 由清单,事实收集或注册的任务
-
优先级:主机>play>全局
-
变量优先级设定:
-
狭窄范围优先于广域范围
3.变量设定和使用方式
1.playbook中直接定义变量并使用
---
- name: test
hosts: westos
vars:
westos: hello westos
tasks:
- name: test
debug:
msg: "{{ westos }}"
2.在文件中定义变量
---
- name: test
hosts: westos
vars_files: ./westos.yml
tasks:
- name: test
debug:
msg: "{{ westos }}"
3.设定主机变量和清单变量
---
- name: create user
hosts: westos
tasks:
- name: user mode
user:
name: "{{ USER }}"
state: present
vim inventory
[westos]
192.168.75.142
[westos:vars]
USER=test
3.jinjia2变量
Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能
模板书写规则:
{# /etc/hosts line #} 注释文件说明
127.0.0.1 localhost 文件内容
{{ ansible_facts[‘all_ipv4_addresses’] }}{{ansible_facts[‘fqdn’]}}使用事实变量作为内容,用于测试
1.文件中定义变量
vim test.j2
{ # test file #}
hello westos
vim test.yml
---
- name: test.j2
hosts: westos
tasks:
- name: create test file
template:
src: ./test.j2
dest: /mnt/test