栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ansible模块之include

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ansible模块之include

ansible模块之include_tasks:为什么加了tags后导入的任务没有执行?

场景再现原因分析解决办法

本文中ansible的版本为2.9。

场景再现

下面是Role中的要测试的任务:

# role01.yml
# ...前面的tasks

- name: included task for test
  include_tasks: test01.yml
  tags: 
    - test01

# ... 后面的tasks

在执行整个Role时,test01.yml会被正常导入playbook并执行:

$ ansible-playbook -i hosts.ini all role01.yml

但是当我们想通过tags单独测试这个任务时,

$ ansible-playbook -i hosts.ini all role01.yml --tags "test01"

奇怪的事情发生了:include_tasks本身这个任务执行成功了,但是被导入的test01.yml却并没有被执行!

原因分析

在对include_tasks任务使用tags时,只会对include_tasks任务本身生效,而并不会对其中包含的任务生效。

那如果我们要对其中包含的任务也生效,该怎么做呢?

解决办法

可以通过include_tasks模块的apply参数,为包含的任务添加标签。

将上面的任务改成下面的形式

# role01.yml
# ...前面的tasks

- name: included task for test
  include_tasks: 
    file: test01.yml
    apply:
      tags: test01
  tags: always

# ... 后面的tasks

然后调用即可:

$ ansible-playbook -i hosts.ini all role01.yml --tags "test01"

注意,上面的 tags: always 不能省略,否则 include_tasks本身不会被执行。always标签只对include_tasks本身生效。在调用其他tags时,include_tasks也会always执行,但是其中包含的任务不会被执行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号