Documentation

25. 작업

:term:`job`은 호스트 인벤토리에 대해 Ansible 플레이북을 시작하는 |at|의 인스턴스입니다.

작업 링크에는 작업 목록과 해당 상태가 표시되며, 상태는 완료, 실패 또는 활성(실행 중인) 작업으로 표시됩니다. 기본 보기는 작업 이름, 상태, 작업 유형 및 시작/종료 시간으로 축소(압축)되지만 확장하여 자세한 정보를 볼 수 있습니다. 이 목록을 다양한 기준에 따라 정렬하고 검색을 수행하여 관심 있는 작업을 필터링할 수 있습니다.

Jobs - home with example job

_images/jobs-list-all-expanded.png

이 화면에서 수행할 수 있는 작업에는 특정 작업의 세부 정보 및 표준 출력 보기, (launch) 작업 다시 시작하기 또는 선택한 작업 제거가 포함됩니다. 다시 시작 작업은 플레이북 실행 다시 시작에만 적용되며 프로젝트/인벤토리 업데이트, 시스템 작업, 워크플로우 작업 등에는 적용되지 않습니다.

작업이 다시 시작되면 작업이 실행될 때 작업 출력 화면이 표시됩니다. 또한 작업 유형을 누르면 해당 작업에 대한 작업 출력 보기로 이동하여 다양한 기준으로 작업을 필터링할 수 있습니다.

_images/job-details-view-filters.png
  • 표준 출력 옵션은 작업 프로세스 및 출력을 표시하는 기본 디스플레이입니다.

  • 이벤트 옵션을 사용하면 오류, 호스트 실패, 호스트 재시도, 건너뛰기된 항목 등 관심 이벤트로 필터링할 수 있습니다. 필요에 따라 이벤트를 필터에 포함할 수 있습니다.

_images/job-details-view-filters-examples.png
  • 고급 옵션은 기준을 포함하거나 제외하거나, 키로 검색하거나 조회 유형으로 조합할 수 있는 세분화된 검색입니다. 검색 사용법에 대한 자세한 내용은 검색 장을 참조하십시오.

25.1. 인벤토리 동기화 작업

인벤토리 동기화가 실행되면 전체 결과가 출력 탭에 자동으로 표시됩니다. 해당 결과는 Ansible 명령행을 통해 실행하는 경우 볼 수 있는 것과 동일한 정보이며, 디버깅에 유용할 수 있습니다. ANSIBLE_DISPLAY_ARGS_TO_STDOUT``은 기본적으로 모든 플레이북 실행에 대해 ``False``로 설정되어 있습니다. 이러한 설정은 Ansible의 기본 동작과 일치합니다. 이렇게 하면 작업 세부 정보 인터페이스의 작업 헤더에 작업 인수가 표시되지 않으므로 표준 출력에 민감한 특정 모듈 매개변수가 유출되지 않습니다.  (보안에 미치는 영향에도 불구하고) 이전 동작을 복원하려면 ``AWX_TASK_ENV 구성 설정을 통해 ``ANSIBLE_DISPLAY_ARGS_TO_STDOUT``을 ``True``로 설정할 수 있습니다. 자세한 내용은 `ANSIBLE_DISPLAY_ARGS_TO_STDOUT`_를 참조하십시오.

출력 탭의 오른쪽 상단에 있는 아이콘을 사용하여 작업을 다시 시작 (launch)하거나, 작업 출력을 다운로드하거나(download) 작업을 삭제 (delete)할 수 있습니다.

job details example of inventory sync

참고

관련 작업이 실행되는 동안 인벤토리 업데이트를 수행할 수 있습니다. 큰 프로젝트(약 10GB)가 있는 경우 ``/tmp``의 디스크 공간이 문제가 될 수 있습니다.

25.1.1. 인벤토리 동기화 세부 정보

세부 정보 탭에 액세스하여 작업 실행에 대한 세부 정보를 제공합니다.

