ansible-play变量的基本应用

---
- host: appsrvs
  remote_user: root

 tasks:
   - name: install package
     yum: name={{ pkname }}
   - name: start service
     service: name={{ pkname }} state=started enabled=yes

在执行命令时定义变量:ansible-playbook -e 'pkname=vsftpd' app.yml  

- host: appsrvs
  remote_user: root
  vars:
   - pkname1: httpd
   - pkname2: vsftp
 tasks:
   - name: install package
     yum: name={{ pkname1 }}
   - name: install package
     yum: name={{ pkname2 }}

直接在剧本中定义变量:ansible-playbook app.yml  

########################################################################

主机清单
[websrvs]
192.168.30.101 http_port=81
192.168.30.102 http_port=82

[websrvs:vars]
nodename=www
domainname=com

- host: appsrvs
  remote_user: root

  tasks:
   - name: set hostname
    hostname: name={{ nodename }}.{{ http_port }}.{{ domainname }}

在主机清单中设置变量,在yml中直接调用通用变量及定制变量,关于定义变量的优先级:命令定义>定制定义>通用/公共定义

#########################################################################

为了更方便起见,可以直接建立新的专门定义变量的文件

定义变量文件及变量:
新建定义变量的文件vars.yml,在文件中添加以下两个变量:
var1: httpd
var2: vsftpd

---
 - hosts: websrvs
   remote_user: root
   vars_files:
    - vars.yml      #变量文件名称
    
   tasks:
    - name: install package
      yum: name={{ var1 }}               #var1已经在变量文件中定义好
      
    - name: create file
      file: name=/data/{{ var2 }}.log state=touch    #var2也已经在变量文件中定义好
原文地址:https://www.cnblogs.com/shykoo/p/10557295.html