Docker를 사용하여 Azure Stack Hub용 PowerShell 실행

이 문서에서는 Docker를 사용하여 다양한 인터페이스 작업에 필요한 PowerShell 버전을 실행할 컨테이너를 만들 수 있습니다. AzureRM 모듈과 최신 Az 모듈을 모두 사용하는 방법에 대한 지침을 찾을 수 있습니다. AzureRM에는 Windows 기반 컨테이너가 필요합니다. Az는 Linux 기반 컨테이너를 사용합니다.

Docker 필수 구성 요소

Docker 설치

  1. Docker를 설치합니다.

  2. PowerShell 또는 Bash와 같은 명령줄 프로그램에서 다음을 입력합니다.

    docker --version
    

PowerShell을 사용하기 위한 서비스 주체 설정

PowerShell을 사용하여 Azure Stack Hub의 리소스에 액세스하려면 Azure Active Directory(Azure AD) 테넌트에 서비스 주체가 필요합니다. RBAC(사용자 역할 기반 액세스 제어)를 사용하여 권한을 위임합니다. 클라우드 운영자에게 서비스 주체를 요청해야 할 수도 있습니다.

  1. 서비스 주체를 설정하려면 서비스 주체를 만들어 애플리케이션에 Azure Stack Hub 리소스에 대한 액세스 권한 부여의 지침을 따릅니다.

  2. 나중에 사용할 애플리케이션 ID, 비밀, 테넌트 ID 및 개체 ID를 기록해 둡니다.

Docker에서 PowerShell 실행

이 지침에서는 PowerShell 및 Azure Stack Hub에 필요한 모듈이 포함된 Linux 기반 컨테이너 이미지를 실행합니다.

  1. Linux 컨테이너를 사용하여 Docker를 실행해야 합니다. Docker를 실행할 때 Linux 컨테이너로 전환합니다.

  2. Azure Stack Hub와 동일한 도메인에 가입된 컴퓨터에서 Docker를 실행합니다. ASDK(Azure Stack Development Kit)를 사용하는 경우 원격 머신에 VPN을 설치해야 합니다.

Linux 컨테이너에 Azure Stack Hub Az 모듈 설치

  1. 명령줄에서 다음 Docker 명령을 실행하여 Ubuntu 컨테이너에서 PowerShell을 실행합니다.

    docker run -it mcr.microsoft.com/azurestack/powershell
    

    Ubuntu, Debian 또는 Centos를 실행할 수 있습니다. GitHub 리포지토리 azurestack-powershell에서 다음 Docker 파일을 찾을 수 있습니다. Docker 파일에 대한 최신 변경 내용은 GitHub 리포지토리를 참조하세요. 각 OS는 태그가 지정됩니다. 콜론 뒤의 섹션인 태그를 원하는 OS에 대한 태그로 바꿉 있습니다.

    Linux Docker 이미지
    Ubuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    Debian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
    Centos docker run -it mcr.microsoft.com/azurestack/powershell:centos-7
  2. cmdlet에 대한 셸이 준비되었습니다. 로그인하고 실행 Test-AzureStack.ps1하여 셸 연결을 테스트합니다.

    먼저 서비스 주체 자격 증명을 만듭니다. 비밀애플리케이션 ID가 필요합니다. 컨테이너를 확인하기 위해 실행할 개체 ID도 필요합니다. 클라우드 운영자에게 서비스 주체를 요청해야 할 수도 있습니다.

    다음 cmdlet을 입력하여 서비스 주체 개체를 만듭니다.

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Azure Stack Hub 인스턴스에서 다음 값을 사용하여 다음 스크립트를 실행하여 환경에 커넥트.

    설명
    환경의 이름입니다. Azure Stack Hub 환경의 이름입니다.
    Resource Manager 엔드포인트 Resource Manager의 URL입니다. 모르는 경우 클라우드 운영자에게 문의하세요. 이는 https://management.region.domain.com과 비슷합니다.
    디렉터리 테넌트 ID Azure Stack Hub 테넌트 디렉터리의 ID입니다.
    자격 증명 서비스 주체를 포함하는 개체입니다. 이 경우 $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell은 계정 개체를 반환합니다.

  4. 컨테이너에서 스크립트를 Test-AzureStack.ps1 실행하여 환경을 테스트합니다. 서비스 주체 개체 ID를 지정합니다. 개체 ID를 나타내지 않으면 스크립트가 계속 실행되지만 테넌트(사용자) 모듈만 테스트하고 관리자 권한이 필요한 모듈에서 실패합니다.

    ./Test-AzureStack.ps1 <Object ID>
    

다음 단계