_images/jobs-show-job-details-for-inv-sync.png

실행된 작업의 주요 세부 사항은 다음과 같습니다.

  • 상태: 다음 중 하나일 수 있습니다.

    • 보류 중 - 인벤토리 동기화가 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. 인벤토리 소스 동기화뿐만 아니라 모든 작업은 시스템에서 실제로 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. 인벤토리 소스 동기화가 준비되지 않은 이유는 현재 실행 중인 종속 항목이 있거나(다음 단계를 실행하려면 모든 종속 항목을 완료해야 함) 구성된 위치에서 실행하는 데 필요한 용량이 충분하지 않기 때문입니다.

    • 대기 중 - 인벤토리 동기화가 대기열에 있으며 실행 대기 중입니다.

    • 실행 중 - 인벤토리 동기화가 현재 진행 중입니다.

    • 성공 - 인벤토리 동기화 작업이 성공했습니다.

    • 실패 - 인벤토리 동기화 작업에 실패했습니다.

  • 인벤토리: 연결된 인벤토리 그룹의 이름입니다.

  • 소스: 클라우드 인벤토리의 유형입니다.

  • 인벤토리 프로젝트: 이 인벤토리 동기화 작업의 소스로 사용되는 프로젝트입니다.

  • 실행 환경: execution environment 사용

  • 실행 노드: 작업을 실행하는 데 사용하는 노드입니다.

  • 인스턴스 그룹: 이 작업에 사용되는 인스턴스 그룹의 이름입니다(컨트롤러는 기본 인스턴스 그룹임).

이러한 항목을 클릭하면(해당되는 경우) 해당 작업 템플릿, 프로젝트 및 기타 오브젝트를 볼 수 있습니다.

25.2. SCM 인벤토리 작업

SCM에서 소싱된 인벤토리가 실행되면 전체 결과가 출력 탭에 자동으로 표시됩니다. 해당 결과는 Ansible 명령행을 통해 실행하는 경우 볼 수 있는 것과 동일한 정보이며, 디버깅에 유용할 수 있습니다. 출력 탭의 오른쪽 상단에 있는 아이콘을 사용하여 작업을 다시 시작 (launch)하거나, 작업 출력을 다운로드하거나(download) 작업을 삭제 (delete)할 수 있습니다.

_images/jobs-show-job-results-for-scm-job.png

25.2.1. SCM 인벤토리 세부 정보

세부 정보 탭에 액세스하여 작업 실행 및 관련 프로젝트에 대한 세부 정보를 제공합니다.

_images/jobs-show-job-details-for-scm-job.png

실행된 작업의 주요 세부 사항은 다음과 같습니다.

  • 상태: 다음 중 하나일 수 있습니다.

    • 보류 중 - SCM 작업이 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. SCM 작업뿐만 아니라 모든 작업은 시스템에서 실제로 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. SCM 작업이 준비되지 않은 이유는 현재 실행 중인 종속 항목이 있거나(다음 단계를 실행하려면 모든 종속 항목을 완료해야 함) 구성된 위치에서 실행하는 데 필요한 용량이 충분하지 않기 때문입니다.

    • 대기 중 - SCM 작업이 대기열에 있으며 실행 대기 중입니다.

    • 실행 중 - SCM 작업이 현재 진행 중입니다.

    • 성공 - 마지막 SCM 작업에 성공했습니다.

    • 실패 - 마지막 SCM 작업에 실패했습니다.

  • 작업 유형: SCM 작업에 소스 제어 업데이트가 표시됩니다.

  • 프로젝트: 프로젝트의 이름입니다.

  • 프로젝트 상태: 연결된 프로젝트가 성공적으로 업데이트되었는지가 표시됩니다.

  • 수정 사항: 이 작업에서 사용된 원본 프로젝트의 수정 사항 번호를 나타냅니다.

  • 실행 환경: 이 작업을 실행하는 데 사용되는 |ee|을/를 지정합니다.

  • 실행 노드: 작업이 실행된 노드를 나타냅니다.

  • 인스턴스 그룹: 지정된 경우 작업이 실행된 인스턴스 그룹을 나타냅니다.

  • 작업 태그: 태그는 실행된 다양한 작업 실행 상태를 보여줍니다.

