자동화 실행 API 개요


Red Hat Ansible Automation Platform 2.6

자동화 컨트롤러 API에 대한 개발자 개요

Red Hat Customer Content Services

초록

자동화 컨트롤러 API 개요를 살펴보고 간소화된 자동화 솔루션을 살펴보고 개발자와 관리자가 효율적인 인프라 관리 기능을 제공합니다.

머리말

Red Hat Ansible Automation Platform에 관심을 가져 주셔서 감사합니다. Ansible Automation Platform은 Ansible 기반 환경에 제어, 지식 및 위임을 추가하여 팀이 복잡한 다중 계층 배포를 관리하는 데 도움이 됩니다.

자동화 컨트롤러 API 개요는 자동화 컨트롤러 API를 이해하는 데 중점을 둡니다.

Red Hat 문서에 관한 피드백 제공

이 문서를 개선하기 위한 제안이 있거나 오류를 찾을 수 있는 경우 https://access.redhat.com 에서 기술 지원에 문의하여 요청을 열 수 있습니다.

1장. API를 사용하는 사용 가능한 툴

REST(Representational State Transfer)는 상태 비저장, 클라이언트-서버 및 캐시 가능한 통신 프로토콜(일반적으로 HTTP 프로토콜)을 사용합니다.

사용자 인터페이스에서 순서대로 생성하는 API 호출을 확인하는 것이 유용할 수 있습니다. 이를 위해 개발자 플러그인과 함께 Firebug 또는 Chrome의 UI를 사용할 수 있습니다.

또 다른 옵션은 Charles 프록시 를 사용하는 것입니다. 이는 도움이 될 수 있는 시각화 프로그램을 제공합니다. 상용 소프트웨어이지만 운영 체제 X 프록시로 자신을 삽입하고 웹 브라우저, curl 및 기타 API 소비자의 두 요청을 가로챌 수 있습니다.

추가 옵션은 다음과 같습니다.

2장. API로 검색

REST API는 URI 경로를 통해 리소스(데이터 엔티티)에 액세스할 수 있습니다.

웹 브라우저를 사용하여 자동화 컨트롤러 REST API에 액세스하고 사용하는 방법을 알아봅니다. 권장되는 현재 버전(v2)을 찾고 엔드포인트에 대한 문서를 보고 JSON 형식으로 GET, PUT 및 POST 메서드를 사용하는 방법을 알아봅니다.

프로세스

  1. 웹 브라우저의 자동화 컨트롤러 REST API로 이동합니다.

    https:///api/controller/v2

  2. "최신 버전" 또는 " 사용 가능한 버전" 옆에 있는 " v2" 링크를 클릭합니다. 자동화 컨트롤러는 API 버전 2를 지원합니다.
  3. /api/ 엔드포인트만 있는 GET 을 수행하여 권장 버전인 current_version 을 가져옵니다.
  4. 탐색 메뉴에서 Copy 아이콘을 클릭합니다. 특정 API 끝점에 대한 액세스 방법 및 해당 방법을 사용할 때 반환되는 데이터에 대한 설명서는 다음과 같습니다.
  5. 다양한 텍스트 필드에서 JSON을 포맷하여 특정 API 페이지에서 PUTPOST 동사를 사용합니다.

    참고

    /api/gateway/v1/settings/ endpoint의 팩토리 기본값에서 변경된 설정을 볼 수도 있습니다. 정적 설정 파일에서 제공되는 변경된 설정이 아닌, API 브라우저에서 수행한 변경 사항이 반영됩니다.

3장. API의 규칙 사용

API는 호환성을 위해 버전이 지정되었습니다. /api/ 를 쿼리하여 사용할 수 있는 API 버전을 확인할 수 있습니다.

POST 또는 PUT 요청에 콘텐츠 또는 유형을 지정해야 할 수 있습니다.

  • PUT: 특정 리소스(ID별) 또는 리소스 컬렉션을 업데이트합니다. 리소스 ID를 미리 알고 있는 경우 PUT 을 사용하여 특정 리소스를 생성할 수도 있습니다.
  • POST: 새 리소스를 생성합니다. 또한 다른 카테고리에 맞지 않는 작업에 대해 다양한 동사 역할을 합니다.

"/"로 끝나지 않는 모든 URI는 301 리디렉션을 수신합니다.

참고

작업 템플릿 레코드에 연결된 extra_vars 의 포맷은 유지됩니다. YAML은 포맷과 주석이 보존된 YAML로 반환되고 JSON은 JSON으로 반환됩니다.

4장. API의 정렬

따라하기 쉬운 예제를 제공하기 위해 이 가이드 전체에서 다음 URL을 사용합니다.

https://<gateway server name>/api/controller/v2/groups/
Copy to Clipboard Toggle word wrap

