자동화 실행 API 개요
자동화 컨트롤러 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 메서드를 사용하는 방법을 알아봅니다.
프로세스
웹 브라우저의 자동화 컨트롤러 REST API로 이동합니다.
https:///api/controller/v2
- "최신 버전" 또는 " 사용 가능한 버전" 옆에 있는 " v2" 링크를 클릭합니다. 자동화 컨트롤러는 API 버전 2를 지원합니다.
-
/api/엔드포인트만 있는GET을 수행하여 권장 버전인current_version을 가져옵니다. -
탐색 메뉴에서
아이콘을 클릭합니다. 특정 API 끝점에 대한 액세스 방법 및 해당 방법을 사용할 때 반환되는 데이터에 대한 설명서는 다음과 같습니다.
다양한 텍스트 필드에서 JSON을 포맷하여 특정 API 페이지에서
PUT및POST동사를 사용합니다.참고/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/
https://<gateway server name>/api/controller/v2/groups/
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 }}https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by={{ order_field }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 필드 이름 앞에 대시(
-)를 접두사로 지정하여 역방향으로 정렬합니다.https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by=-{{ order_field }}https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by=-{{ order_field }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 필드 이름을 쉼표(
,)로 구분하여 정렬 필드를 지정할 수 있습니다.https://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by={{ order_field }},some_other_fieldhttps://<gateway server name>/api/controller/v2/model_verbose_name_plural?order_by={{ order_field }},some_other_fieldCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5장. 검색 쿼리 문자열 매개변수 사용 링크 복사링크가 클립보드에 복사되었습니다!
검색 쿼리 문자열 매개변수는 Ansible Automation Platform API 내에서 특정 리소스를 필터링하고 찾는 간단하면서도 강력한 방법을 제공합니다. 대소문자를 구분하지 않는 검색을 사용하여 모델의 지정된 텍스트 필드에서 관련 데이터를 찾고 관련 필드에서 검색을 확장하여 필요한 사항을 정확하게 찾습니다.
API 모델의 모든 텍스트 필드에서 search 쿼리 매개변수를 사용하여 대소문자를 구분하지 않는 일반 검색을 수행하는 방법과 related__search 매개변수를 사용하여 관련 필드에서 검색하는 방법을 알아봅니다.
프로세스
검색 쿼리 문자열 매개변수를 사용하여 모델의 지정된 모든 텍스트 필드 내에서 대소문자를 구분하지 않는 검색을 수행합니다.
https://<gateway server name>/api/controller/v2/model_verbose_name?search=findme
https://<gateway server name>/api/controller/v2/model_verbose_name?search=findmeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 관련 필드에서 검색하려면 다음을 사용합니다.
https://<gateway_server_name>/api/controller/v2/model_verbose_name?related__search=findme
https://<gateway_server_name>/api/controller/v2/model_verbose_name?related__search=findmeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6장. API에서 필터링 링크 복사링크가 클립보드에 복사되었습니다!
시스템은 컬렉션을 "쿼리 세트"로 인식합니다. 다양한 연산자를 사용하여 필터링할 수 있습니다.
REST API URL 내에서 쿼리 매개변수를 사용하여 정확한 일치, 부분 문자열 포함(__contains), 정수 캐스팅(__int) 및 많은 필드와 같은 기준에 따라 리소스를 필터링하는 방법을 알아봅니다.
프로세스
"foo"라는 이름이 포함된 그룹을 찾으려면 다음을 사용합니다.
http://<gateway server name>/api/controller/v2/groups/?name__contains=foo
http://<gateway server name>/api/controller/v2/groups/?name__contains=fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow 정확한 일치 항목을 찾으려면 다음을 사용합니다.
http://<gateway server name>/api/controller/v2/groups/?name=foo
http://<gateway server name>/api/controller/v2/groups/?name=fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow 리소스가 정수 유형인 경우 문자열 입력 값을 정수로 캐스팅하려면
\_\_int를 끝에 추가해야 합니다.http://<gateway server name>/api/controller/v2/arbitrary_resource/?x__int=5
http://<gateway server name>/api/controller/v2/arbitrary_resource/?x__int=5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음을 사용하여 관련 리소스를 쿼리할 수 있습니다.
http://<gateway server name>/api/gateway/v1/users/?first_name__icontains=kim
http://<gateway server name>/api/gateway/v1/users/?first_name__icontains=kimCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 "kim" 문자열이 포함된 이름이 있는 모든 사용자가 반환됩니다.
한 번에 여러 필드에 대해 필터링할 수도 있습니다.
http://<gateway server name>/api/controller/v2/groups/?name__icontains=test&has_active_failures=false
http://<gateway server name>/api/controller/v2/groups/?name__icontains=test&has_active_failures=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 활성 오류가 없는 "test"가 포함된 모든 그룹이 검색됩니다.
또한 UI가 사용되는 동안 API에서 다양한 기준으로 필터링하는 방법을 확인할 수 있습니다.
추가 리소스
6.1. API의 고급 쿼리 링크 복사링크가 클립보드에 복사되었습니다!
지정된 값과 일치하는 항목으로 반환된 결과 목록을 필터링하는 데 사용되는 추가 쿼리 문자열 매개변수를 사용할 수 있습니다. 필터링을 위해 데이터베이스에 존재하는 필드 및 관계만 사용할 수 있습니다.
지정된 값의 특수 문자가 URL로 인코딩되었는지 확인합니다. 예를 들면 다음과 같습니다.
?field=value%20xyz
?field=value%20xyz
필드는 데이터베이스에 정의된 필드 및 관계에 대해서만 관계를 확장할 수도 있습니다.
?other__field=value
?other__field=value
특정 기준과 일치하는 결과를 제외하려면 field 매개변수 앞에 not__: 접두사를 지정합니다.
?not__field=value
?not__field=value
기본적으로 모든 쿼리 문자열 필터는 AND로 연결되므로 모든 필터와 일치하는 결과만 반환됩니다. 여러 조건 중 하나와 일치하는 결과를 결합하려면 각 쿼리 문자열 매개변수 앞에 or__ 를 붙입니다.
?or__field=value&or__field=othervalue ?or__not__field=value&or__field=othervalue
?or__field=value&or__field=othervalue
?or__not__field=value&or__field=othervalue
기본 AND 필터링에서는 여러 데이터베이스 관계에 걸쳐 필터링되는 각 관련 오브젝트에 모든 필터를 동시에 적용합니다. 반면 체인 필터는 각 관련 오브젝트에 필터를 개별적으로 적용합니다. 이를 사용하려면 query 문자열 매개변수 앞에 chain__: 접두사를 붙입니다.
?chain__related__field=value&chain__related__field2=othervalue ?chain__not__related__field=value&chain__related__field2=othervalue
?chain__related__field=value&chain__related__field2=othervalue
?chain__not__related__field=value&chain__related__field2=othervalue
첫 번째 쿼리를 ? 관련field=value&relatedfield2=othervalue 로 작성하는 경우 관련 개체가 두 조건을 모두 충족하는 기본 오브젝트만 반환합니다. 체인 필터를 사용하여 작성된 대로 각 조건과 일치하는 기본 오브젝트의 교집합을 반환합니다.
6.2. 필드 조회 링크 복사링크가 클립보드에 복사되었습니다!
필드 조회를 사용하면 특정 기준에 따라 API 결과를 필터링할 수 있습니다. 필드 이름에 조회를 추가하여 고급 쿼리에 필드 조회를 사용할 수 있습니다.
?field__lookup=value
?field__lookup=value
다음과 같은 필드 조회가 지원됩니다.
- 정확한: 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 은 다음과 같습니다.
7장. API에서 페이지 번호 사용 링크 복사링크가 클립보드에 복사되었습니다!
API는 컬렉션에 대한 응답을 페이지 매깁니다. 즉, 컬렉션에 수십 또는 수십만 개의 오브젝트가 포함될 수 있지만 각 웹 요청에는 API 성능상의 이유로 제한된 수의 결과만 반환됩니다.
컬렉션에 대한 결과가 표시되면 다음과 유사한 내용이 표시됩니다.
{'count': 25, 'next': 'http://testserver/api/controller/v2/some_resource?page=2', 'previous': None, 'results': [ ... ] }
{'count': 25, 'next': 'http://testserver/api/controller/v2/some_resource?page=2', 'previous': None, 'results': [ ... ] }
프로세스
- "다음" 순차 URL에서 제공한 페이지를 요청하여 다음 페이지로 이동합니다.
page_size=XX쿼리 문자열 매개변수를 사용하여 각 요청에 대해 반환된 결과 수를 변경합니다.-
page_size의 기본 최대 제한은 200이며, 사용자가 값을 시도할 때 적용됩니다(예:?page_size=1000). 그러나/etc/tower/conf.d/<some file>.py의 값을 더 높은 값으로 설정하여 이 제한을 변경할 수 있습니다. 예를 들어MAX_PAGE_SIZE=1000입니다.
-
페이지 쿼리 문자열 매개변수를 사용하여 특정 결과 페이지를 검색합니다.
http://<gateway server name>/api/controller/v2/model_verbose_name?page_size=100&page=2
http://<gateway server name>/api/controller/v2/model_verbose_name?page_size=100&page=2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고결과와 함께 반환된 앞의 링크에서는 이러한 쿼리 문자열 매개변수를 자동으로 설정합니다.
200보다 큰 페이지 크기를 요청하지 마십시오.
사용자 인터페이스는 스크롤을 피하기 위해 더 작은 값을 사용합니다.
8장. 액세스 리소스 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 기본 키를 사용하여 개별 리소스 오브젝트에 액세스합니다. 이름이 지정된 URL 기능을 통해 리소스별, 사람이 읽을 수 있는 식별자를 사용하여 자동화 컨트롤러 리소스에 액세스할 수 있습니다.
다음 예제에서는 보조 쿼리 문자열 없이 리소스 오브젝트에 액세스할 수 있는 이름이 지정된 URL 경로를 보여줍니다.
/api/controller/v2/hosts/host_name++inv_name++org_name/
/api/controller/v2/hosts/host_name++inv_name++org_name/
8.1. 구성 설정 링크 복사링크가 클립보드에 복사되었습니다!
/api/controller/v2/settings/named-url/: NAMED_URL_FORMATS 및 NAMED_URL_GRAPH_NODES 에서 사용할 수 있는 이름이 지정된 URL 관련 구성 설정은 두 가지가 있습니다.
NAMED_URL_FORMATS 는 이름이 지정된 모든 URL 식별자 형식의 읽기 전용 키-값 쌍 목록입니다. 다음은 NAMED_URL_FORMATS 예제를 보여줍니다.
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이 있습니다.
-
키에는
이름필드인 필드만 포함되거나 가능한 선택 항목이 제한된 텍스트 필드(예: 인증 정보 유형 리소스의kind필드)만 포함되어야 합니다. - 이전 규칙을 위반하는 유일한 허용 예외 필드는 자체 이외의 리소스와 관련된 다대일 관련 필드이며 슬러그도 사용할 수 있습니다.
Foo 및 Bar 리소스가 있는 경우 Foo 및 Bar 에는 "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_a_choice choice ) 이면 슬러그 형식은 <name >< a_choice><choice >가 됩니다.
규칙 번호 2를 충족하는 리소스의 경우 추가 외래 키 필드를 역추적하면 결과는 해당 리소스의 오브젝트를 식별하는 리소스 트리입니다. ID 형식을 생성하기 위해 역추적 트리의 각 리소스는 외래 키를 제외한 모든 필드를 사용하여 독립 실행형 형식의 자체 부분을 생성합니다. 마지막으로 모든 부분은 다음과 같은 순서로 ++ 로 결합됩니다.
- 첫 번째 식별자 부분으로 독립 실행형 형식을 배치합니다.
- 각 리소스에 대한 고유 ID를 재귀적으로 생성합니다. 기본 리소스는 외래 키(역추적 트리의 자식 노드) 사용을 나타냅니다.
- 생성된 고유 ID를 나머지 ID 구성 요소로 취급합니다. 이러한 ID는 해당 외래 키의 사전순으로 정렬합니다.
-
++를 사용하여 모든 구성 요소를 결합하여 최종 ID 형식을 생성합니다.
리소스 Foo 에 대한 식별자 형식을 생성할 때 자동화 컨트롤러는 Foo 및 <fk.name>+<fk. name>+< >+<fk. fk.choice >의 경우 독립형 형식 <name><choicename>+<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 툴을 사용합니다.
프로세스
GET을 사용하여/api/login/엔드포인트로 이동하여csrftoken쿠키를 가져옵니다.curl -k -c - https://<gateway server name>/api/gateway/v1/login/
$ curl -k -c - https://<gateway server name>/api/gateway/v1/login/ $YOUR_AAP_URL FALSE / TRUE 1780539778 csrftoken GODXonA5LyV1uAs8zvcD2k12DQJC74oBCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
첫 번째 단계에서 반환된 쿠키에서
csrftoken값을 추출합니다. 사용자 이름, 암호,
X-CSRFToken=<token-value> :을 사용하여/api/login/끝점에POSTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인증이 필요한 API에 액세스하고 테스트합니다(예:
/api/controller/v2/settings/all/).curl -X GET -H 'Cookie: <cookieID>;' https://<gateway server name>/api/controller/v2/settings/all/ -k
$ curl -X GET -H 'Cookie: <cookieID>;' https://<gateway server name>/api/controller/v2/settings/all/ -kCopy to Clipboard Copied! Toggle word wrap Toggle overflow
이 모든 작업은 브라우저에서 UI 또는 API에 로그인할 때 자동화 컨트롤러에서 수행하며 브라우저에서 인증할 때만 사용해야 합니다. 자동화 컨트롤러와 프로그래밍 방식의 통합은 OAuth2 토큰 인증을 참조하십시오.
검증
다음은 일반적인 응답을 보여줍니다.
+
+ 사용자가 이 방법으로 성공적으로 인증되면 서버는 세션 쿠키의 구성된 이름을 나타내는 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
# the --user flag adds this Authorization header for us
curl -X GET --user 'user:password' https://<controller-host>/api/gateway/v1/tokens/ -k -L
추가 리소스
10.2.1. 기본 인증 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
보안을 위해 기본 인증을 비활성화할 수 있습니다.
프로세스
- 탐색 패널에서 → .
- 클릭합니다.
- Gateway basic auth enabled 옵션을 비활성화합니다.
- 클릭합니다.
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의 → 2 토큰을 생성해야 합니다. UI를 통해 토큰 생성에 대한 자세한 내용은 토큰 추가 를 참조하십시오.
이 예제의 목적을 위해 PAT 방법을 사용하여 API에서 토큰을 생성합니다. 생성한 후 범위를 설정할 수 있습니다.
토큰 시스템 전체의 만료 시간을 구성할 수 있습니다. 자세한 내용은 토큰 기반 인증을 사용하여 외부 애플리케이션에 대한 액세스 구성 을 참조하십시오.
토큰 인증은 Python 스크립트 또는 curl과 같은 자동화 컨트롤러 API의 프로그래밍 방식으로 사용하는 데 가장 적합합니다.
curl 예
curl -u user:password -k -X POST https://<platform-host>/api/gateway/v1/tokens/
curl -u user:password -k -X POST https://<platform-host>/api/gateway/v1/tokens/
이 호출은 다음을 사용하여 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/
curl -k -X GET \
-H “Content-Type: application/json”
-H “Authorization: Bearer <oauth2-token-value>” \
https://<platform-host>/api/controller/v2/hosts/
시작하려는 작업 템플릿에 대한 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/
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/
10.3.1. 외부 사용자가 OAuth 2 토큰을 생성할 수 있도록 허용 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Single Sign-On으로 생성된 외부 사용자와 같은 외부 사용자는 보안을 위해 OAuth 토큰을 생성할 수 없습니다.
프로세스
- 탐색 패널에서 → .
- 선택합니다.
- 외부 사용자가 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 방법을 사용하여 처음 로그인하는 경우) 로그인합니다.
추가 리소스