이러한 항목을 클릭하면(해당되는 경우) 해당 작업 템플릿, 프로젝트 및 기타 오브젝트를 볼 수 있습니다.

25.3. 플레이북 실행 작업

플레이북이 실행되면 전체 결과가 출력 탭에 자동으로 표시됩니다. 해당 결과는 Ansible 명령행을 통해 실행하는 경우 볼 수 있는 것과 동일한 정보이며, 디버깅에 유용할 수 있습니다.

_images/jobs-show-job-results-for-example-job.png

이벤트 요약에는 이 플레이북의 일부로 실행된 이벤트의 총계가 포함됩니다.

  • 이 플레이북이 Plays 필드에서 실행된 횟수

  • 작업 필드에서 이 플레이북과 관련된 작업 수

  • 호스트 필드에서 이 플레이북과 관련된 호스트 수

  • 경과 시간 필드에서 플레이북 실행을 완료하는 데 걸리는 시간

_images/jobs-events-summary.png

이벤트 요약 옆에 있는 아이콘을 사용하면 작업을 다시 시작 (launch)하거나, 작업 출력을 다운로드(download)하거나 작업을 삭제(delete)할 수 있습니다.

호스트 상태 표시줄은 출력 보기의 맨 위에서 실행됩니다. 호스트 상태 표시줄의 섹션 위로 마우스를 가져가면 해당 특정 상태와 연결된 호스트 수가 표시됩니다.

Job - All Host Events

Playbook 작업의 출력은 작업 템플릿 페이지의 작업 탭에서 작업을 시작한 후에도 액세스할 수 있습니다.

출력에서 다양한 행 항목 작업을 클릭하면 호스트 세부 정보를 볼 수 있습니다.

25.3.2. 호스트 세부 정보

호스트 세부 정보 대화 상자에는 선택한 이벤트 및 연결된 플레이와 작업의 영향을 받는 호스트에 대한 정보가 표시됩니다.

  • 호스트

  • 상태

  • 플레이 필드에서 실행 유형

  • 작업 유형

  • 해당하는 경우 작업의 Ansible 모듈 및 해당 모듈의 모든 인수

_images/job-details-host-hostevent.png

결과를 JSON 형식으로 보려면 JSON 탭을 클릭합니다. 작업 출력을 보려면 **표준 출력**을 클릭합니다. 출력에서 오류를 보려면 **표준 오류**를 클릭합니다.

25.3.3. 플레이북 실행 세부 정보

세부 정보 탭에 액세스하여 작업 실행에 대한 세부 정보를 제공합니다.

_images/jobs-show-job-details-for-example-job.png

