Ansible win_package处理含括号的注册表product_id时无法运行怎么解决?
问题根因
你遇到的配置失效不是product_id里的括号本身不合法,而是YAML语法的解析规则导致的:YAML会默认将以{开头的内容识别为内联字典结构,你当前的写法没有明确标记该值为字符串类型,所以Ansible解析配置时会把product_id的内容当成非法字典处理,最终导致卸载逻辑异常,这也刚好符合你排查到的「不带括号的product_id均可正常卸载」的现象。
解决方案
只需要明确将product_id的值标记为字符串即可,推荐用双引号包裹整个product_id取值,修正后的配置如下:
- name: Uninstalling Total Commander IT Edition win_package: product_id: "{7E25FC96-BC45-4D1C-AA24-2D147AD2B8D0}_is1" state: absent arguments: /7
如果用双引号包裹后仍然有异常,也可以尝试用单引号包裹,或者在取值前加上!!str强制声明为字符串类型:
product_id: !!str {7E25FC96-BC45-4D1C-AA24-2D147AD2B8D0}_is1
内容的提问来源于stack exchange,提问作者Hella
相关产品推荐
相关产品推荐

