问题描述:在Ansible中,当registry变量中包含括号时,使用win_package模块安装软件会失败。
代码示例:
- name: Install software
win_package:
path: "{{ software_path }}"
arguments: "{{ software_args }}"
vars:
software_path: "{{ registry_key['SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'][software_name]['InstallLocation'] }}\Software.exe"
software_args: "/S"
在上述代码示例中,registry_key是一个字典类型的变量,其中包含包含括号的键名。当使用这个变量来定义软件路径时,会导致win_package安装失败。要解决这个问题,需要在使用registry变量时对键名加上引号,如下所示:
- name: Install software
win_package:
path: "{{ software_path }}"
arguments: "{{ software_args }}"
vars:
software_path: "{{ registry_key['"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"'][software_name]['InstallLocation'] }}\Software.exe"
software_args: "/S"
这段代码在引用registry_key变量时,使用了"来包围括号,避免了错误的发生,使得win_package模块可以正常安装软件。