GET 요청에서 order_by 쿼리 매개변수를 사용하여 반환된 {{model_verbose_name_plural}}을 하나 이상의 필드로 정렬하는 방법을 비롯하여 앞에 대시(-)를 사용하여 역방향 순서를 지정하는 방법을 알아봅니다.

프로세스

  • {{ model_verbose_name_plural }}이 특정 순서로 반환되도록 지정하려면 GET 요청에서 order_by 쿼리 문자열 매개변수를 사용합니다.

    https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by={{ order_field }}
    Copy to Clipboard Toggle word wrap
    • 필드 이름 앞에 대시(-)를 접두사로 지정하여 역방향으로 정렬합니다.

      https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by=-{{ order_field }}
      Copy to Clipboard Toggle word wrap
    • 필드 이름을 쉼표(,)로 구분하여 정렬 필드를 지정할 수 있습니다.

      https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by={{ order_field }},some_other_field
      Copy to Clipboard Toggle word wrap

6장. API에서 필터링

시스템은 컬렉션을 "쿼리 세트"로 인식합니다. 다양한 연산자를 사용하여 필터링할 수 있습니다.

REST API URL 내에서 쿼리 매개변수를 사용하여 정확한 일치, 부분 문자열 포함(__contains), 정수 캐스팅(__int) 및 많은 필드와 같은 기준에 따라 리소스를 필터링하는 방법을 알아봅니다.

프로세스

  • "foo"라는 이름이 포함된 그룹을 찾으려면 다음을 사용합니다.

    http://<gateway server name>/api/controller/v2/groups/?name__contains=foo
    Copy to Clipboard Toggle word wrap
  • 정확한 일치 항목을 찾으려면 다음을 사용합니다.

    http://<gateway server name>/api/controller/v2/groups/?name=foo
    Copy to Clipboard Toggle word wrap
  • 리소스가 정수 유형인 경우 문자열 입력 값을 정수로 캐스팅하려면 \_\_int 를 끝에 추가해야 합니다.

    http://<gateway server name>/api/controller/v2/arbitrary_resource/?x__int=5
    Copy to Clipboard Toggle word wrap
  • 다음을 사용하여 관련 리소스를 쿼리할 수 있습니다.

    http://<gateway server name>/api/gateway/v1/users/?first_name__icontains=kim
    Copy to Clipboard Toggle word wrap

    이렇게 하면 "kim" 문자열이 포함된 이름이 있는 모든 사용자가 반환됩니다.

  • 한 번에 여러 필드에 대해 필터링할 수도 있습니다.

    http://<gateway server name>/api/controller/v2/groups/?name__icontains=test&has_active_failures=false
    Copy to Clipboard Toggle word wrap

    그러면 활성 오류가 없는 "test"가 포함된 모든 그룹이 검색됩니다.

    또한 UI가 사용되는 동안 API에서 다양한 기준으로 필터링하는 방법을 확인할 수 있습니다.

추가 리소스

6.1. API의 고급 쿼리

지정된 값과 일치하는 항목으로 반환된 결과 목록을 필터링하는 데 사용되는 추가 쿼리 문자열 매개변수를 사용할 수 있습니다. 필터링을 위해 데이터베이스에 존재하는 필드 및 관계만 사용할 수 있습니다.

지정된 값의 특수 문자가 URL로 인코딩되었는지 확인합니다. 예를 들면 다음과 같습니다.

?field=value%20xyz
Copy to Clipboard Toggle word wrap

필드는 데이터베이스에 정의된 필드 및 관계에 대해서만 관계를 확장할 수도 있습니다.

?other__field=value
Copy to Clipboard Toggle word wrap

특정 기준과 일치하는 결과를 제외하려면 field 매개변수 앞에 not__: 접두사를 지정합니다.

?not__field=value
Copy to Clipboard Toggle word wrap

기본적으로 모든 쿼리 문자열 필터는 AND로 연결되므로 모든 필터와 일치하는 결과만 반환됩니다. 여러 조건 중 하나와 일치하는 결과를 결합하려면 각 쿼리 문자열 매개변수 앞에 or__ 를 붙입니다.

?or__field=value&or__field=othervalue
?or__not__field=value&or__field=othervalue
Copy to Clipboard Toggle word wrap

기본 AND 필터링에서는 여러 데이터베이스 관계에 걸쳐 필터링되는 각 관련 오브젝트에 모든 필터를 동시에 적용합니다. 반면 체인 필터는 각 관련 오브젝트에 필터를 개별적으로 적용합니다. 이를 사용하려면 query 문자열 매개변수 앞에 chain__: 접두사를 붙입니다.

?chain__related__field=value&chain__related__field2=othervalue
?chain__not__related__field=value&chain__related__field2=othervalue
Copy to Clipboard Toggle word wrap

