Ansible - Windows 모듈 개발 - 2 > Ansible 자료실

본문 바로가기

사이트 내 전체검색

뒤로가기 Ansible 자료실

실습 Ansible - Windows 모듈 개발 - 2

페이지 정보

작성자 snow 작성일 24-12-19 10:43 조회 18 댓글 0

본문

Ansible Windows 모듈 개발 - 2

이 게시글에서는 Ansible Windows 모듈 개발에 대한 문서를 살펴보고, 예시만 안내드리는 글입니다. Windows 환경에서 Ansible 모듈을 새로 개발하기 위해 반드시 알아야 할 기본 사항과 모범 사례를 중심으로 다루겠습니다.


1. PowerShell 기반 모듈 코드 작성

Windows 모듈 개발은 PowerShell 스크립트 파일(.ps1)로 코드를 작성하며, 문서는 동일한 이름의 Python 파일(.py)에 작성합니다. 주요 작성 규칙은 다음과 같습니다:

  • Write-Host/Debug/Verbose/Error는 사용하지 않습니다. 필요한 결과는 $module.Result 변수에 저장합니다.
  • 모듈 실패 처리는 $module.FailJson("failure message here")를 사용합니다. 두 번째 인수로 Exception 또는 ErrorRecord를 전달하면 상세 오류 메시지를 제공할 수 있습니다.
  • 모듈은 기본적으로 PowerShell v3 이상, Windows Server 2008 이상에서 작동해야 하며, 더 높은 버전 요구 사항은 문서에 명확히 명시합니다.

예시로 다음과 같은 코드를 작성해볼 수 있습니다:

```powershell

Set-StrictMode -Version 2.0

$module = @{}

$module.Result = @{ example = "result" }

if ($Error) {

  $module.FailJson("An error occurred.", $Error[0])

}

```

위 코드는 StrictMode를 활성화하여 Ansible에서 강력한 오류 검사를 수행하며, 결과는 $module.Result에 저장됩니다.


2. 모듈 테스트 및 통합

모든 새로운 모듈은 다음 두 가지 테스트가 필요합니다:

  1. 체크 모드 지원
  2. 통합 테스트

체크 모드는 AnsibleModule의 supports_check_mode 옵션을 True로 설정하여 지원됩니다:

```powershell

# Example: Check Mode Support

$module.Params.supports_check_mode = $true

if ($module.CheckMode) {

  Write-Host "Check mode is enabled."

  return

}

```

위 코드는 체크 모드 활성화 시 실제 작업을 수행하지 않고, 결과를 확인합니다.


2.1. 테스트 자동화

Ansible의 기본 테스트 프레임워크를 사용하여 모듈을 테스트할 수 있습니다. 예를 들어, ansible-test 명령어로 단위 테스트를 실행할 수 있습니다:

```bash

ansible-test windows-integration test_win_module

```

해당 명령을 실행하면 새로운 모듈의 통합 테스트를 자동으로 실행합니다.


3. 코드 최적화 및 모듈 유틸리티 사용

코드 중복을 피하기 위해 다음 유틸리티를 활용할 수 있습니다:

  • PowerShell 모듈 유틸리티: ./lib/ansible/module_utils/powershell/
  • C# 모듈 유틸리티: ./lib/ansible/module_utils/csharp/

예를 들어, 파일 관련 작업은 FileUtil 유틸리티를 통해 처리할 수 있습니다:

```powershell

#Requires -Module Ansible.ModuleUtils.FileUtil

Test-Path -Path "C:\Temp"

```

해당 코드는 파일 경로 존재 여부를 테스트하며, 유틸리티를 활용해 작업을 단순화합니다.


4. 모범 사례 및 최적화

모듈 개발 시 다음 원칙을 준수하세요:

  • PowerShell 네이티브 cmdlets를 선호합니다. 예: Remove-Item -Path C:\temp
  • 알리아스를 사용하지 말고 전체 cmdlet 이름을 사용합니다.
  • Try/Catch 문은 작은 코드 블록에 적용하여 구체적인 오류 메시지를 제공합니다.

이러한 모범 사례를 통해 안정적이고 효율적인 모듈을 개발할 수 있습니다.


5. 결론

Windows 모듈 개발은 복잡해 보일 수 있지만, Ansible의 강력한 유틸리티와 명확한 규칙을 통해 효과적으로 수행할 수 있습니다. 위 가이드를 참고하여 새로운 모듈을 개발할 때 반드시 위의 체크리스트와 예시 코드를 활용해 보세요.

댓글목록 0

등록된 댓글이 없습니다.

Copyright © 소유하신 도메인. All rights reserved.

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

PC 버전으로 보기