다음을 통해 공유


재사용 가능한 개발 상자 사용자 지정 만들기

Microsoft Dev Box 사용자 지정은 개발 상자를 사용자 지정하는 구성-코드 방식입니다. 이 문서에서는 작업 카탈로그와 구성 파일을 사용하여 소프트웨어 설치, 확장 추가, 리포지토리 복제 등을 통해 개발 상자를 사용자 지정하는 방법을 알아봅니다. 이러한 작업은 만들기 프로세스의 마지막 단계에서 새 개발 상자에 적용됩니다. 사용자 지정 VM(가상 머신) 이미지를 만들지 않고도 설정과 소프트웨어를 추가할 수 있습니다.

사용자 지정은 개발팀에 유용합니다. 개발자 팀 리더는 사용자 지정을 사용하여 특정 개발팀에 필요한 소프트웨어를 사전 구성하고 팀과 관련된 작업에만 적용하는 구성 파일을 작성할 수 있습니다. 이 방법을 사용하면 개발자는 IT에 변경을 요청하거나 엔지니어링 팀이 사용자 지정 VM 이미지를 만들 때까지 기다릴 필요 없이 자신의 작업에 가장 적합한 개발 상자를 만들 수 있습니다.

사용자 지정을 사용하면 일반적인 설정 단계를 자동화하고, 시간을 절약하고, 구성 오류 가능성을 줄일 수 있습니다. 몇 가지 예 작업은 다음과 같습니다.

  • WinGet 패키지 관리자를 사용하여 소프트웨어 설치.
  • Windows 기능 사용과 같은 OS 설정.
  • Visual Studio 확장 설치와 같은 애플리케이션 구성.

단순하지만 기능적인 구성부터 자동화된 프로세스까지 단계별로 사용자 지정을 채택할 수 있습니다. 단계는 다음과 같습니다.

  1. 예제 구성 파일을 사용하여 사용자 지정된 개발 상자 만들기
  2. 구성 파일 작성
  3. 코드 리포지토리에서 구성 파일 공유
  4. 카탈로그에서 새 작업 정의
  5. Azure Key Vault의 비밀 사용

Important

Microsoft Dev Box의 사용자 지정은 현재 미리 보기로 제공됩니다. 베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.

필수 조건

사용자 지정을 위해 Microsoft Dev Box를 구성하는 데 필요한 권한

사용자 지정을 만들고 개발 상자에 적용하는 데 필요한 작업을 수행하려면 특정 권한이 필요합니다. 다음 표에서는 사용자 지정을 구성하는 데 필요한 작업과 권한 또는 역할에 대해 설명합니다.

작업 권한/역할
개발자 센터에 카탈로그 연결 개발자 센터에 대한 기여자 권한이 있는 플랫폼 엔지니어입니다.
개발자 포털을 사용하여 개발 상자를 만드는 동안 yaml 파일을 업로드하고 적용합니다. Dev Box 사용자
구성 파일 만들기 누구나 구성 파일을 만들 수 있습니다.
카탈로그에 작업 추가 카탈로그를 호스팅하는 리포지토리에 추가할 수 있는 권한입니다.

예제 구성 파일을 사용하여 사용자 지정된 개발 상자 만들기

기본 빠른 시작 카탈로그 및 예제 구성 파일을 사용하여 사용자 지정을 시작합니다.

빠른 시작 카탈로그 연결

개발자 센터에 사용자 지정 작업이 있는 카탈로그를 연결하면 해당 개발자 센터에서 개발 상자를 만들고 해당 카탈로그의 사용자 지정 작업을 참조할 수 있습니다. Microsoft는 빠른 시작 카탈로그라고 알려진 시작하는 데 도움이 되는 표준 기본 작업 세트가 포함된 샘플 리포지토리를 GitHub에 제공합니다.