실행된 작업의 주요 세부 사항은 다음과 같습니다.

  • 상태: 다음 중 하나일 수 있습니다.

    • 보류 중 - 플레이북 실행이 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. 플레이북 실행뿐만 아니라 모든 작업은 시스템에서 실제로 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. 플레이북 실행이 준비되지 않은 이유는 현재 실행 중인 종속 항목이 있거나(다음 단계를 실행하려면 모든 종속 항목을 완료해야 함) 구성된 위치에서 실행하는 데 필요한 용량이 충분하지 않기 때문입니다.

    • 대기 중 - 플레이북 실행이 대기열에 있으며 실행 대기 중입니다.

    • 실행 중 - 플레이북 실행이 현재 진행 중입니다.

    • 성공 - 마지막 플레이북 실행에 성공했습니다.

    • 실패 - 마지막 플레이북 실행에 실패했습니다.

  • 작업 템플릿: 이 작업이 시작된 작업 템플릿의 이름입니다.

  • 인벤토리: 이 작업을 실행하도록 선택한 대상 인벤토리입니다.

  • 프로젝트: 시작된 작업과 관련된 프로젝트의 이름입니다.

  • 프로젝트 상태: 시작된 작업과 관련된 프로젝트의 상태입니다.

  • 플레이북: 이 작업을 시작하는 데 사용되는 플레이북입니다.

  • 실행 환경: 이 작업에서 사용되는 execution environment 의 이름입니다.

  • 컨테이너 그룹: 이 작업에 사용된 컨테이너 그룹의 이름입니다.

  • 인증 정보: 이 작업에서 사용되는 인증 정보입니다.

  • 추가 변수: 작업 템플릿을 생성할 때 전달된 모든 추가 변수가 여기에 표시됩니다.

이러한 항목을 클릭하면(해당되는 경우) 해당 작업 템플릿, 프로젝트 및 기타 오브젝트를 볼 수 있습니다.

25.4. 자동화 컨트롤러 용량 결정 및 작업에 미치는 영향

이 섹션에서는 인스턴스 그룹의 용량과 해당 용량이 작업에 미치는 영향에 대해 설명합니다. 컨테이너 그룹의 경우 |ata|의 :ref:`ag_container_capacity`를 참조하십시오.

automation controller 용량 시스템은 인스턴스에 사용할 수 있는 리소스 양과 실행 중인 작업의 크기(*영향*이라고 함)를 기준으로 인스턴스에서 실행할 수 있는 작업 수를 결정합니다. 이를 결정하는 데 사용되는 알고리즘은 전적으로 다음 두 가지를 기반으로 합니다.

  • 시스템에 사용할 수 있는 메모리의 양(mem_capacity)

  • 시스템에 사용할 수 있는 CPU의 양(cpu_capacity)

용량은 인스턴스 그룹에도 영향을 미칩니다. 그룹은 인스턴스로 구성되므로 인스턴스를 여러 그룹에 할당할 수도 있습니다. 즉, 한 인스턴스에 대한 영향이 다른 그룹의 전체 용량에 잠재적으로 영향을 미칠 수 있습니다.

인스턴스 그룹(인스턴스 자체가 아님)은 다양한 수준의 작업에서 사용하도록 할당할 수 있습니다(클러스터링 참조). 작업 관리자에서 작업을 실행할 그룹을 결정하기 위해 그래프를 준비할 때 인스턴스 그룹의 용량을 아직 시작할 준비가 되지 않은 작업으로 커밋합니다.

마지막으로 더 작은 구성에서 작업을 실행할 수 있는 인스턴스가 하나만 있는 경우, 작업 관리자는 해당 작업이 인스턴스를 용량 이상으로 푸시하더라도 인스턴스에서 실행되도록 허용합니다. 이렇게 하면 시스템이 프로비저닝되지 않아 작업 자체가 중단되지 않습니다.

따라서 용량과 영향은 작업과 인스턴스/인스턴스 그룹에 대한 제로섬 시스템이 아닙니다.

분할된 작업 및 용량에 미치는 영향에 대한 자세한 내용은 :ref:`ug_job_slice_execution`을 참조하십시오.

25.4.1. 용량 알고리즘의 리소스 결정

용량 알고리즘은 시스템에서 동시에 실행할 수 있는 포크 수를 결정하기 위해 정의합니다. 이 알고리즘은 Ansible 자체에서 동시에 통신할 시스템 수를 제어합니다. 일반적으로 automation controller 시스템이 실행 중인 포크 수를 늘리면 더 많은 작업을 병렬로 수행하여 작업을 더 빠르게 실행할 수 있습니다. 단점은 이로 인해 시스템 부하가 증가하여 작업 속도가 전반적으로 느려질 수 있다는 것입니다.

