---
- 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也已经在变量文件中定义好