gpt4 book ai didi

windows - 通过 Ansible 在 Windows 上静默卸载 Tomcat

转载 作者:行者123 更新时间:2023-11-28 22:25:20 28 4
gpt4 key购买 nike

Ansible 控制规范

OS:              RHEL 6.8 (Santiago)
Ansible version: 2.3.2.0
Python version: 2.6.6

目标机器规范

OS:             Windows 2008 Server R2
Tomcat version: 8.0.41


使用 win_package 模块(首选)

我正在尝试使用 Ansible 自动安装/卸载 tomcat(因此需要静默完成,无需用户交互)。

我能够像这样使用 windows 安装程序成功安装 tomcat:

- name: Install Tomcat
win_package:
path: "https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.41/bin/apache-tomcat-8.0.41.exe"
product_id: "Apache Tomcat 8.0 Tomcat8"
arguments: /S

但是,我在卸载软件时遇到问题。我尝试使用与上述类似的方法(并添加选项“state: absent”),但没有成功。我试过下载安装程序,并使用本地路径。并且还尝试省略“arguments”选项。

使用 win_shell 模块

我检查了注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 8.0 Tomcat8 并看到“UninstallString”属性包含以下内容:“C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe"-ServiceName="Tomcat8"

当然,在目标机器上手动运行这个确切的命令是可行的,但是通过 ansible 运行它会挂起(因为它不是静默的)。

在末尾添加“/S”参数

& "C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe" -ServiceName="Tomcat8" /S

手动和通过 ansible 运行上面的命令都不起作用(同样的行为)。这两种方法都会从 tomcat 根目录中删除文件夹,除了 binconfliblogs网络应用程序。此外,这两个选项都不会删除注册表项或 tomcat 服务,并且 tomcat 仍列在“程序和功能”列表中。

在中间添加“/S”参数

& "C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe" /S -ServiceName="Tomcat8"

手动运行上面的命令效果很好(它留下了 conflogswebapps 目录,但这是预期的 - 请参阅 this post ) .但是通过 ansible 运行只是从 tomcat root 中删除了 Uninstall.exe 文件——仅此而已!它不会从 tomcat 根目录、注册表项或 tomcat 服务中删除任何其他内容。并且仍然列在“程序和功能”列表中。

这是我正在使用的 ansible 语法:

- name: Uninstall Tomcat
win_shell: '& "C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe" /S -ServiceName="Tomcat8"'

为什么手动命令与 ansible 命令在将“/S”放在末尾时表现相同,但在将“/S”放在中间时表现完全不同?

最佳答案

我最终使用 win_shell 来调用卸载程序,但我不得不在任务结束时添加一个 sleep 。没有 sleep ,唯一发生的变化是删除了 Uninstall.exe:

- name: Uninstall Tomcat
win_shell: |
$CMD = 'C:\Program Files\Apache Software Foundation\Tomcat 7.0\Uninstall.exe'
$arg1 = '/S'
$arg2 = '-ServiceName="Tomcat7"'
& $CMD $arg1 $arg2
Start-Sleep -s 30

关于windows - 通过 Ansible 在 Windows 上静默卸载 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47519421/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com