2017-11-27 21 views
1

Ansible 제어 사양을 통해 Windows에서 조용히 제거 톰캣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을 사용하려고합니다 (사용자 상호 작용없이 조용히해야합니다).

나는 성공적으로 다음과 같이 윈도우 설치 프로그램을 사용하여 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 모듈

를 사용하여 I은 레지스트리 키 검토 : 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".

물론,이 정확한 명령을 대상 컴퓨터에서 수동으로 실행하면 작동하지만, 무인이 아니기 때문에 무인기를 통해 실행하는 것이 중단됩니다. 위의 명령을 실행 말

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

추가 "/ S"인수는 모두 수동으로 ansible를 통해 (똑같은 동작을) 작동하지 않습니다. 두 방법 모두 바람둥이 루트에서 폴더를 삭제합니다 (bin, conf, lib, logswebapps). 또한 어느 옵션도 레지스트리 항목이나 tomcat 서비스를 제거하지 않으며 "프로그램 및 기능"목록에 tomcat이 계속 나열됩니다. 수동으로 위의 명령을 실행하는 중간

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

추가 "/ S"인수는 완벽하게 작동합니다 (그것은 conf, logswebapps 디렉토리 뒤에 잎하지만이 예상됩니다 - this post 참조). 그러나 anabilities를 통해 실행하면 tomcat 루트에서 Uninstall.exe 파일이 삭제됩니다. Tomcat 루트, 레지스트리 항목 또는 Tomcat 서비스에서 다른 것을 제거하지 않습니다. 그리고 여전히 "프로그램 및 기능"목록에 나열되어 있습니다. 여기

은 내가 사용하고있는 ansible 구문입니다 끝에 '/ S'를 넣어 때 ansible 명령은 동일하게 동작 대 수동 할 이유

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

하지만 퍼팅 할 때 다음 완전히 다른의 행동 '/ 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