可卸载多个版本OMS代理的脚本



我想在我们的Linux机器上卸载OMS代理。不幸的是,我们为每台机器分配了不同的OMS代理版本。我硬编码版本从我的Ansible脚本

command: sudo {{ file_path }}/omsagent-1.13.9-0.universal.x64.sh —-purge 

它只适用于具有相同OMS代理版本的机器,否则将失败。

我尝试添加通配符语法,但它得到一个错误,说明命令未找到

stderr: “sudo :/home/filename/omsagent-* : command not found

如果我将之前的命令改为

command: sudo {{file_path}}/omsagent-*.universal.x64.sh —-purge 

由于我没有这个特定的代理,所以我不能提供一个完整的测试工作示例,但可以提供一些指导。

根据包文档和所有包操作, bundle有一个

选项
--version-check        Check versions already installed to see if upgradable.

应该提供已安装的版本。此外,任何已安装的代理都有一个目录,其中包含服务控制脚本

/opt/microsoft/omsagent/bin/service_control ...

和其他的,比如scxadmin --version。通过执行其中一个,应该可以收集代理的正确安装版本。

- name: Gather installed OMS agent version
become: true
become_method: sudo
shell: 
cmd: /opt/microsoft/omsagent/bin/service_control status | grep <whatever is necessary to get the version string only>
register: VERSION
changed_when: false
check_mode: false

请注意,在命令中不要使用sudo,而应该使用become。因为它只是一个版本报告任务,所以您还应该使用changed_whencheck_mode

收集到正确的版本后,像

这样使用它
- name: Purge installed OMS agent version
become: true
become_method: sudo
shell: 
cmd: "omsagent-{{ VERSION }}.universal.x64.sh —-purge"

选项--upgrade--force不能使用的原因是什么?

您还可以查看如何解决Linux上的Log Analytics代理的问题,有一个独立的无版本清除脚本可用。

最新更新