I need to select registry keys that match a regex, and then reconstruct the key paths. I’m trying to do:
- name: Get registry entries
ansible.windows.win_reg_stat:
path: 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
register: uninstall
- set_fact:
keys: |
{{ ['HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'] | product(uninstall.sub_keys | select('search', '^(nbi|BeyondTrust Remote Support Jump Client)')) | map('join', '\\') }}
This ends up with:
"keys": [
"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\\\BeyondTrust Remote Support Jump Client [nwra.beyondtrustcloud.com-62F2CDFD]",
"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\\\nbi-glassfish-mod-4.1.1.0.1",
"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\\\nbi-nb-all-21.0.0.240215.0",
"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\\\nbi-nb-all-22.0.0.240522.0",
"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\\\nbi-nb-all-23.0.0.240913.0",
"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\\\nbi-nb-base-8.2.0.0.201609300101"
]
If I change the map to '\'
I get:
The full traceback is:
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/ansible/executor/task_executor.py", line 505, in _execute
self._task.post_validate(templar=templar)
File "/usr/lib/python3.9/site-packages/ansible/playbook/task.py", line 291, in post_validate
super(Task, self).post_validate(templar)
File "/usr/lib/python3.9/site-packages/ansible/playbook/base.py", line 541, in post_validate
value = method(attribute, getattr(self, name), templar)
File "/usr/lib/python3.9/site-packages/ansible/playbook/task.py", line 299, in _post_validate_args
args = templar.template(value)
File "/usr/lib/python3.9/site-packages/ansible/template/__init__.py", line 764, in template
d[k] = self.template(
File "/usr/lib/python3.9/site-packages/ansible/template/__init__.py", line 738, in template
result = self.do_template(
File "/usr/lib/python3.9/site-packages/ansible/template/__init__.py", line 963, in do_template
data = _escape_backslashes(data, myenv)
File "/usr/lib/python3.9/site-packages/ansible/template/__init__.py", line 138, in _escape_backslashes
for token in jinja_env.lex(d2):
File "/usr/lib/python3.9/site-packages/ansible/_vendor/jinja2/lexer.py", line 864, in tokeniter
raise TemplateSyntaxError(
jinja2.exceptions.TemplateSyntaxError: unexpected char "'" at 177
line 1
fatal: [mark03.ad.nwra.com]: FAILED! => {
"changed": false
}
Similar if I add a \ to the end of the initial string path.