첫 번째 쿼리를 ? 관련field=value&relatedfield2=othervalue 로 작성하는 경우 관련 개체가 두 조건을 모두 충족하는 기본 오브젝트만 반환합니다. 체인 필터를 사용하여 작성된 대로 각 조건과 일치하는 기본 오브젝트의 교집합을 반환합니다.

6.2. 필드 조회

필드 조회를 사용하면 특정 기준에 따라 API 결과를 필터링할 수 있습니다. 필드 이름에 조회를 추가하여 고급 쿼리에 필드 조회를 사용할 수 있습니다.

?field__lookup=value
Copy to Clipboard Toggle word wrap

다음과 같은 필드 조회가 지원됩니다.

  • 정확한: Exact match(지정되지 않은 경우 기본 조회)을 참조하십시오. 자세한 내용은 다음 참고 사항을 참조하십시오.
  • iexact: 대소문자를 구분하지 않는 버전입니다.
  • contains: 필드에 값이 포함되어 있습니다.
  • icontains: 대소문자를 구분하지 않는 버전이 포함되어 있습니다.
  • startswith: 필드로 시작합니다.
  • istartswith: startwith의 대소문자를 구분하지 않는 버전입니다.
  • endwith: 필드가 값으로 끝납니다.
  • iendswith: endwith의 대소문자를 구분하지 않는 버전입니다.
  • regex: 지정된 정규식과 일치합니다.
  • iregex: 대소문자를 구분하지 않는 정규식 버전입니다.
  • gt: 비교 값보다 큽니다.
  • GTE: 비교 값보다 크거나 같습니다.
  • lt: 비교 값보다 적습니다.
  • IKEv: 비교 값보다 적거나 같습니다.
  • IsNull: 지정된 필드 또는 관련 개체가 null인지 여부를 확인합니다. 부울 값이 필요합니다.
  • in: 지정된 필드의 값이 제공된 목록에 있는지 확인합니다. 항목 목록이 있어야 합니다.
  • true인 경우 부울 값을 True 또는 1 로, false의 경우 False 또는 0 으로 지정할 수 있습니다(둘 다 대소문자를 구분하지 않음).

예를 들어 ?created__gte=2023-01-01 은 1/1/2023 이후에 생성된 항목 목록을 제공합니다.

null 값을 None 또는 Null (둘 다 대소문자를 구분하지 않음)으로 지정할 수 있지만 isnull 조회를 사용하여 null 값을 명시적으로 확인하는 것이 좋습니다.

목록을 쉼표로 구분된 값 목록으로 지정할 수 있습니다. 쿼리 문자열 매개변수를 통해 요청하는 사용자의 액세스 수준을 기준으로 필터링합니다.

  • role_level: 필터링할 역할의 수준 (예: admin_role)
참고

이전 릴리스의 Ansible Automation Platform은 기본적으로 _exact 결과가 포함된 쿼리를 반환했습니다. 이 문제를 해결하려면 기본 필터에 대한 제한을 ?limit_exact 로 설정합니다. 예를 들어 /api/controller/v2/jobs/?limit_exact=example.domain.com 은 다음과 같습니다.

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
...
Copy to Clipboard Toggle word wrap

7장. API에서 페이지 번호 사용

API는 컬렉션에 대한 응답을 페이지 매깁니다. 즉, 컬렉션에 수십 또는 수십만 개의 오브젝트가 포함될 수 있지만 각 웹 요청에는 API 성능상의 이유로 제한된 수의 결과만 반환됩니다.

컬렉션에 대한 결과가 표시되면 다음과 유사한 내용이 표시됩니다.

{'count': 25, 'next': 'http://testserver/api/controller/v2/some_resource?page=2', 'previous': None, 'results': [ ... ] }
Copy to Clipboard Toggle word wrap

프로세스

  1. "다음" 순차 URL에서 제공한 페이지를 요청하여 다음 페이지로 이동합니다.
  2. page_size=XX 쿼리 문자열 매개변수를 사용하여 각 요청에 대해 반환된 결과 수를 변경합니다.

    • page_size 의 기본 최대 제한은 200이며, 사용자가 값을 시도할 때 적용됩니다(예: ?page_size=1000 ). 그러나 /etc/tower/conf.d/<some file>.py 의 값을 더 높은 값으로 설정하여 이 제한을 변경할 수 있습니다. 예를 들어 MAX_PAGE_SIZE=1000 입니다.
  3. 페이지 쿼리 문자열 매개변수를 사용하여 특정 결과 페이지를 검색합니다.

    http://<gateway server name>/api/controller/v2/model_verbose_name?page_size=100&page=2
    Copy to Clipboard Toggle word wrap
    참고

    결과와 함께 반환된 앞의 링크에서는 이러한 쿼리 문자열 매개변수를 자동으로 설정합니다.

    200보다 큰 페이지 크기를 요청하지 마십시오.

    사용자 인터페이스는 스크롤을 피하기 위해 더 작은 값을 사용합니다.

