Docker를 사용 하 여 Azure Stack 허브 용 PowerShell 실행Use Docker to run PowerShell for Azure Stack Hub

이 문서에서는 Docker를 사용 하 여 다양 한 인터페이스를 사용 하는 데 필요한 PowerShell 버전을 실행할 컨테이너를 만들 수 있습니다.In this article, you can use Docker to create a container on which to run the version of PowerShell that's required for working with the various interfaces. AzureRM 모듈과 최신 Az 모듈을 모두 사용 하는 방법에 대 한 지침을 찾을 수 있습니다.You can find instructions for using both AzureRM modules and the latest Az modules. AzureRM에는 Windows 기반 컨테이너가 필요 합니다.AzureRM requires a Windows-based container. Az는 Linux 기반 컨테이너를 사용 합니다.Az uses a Linux-based container.

Docker 필수 조건Docker prerequisites

Docker 설치Install Docker

  1. Docker를 설치 합니다.Install Docker.

  2. PowerShell 또는 Bash와 같은 명령줄 프로그램에서 다음을 입력 합니다.In a command-line program, such as PowerShell or Bash, enter:

    docker --version
    

PowerShell을 사용 하 여 서비스 주체 설정Set up a service principal for using PowerShell

PowerShell을 사용 하 여 Azure Stack 허브의 리소스에 액세스 하려면 Azure Active Directory (Azure AD) 테 넌 트에 서비스 주체가 있어야 합니다.To use PowerShell to access resources in Azure Stack Hub, you need a service principal in your Azure Active Directory (Azure AD) tenant. 사용자는 RBAC (역할 기반 액세스 제어)를 사용 하 여 권한을 위임 합니다.You delegate permissions with user role-based access control (RBAC). 클라우드 운영자에 게 서비스 주체를 요청 해야 할 수 있습니다.You may need to request the service principal from your cloud operator.

  1. 서비스 주체를 설정 하려면 서비스 주체를 만들어 응용 프로그램에 Azure Stack 허브 리소스에 대 한 액세스 권한 부여의 지침을 따르세요.To set up your service principal, follow the instructions in Give applications access to Azure Stack Hub resources by creating service principals.

  2. 나중에 사용 하기 위해 응용 프로그램 ID, 암호, 테 넌 트 ID 및 개체 ID를 확인 합니다.Note the application ID, the secret, your tenant ID, and object ID for later use.

Docker에서 PowerShell 실행Run PowerShell in Docker

이 지침에서는 PowerShell 및 Azure Stack 허브에 필요한 모듈을 포함 하는 Linux 기반 컨테이너 이미지를 실행 합니다.In these instructions, you will run a Linux-based container image that contains the PowerShell and the required modules for Azure Stack Hub.

  1. Linux 컨테이너를 사용 하 여 Docker를 실행 해야 합니다.You need to run Docker by using Linux container. Docker를 실행 하는 경우 Linux 컨테이너로 전환 합니다.When you run Docker, switch to Linux containers.

  2. Azure Stack 허브와 동일한 도메인에 가입 된 컴퓨터에서 Docker를 실행 합니다.Run Docker from a machine that's joined to the same domain as Azure Stack Hub. ASDK Azure Stack Development Kit 사용 하는 경우 원격 컴퓨터에 VPN을 설치 해야 합니다.If you are using the Azure Stack Development Kit (ASDK), you need to install the VPN on your remote machine.

Linux 컨테이너에 Azure Stack 허브 Az module 설치Install Azure Stack Hub Az module on a Linux container

  1. 명령줄에서 다음 Docker 명령을 실행 하 여 Ubuntu 컨테이너에서 PowerShell을 실행 합니다.From your command line, run the following Docker command to run PowerShell in an Ubuntu container:

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

    Ubuntu, Debian 또는 Centos를 실행할 수 있습니다.You can run Ubuntu, Debian, or Centos. GitHub 리포지토리 azurestack-powershell에서 다음 Docker 파일을 찾을 수 있습니다.You can find the following Docker files in the GitHub repository, azurestack-powershell. Docker 파일에 대 한 최신 변경 내용은 GitHub 리포지토리를 참조 하세요.Refer to the GitHub repository for the latest changes to the Docker files. 각 OS에는 태그가 지정 됩니다.Each OS is tagged. 콜론 뒤의 섹션인 태그를 원하는 OS에 대 한 태그로 바꿉니다.Replace the tag, the section after the colon, with the tag for the desired OS.

    LinuxLinux Docker 이미지Docker image
    UbuntuUbuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    DebianDebian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
    CentosCentos docker run -it mcr.microsoft.com/azurestack/powershell:centos-7
  2. 셸이 cmdlet에 대해 준비 되었습니다.The shell is ready for your cmdlets. 로그인 한 다음를 실행 하 여 셸 연결을 테스트 Test-AzureStack.ps1 합니다.Test your shell connectivity by signing in and then running Test-AzureStack.ps1.

    먼저 서비스 주체 자격 증명을 만듭니다.First, create your service principal credentials. 비밀응용 프로그램 ID 가 필요 합니다.You will need the secret and application ID. 을 실행 하 여 컨테이너를 확인 하는 경우에도 개체 ID 가 필요 합니다 Test-AzureStack.ps1 .You will also need the object ID when running the Test-AzureStack.ps1 to check your container. 클라우드 운영자에 게 서비스 주체를 요청 해야 할 수 있습니다.You may need to request a service principal from your cloud operator.

    다음 cmdlet을 입력 하 여 서비스 주체 개체를 만듭니다.Type the following cmdlets to create a service principle object:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Azure Stack 허브 인스턴스에서 다음 값을 사용 하 여 다음 스크립트를 실행 하 여 환경에 연결 합니다.Connect to your environment by running the following script with the following values from your Azure Stack Hub instance.

    Value 설명Description
    환경의 이름입니다.The name of the environment. Azure Stack 허브 환경의 이름입니다.The name of your Azure Stack Hub environment.
    리소스 관리자 끝점Resource Manager Endpoint 리소스 관리자에 대 한 URL입니다.The URL for the Resource Manager. 모르는 경우 클라우드 운영자에 게 문의 하세요.Contact your cloud operator if you don't know it. 이는 https://management.region.domain.com과 비슷합니다.It will look something like https://management.region.domain.com.
    디렉터리 테 넌 트 IDDirectory Tenant ID Azure Stack Hub 테 넌 트 디렉터리의 ID입니다.The ID of your Azure Stack Hub tenant directory.
    자격 증명Credential 서비스 주체를 포함 하는 개체입니다.An object containing your service principal. 이 경우에는 $pscredential 입니다.In this case $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell은 계정 개체를 반환 합니다.PowerShell returns your account object.

  4. 컨테이너에서 스크립트를 실행 하 여 환경을 테스트 Test-AzureStack.ps1 합니다.Test your environment by running the Test-AzureStack.ps1 script in the container. 서비스 사용자 개체 ID 를 지정 합니다.Specify the service principal object ID. 개체 ID를 나타내지 않으면 스크립트는 계속 실행 되지만 테 넌 트 (사용자) 모듈만 테스트 하 고 관리자 권한이 필요한 모듈에서는 실패 합니다.If you do not indicate the object ID, the script will still run but it will just test tenant (user) modules and fail on modules that require administrator privileges.

    ./Test-AzureStack.ps1 <Object ID>
    

다음 단계Next steps