Reputation: 13
I'm trying to match all of same element of my 2 stdout_lines variables in Ansible and write them to file. What should i do?
variableA:
"stdout_lines": [
"process1",
"process2",
"process3",
"process4",
"process5",
"process6",
"process7",
"process8"
]
variableB:
"stdout_lines": [
"processID1",
"processID2",
"processID3",
"processID4",
"processID5",
"processID6",
"processID7",
"processID8"
]
I tried this but it's not work.
- name: save to log
lineinfile:
dest: '{{pathlog}}'
line: 'Process: {{ item.name }} PID({{item.id}})'
with_items:
- { name: "{{variableA.stdout_lines}}", id: "{{variableB.stdout_lines}}" }
Expected results :
Process: process1 PID (processID1)
Process: process2 PID (processID2)
Process: process3 PID (processID3)
Process: process4 PID (processID4)
Process: process5 PID (processID5)
Process: process6 PID (processID6)
Process: process7 PID (processID7)
Process: process8 PID (processID8)
Failed results I received:
Process: [u'process1', u'process2', u'process3', u'process4', u'process5', u'process6', u'process7', u'process8'] PID([u'processID1', u'processID2', u'processID3', u'processID4', u'processID5', u'processID6', u'processID7', u'processID8'])
Upvotes: 1
Views: 420
Reputation: 68034
Try this
- name: save to log
lineinfile:
create: true
dest: '{{ pathlog }}'
line: 'Process: {{ item.0 }} PID({{ item.1 }})'
loop: "{{ variableA.stdout_lines|zip(variableB.stdout_lines)|list }}"
should give
shell> cat /tmp/test.txt
Process: process1 PID(processID1)
Process: process2 PID(processID2)
Process: process3 PID(processID3)
Process: process4 PID(processID4)
Process: process5 PID(processID5)
Process: process6 PID(processID6)
Process: process7 PID(processID7)
Process: process8 PID(processID8)
Upvotes: 3
Reputation: 6158
with_indexed_items
will do the trick:
- debug:
msg: "Process: {{ VariableA.stdout_lines[item.0] }} PID ({{ item.1 }})"
with_indexed_items: "{{ VariableB.stdout_lines }}"
Upvotes: 1