剧本中有时task之间需要相互传递变量,比如以下例子第二个task需要第一个task运行后的结果。
新建register.yum
通过register注册
---
- hosts: all
gather_facts: no
tasks:
- name: register vars
shell: hostname
register: info
- name: display vars
debug: msg="{{info}}"
修改msg,然后再执行剧本
---
- hosts: all
gather_facts: no
tasks:
- name: register vars
shell: hostname
register: info
- name: display vars
debug: msg="{{info.stdout}}"
利用item进行循环
新建loopsup.yml
---
- hosts: all
tasks:
- name: debug loops
debug: msg="{{item}}"
with_items:
- nginx
- tomcat
- mysql
- zabbix
同理,如果是通过循环来安装多个软件可用如下语句:
---
- hosts: all
tasks:
- name: debug loops
yum: name="{{item}}" state=present
with_items:
- nginx
- tomcat
- mysql
- zabbix