我正在运行一个Playbook,该Playbook从远程主机收集软件包的事实,我想要实现的是过滤输出并仅获取软件包的名称和版本。
这是我的剧本
- name: Gather rpm packages
package_facts:
manager: auto
- name: Print the rpm packages
debug:
var: ansible_facts.packages
结果格式
TASK [infra_pt : Print the rpm packages] ****************************************************
ok: [192.168.47.135] => {
"msg": {
"GConf2": [
{
"arch": "x86_64",
"epoch": null,
"name": "GConf2",
"release": "8.el7",
"source": "rpm",
"version": "3.2.6"
}
],
"GeoIP": [
{
"arch": "x86_64",
"epoch": null,
"name": "GeoIP",
"release": "9.el7",
"source": "rpm",
"version": "1.5.0"
}
],
首选输出仅包含名称和版本号,如何归档?
答案 0 :(得分:0)
由于字典中的值在列表中,因此需要索引[0]。可能是因为可能安装了同一软件包的更多版本?
下的任务<form asp-controller="Settings" asp-action="Login" method="post">
<select id="ddlBoard" name="board">
@if (userIndex == 0 || userData[userIndex].ProjectId == null)
{
<option selected disabled value="-1">Plantafel auswählen</option>
}
@for (int i = 0; i < projectData.Count; i++)
{
if (userIndex != 0 && userData[userIndex].ProjectId == projectData[i].Idx)
{
<option selected value="@projectData[i].Idx">@projectData[i].projectName</option>
}
else
{
<option value="@projectData[i].Idx">@projectData[i].projectName</option>
}
}
</select>
<!--Row-->
<!--todo update this after project change and show only rows from one project-->
<select id="ddlRow" name="row">
@if (userIndex == 0 || userData[userIndex].RowId == null)
{
<option selected disabled value="-1">Zeile auswählen</option>
}
@for (int i = 0; i < rowData.Count; i++)
{
if (userIndex != 0 && userData[userIndex].RowId == rowData[i].Idx)
{
<option selected value="@rowData[i].Idx">@rowData[i].RowName</option>
}
else
{
<option value="@rowData[i].Idx">@rowData[i].RowName</option>
}
}
</select>
</form>
给予(grep msg):
tasks:
- debug:
msg: "{{ item.key }} {{ item.value[0].version }}"
loop: "{{ ansible_facts.packages|dict2items }}"
可能正确的解决方案应该使用 json_query 列表中可能包含更多版本的
"msg": "GeoIP 1.5.0"
"msg": "GConf2 3.2.6"
给予:
- debug:
msg: "{{ item.key }} {{ item.value|json_query('[].version') }}"
loop: "{{ ansible_facts.packages|dict2items }}"