본문 바로가기
인프라/앤서블(Ansible)

[Ansible] windows powershell 파일 실행하기

by IT맥구리나스 2022. 7. 19.

anisble에서 간단한 파워쉘 명령어 실행의 경우

win_shell: "powershell 파워쉘명령어" 로 수행하곤 했다.

 

하지만 코드가 많은 파워 쉘파일(ps.1)의 경우는? 파워쉘파일은 파일의 절대경로를 써서는 실행이 안되다.(bat파일은 실행 가능)

 

win_command: "powershell.exe -ExecutionPolicy Bypass -File c:\Disk_Part.ps1"

또는 

win_shell: "powershell.exe -ExecutionPolicy Bypass -File c:\Disk_Part.ps1"

둘다 테스트 해본 결과 정상적으로 수행 되었고

 

아래코드는 Disk_part.ps1이라는 파워쉘을 노드에 배포한 뒤 실행을 하는 playbook이다.

---
- hosts: all
  vars:
    ansible_port: 5985
    ansible_connection: winrm
    ansible_winrm_server_cert_validation: ignore
    ansible_winrm_scheme: http
    ansible_winrm_transport: basic
    ansible_become: no
    become_method: runas
    become_user: administrator
    ansible_become_password: "{{ sudopasswd }}"
  tasks:
    - name: deployfile
      win_copy:
        src: "/data/ansible/file/Disk_Part.ps1"
        dest: "c:\Disk_Part.ps1"
    - name: run powershell
      win_command: "powershell.exe -ExecutionPolicy Bypass -File c:\Disk_Part.ps1"
      args:
        executable: cmd

또한 관리자 권한으로 실행이 필요할 경우 위에서 기술한바와 같이 아래 변수 선언이 필요하다. 선언을 안하면 해당 파워쉘의 동작을 하지 않고 동작에 성공했다고만 나온다.

    become_method: runas
    become_user: administrator
    ansible_become_password: "{{ sudopasswd }}"

 

win_shell과 win_command는 거의 차이는 없는거 같은데 환경변수를 사용할 수 있느냐 없느냐와 멀티라인 명령 수행이 가능 유무정도 인 것 같다. 

환경변수 이용과 멀티라인 명령수행이 가능한 것은 win_shell이다.

 

 

앤서블 파워쉘 파일 실행

ansible powershell 실행

ansible 파워쉘 실행

앤서블 powershell 파일 실행

앤서블 windows 관리자권한 실행

ansible windows run as adminitrator

반응형

댓글