У меня есть две задачи:
tasks:
- shell: ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d'
register: var1
- debug: var=var1
- shell: ethtool -i {{ item }} | grep bus-info | cut -b 16-22
with_items: var1.stdout_lines
register: var2
- debug: var=var2
который используется для получения списка интерфейсов в машине (linux) и получения адреса шины для каждого. У меня есть еще одна задача, следующая в той же самой книге.
- name: Binding the interfaces
shell: echo {{ item.item }}
with_flattened: var2.results
register: var3
который я ожидаю для итерации по значению из var2, а затем распечатать номера шин.
var2.results выглядит следующим образом
"var2": {
"changed": true,
"msg": "All items completed",
"results": [
{
"changed": true,
"cmd": "ethtool -i br0: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005778",
"end": "2015-04-14 20:29:47.122203",
"invocation": {
"module_args": "ethtool -i br0: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "br0:",
"rc": 0,
"start": "2015-04-14 20:29:47.116425",
"stderr": "",
"stdout": "",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp13s0: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005862",
"end": "2015-04-14 20:29:47.359749",
"invocation": {
"module_args": "ethtool -i enp13s0: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp13s0:",
"rc": 0,
"start": "2015-04-14 20:29:47.353887",
"stderr": "",
"stdout": "0d:00.0",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp14s0: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005805",
"end": "2015-04-14 20:29:47.576674",
"invocation": {
"module_args": "ethtool -i enp14s0: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp14s0:",
"rc": 0,
"start": "2015-04-14 20:29:47.570869",
"stderr": "",
"stdout": "0e:00.0",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp15s0: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005873",
"end": "2015-04-14 20:29:47.875058",
"invocation": {
"module_args": "ethtool -i enp15s0: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp15s0:",
"rc": 0,
"start": "2015-04-14 20:29:47.869185",
"stderr": "",
"stdout": "0f:00.0",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp5s0f1: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005870",
"end": "2015-04-14 20:29:48.112027",
"invocation": {
"module_args": "ethtool -i enp5s0f1: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp5s0f1:",
"rc": 0,
"start": "2015-04-14 20:29:48.106157",
"stderr": "",
"stdout": "05:00.1",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp5s0f2: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005863",
"end": "2015-04-14 20:29:48.355733",
"invocation": {
"module_args": "ethtool -i enp5s0f2: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp5s0f2:",
"rc": 0,
"start": "2015-04-14 20:29:48.349870",
"stderr": "",
"stdout": "05:00.2",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp5s0f3: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005829",
"end": "2015-04-14 20:29:48.591244",
"invocation": {
"module_args": "ethtool -i enp5s0f3: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp5s0f3:",
"rc": 0,
"start": "2015-04-14 20:29:48.585415",
"stderr": "",
"stdout": "05:00.3",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp9s0f0: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005943",
"end": "2015-04-14 20:29:48.910992",
"invocation": {
"module_args": "ethtool -i enp9s0f0: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp9s0f0:",
"rc": 0,
"start": "2015-04-14 20:29:48.905049",
"stderr": "",
"stdout": "09:00.0",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i enp9s0f1: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005863",
"end": "2015-04-14 20:29:49.143706",
"invocation": {
"module_args": "ethtool -i enp9s0f1: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "enp9s0f1:",
"rc": 0,
"start": "2015-04-14 20:29:49.137843",
"stderr": "",
"stdout": "09:00.1",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i lo: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005856",
"end": "2015-04-14 20:29:49.386044",
"invocation": {
"module_args": "ethtool -i lo: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "lo:",
"rc": 0,
"start": "2015-04-14 20:29:49.380188",
"stderr": "Cannot get driver information: Operation not supported",
"stdout": "",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i virbr0: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.005859",
"end": "2015-04-14 20:29:49.632356",
"invocation": {
"module_args": "ethtool -i virbr0: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "virbr0:",
"rc": 0,
"start": "2015-04-14 20:29:49.626497",
"stderr": "",
"stdout": "",
"warnings": []
},
{
"changed": true,
"cmd": "ethtool -i virbr0-nic: | grep bus-info | cut -b 16-22",
"delta": "0:00:00.024850",
"end": "2015-04-14 20:29:49.901539",
"invocation": {
"module_args": "ethtool -i virbr0-nic: | grep bus-info | cut -b 16-22",
"module_name": "shell"
},
"item": "virbr0-nic:",
"rc": 0,
"start": "2015-04-14 20:29:49.876689",
"stderr": "",
"stdout": "",
"warnings": []
}
]
Моя цель - получить значение stdout в каждом элементе выше, например ( "stdout": "09: 00.0" ). Я попытался дать что-то вроде
- name: Binding the interfaces
shell: echo {{ item.item.stdout}}
with_flattened: var2.results
# with_indexed_items: var2.results
register: var3
Но это не дает значения шины в стандартном режиме. Оцените помощь при перечислении переменной значения переменной в задаче, как указано ниже, когда вторая переменная является и индексированным списком. Я пытаюсь избежать прямой нумерации индекса, такой как item [0], потому что количество интерфейсов динамическое и прямая индексация может привести к неожиданным результатам.
Спасибо