Ansibleコントロール仕様を経由してWindows上でのサイレントアンインストールTomcatの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モジュール
を使用して私はTomcatのインストール/アンインストールを自動化するためにAnsibleを使用しようとしています(ユーザの介入なしに静かに行う必要があります)。
私は正常にこのような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"を追加しました)。インストーラをダウンロードしようとしましたが、ローカルパスを使用しました。また、「引数」オプションを省略してみました。
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(同一の正確な動作)を介して動作しない端部に
& "C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe" -ServiceName="Tomcat8" /S
を「/ S」引数を追加します。どちらの方法も、tomcatルートからフォルダを削除します。bin
、conf
、lib
、logs
、およびwebapps
です。また、どちらのオプションもレジストリ項目やTomcatサービスを削除することはなく、Tomcatは引き続き「Programs and Features」リストに表示されます。手動で上記のコマンドを実行している途中
& "C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe" /S -ServiceName="Tomcat8"
へ
追加 "/ S" の引数は完璧に動作(それはconf
、logs
、そしてwebapps
ディレクトリが残りそれが期待されます - this postを参照してください)。しかし、ana経由で実行すると、TomcatのルートからUninstall.exeファイルが削除されます。それだけです! Tomcatのルート、レジストリ項目、Tomcatサービスから何も削除しません。それでも「プログラムと機能」のリストに記載されています。ここで
は、私が使用していますansible構文は次のとおりです。
- name: Uninstall Tomcat
win_shell: '& "C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe" /S -ServiceName="Tomcat8"'
末尾に「/ S」を入れたときに、なぜansibleコマンド対マニュアルが同じように動作しますが、「/を置くときには完全に異なる振る舞いS 'の真ん中に?