본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

FogApi Powershell Module

0

FogApi Powershell Module는 FOG 프로젝트의 API를 활용하여 컴퓨터 이미징 및 관리 작업을 자동화하는 PowerShell 모듈입니다.

관리 도구이미징자동화

소개

FogApi Powershell Module는 FOG 프로젝트의 API를 활용하여 컴퓨터 이미징 및 관리 작업을 자동화하는 PowerShell 모듈입니다. 이 모듈은 FOG 서버와의 통신을 간소화하여 호스트, 이미지, 작업 등을 PowerShell 명령어로 제어할 수 있게 합니다. 개발자이자 유지관리자인 darksidemilk이 관리하며, FOG 프로젝트의 오픈소스 생태계에 기여하는 도구로 설계되었습니다. PowerShell을 통해 FOG 서버의 기능을 스크립트화하고 반복 작업을 자동화하려는 Windows 및 크로스플랫폼 관리자에게 유용합니다.

상세정보

FOG 서버 설정 및 인증

모듈은 Set-FogServerSettings 명령을 통해 FOG 서버의 호스트명과 API 키를 설정할 수 있습니다. 최초 실행 시 자동으로 settings.json 파일을 열어 구성을 돕며, -interactive 스위치를 사용하면 대화형 설정 과정을 진행할 수 있습니다. API 토큰은 FOG 웹 UI에서 base64 인코딩된 형태로 정확히 복사해야 하며, 이는 FOG API가 기대하는 형식입니다.

FOG 객체 조회 및 관리

Get-FogObject 명령을 사용하여 호스트, 이미지, 작업 등 다양한 FOG 객체를 조회할 수 있습니다. -Type 및 -CoreObject 매개변수를 통해 객체 유형을 지정할 수 있으며, PowerShell의 탭 완성 기능을 지원하여 사용 가능한 객체 이름을 자동으로 제안합니다. 예를 들어 Get-FogObject -Type Object -CoreObject Host 명령은 서버에 등록된 모든 호스트 목록을 반환합니다.

객체 수정 및 작업 실행

조회된 객체는 PowerShell 파이프라인을 통해 수정할 수 있습니다. Where-Object (별칭 ?) 또는 ForEach-Object (별칭 %)를 사용하여 특정 조건에 맞는 객체를 필터링하고 속성을 변경할 수 있습니다. 수정된 객체는 ConvertTo-Json를 통해 JSON 형식으로 변환한 후 Update-FogObject 명령으로 FOG 서버에 전송하여 변경 사항을 적용할 수 있습니다.

이미지 배포 작업 실행

호스트에 이미지 작업을 예약하거나 즉시 실행할 수 있습니다. Send-FogImage 명령은 선택한 호스트에 이미지 배포 작업을 시작하며, -StartAtTime 매개변수를 사용하여 특정 시간에 작업을 예약할 수 있습니다. 예를 들어 Get-FogHost -hostname "test-host" | Send-FogImage -StartAtTime (Get-Date "10pm").AddDays(1) 명령은 내일 오후 10시에 이미지 배포 작업을 예약합니다.

다운로드·설치 방법

이 모듈은 여러 방법으로 설치할 수 있으며, 가장 간단한 방법은 PowerShell 갤러리에서 설치하는 것입니다. 관리자 권한으로 PowerShell을 열고 다음 명령을 실행합니다:

  • Install-Module -Name FogApi -Scope AllUsers

Chocolatey 패키지 관리자를 사용하는 경우 다음 명령을 실행합니다:

  • choco install fogapi -y

업데이트는 다음과 같이 수행할 수 있습니다:

  • Update-Module -Name FogApi 또는 choco upgrade fogapi -y

수동 설치를 원하는 경우 GitHub 저장소에서 ZIP 파일을 다운로드하거나 git clone을 통해 소스를 받은 후 build.ps1 스크립트를 실행하여 모듈을 빌드할 수 있습니다. 빌드된 모듈은 다음과 같은 경로에 복사해야 합니다:

  • Windows PowerShell v3-v5.1: C:Program FilesWindowsPowershellModulesFogApi
  • PowerShell Core (pwsh) v7+ Windows: C:Program FilesPowerShellModulesFogApi
  • Linux PowerShell Core (pwsh) v7+: /usr/local/share/powershell/Modules/FogApi
  • macOS PowerShell Core (pwsh) v7+: /usr/local/share/powershell/Modules/FogApi (미검증)

빌드 및 복사 후 Import-Module FogApi 명령을 실행하여 모듈을 불러올 수 있습니다.

기본 사용법/명령어

모듈을 설치하고 불러온 후 처음으로 사용할 때는 서버 설정을 구성해야 합니다. Set-FogServerSettings -interactive 명령을 실행하면 설정 파일을 안내받으며 편집할 수 있습니다. 설정 완료 후 Get-FogObject 명령으로 서버와의 연결을 테스트할 수 있습니다. 예를 들어 모든 호스트 목록을 가져오려면 다음과 같이 입력합니다:

  • $hosts = Get-FogObject -Type Object -CoreObject Host

