2017-11-27 34 views
1

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ルートからフォルダを削除します。binconfliblogs、およびwebappsです。また、どちらのオプションもレジストリ項目やTomcatサービスを削除することはなく、Tomcatは引き続き「Programs and Features」リストに表示されます。手動で上記のコマンドを実行している途中

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

追加 "/ S" の引数は完璧に動作(それはconflogs、そして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 'の真ん中に?

答えて

0

私は、win_packageモジュールを使って正常にアンインストールする方法を理解しました。元のインストーラファイルではなく、Uninstall.exeファイル(tomcatルート内)を指定する必要があります。

- name: Uninstall Tomcat 
    win_package: 
    path: 'C:\Program Files\Apache Software Foundation\Tomcat 8.0\Uninstall.exe' 
    product_id: 'Apache Tomcat 8.0 Tomcat8' 
    arguments: '/S -ServiceName="Tomcat8"' 
    state: absent