只能包含数字,下划线,字母
只能用下划线或字母开头
全局:
从命令行或配置文件中设定的
paly:
在play和相关结构中设定的
主机:
由清单,事实收集或注册的任务
变量优先级设定: 狭窄范围有限与广域范围
extra vars (-e 选项指定的变量)最高
inventory 主机清单中定义的变量(ansible_ssh_user等)
play剧本中vars、vars_files定义的变量
系统的facts变量
角色定义的默认变量 最低
1 ---
2 - name: for 91-93 httpd.server install and start
3 hosts: server
4 tags: httpd server start and firealld add + port 8080/tcp
5 vars:
6 NAME: westos
7 tasks:
8 - debug:
9 msg: '{{NAME}}'
1 ---
2 - name: demo
3 hosts: server
4 vars_files: /root/.ansible/group_vars/server.yml
5 tasks:
6 - debug:
7 msg: '{{NAME}}'
1 ---
2 vars: westoslinux
清单内容
[westos:vars]
NAME:westoslinux
1 ---
2 - name: demo
3 hosts: westos
4 tasks:
5 - debug:
6 msg: '{{NAME}}'
mkdir groups_vars
vim groups_vars/server
1 ---
2 NAME: westoslinux
1 ---
2 - name: demo
3 hosts: server
4 vars_files:
5 - ./group_vars/server.yml
6 tasks:
7 - debug:
8 msg: '{{NAME}}'
将原有Playbook中的变量覆盖掉,使其自行使用新的变量
ansible-playbook 2.yml -e 'NAME=hellow'
1 ---
2 - name: demo
3 hosts: server
4 vars_files:
5 ./1.yml
6 tasks:
7 - debug:
8 msg: "{{USER['westos']['gid']}}"
变量文件
1 ---
2 USER:
3 linux:
4 uid: westos
5 gid: 1000
6 westos:
7 uid: 0
8 gid: root
1 ---
2 - name: demo
3 hosts: server
4 tasks:
5 - shell:
6 cmd: date
7 register: westos
8 - debug:
9 var: westos['stdout_lines']
1 ---
2 - name: demo
3 hosts: server
4 gather_facts: no #开启不会进行采集信息的步骤
5 tasks:
6 - debug:
7 var: ansible_memtotal_mb
facts组件是Ansible用于采集被管理机器设备信息的一个功能,采集的机器设备信息主要包含IP地址,操作系统,以太网设备,mac 地址,时间/日期相关数据,硬件信息等。
也叫做ansible的内置变量
ansible server -m debug -a "msg='{{inventory_dir}}'" #清单目录位置
ansible server -m debug -a "msg='{{inventory_file}}'" #清单位置
ansible server -m debug -a "msg='{{inventory_hostname}}'" #获取主机的名称
ansible server -m debug -a "msg='{{inventory_hostname_short}}'" #获取主机的简短名称
ansible server -m debug -a "msg='{{playbook_dir}}'" #playbook存储目录
ansible server -m debug -a "msg='{{hostvars}}'" #主机的信息
ansible server -m debug -a "msg='{{groups}}'" #列出清单中所有的组和主机
ansible server -m debug -a "msg='{{group_names}}'" #当前受管主机所在组