|At|는 용량을 결정할 때 두 가지 모드로 작동할 수 있습니다. ``mem_capacity``(기본값)를 사용하면 시스템의 메모리 부족을 방지하면서 CPU 리소스를 오버 커밋할 수 있습니다. 대부분의 작업이 CPU 종속이 아닌 경우 이 모드를 선택하면 포크 수가 최대화됩니다.

25.4.1.1. 메모리 상대 용량

``mem_capacity``는 포크당 필요한 메모리 양을 기준으로 계산됩니다. 내부 구성 요소의 오버헤드를 고려하면 포크당 약 100MB가 됩니다. 용량 알고리즘에서는 Ansible 작업에 사용할 수 있는 메모리의 양을 검토할 때 다른 서비스의 존재를 고려하여 2GB의 메모리를 예약합니다. 이에 대한 알고리즘 공식은 다음과 같습니다.

(mem - 2048) / mem_per_fork

예를 들면 다음과 같습니다.

(4096 - 2048) / 100 == ~20

따라서 메모리가 4GB인 시스템은 20개의 포크를 실행할 수 있습니다. 값 ``mem_per_fork``는 설정 값(또는 환경 변수) ``SYSTEM_TASK_FORKS_MEM``을 설정하여 제어할 수 있으며, 기본값은 100입니다.

25.4.1.2. CPU 상대 용량

Ansible 워크로드는 상당히 CPU 종속적인 경우가 많습니다. 이러한 경우 동시 워크로드를 줄이면 더 많은 작업을 더 빠르게 실행하고 해당 작업의 평균 완료 시간을 줄일 수 있습니다.

mem_capacity 알고리즘이 포크당 필요한 메모리 양을 사용하는 것처럼 cpu_capacity 알고리즘은 포크당 필요한 CPU 리소스의 양을 확인합니다. 기준 값은 코어당 포크 4개입니다. 이에 대한 알고리즘 공식은 다음과 같습니다.

cpus * fork_per_cpu

예를 들어 4코어 시스템은 다음과 같습니다.

4 * 4 == 16

``fork_per_cpu``는 설정 값(또는 환경 변수) ``SYSTEM_TASK_FORKS_CPU``를 설정하여 제어할 수 있으며, 기본값은 4입니다.

25.4.2. 작업이 용량에 미치는 영향

용량을 선택할 때는 각 작업 유형이 용량에 미치는 영향을 이해하는 것이 중요합니다.

그러면 https://www.ansible.com/blog/ansible-performance-tuning에서 포크가 Ansible에 의미하는 바를 이해하는 데 도움이 됩니다(《포크 알아보기》 섹션 참조).

Ansible의 기본 포크 값은 5입니다. 그러나 |at|에서 그보다 적은 수의 시스템에 대해 실행 중임을 확인하는 경우 실제 동시성 값은 더 낮아집니다.

작업이 실행되면 |at|에서 Ansible 상위 프로세스를 보완하기 위해 선택된 포크 수에 1을 추가합니다. 따라서 포크 값이 5인 시스템 5개에 대해 플레이북을 실행하는 경우, 작업이 미치는 영향의 관점에서의 실제 포크 값은 6이 됩니다.

25.4.2.1. 자동화 컨트롤러에서 작업 유형이 미치는 영향

jobs 및 임시 작업은 위 모델인 포크 수 + 1을 따릅니다. 작업 템플릿에 포크 값을 설정하면 작업 용량 값은 제공한 포크 값의 최솟값과 보유한 호스트 수에 1을 더한 값이 됩니다. 추가된 하나는 상위 Ansible 프로세스를 고려한 것입니다.

인스턴스 용량에 따라 특정 인스턴스에 할당되는 작업이 결정됩니다. 작업 및 임시 명령은 해당 포크 값이 높을수록 용량을 더 많이 사용합니다.