8장. 액세스 리소스

자동화 컨트롤러는 기본 키를 사용하여 개별 리소스 오브젝트에 액세스합니다. 이름이 지정된 URL 기능을 통해 리소스별, 사람이 읽을 수 있는 식별자를 사용하여 자동화 컨트롤러 리소스에 액세스할 수 있습니다.

다음 예제에서는 보조 쿼리 문자열 없이 리소스 오브젝트에 액세스할 수 있는 이름이 지정된 URL 경로를 보여줍니다.

/api/controller/v2/hosts/host_name++inv_name++org_name/
Copy to Clipboard Toggle word wrap

8.1. 구성 설정

/api/controller/v2/settings/named-url/: NAMED_URL_FORMATSNAMED_URL_GRAPH_NODES 에서 사용할 수 있는 이름이 지정된 URL 관련 구성 설정은 두 가지가 있습니다.

NAMED_URL_FORMATS 는 이름이 지정된 모든 URL 식별자 형식의 읽기 전용 키-값 쌍 목록입니다. 다음은 NAMED_URL_FORMATS 예제를 보여줍니다.

"NAMED_URL_FORMATS": {
"organizations": "<name>",
"teams": "<name>++<organization.name>",
"credential_types": "<name>+<kind>",
"credentials": "<name>++<credential_type.name>+<credential_type.kind>++<organization.name>",
"notification_templates": "<name>++<organization.name>",
"job_templates": "<name>++<organization.name>",
"projects": "<name>++<organization.name>",
"inventories": "<name>++<organization.name>",
"hosts": "<name>++<inventory.name>++<organization.name>",
"groups": "<name>++<inventory.name>++<organization.name>",
"inventory_sources": "<name>++<inventory.name>++<organization.name>",
"inventory_scripts": "<name>++<organization.name>",
"instance_groups": "<name>",
"labels": "<name>++<organization.name>",
"workflow_job_templates": "<name>++<organization.name>",
"workflow_job_template_nodes": "<identifier>++<workflow_job_template.name>++<organization.name>",
"applications": "<name>++<organization.name>",
"users": "<username>",
"instances": "<hostname>"
}
Copy to Clipboard Toggle word wrap

NAMED_URL_FORMATS 의 각 항목에 대해 키는 이름이 URL인 리소스의 API 이름입니다. 값은 해당 리소스에 대해 사람이 읽을 수 있는 고유 ID를 형성하는 방법을 나타내는 문자열입니다. NAMED_URL_FORMATS 는 이름이 지정된 URL을 포함할 수 있는 리소스만 나열합니다. 여기에 나열되지 않은 리소스에는 이름이 지정된 URL이 없습니다. 리소스에 이름이 지정된 URL이 있을 수 있는 경우 해당 오브젝트에 오브젝트별 이름이 지정된 URL을 나타내는 named_url 필드가 있어야 합니다. 해당 필드는 목록 보기가 아닌 세부 정보 보기에만 표시됩니다. 정확히 생성된 이름이 지정된 URL을 사용하여 지정된 리소스 오브젝트에 액세스할 수 있습니다. 개체 및 관련 URL입니다. 예를 들어 /api/controller/v2/res_name/obj_slug/ 가 유효한 경우 /api/controller/v2/res_name/obj_slug/related_res_name/ 도 유효합니다.

NAMED_URL_FORMATS 는 사람이 읽을 수 있는 고유 식별자와 이름이 지정된 URL을 직접 구성할 수 있을 만큼 권한을 부여합니다. 사용하기 쉽도록 이름이 지정된 URL을 포함할 수 있는 리소스의 모든 오브젝트에는 해당 오브젝트의 이름이 지정된 URL을 표시하는 관련 필드인_url 이 있습니다. 사용자 정의 용도로 해당 필드를 복사하여 붙여넣을 수 있습니다. 자세한 내용은 리소스 오브젝트에 이름이 지정된 URL이 있는 경우 API 브라우저의 도움말 텍스트를 참조하십시오.

