Windows 服务器环境。我们有具有安装特定 Choco 包的 Puppet 角色的服务器。决定不应将软件包安装在新服务器上。最简单的方法就是从清单中删除 package 语句。问题是,包在安装过程中会创建一个本地用户,并且应该通过 Puppet 额外授予该用户在本地操作系统中的权限。
如果从未安装过该软件包,则该用户在操作系统中不存在,并且为其分配权限的语句将失败。但是,如果我们从角色中删除该权限分配,它也会在所有已安装该软件包的服务器上被删除,并且应用程序将失败。
如果当前安装了该软件包,有没有办法检查清单?类似于“如果 PACKAGE is_present {做某事}”。或者检查该用户是否存在?“如果用户存在{做某事}”我知道它可以通过自定义事实来解决,但它是一个复杂的应用程序,具有多个与其他应用程序相同的通用组件。我既无法识别典型文件也无法识别典型服务,而且错误的代价非常高(200 台服务器、关键任务、数千名用户......)。唯一可以确定的是 Choco 包名和用户名。