一、命名变量
以字母开头,只能包含字母、数字下划线
二、变量的基本范围级别
全局范围:命令行或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(捕获注册变量)
- 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”