获取受控主机的全部变量
~]# ansible websrvs -m setup
常用的变量有
ansible_fqdn #全名
ansible_hostname #主机名
ansible_os_family #主机OS
ansible_processor_vcpus #cpu核心个数
ansible_memtotal_mb #内存大小
...
查看指定变量:
~]# ansible websrvs -m setup -a 'filter=ansible_os_family' #只查看主机OS信息
~]# ansible websrvs -m setup -a 'filter=*distribution*' #查看所有的OS信息
自定义变量
自定的位置可以有:
hosts #清单中定义
ymlfile #yml剧本中定义
varsfile #专用变量文件中定义
ansible-playbook -e 'key=value key2=value2' #命令行定义
优先级小到大
公共变量 < 专用变量 < yml文件中定义的变量 < 命令行变量
hosts清单文件中定义
[websrvs]
172.16.10.10 http_port=80
172.16.10.20 http_port=8080
#为每个主机定义一个普通变量(专用的)
[websrvs:vars]
name=web
#定义组的公用变量,注意是"组名:vars"
在yml剧本文件中定义
---
- hosts: websrvs
remote_user: root
vars:
- pkname: httpd
#定义变量pkname的值为httpd
- pkname2: vsftpd
#定义变量pkname2的值为vsftpd
tasks:
- name: Install Httpd
yum: name={{ pkname }}
- name: Install Vsftpd
yum: name={{ okname2 }}
专用文件中定义,然后被调用定义一个var文件,为vars.yml
var1: httpd
var2: vsftpd
调用变量文件:
---
- hosts: websrvs
remote_user: root
vars_files:
- vars.yml
tasks:
- name: Install Package
yum: name={{ var1 }},{{ var2 }}
注意变量文件和剧本在同一个目录下
命令行定义
~]# ansible-playbook -e 'pkname=httpd pkname2=vsftpd' test.yml
优先级最高,同时也是linux系统的特性,命令行的优先级较高
<center>不知不觉到最后还是想她,不知道她还想我吗?也许----不会把</center>