빠른 시작 카탈로그를 개발자 센터에 연결하려면 다음을 수행합니다.

  1. Microsoft Dev Box 개발자 포털에 로그인합니다.

  2. 환경 구성 아래 왼쪽 메뉴에서 카탈로그를 선택한 다음 추가를 선택합니다.

  3. 카탈로그 추가에서 개발 상자 사용자 지정 작업을 빠른 시작 카탈로그로 선택합니다. 그런 후 추가를 선택합니다.

  4. 개발자 센터에서 카탈로그를 선택하고 카탈로그가 표시되는지 확인합니다.

    Microsoft의 빠른 시작 카탈로그 및 개발자 상자 사용자 지정 작업이 강조 표시된 카탈로그 추가 창을 보여 주는 Azure Portal의 스크린샷.

    연결이 성공하면 상태동기화 성공으로 표시됩니다.

사용자 지정된 개발 상자 만들기

이제 개발자가 사용할 수 있는 작업을 정의하는 카탈로그가 있습니다. 구성 파일에서 해당 작업을 참조하고 사용자 지정된 개발 상자를 만들 수 있습니다.

  1. 샘플 리포지토리에서 예제 yaml 구성을 다운로드합니다. 이 예제 구성은 Visual Studio Code를 설치하고 OrchardCore .NET 웹앱 리포지토리를 개발 상자에 복제합니다.

  2. Microsoft Dev Box 개발자 포털에 로그인합니다.

  3. >Dev Box를 선택합니다.

  4. 개발 상자 추가에 다음 값을 입력한 후 계속을 선택합니다.

    설정
    이름 개발 상자의 이름을 입력합니다. 개발 상자 이름은 프로젝트 내에서 고유해야 합니다.
    프로젝트 드롭다운 목록에서 프로젝트를 선택합니다.
    개발 상자 풀 해당 프로젝트에 대한 모든 개발 상자 풀을 포함하는 드롭다운 목록에서 풀을 선택합니다. 대기 시간을 최소화하려면 가까운 개발 상자 풀을 선택합니다.
    사용자 지정 적용 사용자 지정 적용을 선택합니다.

    업로드된 사용자 지정 파일이 강조 표시된 개발자 포털의 개발 상자 사용자 지정 옵션을 보여 주는 스크린샷.

  5. 개발 상자 사용자 지정 페이지에서 사용자 지정 파일 업로드를 선택한 다음 파일에서 사용자 지정 추가를 선택합니다.

    사용자 지정 파일 업로드 및 파일에서 사용자 지정 추가가 강조 표시된 개발 상자 사용자 지정 페이지를 보여 주는 스크린샷.

  6. 다운로드한 예 yaml 구성 파일의 위치를 찾은 다음 열기를 선택합니다.

  7. 구성 파일이 사용자 지정 파일 업로드 아래에 나열되어 있는지 유효성을 검사한 다음 유효성 검사를 선택합니다.

    업로드된 사용자 지정 파일이 나열되고 유효성 검사가 강조 표시된 개발 상자 사용자 지정 페이지를 보여 주는 스크린샷.

  8. 개발 상자가 구성 파일의 유효성을 검사한 후 계속을 선택합니다.

    사용자 지정 작업 유효성 검사 성공 메시지와 계속이 강조 표시된 스크린샷.

  9. Dev Box 만들기 요약 페이지에서 Dev Box는 적용할 작업을 표시합니다. 만들기를 실행합니다.

    만들기 단추가 강조 표시된 Dev 상자 만들기 요약 페이지를 보여 주는 스크린샷.

만들기 프로세스가 완료되면 새 개발 상자에 nodejs 및 Visual Studio Code가 설치됩니다.

자세한 예제는 GitHub의 개발자 센터 예제 리포지토리를 참조하세요.

개발자 포털 대신 개발자 홈을 사용하여 개발 상자를 만들기, 사용자 지정 및 연결할 수 있습니다. 개발자 홈은 개발 상자를 관리할 수 있는 단일 장소를 제공하는 네이티브 Windows 앱입니다. 개발자 홈으로 재사용 가능한 개발 상자 사용자 지정 만들기에서 개발자 홈에 대해 자세히 알아봅니다.

구성 파일이란?