이름이 지정된 URL 레이블을 수동으로 결정할 수 있습니다(예: ID 5). NAMED_URL_FORMATS 를 사용하여 이 특정 리소스 오브젝트에 대해 이름이 지정된 URL을 작성하려면 먼저 NAMED_URL_FORMATS 의 labels 필드를 찾아 ID 형식 <name> ++<organization.name>을 가져옵니다.

  • URL 형식의 첫 번째 부분은 < name >으로, /api/controller/v2/labels/5/ 에서 레이블 리소스 세부 정보를 찾고 반환된 JSON에서 name 필드를 찾을 수 있음을 나타냅니다. 값이 Foo이름 필드가 있는 경우 고유 식별자의 첫 번째 부분은 Foo 입니다.
  • 형식의 두 번째 부분은 이중 더하기 기호 ++입니다. 이 기호는 고유 ID의 다양한 부분을 구분합니다. Foo++ 을 가져오려면 고유 식별자에 추가합니다.
  • 형식의 세 번째 부분은 < organization.name >이며, 이는 해당 필드가 조사 중인 현재 레이블 오브젝트에 있지 않고 레이블 오브젝트가 가리키는 조직에 있음을 나타냅니다. 형식이 표시되면 현재 반환된 JSON의 관련 필드에서 조직을 찾습니다. 해당 필드가 존재하지 않을 수 있습니다. 존재하는 경우 해당 필드에 지정된 URL(예: /api/gateway/v1/organizations/3/ )을 따라 특정 조직의 세부 정보를 가져오고, 이름 필드를 추출한 다음 현재 고유 식별자에 추가합니다. < organizations.name >은 형식의 마지막 부분이므로 /api/controller/v2/labels/Foo++Default/ 라는 이름이 지정된 URL을 생성합니다.

    레이블 오브젝트 세부 정보의 관련 필드에 조직이 없는 경우 대신 빈 문자열을 추가합니다. 현재 식별자는 변경하지 않습니다. 따라서 Foo++ 은 최종 고유 식별자가 되고 이름이 지정된 결과 URL은 /api/controller/v2/labels/Foo++/ 가 됩니다.