기타 작업 유형의 영향은 다음과 같이 정해져 있습니다.

  • 인벤토리 업데이트: 1

  • 프로젝트 업데이트: 1

  • 시스템 작업: 5

작업 템플릿에 포크 값을 설정하지 않으면 작업에서 Ansible의 기본 포크 값인 5를 사용합니다. Ansible은 기본적으로 포크 5개로 기본 설정되지만 작업의 호스트가 5개 미만인 경우 더 적게 사용됩니다. 일반적으로 포크 값을 시스템에서 사용할 수 있는 것보다 높게 설정하면 메모리가 부족하거나 CPU를 오버 커밋하여 문제가 발생할 수 있습니다. 따라서 사용하는 작업 템플릿 포크 값이 시스템에 적합해야 합니다. 포크를 1000개 사용하는 플레이북이 있지만 개별적으로 이렇게 많은 용량이 있는 시스템이 없는 경우, 시스템 크기가 부족하여 성능 또는 리소스 문제가 발생할 위험이 있습니다.

25.4.2.2. 적절한 용량 선택

CPU 종속 또는 메모리 종속 용량 제한 중에서 용량을 선택하는 일은 본질적으로 최소 또는 최대 포크 수 중에서 선택하는 것과 같습니다. 위 예에서 CPU 용량은 최대 16개의 포크를 허용하는 반면 메모리 용량은 20개를 허용합니다. 일부 시스템의 경우 이러한 용량 차이가 클 수 있으며 종종 이 둘 사이의 균형을 유지해야 할 수도 있습니다.

인스턴스 필드 ``capacity_adjustment``를 사용하면 어느 쪽의 용량을 고려할지 선택할 수 있습니다. 이 필드는 0.0에서 1.0 사이의 값으로 표시됩니다. 값을 1.0으로 설정하면 가장 큰 값이 사용됩니다. 위 예제에서는 메모리 용량을 사용하므로 포크 값 20개가 선택됩니다. 값을 0.0으로 설정하면 가장 작은 값이 사용됩니다. 값 0.5는 두 알고리즘을 50/50 비율로 적용하여 18개가 됩니다.

16 + (20 - 16) * 0.5 == 18

사용자 인터페이스에서 용량을 보거나 편집하려면 인스턴스 그룹의 인스턴스 탭을 선택합니다.

_images/instance-group-instances-capacity-callouts.png

25.5. 작업 분기 덮어쓰기

프로젝트는 scm_branch 필드의 소스 제어에서 사용할 분기, 태그 또는 참조를 지정합니다. 해당 항목은 표시된 것처럼 프로젝트 세부 정보 필드에 지정된 값으로 표시됩니다.

_images/projects-create-scm-project-branching-emphasized.png

프로젝트에는 ‘분기 덮어쓰기 허용’ 옵션이 있습니다. 이를 선택하면 프로젝트 관리자가 분기 선택을 해당 프로젝트를 사용하는 작업 템플릿에 위임할 수 있습니다(use_role 프로젝트만 필요).

_images/projects-create-scm-project-branch-override-checked.png

25.5.1. 소스 트리 복사 동작

모든 작업 실행에는 자체 개인 데이터 디렉터리가 있습니다. 이 디렉터리에는 작업이 실행되고 있는 지정된 ``scm_branch``의 프로젝트 소스 트리 사본이 포함되어 있습니다. 작업에서는 프로젝트 폴더를 변경하고 실행이 계속되는 동안 이러한 변경 사항을 활용할 수 있습니다. 이 폴더는 임시이며 작업 실행이 끝날 때 정리됩니다.

**정리**를 선택하면 |at|에서 git 또는 Subversion`_과 관련된 각 Ansible 모듈에서 ``force` 매개변수를 사용하여 리포지터리의 로컬 사본에 있는 수정된 파일을 삭제합니다.

_images/projects-create-scm-project-clean-checked.png

25.5.2. 프로젝트 버전 동작

