获取受控主机的全部变量


~]# 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>

Last modification:October 20th, 2019 at 10:05 am
If you think my article is useful to you, please feel free to appreciate