이후 PowerShell의 파이프라인 기능을 사용하여 데이터를 필터링하고 가공할 수 있습니다. 이름에 “IT”가 포함된 호스트만 찾으려면 다음과 같이 입력합니다:

  • $ITHosts = $hosts.data | ? name -match 'IT'

특정 이미지를 찾아 호스트에 적용하려면 이미지 객체를 먼저 가져온 후 호스트 객체의 imageid 속성을 수정해야 합니다:

  • $image = Get-FogImages | ? name -eq 'IT-image'
  • $updatedITHosts = $ITHosts | % { $_.imageid = $image.id }

수정된 객체를 JSON으로 변환하여 서버에 전송하려면 다음과 같이 입력합니다:

  • $updatedITHosts | % { Update-FogObject -Type object -CoreObject host -objectID $_.id -jsonData ($_ | ConvertTo-Json) }

새 호스트를 생성하고 이미지 작업을 예약하는 전체 흐름은 다음과 같습니다:

  • # 호스트 생성
  • New-FogHost -name "test-host" -macs "01:23:45:67:89:00"
  • # 이미지 할당
  • $foghost = Get-FogHost -hostname "test-host"
  • $image = Get-FogImages | ? name -eq "IT-image"
  • $foghost.imageid = $image.id
  • $jsonData = $fogHost | ConvertTo-Json
  • Update-FogObject -Type object -CoreObject host -objectID $foghost.id -jsonData jsonData
  • # 이미지 작업 실행
  • Get-FogHost -hostname "test-host" | Send-FogImage

작업을 특정 시간에 예약하려면 -StartAtTime 매개변수를 사용합니다:

  • Get-FogHost -hostname "test-host" | Send-FogImage -StartAtTime (Get-Date "10pm").AddDays(1)

이런 경우에 유용합니다

이 모듈은 FOG 서버를 사용하여 대량의 컴퓨터를 관리하는 시스템 관리자에게 특히 유용합니다. 예를 들어 컴퓨터실이나 사무실에서 다수의 장치에 동일한 운영체제 이미지를 배포해야 할 때, GUI를 통해 하나씩 작업하는 대신 PowerShell 스크립트를 작성하여 자동화할 수 있습니다. 신입 직원의 컴퓨터에 표준 이미지를 적용하거나, 주기적인 시스템 점검을 위해 특정 이미지로 재배포해야 하는 반복 작업을 스크립트화하여 시간과 노력을 줄일 수 있습니다. 또한 여러 사이트에 분산된 FOG 서버를 중앙에서 관리하거나, 이미지 배포 작업을 야간이나 주말에 자동으로 예약하여 업무 시간에 방해를 최소화하고자 할 때도 유용하게 사용할 수 있습니다.

지원 환경·시스템 요구사항

이 모듈은 PowerShell v3 이상에서 실행되며, 최상의 경험을 위해 PowerShell Core 7+ 사용을 권장합니다. Windows PowerShell 및 PowerShell Core (pwsh) 모두 지원되며, Windows, Linux, macOS 환경에서 사용할 수 있습니다. 그러나 macOS 지원은 현재 테스트되지 않았으며, 모듈 폴더 경로가 다를 수 있음을 인지해야 합니다. FOG 서버와의 통신을 위해서는 네트워크 연결이 필요하며, 서버의 API에 접근할 수 있는 권한이 있어야 합니다.

최신 버전·업데이트

현재 버전은 2607.9.28이며, 이는 연도/월 기반 버전링을 따릅니다. 즉 2607은 2026년 7월을 나타냅니다. 이 버전은 GitHub 저장소의 master 브랜치에서 릴리스되었으며, 변경 사항 및 업데이트 내역은 저장소의 커밋 기록과 릴리스 페이지에서 확인할 수 있습니다. 모듈은 정기적으로 업데이트되며, Chocolatey 및 PowerShell 갤러리를 통해 최신 버전을 쉽게 얻을 수 있습니다.

제한 사항·확인 사항

이 모듈은 FOG 서버의 API에 의존하므로, FOG 서버가 실행 중이고 API에 접근할 수 있어야 기능을 사용할 수 있습니다. API 토큰은 FOG 웹 UI에서 표시되는 base64 인코딩된 형태를 정확히 사용해야 하며, 데이터베이스에서 직접 가져온 토큰은 인코딩되지 않아 403 오류가 발생할 수 있습니다. 또한 현재 버전에서는 파이프라인 완전 지원이 제한되어 있으며, 향후 업데이트를 통해 개선될 예정입니다. macOS에서의 설치는 테스트되지 않았으므로, 해당 환경에서 사용할 경우 경로를 직접 확인해야 할 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.