一、概念
shell变量:
定义: Host=oldxu.com
使用:${Host}
Ansible变量:
定义: Host=oldxu.com
使用:{
{ Host }}
变量:以一个固定的字符串去表示一个不固定的值
那么在Ansible中定义变量分为如下三种方式:
1. 通过命令行进行变量定义
2. 在play文件中进行定义变量
3. 通过inventory在主机组或单个主机中设置变量
变量的优先级( 变量读取的顺序 )
二、
1.通过play文件中进行变量定义:
通过vars来进行定义变量
[root@manager ansible_variables]# cat var1.yml
- hosts: webservers
vars: #定义变量关键字
- web_packages: httpd
- ftp_packages: vsftpd
tasks:
- name: Installed Rpm Packages "{
{ web_packages }}" "{
{ ftp_packages }}"
yum:
name:
- "{
{ web_packages }}"
- "{
{ ftp_packages }}"
state: present
注意:vars关键字定义的变量,无法与其他的playbook进行共享。
通过vars_files来进行定义变量
[root@manager ansible_variables]# cat test.yml
web_packages: httpd-tools
ftp_packages: vsftpd
[root@manager ansible_variables]# cat var1.yml
- hosts: webservers
vars_files: test.yml
tasks:
- name: Installed Rpm Packages "{
{ web_packages }}" "{
{ ftp_packages }}"
yum:
name:
- "{
{ web_packages }}"
- "{
{ ftp_packages }}"
state: present
[root@manager ansible_variables]# cat var2.yml
- hosts: webservers
vars_files: test.yml
tasks:
- name: Installed Rpm Packages "{
{ web_packages }}" "{
{ ftp_packages }}"
yum:
name:
- "{
{ web_packages }}"
- "{
{ ftp_packages }}"
state: present
2.通过inventory在主机组或单个主机中设置变量
[root@manager ansible_variables]# mkdir host_vars
[root@manager ansible_variables]# mkdir group_vars
[root@manager a