Dev Box 사용자 지정은 yaml 형식의 파일을 사용하여 새 개발 상자를 만들 때 카탈로그에서 적용할 작업 목록을 지정합니다. 이러한 구성 파일에는 카탈로그 작업을 식별하고 설치할 소프트웨어 이름과 같은 매개 변수를 제공하는 하나 이상의 '작업'이 포함되어 있습니다. 그런 다음, 새 개발 상자를 만드는 개발자가 구성 파일을 사용할 수 있습니다. 다음 예제에서는 winget 작업을 사용하여 Visual Studio Code를 설치하고 git clone 작업을 사용하여 리포지토리를 복제합니다.

# From https://github.com/microsoft/devcenter-examples
$schema: 1.0
tasks:
  - name: winget
    parameters:
      package: Microsoft.VisualStudioCode
      runAsUser: true
  - name: git-clone
    description: Clone this repository into C:\Workspaces
    parameters:
      repositoryUrl: https://github.com/OrchardCMS/OrchardCore.git
      directory: C:\Workspaces

작업이란?

작업은 소프트웨어 설치와 같은 특정 작업을 수행합니다. 각 작업은 매개 변수를 제공하고 스크립트 실행 방법을 정의하는 task.yaml 파일과 함께 하나 이상의 PowerShell 스크립트로 구성됩니다. task.yaml 파일에 PowerShell 명령을 포함할 수도 있습니다. 큐레이팅된 작업의 컬렉션을 개발자 센터에 연결된 카탈로그에 저장하고 각 작업을 별도의 폴더에 저장할 수 있습니다. Dev Box는 GitHub 리포지토리 또는 Azure DevOps를 카탈로그로 사용하도록 지원하고 카탈로그의 지정된 폴더를 재귀적으로 검사하여 작업 정의를 찾습니다.

Microsoft는 사용자 지정을 시작하는 데 도움이 되는 빠른 시작 카탈로그를 제공합니다. 여기에는 공통 작업을 정의하는 기본 작업 집합이 포함됩니다.

  • WinGet 패키지 관리자를 사용하여 소프트웨어 설치.
  • WinGet 구성을 사용하여 DSC(Desired State Configuration)를 배포합니다.
  • git-clone을 사용하여 리포지토리를 복제합니다.
  • Visual Studio 확장 설치와 같은 애플리케이션 구성.
  • PowerShell 스크립트를 실행합니다.

기존 WinGet 구성 파일을 사용하여 개발 상자 사용자 지정

WinGet 구성은 Windows 환경을 코딩 준비 상태로 만드는 데 필요한 고유한 소프트웨어 및 구성 설정 집합을 정의하기 위해 코드형 구성 방식을 사용합니다. 이러한 구성 파일은 앞서 언급한 Microsoft 제공 빠른 시작 카탈로그에 포함된 WinGet 작업을 사용하여 개발 상자를 설정하는 데에도 사용할 수 있습니다.

다음 예에서는 기존 WinGet DSC 파일을 호출하는 개발 상자 사용자 지정 파일을 보여 줍니다.

tasks:
    - name: winget
      parameters:
          configure: "projectConfiguration.dsc.yaml"

WinGet 구성에 대해 자세히 알아보려면 WinGet 구성을 참조하세요.

구성 파일 작성

고유한 구성 파일을 만들어 개발 상자에 적용할 새 작업을 정의할 수 있습니다. Visual Studio Code에서 구성 파일을 테스트하고 각 테스트에 대해 별도의 개발 상자를 만들 필요 없이 필요한 내용을 변경할 수 있습니다.

