ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈소스로 구성하는 데브옵스 시스템 - Ansible과 AWX에서 윈도우 서버 관리
    DevOps 2018. 3. 3. 10:51

    윈도우 서버는 Active Directory를 구성하면, 도메인 서버에서 정책이나 권한 관리가 가능한 편리성을 제공하고 있습니다.

    그러나 대부분의 윈도우 관리자는 소프트웨어 설치나 명령어 실행을 할 때, 주로 원격데스크톱으로 접속을 하여 GUI를 통해 진행을 하고 있을 것으로 생각이 됩니다.


    물론 윈도우도 윈도우 배포서비스와 WinRM이라는 명령어를 이용한 원격 관리서비스를 제공하고는 있습니다만, 이용해 보신 분들은 구성과 사용이 까다롭다는 것을 느끼셨을 껍니다.


    그래서 우리는 앞서 Ansible을 도입 했을 때 윈도우 서버도 지원을 하는 것을 기준으로 검토 하였습니다.

    다만, Ansible은 SSH를 이용하여 명령을 실행하고 있지만, 윈도우의 경우 이를 이용한 원격 실행은 기본으로는 지원하지 않기에 별도로 WinRM을 활성화 시켜줘야 합니다.


    그럼 우선 윈도우 서버에서 Ansible을 사용할 수 있게 WinRM을 구성해 보도록 하겠습니다.


    우선 아래 명령어를 CMD 창에서 실행하여 WinRM을 활성화 합니다. CMD창은 관라자 권한으로 실행 합니다.

    winrm quickconfig


    보안을 위해 WinRM 접속시 인증을 통해 접속하도록 설정 합니다.

    winrm set winrm/config/client/auth @{Basic="true"}

    winrm set winrm/config/service/auth @{Basic="true"}

    winrm set winrm/config/service @{AllowUnencrypted="true"}


    역시 보안을 위해 원격 접속 가능한 서버를 Ansible 서버로만 제한 합니다.

    winrm set winrm/config/client @{TrustedHosts = "172.16.10.1"}


    그리고 WinRM의 다른 원격 설정은 ConfigureRemotingForAnsible.ps1 파일을 이용하여 설정 합니다.

    예로 인증 만료 기간은 아래와 같이 설정 합니다.

    powershell.exe -File ConfigureRemotingForAnsible.ps1 -CertValidityDays 1825


    혹시 PowerShell을 실행하다 아래와 같은 에러가 발생한다면...

    > powershell.exe -File .\ConfigureRemotingForAnsible.ps1
    이 시스템에서 스크립트를 실행할 수 없으므로 D:\www2\ConfigureRemotingForAnsible
    .ps1 파일을 로드할 수 없습니다. 자세한 내용은 http://go.microsoft.com/fwlink/?L
    inkID=135170의 about_Execution_Policies를 참조하십시오.
     + CategoryInfo : 보안 오류: (:) [], ParentContainsErrorRecordExcep
    tio n
     + FullyQualifiedErrorId : UnauthorizedAccess


    PowerShell 스크립트를 실행할 수 있도록 허용해 줍니다.

    > ExecutionPolicy

    Restricted

    > Set-ExecutionPolicy Unrestricted

    > ExecutionPolicy


    설정이 완료되면 아래 명령어로 WinRM에 대한 설정값 확인을 합니다.

    winrm get winrm/config/client


    그리고 ansible에서 사용할 별도의 계정도 생성해 줍니다. 

    생성된 계정은 administrators 권한을 부여합니다.


    여기까지 ansible을 사용할 윈도우 서버 설정을 완료 하였습니다.

    다음으로는 AWX에서 설정을 진행합니다.


    우선 INVENTORY를 생성하고 해당 INVENTORY에 관리할 서버를 등록합니다.



    그리고 앞서 gitlab에 만들었던 repository에 간단한 ping yaml 스크립트를 등록합니다.

    ---

    - hosts: all

      remote_user: ansible

      tasks:

      - name: ping test gogogogogo

        win_ping:



    참고로 ansible에서는 아래와 같은 윈도우용 모듈을 지원하며, win_ping도 그 중 하나 입니다.


    자세한 모듈 리스트는 Windows Modules 문서를 참고해 주세요.


    yaml 파일을 repository에 등록하고 Project를 업데이트 합니다.


    또한 서버에 등록한 ansible 계정을 CREDENTIAL에 등록 합니다.


    모든 준비가 완료되면 TEMPLATE에서 해당 JOB을 등록 합니다.


    그리고 ansible에서 WinRM을 사용할 수 있게 EXTRA VARIABLES에 아래 값을 등록 합니다.

    ansible_port: 5985

    ansible_connection: winrm

    ansible_winrm_scheme: http

    ansible_winrm_server_cert_validation: ignore

    ansible_become: false


    여기까지 진행하면 모든 설정이 완료 되었습니다. JOB 실행 버튼을 클릭하면 아래와 같이 진행되는 상황을 확인 할 수 있습니다.


    여기까지 윈도우에서 사용 가능한 AWX & Ansible 구성을 해봤습니다.

    위에서 잠깐 Ansible 모듈에 대해 이야기를 했는데, 다음에는 이 모듈을 이용하여 서버를 관리하는 예제들을 다뤄보도록 하겠습니다.

Designed by Tistory.