所以我遇到了一个奇怪的问题,即ansible无法在角色中执行某些标记为include
的任务。
经过一番挖掘后,只要include
与with_items
相关联,就会出现运行指定任务的能力。
例如,我的简单角色包含:
role/tasks/main.yml
---
- include: test.yml
tags:
- my_role_test
role/tasks/test.yml
---
- debug:
msg: "It works"
当我用--tags=my_role_test
运行我的Playbook时,我可以看到预期的输出:
[20:18:52] test : debug | server | SUCCESS | 593ms
{
- msg: It works
}
但是,如果我更改了main.yml
文件并将with_items
添加到包含任务:
role/tasks/main.yml
---
- include: test.yml
with_items:
- A
- B
tags:
- my_role_test
我得到了这个输出:
[20:15:41] test : include
[20:15:41] ➥ system | included: /test/tasks/test.yml for server
[20:15:41] ➥ system | included: /test/tasks/test.yml for server
[20:15:41] ➥ system | -- Play recap --
并且没有执行任务。
我做错了吗?这是一个安赛问题吗?你知道一个解决方法吗?
我的ansible版本是2.5.2。
谢谢,
答案 0 :(得分:1)
要问的主要问题是:
使用Ansible在循环中为每个项目设置标记。
这看起来像一个未解决的问题。 https://github.com/ansible/ansible/issues/19115
请检查一下: https://serverfault.com/questions/864638/ansible-set-tags-per-item-in-with-items-loop
答案 1 :(得分:1)
尝试" include_tasks"而不是"包括"正如https://github.com/ansible/ansible/issues/19115中所建议的那样 " ...此问题已在最近的ansible版本中得到解决,但需要更改include以改为使用include_tasks。" 有详细信息 https://docs.ansible.com/ansible/2.5/porting_guides/porting_guide_2.5.html#dynamic-includes-and-attribute-inheritance
答案 2 :(得分:0)
所以,基本上,ansible changed the way to manage tags inheritance since Ansible 2.5。唯一的解决方案是将标记直接放在包含的任务文件的每个任务上,或使用static import_ *。注意,对于动态包含,使用块部分可能会有所帮助:
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/userinfo?user=root&password=admin");
Statement statement = connection.createStatement();
resultset = statement.executeQuery("select * from item");
<select id = "item3" name = "item3" onchange = "display_selection()">
<%while(resultset.next()){%>
<option>
<%= resultset.getString(2)%>
<%= resultset.getString(3)%>
</option>
<%}%>
<script>
function display_selection() {
var e = document.getElementById("item3").value;
var val = document.getElementById("item");
val.value = e;
}
</script>
</select></font>
<div class = "item2">
<input type = "text" name = "item" id = "item" value = "" size = "165" disabled = "disabled" />
</div>
</h5>