이름이 지정된 URL에 대한 고유 ID를 생성하는 작업의 중요한 측면은 예약된 문자와 관련이 있습니다. ID가 URL의 일부이므로 URL 표준에 따라 예약된 문자는 백분율 기호로 인코딩됩니다. ;/?@=&[]. 예를 들어 조직 이름이 ;/?:@=&[] 인 경우 고유 식별자는 %3B%3F%3F%3F%3D%5B%5D 여야 합니다. 또 다른 특수 예약 문자는 + 이며 URL 표준에 의해 예약되지는 않지만 이름이 지정된 URL에서 식별자의 다른 부분을 연결하는 데 사용됩니다. [암호]로 인코딩됩니다. 예를 들어 조직 이름이 [ Cryostat )인 경우 고유 식별자는 %5B[#159%5D )입니다. 여기서 original [] 은 백분율로 인코딩되고 + 는 []로 변환됩니다.

NAMED_URL_FORMATS 를 수동으로 변경할 수는 없지만 기본 리소스 수정 및 확장을 반영하여 수정 사항이 자동으로 발생하고 시간이 지남에 따라 확장됩니다. 이름이 지정된 URL 기능을 사용하려는 동일한 클러스터에서 NAMED_URL_FORMATS 를 참조하십시오.

NAMED_URL_GRAPH_NODES 는 이름이 지정된 URL을 관리하는 데 사용되는 내부 그래프 데이터 구조를 노출하는 키-값 쌍의 읽기 전용 목록입니다. 이는 사람이 읽을 수 있는 것은 아니지만 이름이 지정된 URL을 프로그래밍 방식으로 생성하는 데 사용해야 합니다. NAMED_URL_GRAPH_NODES 에서 제공하는 정보를 사용하여 이름이 지정된 URL의 기본 키를 기반으로 이름이 지정된 URL을 생성하는 스크립트의 예는 GitHub 에서 찾을 수 있습니다.

8.2. ID 형식 프로토콜

자동화 컨트롤러는 일관된 프로토콜을 사용하여 API 및 웹 인터페이스에서 이름으로 처리할 수 있는 리소스에 대해 사람이 읽을 수 있는 고유 ID를 생성합니다.

리소스는 리소스 필드의 튜플인 고유 키로 식별할 수 있습니다. 모든 리소스에는 기본 키 번호만 고유 키로 사용할 수 있지만 다른 고유 키가 많이 있을 수 있습니다. 리소스는 ID 형식을 생성할 수 있으므로 다음 규칙을 충족하는 고유 키가 하나 이상 있는 경우 이름이 지정된 URL이 있습니다.

  1. 키에는 이름 필드인 필드만 포함되거나 가능한 선택 항목이 제한된 텍스트 필드(예: 인증 정보 유형 리소스의 kind 필드)만 포함되어야 합니다.
  2. 이전 규칙을 위반하는 유일한 허용 예외 필드는 자체 이외의 리소스와 관련된 다대일 관련 필드이며 슬러그도 사용할 수 있습니다.

FooBar 리소스가 있는 경우 FooBar 에는 "yes" 또는 "no" 값만 가질 수 있는 이름 필드와 선택 필드가 모두 포함되어 있습니다. 또한 리소스 Foo 에는 Bar 와 관련된 다대일 필드(예: fk )가 있습니다. foo 에는 고유한 키 튜플(이름,선택 사항,fk)이 있으며 Bar 에는 고유한 키 튜플(이름,선택)이 있습니다. bar 는 이전 첫 번째 규칙을 충족하기 때문에 이름이 지정된 URL을 포함할 수 있습니다. foo 는 첫 번째 규칙을 위반하더라도 이름이 지정된 URL을 포함할 수도 있습니다. 규칙 번호 1을 위반하는 추가 필드는 Bar 와 Bar와 관련된 many-to-one 필드이며, Bar 는 이름이 지정된 URL을 포함할 수 있습니다.

규칙 번호 1을 충족하는 리소스의 경우 사람이 읽을 수 있는 고유 식별자는 외래 키 필드의 조합이며, + 로 구분됩니다. 구체적으로 위 예제의 리소스 표시줄에는 슬러그 형식 < name>+<choice>가 있습니다.

필드 순서는 슬러그 형식에서 중요하며 이름 필드는 항상 있는 경우 먼저 오고 나머지 필드가 필드 이름의 사전순으로 정렬되어 있습니다. 예를 들어, Bar 에도 규칙 1을 충족하는 a_choice 필드가 있고 고유 키가 있는 경우 (이름 , 선택 , a_choice ) 이면 슬러그 형식은 <name >< a_choice><choice >가 됩니다.

규칙 번호 2를 충족하는 리소스의 경우 추가 외래 키 필드를 역추적하면 결과는 해당 리소스의 오브젝트를 식별하는 리소스 트리입니다. ID 형식을 생성하기 위해 역추적 트리의 각 리소스는 외래 키를 제외한 모든 필드를 사용하여 독립 실행형 형식의 자체 부분을 생성합니다. 마지막으로 모든 부분은 다음과 같은 순서로 ++ 로 결합됩니다.

  • 첫 번째 식별자 부분으로 독립 실행형 형식을 배치합니다.
  • 각 리소스에 대한 고유 ID를 재귀적으로 생성합니다. 기본 리소스는 외래 키(역추적 트리의 자식 노드) 사용을 나타냅니다.
  • 생성된 고유 ID를 나머지 ID 구성 요소로 취급합니다. 이러한 ID는 해당 외래 키의 사전순으로 정렬합니다.
  • ++ 를 사용하여 모든 구성 요소를 결합하여 최종 ID 형식을 생성합니다.

리소스 Foo 에 대한 식별자 형식을 생성할 때 자동화 컨트롤러는 Foo 및 <fk.name>+<fk. name>+< fk.choice >의 경우 독립형 형식 <name><choice >+<fk. name>+<fk.choice>+<fk.choice >로 결합합니다.

지정된 식별자 형식에 따라 식별자를 생성할 때 외래 키가 위치를 가리키지 않을 수 있는 경우가 있습니다. 이 경우 자동화 컨트롤러는 외래 키가 가리켜야 하는 리소스에 해당하는 형식의 부분을 빈 문자열로 대체합니다. 예를 들어 Foo 오브젝트에 name ="alice", choice ="yes" 가 있지만 fk 필드 = None 이 있는 경우 결과 식별자는 alice+yes++ 입니다.

9장. 읽기 전용 필드

REST API의 특정 필드는 읽기 전용으로 표시됩니다.

여기에는 일반적으로 리소스의 URL, ID 그리고 경우에 따라 일부 내부 필드가 포함됩니다. 예를 들어 각 오브젝트의 'created\_by' 속성은 리소스를 생성한 사용자를 나타내며 편집할 수 없습니다. 일부 값을 게시하고 변경되지 않는 경우 이러한 필드는 읽기 전용일 수 있습니다.

10장. API에서 인증

자동화 컨트롤러는 조직이 즉시 제어할 수 있는 시각적 대시보드를 사용하여 자동화를 중앙 집중화하고 제어하는 동시에 보다 심층적인 수준에서 다른 툴과 통합할 수 있는 REST API를 제공하도록 설계되었습니다.

자동화 컨트롤러는 여러 인증 방법을 지원하여 기존 툴 및 프로세스에 자동화 컨트롤러를 쉽게 포함할 수 있습니다. 이렇게 하면 적절한 사용자가 자신의 리소스에 액세스할 수 있습니다.

API에서 다음 인증 방법을 사용할 수 있습니다.

10.1. 세션 인증 사용

자동화 컨트롤러의 API 또는 UI에 직접 로그인할 때 세션 인증을 사용하여 인벤토리, 프로젝트, 작업 템플릿과 같은 리소스를 수동으로 생성하고 브라우저에서 작업을 시작할 수 있습니다.

이 방법을 사용하면 해당 HTTP 요청뿐만 아니라 장기간 로그인 상태를 유지할 수 있습니다. 예를 들어 Chrome 또는 Mozilla Firefox와 같은 브라우저에서 API 또는 UI를 검색하는 경우입니다. 로그인하면 세션 쿠키가 생성되면 자동화 컨트롤러 내의 다른 페이지로 이동할 때 로그인 상태를 유지할 수 있습니다.

다음 이미지는 세션의 클라이언트와 서버 간에 발생하는 통신을 나타냅니다.

자동화 컨트롤러에 로그인할 때 발생하는 활동을 확인하려면 curl 툴을 사용합니다.

프로세스

  1. GET 을 사용하여 /api/login/ 엔드포인트로 이동하여 csrftoken 쿠키를 가져옵니다.

    $ curl -k -c - https://<gateway server name>/api/gateway/v1/login/
    
    $YOUR_AAP_URL FALSE / TRUE 1780539778 csrftoken GODXonA5LyV1uAs8zvcD2k12DQJC74oB
    Copy to Clipboard Toggle word wrap
  2. 첫 번째 단계에서 반환된 쿠키에서 csrftoken 값을 추출합니다.
  3. 사용자 이름, 암호, X-CSRFToken=<token-value > :을 사용하여 /api/login/ 끝점에 POST

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    
    --referer https://<gateway server name>/api/gateway/v1/login/ \
    
    -H 'X-CSRFToken: <token-value>' \
    
    --data 'username=admin&password=$YOUR_ADMIN_PASSWORD' \
    
    --cookie 'csrftoken=GODXonA5LyV1uAs8zvcD2k12DQJC74oB' \
    
    https://<gateway server name>/api/gateway/v1/login/ -k -D - -o /dev/null
    Copy to Clipboard Toggle word wrap
  4. 인증이 필요한 API에 액세스하고 테스트합니다(예: /api/controller/v2/settings/all/ ).

    $ curl -X GET -H 'Cookie: <cookieID>;' https://<gateway server name>/api/controller/v2/settings/all/ -k
    Copy to Clipboard Toggle word wrap

이 모든 작업은 브라우저에서 UI 또는 API에 로그인할 때 자동화 컨트롤러에서 수행하며 브라우저에서 인증할 때만 사용해야 합니다. 자동화 컨트롤러와 프로그래밍 방식의 통합은 OAuth2 토큰 인증을 참조하십시오.

검증

다음은 일반적인 응답을 보여줍니다.

+

Server: nginx
Date: <current date>
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /accounts/profile/
X-API-Session-Cookie-Name: awx_sessionid
Expires: <date>
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
Vary: Cookie, Accept-Language, Origin
Session-Timeout: 1800
Content-Language: en
X-API-Total-Time: 0.377s
X-API-Request-Id: 700826696425433fb0c8807cd40c00a0
Access-Control-Expose-Headers: X-API-Request-Id
Set-Cookie: userLoggedIn=true; Path=/
Set-Cookie: current_user=<user cookie data>; Path=/
Set-Cookie: csrftoken=<csrftoken>; Path=/; SameSite=Lax
Set-Cookie: awx_sessionid=<your session id>; expires=<date>; HttpOnly; Max-Age=1800; Path=/; SameSite=Lax
Strict-Transport-Security: max-age=15768000
Copy to Clipboard Toggle word wrap

+ 사용자가 이 방법으로 성공적으로 인증되면 서버는 세션 쿠키의 구성된 이름을 나타내는 X-API-Session-Cookie-Name 이라는 헤더로 응답합니다. 기본값은 awx_session_id 이며 나중에 Set-Cookie 헤더에서 볼 수 있습니다.

+

참고

SESSION_COOKIE_AGE 매개변수에 지정하여 세션 만료 시간을 변경할 수 있습니다.

10.2. 기본 인증

기본 인증은 상태 비저장이므로 base64로 인코딩된 사용자 이름과 암호를 인증 헤더를 통해 각 요청과 함께 보내야 합니다. curl 요청, python 스크립트 또는 API에 대한 개별 요청의 API 호출에 이 값을 사용할 수 있습니다.

가능한 경우 API에 액세스하려면 OAuth 2 토큰 인증을 권장합니다.

다음은 curl을 사용한 기본 인증의 예입니다.

# the --user flag adds this Authorization header for us
curl -X GET --user 'user:password' https://<controller-host>/api/gateway/v1/tokens/ -k -L
Copy to Clipboard Toggle word wrap

추가 리소스

'기본' HTTP 인증 체계.

10.2.1. 기본 인증 비활성화

보안을 위해 기본 인증을 비활성화할 수 있습니다.

프로세스

  1. 탐색 패널에서 SettingsPlatform Gateway를 선택합니다.
  2. 플랫폼 게이트웨이 설정 편집을 클릭합니다.
  3. Gateway basic auth enabled 옵션을 비활성화합니다.
  4. 플랫폼 게이트웨이 설정 저장을 클릭합니다.

10.3. OAuth 2 토큰 인증

OAuth(Open Authorization)는 토큰 기반 인증 및 권한 부여를 위한 오픈 표준입니다. OAuth 2 인증은 일반적으로 자동화 컨트롤러 API와 프로그래밍 방식으로 상호 작용할 때 사용됩니다.

기본 인증과 유사하게 인증 헤더를 통해 각 API 요청과 함께 OAuth 2 토큰이 제공됩니다. 기본 인증과 달리 OAuth 2 토큰에는 구성 가능한 타임아웃이 있으며 범위를 지정할 수 있습니다. 토큰은 구성 가능한 만료 시간이 있으며 한 사용자 또는 필요한 경우 관리자가 전체 자동화 컨트롤러 시스템에 대해 쉽게 취소할 수 있습니다. cancel _oauth2_tokens 관리 명령을 사용하거나 액세스 토큰 Revoke 에 설명된 대로 API를 사용하여 이 작업을 수행할 수 있습니다.

자동화 컨트롤러에서 OAuth2 액세스 토큰을 가져오는 다양한 방법은 다음과 같습니다.

  • 개인 액세스 토큰 (PAT)
  • 애플리케이션 토큰: 암호 부여 유형
  • 애플리케이션 토큰: Implicit 권한 부여 유형
  • 애플리케이션 토큰: 인증 코드 권한 부여 유형

사용자는 API 또는 플랫폼 게이트웨이 UI의 Access ManagementOAuth 애플리케이션 탭에서 OAuth 2 토큰을 생성해야 합니다. UI를 통해 토큰 생성에 대한 자세한 내용은 토큰 추가 를 참조하십시오.

이 예제의 목적을 위해 PAT 방법을 사용하여 API에서 토큰을 생성합니다. 생성한 후 범위를 설정할 수 있습니다.

참고

토큰 시스템 전체의 만료 시간을 구성할 수 있습니다. 자세한 내용은 토큰 기반 인증을 사용하여 외부 애플리케이션에 대한 액세스 구성 을 참조하십시오.

토큰 인증은 Python 스크립트 또는 curl과 같은 자동화 컨트롤러 API의 프로그래밍 방식으로 사용하는 데 가장 적합합니다.

curl 예

curl -u user:password -k -X POST https://<platform-host>/api/gateway/v1/tokens/
Copy to Clipboard Toggle word wrap

이 호출은 다음을 사용하여 JSON 데이터를 반환합니다.

token 속성 값을 사용하여 Hosts와 같은 자동화 컨트롤러 리소스에 대한 GET 요청을 수행할 수 있습니다.

curl -k -X GET \
  -H “Content-Type: application/json”
  -H “Authorization: Bearer <oauth2-token-value>” \
  https://<platform-host>/api/controller/v2/hosts/
Copy to Clipboard Toggle word wrap

시작하려는 작업 템플릿에 대한 POST 를 수행하여 작업을 실행할 수도 있습니다.

curl -k -X POST \
  -H "Authorization: Bearer <oauth2-token-value>" \
  -H "Content-Type: application/json" \
  --data '{"limit" : "ansible"}' \
  https://<platform-host>/api/controller/v2/job_templates/14/launch/
Copy to Clipboard Toggle word wrap

10.3.1. 외부 사용자가 OAuth 2 토큰을 생성할 수 있도록 허용

기본적으로 Single Sign-On으로 생성된 외부 사용자와 같은 외부 사용자는 보안을 위해 OAuth 토큰을 생성할 수 없습니다.

프로세스

  1. 탐색 패널에서 SettingsPlatform Gateway를 선택합니다.
  2. 플랫폼 게이트웨이 설정 편집을 선택합니다.
  3. 외부 사용자가 OAuth2 토큰을 생성할 수 있도록 하려면 옵션을 활성화합니다.

10.4. Single Sign-On 인증

SSO(Single Sign-On) 인증 방법은 사용자 인증이 Google SSO, Microsoft Azure SSO, SAML 또는 GitHub와 같은 자동화 컨트롤러 외부에 수행되므로 다른 방법과 다릅니다.

중앙 ID 공급자가 있는 대규모 조직 내에서 자동화 컨트롤러를 사용하여 SSO 인증을 구성할 수 있습니다. 자동화 컨트롤러에서 SSO 메서드를 구성한 후에는 로그인 화면에서 해당 SSO에 대한 옵션을 사용할 수 있습니다. 해당 옵션을 클릭하면 ID 공급자(이 경우 GitHub)로 리디렉션됩니다. 이 경우 인증 정보가 제공됩니다. ID 공급자가 사용자를 성공적으로 확인하면 자동화 컨트롤러에서 GitHub 사용자에게 연결된 사용자를 만들고(이 SSO 방법을 사용하여 처음 로그인하는 경우) 로그인합니다.

추가 리소스

인증 유형 구성.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat