Ansible-如何将dict变量中的选定属性添加到模板中



我正在尝试从作业创建报告。考虑创建一个本地文件并通过电子邮件发送。但我不知道如何从这个变量中获得所需的数据。

这是测试变量的输出

ok: [localhost] => {
"test": {
"changed": false,
"failed": true,
"msg": "One or more items failed",
"results": [
{
"ansible_loop_var": "item",
"changed": false,
"elapsed": 4.0650629,
"failed": true,
"item": "prdrimaknmcs01.perceptive.cloud",
"msg": "timeout while waiting for prdrimaknmcs01.perceptive.cloud:9091 to start listening",
"wait_attempts": 2
},
{
"ansible_loop_var": "item",
"changed": false,
"elapsed": 4.0600610999999995,
"failed": true,
"item": "prdrimaknmcs02.perceptive.cloud",
"msg": "timeout while waiting for prdrimaknmcs02.perceptive.cloud:9091 to start listening",
"wait_attempts": 2
}
],
"skipped": false
}
}

我需要将项目和消息都添加到我的模板文件中。问题是,这个特定的var用于2个测试,但它可以是从1到10的任何数量的测试。所以我考虑使用";对于";在我的模板中的变量替换中。与此类似。无法使其工作。

{% for rslts in test %}
Message: {{ test.results.msg }}
{% endfor %}

test.results是一个列表,而不是test,所以循环必须如下所示:

{% for rslt in test.results %}
Message: {{ rslt.msg }}
{% endfor %}

您对test.results的条目进行迭代,并使它们在rslt的循环中可用,因此您必须通过rslt.msg访问相应的值。

最新更新