一、playbook变量
变量名:字母数字和下划线
二、变量来源
1.ansible 主机 -m setup|less所有主机都可以调用
#过滤-a ‘filter=*address*‘

2. 在/etc/ansible/hosts
2.1 在host配置文件定义http_port变量

[root@linux-node1 ansible]# cat hostname.yaml
---
- hosts: date
remote_user: root
tasks:
- name: set hostname
hostname: name=www.{{http_port}}.123

2.2为组设置固定格式
[root@linux-node1 ansible]# cat hostname1.yaml
---
- hosts: date
remote_user: root
tasks:
- name: set hostname
hostname: name={{nodename}}.{{http_port}}.{{dominname}}


3、通过命令行指定变量、优先级最高
[root@linux-node1 ansible]# cat app.yaml
---
- hosts: date
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.yaml


3.1定义多个变量
[root@linux-node1 ansible]# cat app1.yaml
---
- hosts: date
remote_user: root
tasks:
- name: install package
yum: name={{ pkname1 }}
- name: install package
yum: name={{ pkname2 }}

4、 在playbook中定义
vars:
- var1: value1
- var2: value2
[root@linux-node1 ansible]# cat app2.yaml
---
- hosts: date
remote_user: root
vars:
- pkname1: httpd
- pkname2: vsftpd
tasks:
- name: install package
yum: name={{ pkname1 }}
- name: install package
yum: name={{ pkname2 }}


原文:https://www.cnblogs.com/zhaojingyu/p/12115861.html