首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以重用通用的任务文件,但包含不同的变量?

有没有一种方法可以重用通用的任务文件,但包含不同的变量?
EN

Stack Overflow用户
提问于 2020-10-06 06:34:06
回答 1查看 27关注 0票数 0

我是ansible的新手,所以请原谅任何不正确的语法错误。我有一个简单的手册来安装软件包

我的项目结构如下所示:

代码语言:javascript
复制
TopDir
  dev
    |roles
    |  |ant
    |  |  |install
    |  |  |  tasks
    |  |  |    main.yml
    |  |  |vars
    |  |    main.yml
    |  |ant-junit
    |    |install
    |    |  tasks
    |    |    main.yml
    |    |vars
    |      main.yml
    |install_tools.yml

攻略(install_tools.yml):

代码语言:javascript
复制
- name: Install tools
  hosts: hostA
  tags: ['hostA']
  become: yes
  roles:
    - ant/install
    - ant-junit/install
    - doxygen/install

每个install/main.yml看起来都像这样

代码语言:javascript
复制
- 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定义的变量

代码语言:javascript
复制
- name: Call generic install
  include_tasks: ../../../generic_install.yml
  vars_files: ../../vars/main.yml
EN

回答 1

Stack Overflow用户

发布于 2020-10-06 07:41:44

我使用了错误的属性。下面的方法对我很有效。请注意,我必须使用import_task而不是include_tasks。我不能完全确定其中的区别,但它只适用于import_tasks和vars

代码语言:javascript
复制
- name: Call generic install
  import_tasks: ../../../generic_install.yml
  vars:
    tool_name: "{{tool_name}}"
    tool_version: "{{tool_version}}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64217090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档