網站首頁 編程語言 正文
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執行,但是其中包含的任務不會被執行。
原文鏈接:https://blog.csdn.net/Sebastien23/article/details/122648720
相關推薦
- 2022-10-11 Linux中數據傳輸命令scp/rsync
- 2022-04-30 Python的進制轉換和ASCLL轉換你了解嗎_python
- 2022-05-03 如何利用Python實現簡易的音頻播放器_python
- 2022-11-19 詳解C語言內核中的鏈表與結構體_C 語言
- 2022-02-01 nginx 上傳圖片出現跨域
- 2022-01-04 微信小程序內部A頁面向內嵌H5頁面跳轉,并且傳參
- 2022-11-07 react-native?實現漸變色背景過程_React
- 2022-09-17 python?df遍歷的N種方式(小結)_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支