고유한 구성 파일을 만들고 테스트하려면 먼저 개발자 센터에 연결된 작업이 포함된 카탈로그가 있어야 합니다. Visual Studio Code 확장을 사용하여 연결된 카탈로그에서 작업을 검색할 수 있습니다.

  1. 테스트를 위해 Dev Box를 만들거나 기존 Dev Box를 사용합니다.

  2. 테스트 개발 상자에서 Visual Studio Code를 설치한 다음, Dev Box v1.2.2 VS Code 확장을 설치합니다.

  3. 샘플 리포지토리에서 예제 yaml 구성 파일을 다운로드하고 Visual Studio Code에서 엽니다.

  4. 명령 팔레트를 사용하여 카탈로그에서 사용할 수 있는 작업을 검색합니다. 보기>명령 팔레트에서 Dev Box: 이 개발 상자에 사용 가능한 작업 목록을 선택합니다.

    이 개발 상자에 사용할 수 있는 작업이 강조 표시된 Dev Box 목록이 있는 명령 팔레트를 보여 주는 Visual Studio Code의 스크린샷.

  5. f5/명령 팔레트를 사용하여 Visual Studio Code에서 구성을 테스트합니다. 보기>명령 팔레트에서 Dev Box: 사용자 지정 작업 적용을 선택합니다.

    Dev Box 사용자 지정 적용 작업이 강조 표시된 명령 팔레트를 보여 주는 Visual Studio Code의 스크린샷.

  6. 구성 파일은 즉시 실행되어 지정된 작업을 테스트 개발 상자에 적용합니다. 변경 내용을 검사하고 Visual Studio Code 터미널에서 작업 실행 중에 발생하는 오류 또는 경고를 확인합니다.

  7. 구성 파일이 성공적으로 실행되면 개발자와 공유하여 새 개발 상자를 만들 때 업로드합니다.

Visual Studio Code 대신 개발자 홈을 사용하여 그래픽 사용자 인터페이스에서 구성 파일을 만들고 유효성을 검사할 수 있습니다. 개발자 홈으로 재사용 가능한 개발 상자 사용자 지정 만들기에서 개발자 홈에 대해 자세히 알아봅니다.

참고 항목

파일을 만들고 업로드하는 기능은 보안상 위험하지 않습니다. 업로드된 파일은 개발자 센터에 연결된 카탈로그에 정의된 설정만 적용할 수 있습니다. 작업이 정의되어 있지 않으면 개발자는 작업이 정의되지 않았다는 오류를 받게 됩니다.

코드 리포지토리에서 구성 파일 공유

구성 파일의 이름을 workload.yaml로 지정하고 개발자가 액세스할 수 있는 리포지토리(일반적으로 코딩 리포지토리)에 업로드하여 개발자가 원활하게 사용할 수 있도록 합니다. 개발 상자를 만들 때 리포지토리 URL을 지정하면 구성 파일이 나머지 리포지토리와 함께 복제됩니다. Dev box는 리포지토리에서 workload.yaml이라는 파일을 검색하고, 있는 경우 나열된 작업을 수행합니다. 이 구성은 개발 상자에서 사용자 지정을 수행하는 원활한 방법을 제공합니다.

  1. workload.yaml이라는 구성 파일을 만듭니다.

  2. 코드를 사용하여 프라이빗 Azure Repos 리포지토리의 루트에 구성 파일을 추가하고 커밋합니다.

  3. Microsoft Dev Box 개발자 포털에 로그인합니다.

  4. >Dev Box를 선택합니다.

  5. 개발 상자 추가에 다음 값을 입력한 후 계속을 선택합니다.

    설정
    이름 개발 상자의 이름을 입력합니다. 개발 상자 이름은 프로젝트 내에서 고유해야 합니다.
    프로젝트 드롭다운 목록에서 프로젝트를 선택합니다.
    개발 상자 풀 해당 프로젝트에 대한 모든 개발 상자 풀을 포함하는 드롭다운 목록에서 풀을 선택합니다. 대기 시간을 최소화하려면 가까운 개발 상자 풀을 선택합니다.
    사용자 지정 적용 사용자 지정 적용을 선택합니다.

    업로드된 사용자 지정 파일이 강조 표시된 개발자 포털의 개발 상자 사용자 지정 옵션을 보여 주는 스크린샷.

  6. 개발 상자 사용자 지정 페이지에서 리포지토리에서 사용자 지정 파일 선택을 선택하고 Azure DevOps 리포지토리 URL에 적용하려는 구성 파일을 호스팅하는 리포지토리의 URL을 입력한 다음 계속을 선택합니다.

    리포지토리에서 사용자 지정 파일 선택 및 Azure DevOps 리포지토리 URL이 포함된 개발 상자 사용자 지정 페이지를 보여 주는 스크린샷.

  7. Dev Box 만들기 요약 페이지에서 Dev Box는 적용할 작업을 표시합니다. 만들기를 실행합니다.