일반적으로 프로젝트를 업데이트하는 동안 기본 분기의 버전(프로젝트의 SCM 분기 필드에 지정되어 있음)이 업데이트되면 해당 버전이 저장되고 해당 프로젝트를 사용하는 작업에 이 버전이 사용됩니다. 작업에 기본이 아닌 SCM 분기 (커밋 해시 또는 태그가 아님)를 제공하면 작업이 시작되기 직전 소스 제어 원격에서 최신 버전을 가져옵니다. 이 버전은 작업의 소스 컨트롤 버전 및 각각의 해당 프로젝트 업데이트에 표시됩니다.

_images/jobs-output-branch-override-example.png

결과적으로 기본이 아닌 분기에는 오프라인 작업을 실행할 수 없습니다. 작업이 소스 제어에서 정적 버전을 실행 중인지 확인하려면 태그 또는 커밋 해시를 사용합니다. 프로젝트 업데이트에서는모든 분기의 버전을 저장하지 않고 프로젝트 기본 분기만 저장합니다.

SCM 분기 필드가 검증되지 않았으므로 유효성 확인을 위해 프로젝트를 업데이트해야 합니다. 이 필드가 제공되거나 메시지가 표시되면 작업 템플릿의 플레이북 필드가 검증되지 않으며 필요한 플레이북이 있는지 확인하려면 작업 템플릿을 시작해야 합니다.

25.5.3. Git 참조 사양

SCM 참조 사양 필드는 업데이트 중 원격에서 다운로드해야 하는 추가 참조를 지정합니다. 예를 들면 다음과 같습니다.

  1. refs/*:refs/remotes/origin/*: 원격의 원격을 포함하여 모든 참조를 가져옵니다.

  2. ``refs/pull/*:refs/remotes/origin/pull/*``(GitHub 관련): 모든 가져오기 요청에 대해 모든 참조를 가져옵니다.

  3. refs/pull/62/head:refs/remotes/origin/pull/62/head: 하나의 GitHub 가져오기 요청에 대한 참조를 가져옵니다.

대규모 프로젝트의 경우 첫 번째 또는 두 번째 예제를 사용할 때 성능에 미치는 영향을 고려해야 합니다.

SCM 참조 사양 매개변수는 프로젝트 분기의 가용성에 영향을 미치며, 이 매개변수가 없으면 사용할 수 없는 참조에 대한 액세스를 허용할 수 있습니다. 위 예제에서는 사용자가 SCM 분기**에서 가져오기 요청을 제공할 수 있도록 허용하는데, **SCM 참조 사양 필드 없이는 수행할 수 없습니다.

Ansible Git 모듈은 기본적으로 refs/heads/*``를 가져옵니다. 즉, **SCM 참조 사양**이 비어 있는 경우 프로젝트의 분기 태그(그 안의 커밋 해시 포함)를 SCM 분기로 사용할 있습니다. **SCM 참조 사양** 필드에 지정된 값은 덮어쓰기로 사용할 있는 *SCM 분기** 필드에 영향을 미칩니다. 프로젝트 업데이트(모든 유형)는 추가 ``git fetch 명령을 수행하여 원격에서 해당 참조 사양을 가져옵니다.

예: 첫 번째 또는 두 번째 참조 사양 예에서 분기 덮어쓰기를 허용하는 프로젝트를 설정할 수 있습니다. –> **SCM 분기**를 묻는 작업 템플릿에 이 프로젝트를 사용합니다. –> 새 가져오기 요청이 생성되면 클라이언트가 작업 템플릿을 시작하여 분기 ``pull/N/head``를 제공할 수 있습니다. –> 작업 템플릿이 제공된 GitHub 가져오기 요청 참조에 대해 실행됩니다.

Ansible Git 모듈에 대한 자세한 내용은 https://docs.ansible.com/ansible/latest/modules/git_module.html을 참조하십시오.