问题描述
我是ansible的新手,因此请原谅任何不正确的语法错误。 我有一个简单的剧本,用于安装软件包
我的项目结构如下:
TopDir
dev
|roles
| |ant
| | |install
| | | tasks
| | | main.yml
| | |vars
| | main.yml
| |ant-junit
| |install
| | tasks
| | main.yml
| |vars
| main.yml
|install_tools.yml
Playbook(install_tools.yml):
- name: Install tools
hosts: hostA
tags: ['hostA']
become: yes
roles:
- ant/install
- ant-junit/install
- doxygen/install
每个install / main.yml都完全像这样
- name: Include variables in vars
include_vars: ../../vars/main.yml
- name: Install {{tool_name}}
yum:
name: "{{tool_name}}-{{tool_version}}"
state: present
在每个vars / main.yml中,我都定义了tool_name和tool_version。所以我想做类似下面的事情,但是vars_files不是TaskInclude的有效属性。这个想法是,generic_install将使用从vars_files定义的变量
- name: Call generic install
include_tasks: ../../../generic_install.yml
vars_files: ../../vars/main.yml
解决方法
我使用了错误的属性。以下对我有用。请注意,我必须使用import_task而不是include_tasks。我不确定这些差异,但仅适用于import_tasks和vars
- name: Call generic install
import_tasks: ../../../generic_install.yml
vars:
tool_name: "{{tool_name}}"
tool_version: "{{tool_version}}"