Ansible变量
定义变量规则:由字母/数字/下划线组成,变量需要以字母开头,ansible内置的关键字不能作为变量名。
ansible中,可以将变量简化为三个范围
- Global范围(高):从命令行和ansible配置设置的变量
- play范围(中):在play和相关结构中设置的变量
- Host范围(低):inventory、facts或register的变量,在主机组和个别主机上设置的变量
三个范围的变量优先级依次降低,如果变量重复定义,则以优先级高的为准
定义变量的方式
ansible中定义变量的方式有很多种,大致有:
- 将模块的执⾏结果注册为变量
- 直接定义字典类型的变量
- role中⽂件内定义变量
- 命令⾏传递变量
- 借助with_items迭代将多个task的结果赋值给⼀个变量
- inventory中的主机或主机组变量
- 内置变量
vars定义变量
---
- name: test
hosts: node1
vars:
a: 111
b: 222
c:
c1: 333
c2: 444
tasks:
- name: debug1
debug:
msg: "{
{ a }}"
- name: debug2
debug:
msg: "{
{ b }}"
- name: debug3
debug:
msg: "{
{ c }}"
- name: debug4
debug:
msg: "{
{ c.c1 }}"
- name: debug5
debug:
msg: "{
{ c.c2 }}"
[student@ansible ansible]$ ansible-playbook test.yml
PLAY [test] *****************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************************************
ok: [node1]
TASK [debug1] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": 111
}
TASK [debug2] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": 222
}
TASK [debug3] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": {
"c1": 333,
"c2": 444
}
}
TASK [debug4] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": "333"
}
TASK [debug5] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": "444"
}
PLAY RECAP ******************************************************************************************************************************************************************************************************
node1 : ok=6 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
vars_files变量
[student@ansible ansible]$ vim var.yml
---
a: 111
b: 222
c:
c1: 333
c2: 444
[student@ansible ansible]$ vim test.yml
---
- name: test
hosts: node1
vars_files: /home/student/ansible/var.yml
tasks:
- name: debug1
debug:
msg: "{
{ a }}"
- name: debug2
debug:
msg: "{
{ b }}"
- name: debug3
debug:
msg: "{
{ c }}"
- name: debug4
debug:
msg: "{
{ c.c1 }}"
- name: debug5
debug:
msg: "{
{ c.c2 }}"
[student@ansible ansible]$ ansible-playbook test.yml
PLAY [test] *****************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************************************
ok: [node1]
TASK [debug1] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": 111
}
TASK [debug2] ***************************************************************************************************************************************************************************************************
ok: [node1] => {
"msg": 222
}
TASK [debug3] *********************************************************************