变量
1.作用域
Global scope:命令行中设置。
Play scope:play中设置。
Host scope :inventory中定义、facts收集或任务中注册,在主机组和主机上设置。
1.全局变量
1.1cmd命令
#1.全局变量
#显示变量
echo %PATH
1.2.ansible变量
全局变量 var变量不加双括号,非var需要。
#全局变量的定义
#1.var变量 查看主机模块的某个参数
# 主机名 模块名 引用不加双括号
ansible servera -m debug -a 'var=package'
#1.2.未定义
ansible servera -m debug -a 'var=package' -e package=httpd
#2. 变量引用加双括号
ansible servera -m yum -a 'name={{ package }} state=present' -e package=httpd
2playbook中的变量
双引号+两个大括号 "{{ }}"
2.1字典值:无横杠
---
- name:
hosts: servera
remote_user: root
vars:
user: joe
home: /home/joe
tasks:
- name: add user
user:
name:"{{ user }}"
home:"{{ home }}"
- name:
debug:
msg:
username is {{ user }}
home is {{ home }}
2.2列表值:有横杆
---
- name:
hosts: servera
remote_user: root
vars:
user: joe
home: /home/joe
tasks:
- name: add user
user:
name:"{{ user }}"
home:"{{ home }}"
- name:
debug:
msg:
username is {{ user }}
home is {{ home }}
2.3变量文件 列表
---
- name:
hosts: servera
remote_user: root
vars_files:
- vars/user1.yml
tasks:
- name: add user
user:
name:"{{ user }}"
home:"{{ home }}"
- name:
debug:
msg:
username is {{ user }}
home is {{ home }}
cat vars/user1.yml
user1_name:user1
user1_home: /home/user
3.主机变量和组变量
3.1主机变量
3.2主机组变量
servera usera
serverb userb
vim inventory
[servers]
servera user=usera home=/opt/usera
serverb user=userb home=/opt/userb
play中去掉即可
---
- name:
hosts: servera
remote_user: root
# vars_files:
# - vars/user1.yml
tasks:
- name: add user
user:
name:"{{ user }}"
home:"{{ home }}"
- name:
debug:
msg:
username is {{ user }}
home is {{ home }}
3.2主机组变量:
主机组:servera 用的 usera
serverb 用的 tom
[servers]
servera user=usera home=/opt/usera
serverb
[servers:vars]
user=tom
home=/opt/tom