一、命名变量

以字母开头,只能包含字母、数字下划线

二、变量的基本范围级别

全局范围:命令行或ansible配置设置的变量
play范围:在play和相关结构中设置的变量
主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量

三、在playbook中定义变量(常用)

vim vars.yml
—-
- name: vars
hosts: servera
vars_files:
- a.txt(引用文件中的变量)
vars:
a: httpd
b: vsftpd(定义变量)
tasks:
- name: copy
copy:
content: “{{ a }}”(引用定义的变量,注意引号)
dest: /etc/a.conf
- name: install
yum:
name:
- “{{ a }}”
- “{{ b }}”
state: latest

cat a.txt
this is my first playbook

四、主机变量和组变量

1.直接在清单文件中定义(不推荐)
cat ansible/inventory
[web]
servera user=joe(主机变量)

[dev]
serverb

[pro:children]
web
dev

[pro:vars]
user=jack(组变量)

2.在清单文件的同级目录中创建host_vars和group_vars目录定义清单变量(推荐做法)
主机变量:
cat ansible/host_vars/servera
package: httpd

组变量:
cat ansible/group_vars/pro
package: vsftpd

五、从命令行覆盖变量

ansible-playbook vars.yml -e “a=apache”
覆盖一次性运行的playbook的变量也称为额外变量

六、使用注册变量捕获命令输出

示例:
[student@workstation ansible]$ vim register.yml
—-
- name: register
hosts: serverb
tasks:
- name: install
yum:
name: httpd
state: latest
register: install(捕获注册变量)

  1. - debug:<br /> var: install(参数需一样)

[student@workstation ansible]$ ansible-playbook -C register.yml
TASK [debug] *
ok: [serverb] => {
“install”: {
“changed”: true,
“failed”: false,
“msg”: “Check mode: No changes made, but would have if not in check mode”,
“rc”: 0,
“results”: [
“Installed: httpd”