만들기 프로세스가 완료되면 새 개발 상자에 nodejs 및 Visual Studio Code가 설치됩니다.

새 개발 상자에는 리포지토리가 복제되고 구성 파일의 모든 지침이 적용됩니다.

카탈로그에서 새 작업 정의

카탈로그에서 새 작업을 만들면 개발 팀에 맞게 조정된 사용자 지정을 만들고 가능한 구성을 중심으로 가드레일을 추가할 수 있습니다.

  1. 작업을 저장할 리포지토리를 만듭니다.

    필요에 따라 사용자 고유의 리포지토리에 빠른 시작 카탈로그 복사본을 만들어 시작점으로 사용할 수 있습니다.

  2. 기존 PowerShell 스크립트를 수정하거나 새 스크립트를 만들어 리포지토리에서 작업을 만듭니다.

    작업 만들기를 시작하려면 GitHub의 개발자 센터 예제 리포지토리PowerShell 설명서에 제공된 예제를 사용하면 됩니다.

  3. 리포지토리를 개발자 센터에 카탈로그로 연결합니다.

  4. 구성 파일 작성의 단계에 따라 해당 작업에 대한 구성 파일을 만듭니다.

Azure Key Vault의 비밀 사용

yaml 구성에서 Azure Key Vault의 비밀을 사용하여 프라이빗 리포지토리를 복제하거나 액세스 토큰이 필요한 사용자 지정 작업을 작성할 수 있습니다.

yaml 구성에서 사용할 Key Vault 비밀을 구성하려면 다음을 수행합니다.

  1. 개발자 센터 프로젝트의 관리 ID에 Key Vault 읽기 권한자 역할과 Key Vault 비밀 사용자 역할이 있는지 확인합니다.

  2. 개발 상자를 사용자 지정하는 동안 비밀을 사용할 수 있어야 하는 각 사용자 또는 사용자 그룹에 Key Vault 비밀에 대한 비밀 사용자 역할을 부여합니다. 역할이 부여된 사용자 또는 그룹에는 개발 센터의 관리 ID, 사용자 고유의 사용자 계정 및 개발 상자를 사용자 지정하는 동안 비밀이 필요한 사용자 또는 그룹이 포함되어야 합니다.

자세한 내용은 다음을 참조하세요.

git-clone 작업을 예로 사용하여 yaml 구성의 비밀을 다음 형식으로 참조할 수 있습니다.

$schema: "1.0"
tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{KEY_VAULT_SECRET_URI}}'

프라이빗 Azure Repos(Azure DevOps 리포지토리)를 복제하려는 경우 Key Vault에서 비밀을 구성할 필요가 없습니다. 대신 {{ado}} 또는 {{ado://your-ado-organization-name}}을 매개 변수로 사용할 수 있습니다. 리포지토리에 대한 읽기 전용 권한이 있는 개발 상자를 만들 때 사용자를 대신하여 액세스 토큰을 가져옵니다. 빠른 시작 카탈로그의 git-clone 작업은 액세스 토큰을 사용하여 리포지토리를 복제합니다. 예를 들면 다음과 같습니다.

tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{ado://YOUR_ADO_ORG}}'

조직의 정책에 따라 Key Vault를 인터넷에서 비공개로 유지해야 하는 경우 신뢰할 수 있는 Microsoft 서비스가 방화벽 규칙을 무시할 수 있도록 Key Vault를 설정할 수 있습니다.

신뢰할 수 있는 Microsoft 서비스가 선택한 이 방화벽을 무시하도록 허용하는 Azure 방화벽 구성을 보여 주는 스크린샷.

신뢰할 수 있는 Microsoft 서비스가 방화벽을 우회하도록 허용하는 방법을 알아보려면 Azure Key Vault 네트워킹 설정 구성을 참조하세요.