我正在尝试从作业创建报告。考虑创建一个本地文件并通过电子邮件发送。但我不知道如何从这个变量中获得所需的数据。
这是测试变量的输出
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
访问相应的值。