hello guys,
I need to build filenames based on 3 parts: basename, version and
trailing '.x86_64.rpm'.
Let's focus on the first 2 parts:
The first one is:
"installed_mtx_packages_name": [
"mtx-device",
"mtx-grpc-agent",
"mtx-infra",
...
]
The second one is:
"installed_mtx_packages_version": [
"1.0.0-r1705191346",
"1.0.1-r1705191346",
"1.0.0-r1705170158",
...
]
the goal is to obtain this:
"installed_mtx_packages_partialname": [
"mtx-device-1.0.0-r1705191346",
"mtx-grpc-agent-1.0.0-r1705191346",
Should this line be "mtx-grpc-agent-1.0.1-r1705191346" by any chance?
Just checking if the example might be a typo 
"mtx-infra-1.0.0-r1705170158",
...
]
This is not an answer for your question, but maybe a nudge to rethink
it if possible - do you absolutely have to form these as two separate
lists? Where do the installed_mtx_packages_name and
installed_mtx_packages_version variables come from? Command, some
external file?
Otherwise, you may want to look at this (if I understood your
requirements well):
https://docs.ansible.com/ansible/latest/playbooks_loops.html#looping-over-parallel-sets-of-data
I've tried several strategies, including:
- name: Building partial name of installed MTX packages
set_fact:
installed_mtx_packages_partialname:
"{{ installed_mtx_packages_name | map('regex_replace', '(.*)',
'\\1-item') | list }}" with_items: installed_mtx_packages_version
But of course the item is considered as a string here instead of a
variable.
If I move the ' just before item, I get the error:
"template error while templating string: expected token ',', got
'string' "
Not 100% sure what you mean by "just before item", but I'm assuming
you'd want (e.g. note the "'\\1-' + item" part - you can concatenate
strings this way):
"{{ installed_mtx_packages_name | map('regex_replace', '(.*)', '\\1-' + item) | list }}"
Additionally, you should switch to using (I think without moustaches
this would iterate over an item literal
"installed_mtx_packages_version" otherwise):
with_items: "{{ installed_mtx_packages_version }}"
To top it off - I'm pretty sure this particular loop would not produce
the list you desire.
Best regards