我想在我们的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_when
和check_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代理的问题,有一个独立的无版本清除脚本可用。