다음을 통해 공유


배포 그룹에 대한 에이전트 프로비저닝

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

배포 그룹을 사용하면 배포를 위한 대상 컴퓨터의 논리적 그룹을 쉽게 정의하고 각 컴퓨터에 필요한 에이전트를 설치할 수 있습니다. 이 문서에서는 배포 그룹을 만드는 방법과 배포 그룹의 각 가상 또는 물리적 머신에 에이전트를 설치하고 프로비전하는 방법을 설명합니다.

다음 방법 중 하나로 에이전트를 설치할 수 있습니다.

에이전트 및 파이프라인에 대한 자세한 내용은 다음을 참조하세요.

대상 서버에서 설치 스크립트 실행

  1. Azure Pipelines배포 그룹 탭에서 +새로 만들기를 선택하여 새 그룹을 만듭니다.

  2. 그룹의 이름을 입력하고 필요에 따라 설명을 입력한 다음 만들기를 선택합니다.

  3. 다음 페이지의 명령줄 섹션을 사용하여 컴퓨터 등록 섹션에서 대상 컴퓨터 운영 체제를 선택합니다.

  4. 인증을 위해 스크립트에서 개인용 액세스 토큰 사용을 선택합니다. 자세히 알아보기.

  5. 스크립트를 클립보드에 복사를 선택합니다.

  6. 적절한 권한이 있는 계정을 사용하여 각 대상 컴퓨터에 차례로 로그인하고 다음을 수행합니다.

    • 관리istrator PowerShell 명령 프롬프트를 열고 복사한 스크립트에 붙여넣은 다음 실행하여 컴퓨터를 이 그룹에 등록합니다.

    • 보안 채널을 만들 수 없는 스크립트를 실행할 때 오류가 발생하면 관리istrator PowerShell 프롬프트에서 다음 명령을 실행합니다.

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    • 에이전트에 대한 태그를 구성하라는 메시지가 표시되면 부분 배포를 위해 그룹에 있는 컴퓨터의 하위 집합을 식별하는 데 사용할 태그를 누르 Y 고 입력합니다.

      할당한 태그를 사용하면 배포 그룹이 컴퓨터 그룹 실행 작업에서 사용될 때 특정 서버로 배포를 제한할 수 있습니다.

    • 사용자 계정에 대한 메시지가 표시되면 Return 키를 눌러 기본값을 적용합니다.

    • 스크립트가 메시지 Service vstsagent.{organization-name}.{computer-name} started successfully로 완료되기를 기다립니다.

  7. Azure Pipelines배포 그룹 페이지에서 컴퓨터 탭을 열고 에이전트가 실행 중인지 확인합니다. 구성한 태그가 표시되지 않으면 페이지를 새로 고칩니다.

Azure Pipelines 에이전트 Azure VM 확장 설치

  1. Azure Pipelines배포 그룹 탭에서 +새로 만들기를 선택하여 새 그룹을 만듭니다.

  2. 그룹의 이름을 입력하고 필요에 따라 설명을 입력한 다음 만들기를 선택합니다.

  3. Azure Portal에서 배포 그룹에 포함될 각 VM에 대해 확장 블레이드를 열고 + 추가를 선택하여 새 리소스 목록을 열고 Azure Pipelines 에이전트를 선택합니다.

    Azure Pipelines 에이전트 확장 설치

  4. 확장 설치 블레이드에서 사용할 Azure Pipelines 구독의 이름을 지정합니다. 예를 들어 URL이면 contoso를 지정하기만 하면됩니다https://dev.azure.com/contoso.

  5. 프로젝트 이름 및 배포 그룹 이름을 지정합니다.

  6. 필요에 따라 에이전트의 이름을 지정합니다. 지정하지 않으면 .에 추가된 -DGVM 이름을 사용합니다.

  7. Azure Pipelines에 대한 인증에 사용할 PAT(개인 액세스 토큰) 를 입력합니다.

  8. 필요에 따라 에이전트에 구성될 태그의 쉼표로 구분된 목록을 지정합니다. 태그는 대/소문자를 구분하지 않으며 각각은 256자를 넘지 않아야 합니다.

  9. 확인을 선택하여 이 VM에 에이전트 설치를 시작합니다.

  10. 이 배포 그룹에 포함하려는 다른 VM에 확장을 추가합니다.

ARM 템플릿 배포 작업 사용

Important

이러한 지침은 작업의 버전 2를 참조합니다. 작업 버전을 3에서 2로 전환합니다.

ARM 템플릿 배포 작업을 사용하여 가상 머신을 만들 때 Azure Pipelines 에이전트 Azure VM 확장을 설치하는 ARM(Azure Resource Manager) 템플릿을 배포하거나 가상 머신을 만든 후 확장을 적용하도록 리소스 그룹을 업데이트할 수 있습니다. 또는 ARM 템플릿 배포 작업의 고급 배포 옵션을 사용하여 에이전트를 배포 그룹에 배포할 수 있습니다.

ARM 템플릿을 사용하여 "Azure Pipelines 에이전트" Azure VM 확장 설치

ARM 템플릿은 선언적으로 Azure 리소스 집합을 정의하는 JSON 파일입니다. 템플릿을 자동으로 읽고 Azure에서 프로비저닝한 리소스를 읽을 수 있습니다. 단일 템플릿에서 여러 서비스를 해당 종속성과 함께 배포할 수 있습니다.

Windows VM의 경우 다음과 같이 ARM 템플릿을 만들고 리소스 아래에 Microsoft.Compute/virtualMachine 리소스 요소를 추가합니다.

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|2|3",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

참고 항목

Azure DevOps Server 2022에서 허용되는 값 AgentMajorVersion 은 다음과 같습니다 auto|N. Azure DevOps Server 2022.1 이상에서는 허용되는 값 AgentMajorVersion 이 있습니다 auto|2|3.

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|N",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

여기서

  • VSTSAccountName 이 필요합니다. 사용할 Azure Pipelines 구독입니다. 예: URL이 있는 경우 지정하기만 하면 됩니다 https://dev.azure.com/contoso. contoso
  • TeamProject 가 필요합니다. 배포 그룹이 정의된 프로젝트
  • DeploymentGroup 이 필요합니다. 배포 에이전트를 등록할 배포 그룹
  • AgentName 은 선택 사항입니다. 지정하지 않으면 추가된 VM 이름이 -DG 사용됩니다.
  • 태그는 선택 사항입니다. 에이전트에 설정할 태그의 쉼표로 구분된 목록입니다. 태그는 대/소문자를 구분하지 않으며 각각은 256자 이하여야 합니다.
  • PATToken 이 필요합니다. 에이전트를 다운로드하고 구성하기 위해 Azure Pipelines에 대해 인증하는 데 사용되는 개인 액세스 토큰

참고 항목

Linux VM에 배포하는 경우 코드TeamServicesAgentLinux의 매개 변수가 type 있는지 확인합니다.

확장 문제 해결

다음은 확장과 관련된 몇 가지 알려진 문제입니다.

  • 상태 파일이 너무 커지는 경우: 이 문제는 Windows VM에서 발생하며 Linux VM에서 관찰되지 않았습니다. 상태 파일에는 확장의 현재 상태 설명하는 JSON 개체가 포함되어 있습니다. 개체는 지금까지 수행된 작업을 나열하는 자리 표시자입니다. Azure는 이 상태 파일을 읽고 API 요청에 대한 응답으로 상태 개체를 전달합니다. 파일의 최대 크기는 허용됩니다. 크기가 임계값을 초과하면 Azure에서 임계값을 완전히 읽을 수 없으며 상태 오류가 발생합니다. 각 컴퓨터를 다시 부팅할 때마다 확장에서 일부 작업이 수행되며(이전에 성공적으로 설치되었을 수도 있지만) 상태 파일을 추가합니다. 컴퓨터가 여러 번 다시 부팅되면 상태 파일 크기가 임계값을 초과하여 이 오류가 발생합니다. 오류 메시지는 다음과 Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes같습니다. 확장 설치에 성공했지만 이 오류는 확장의 실제 상태를 숨깁니다.

    컴퓨터 재부팅(Windows 확장용 버전 1.27.0.21.21.0.1 Linux 확장 이후 버전)에 대해 이 문제를 해결했으므로 다시 부팅 시 상태 파일에 아무것도 추가되지 않습니다. 수정이 이루어지기 전에 확장에 이 문제가 있었고(즉, 이전 버전의 확장에서 이 문제가 발생했습니다) 확장이 수정된 버전으로 자동 업데이트된 경우 문제는 계속 유지됩니다. 확장 업데이트에서는 최신 버전의 확장이 여전히 이전 상태 파일에서 작동하기 때문입니다. 현재 부 버전 자동 업데이트를 해제하기 위해 플래그와 함께 이전 버전의 확장을 사용하거나 이전 확장 버전에서 수정 사항이 포함된 최신 버전으로 큰 상태 파일이 전달되었거나 다른 이유로 인해 이 문제가 발생할 수 있습니다. 이 경우 확장을 제거하고 다시 설치하여 이 문제를 해결할 수 있습니다. 확장 클린 제거하면 전체 확장 디렉터리가 상태 파일이 새로 설치됩니다. 최신 버전의 확장을 설치해야 합니다. 이 솔루션은 영구적인 수정 사항이며, 이 문제를 수행한 후에는 다시 문제가 발생해서는 안 됩니다.

  • 사용자 지정 데이터 문제: 이 문제는 확장과 관련이 없지만 일부 고객은 OS 버전 전환 시 VM의 사용자 지정 데이터 위치에 대해 혼동을 보고했습니다. 다음 해결 방법을 제안합니다. Python 2는 더 이상 사용되지 않으므로 Python 3에서 작동하도록 확장을 만들었습니다. 기본적으로 Python 3이 설치되지 않은 이전 OS 버전을 계속 사용하는 경우 확장을 실행하려면 VM에 Python 3을 설치하거나 기본적으로 Python 3이 설치된 OS 버전으로 전환해야 합니다. Linux VM에서 사용자 지정 데이터는 이전 Microsoft Azure Linux 에이전트 버전 및 최신 Microsoft Azure Linux 에이전트 버전의 파일 /var/lib/waagent/ovf-env.xml/var/lib/waagent/CustomData 복사됩니다. 이러한 두 경로 중 하나만 하드 코딩한 고객은 새 OS 버전에 파일이 없지만 다른 파일이 있기 때문에 OS 버전을 전환하는 동안 문제가 발생하는 것으로 보입니다. 따라서 VM 프로비저닝이 중단되지 않도록 하려면 템플릿의 두 파일을 모두 고려해야 합니다. 한 파일이 실패하면 다른 파일이 성공해야 합니다.

ARM 템플릿에 대한 자세한 내용은 Azure Resource Manager 템플릿에서 리소스 정의를 참조 하세요.

템플릿을 사용하려면 다음을 수행합니다.

  1. Azure Pipelines배포 그룹 탭에서 +새로 만들기를 선택하여 새 그룹을 만듭니다.

  2. 그룹의 이름을 입력하고 필요에 따라 설명을 입력한 다음 만들기를 선택합니다.

  3. Azure Pipelines릴리스 탭에서 ARM 템플릿 배포 작업이 포함된 스테이지를 사용하여 릴리스 파이프라인을 만듭니다.

  4. Azure 구독, 리소스 그룹 이름, 위치 및 템플릿 정보와 같은 작업에 필요한 매개 변수를 제공한 다음 릴리스 파이프라인을 저장합니다.

  5. 릴리스 파이프라인에서 릴리스를 만들어 에이전트를 설치합니다.

고급 배포 옵션을 사용하여 에이전트 설치

  1. Azure Pipelines배포 그룹 탭에서 +새로 만들기를 선택하여 새 그룹을 만듭니다.

  2. 그룹의 이름을 입력하고 필요에 따라 설명을 입력한 다음 만들기를 선택합니다.

  3. Azure Pipelines릴리스 탭에서 ARM 템플릿 배포 작업이 포함된 스테이지를 사용하여 릴리스 파이프라인을 만듭니다.

  4. 작업을 선택하고 가상 머신대한 고급 배포 옵션을 확장합니다. 이 섹션의 매개 변수를 다음과 같이 구성합니다.

    • 필수 구성 요소 사용: 배포 그룹 에이전트를 사용하여 구성을 선택합니다.

    • Azure Pipelines/TFS 엔드포인트: 대상을 가리키는 기존 Team Foundation Server/TFS 서비스 연결을 선택합니다. 배포 그룹에 대한 에이전트 등록에는 Visual Studio 프로젝트에 대한 액세스 권한이 필요합니다. 기존 서비스 연결이 없는 경우 지금 추가를 선택하고 만듭니다. 배포 그룹으로 범위가 제한된 PAT(개인용 액세스 토큰)를 사용하도록 구성합니다.

    • 프로젝트: 배포 그룹이 포함된 프로젝트를 지정합니다.

    • 배포 그룹: 에이전트를 등록할 배포 그룹의 이름을 지정합니다.

    • 에이전트에 Azure VM 태그 복사: 설정(틱)하면 Azure VM에 이미 구성된 모든 태그가 해당 배포 그룹 에이전트에 복사됩니다. 기본적으로 모든 Azure 태그는 형식 Key: Value을 사용하여 복사됩니다. 예들 들어 Role: Web입니다.

  5. Azure 구독, 리소스 그룹 이름 및 위치와 같은 작업에 필요한 다른 매개 변수를 제공한 다음 릴리스 파이프라인을 저장합니다.

  6. 릴리스 파이프라인에서 릴리스를 만들어 에이전트를 설치합니다.

도움말 및 지원 

  • 문제 해결 팁을 살펴보세요.
  • Stack Overflow에 대한 조언을 얻을 수 있습니다.
  • Azure DevOps 개발자 커뮤니티에서 질문을 게시하거나, 답변을 검색하거나, 기능을 제안합니다.
  • Azure DevOps에 대한 지원을 받 습니다.