ansible-play变量的基本应用

时间:2023-03-09 08:08:26
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也已经在变量文件中定义好