이 페이지에서
리소스 풀(API)
이 참조는 UI에 패리티(parity)를 가진 리소스 그룹 API 사용을 보여줍니다. 전체 API 설명서는 Apstra GUI 아래의 REST 플랫폼 API 참조를 참조하십시오.
청사진에 리소스 그룹 슬롯을 나열하려면 인증된 HTTP GET를 수행하여 https://aos-server/api/blueprints/<blueprint_id>/resource_groups
구축 단계를 완료하려면 청사진을 위해 ASN 풀 과 IP 풀 을 모두 할당해야 합니다.
API - ASN 풀
ASN 풀 만들기
ASN 풀 생성을 위한 페이로드 예:
ID가 지정되지 않은 경우 HTTP 응답에서 ID 하나가 생성되어 반환됩니다.
{ "id": "RFC6996-Private", "display_name": "RFC6996-Private", "tags": [ "default" ], "ranges": [ { "last": 65534, "first": 64512 } ] }
ASN 풀을 생성하려면 HTTP POST를 수행하여 JSON 페이로드로 https://aos-server/api/resources/asn-pools .
curl 'https://192.168.25.250/api/resources/asn-pools?comment=create' -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6 ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsIn Nlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3 crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' - --data-binary '{"display_name" :"Example","ranges":[{"first":100,"last":200}],"tags":[]}' --compressed --insecure
ASN 풀 목록
curl 'https://192.168.25.250/api/resources/asn-pools' -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiY3JlY XRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3Npb24iOiJjOTliO GVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0-lQRXnpPOJ8TCsR G9Wr-DaddnAIj6ko' --compressed --insecure
{ "items": [ { "created_at": "2017-05-30T12:56:07.293082Z", "display_name": "Private ASN", "id": "c23ea447-8f37-419a-9b1c-c48cc55d5b9c", "last_modified_at": "2017-05-30T12:56:07.293082Z", "ranges": [ { "first": 65412, "last": 65534, "status": "pool_element_in_use" } ], "status": "in_use", "tags": [] } ] }
ASN 풀 삭제
ASN 풀을 삭제하려면 HTTP 삭제를 수행하여 https://aos-server/resources/asn-pools/{pool_id}
성공적으로 삭제하면 HTTP 200 확인이 반환됩니다.
curl 'https://192.168.25.250/api/resources/asn-pools/d0312b4a-017e-4478-8b8d-df0417ce8d3b' -X DELETE -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vybm FtZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzW iIsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJ MR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure
청사진에 ASN 할당
청사진에 IP 풀을 할당하려면 http PUT를 https://aos-server/blueprints/<blueprint_id>/resource_groups/ip/<pool_name> 수행합니다.
예를 들어 리소스 풀을 spine_loopback_ips 게시하려면 먼저 리소스 풀의 ID를 구하고 슬롯 할당 목록에 추가합니다. IP 풀 리소스 그룹을 업데이트할 때 페이로드의 모든 풀을 동시에 지정합니다. 단일 풀을 추가할 수 없으므로 모든 풀을 한꺼번에 배치합니다.
페이로드:
{"pool_ids": ["pool_id1", "pool_id2", "pool_id3"] }
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/asn/spine_asns' -X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vyb mFtZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTI wMTgzWiIsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYj A0ZDYifQ.FnJMR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":["c23ea447-8f37-419a-9b1c-c48cc55d5b9c"]}' --compressed --insecure
성공적인 할당은 HTTP 200 확인을 반환합니다.
블루프린트에서 ASN 할당 해제
블루프린트에서 IP 풀을 제거할 때 빈 pool_id 목록을 페이로드 []
가 있는 청사진에 넣습니다.
HTTP 엔드포인트 https://aos-server/api/blueprints/<blueprint_id> /resource_groups/asn/<pool_name>
페이로드를 통해 다음을 수행합니다.
{ "pool_ids": [] }
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/asn/spine_asns' -X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFt ZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWi IsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJ MR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":[]}' --compressed --insecure
요청이 성공하면 응답이 없습니다.
Blueprint에 할당된 목록 ASN
할당을 위한 사용 가능한 ASN 풀 리소스 그룹은 HTTP GET로 https://aos-server/api/blueprints/<blueprint_id>/resource_groups 표시할 수 있습니다.
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups' -H 'AuthToken: eyJhbGciOiJIUzI1NwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgz WiIsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZD YifQ.FnJMR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure | python -m json.tool
{ "items": [ { "name": "leaf_asns", "pool_ids": [ "c23ea447-8f37-419a-9b1c-c48cc55d5b9c" ], "type": "asn" }, { "name": "spine_asns", "pool_ids": [ "c23ea447-8f37-419a-9b1c-c48cc55d5b9c" ], "type": "asn" }, { "name": "leaf_loopback_ips", "pool_ids": [ "56e8e0dc-babd-4652-92a5-fc37294a7b26" ], "type": "ip" }, { "name": "mlag_domain_svi_subnets", "pool_ids": [ "ed7d8830-c703-4ac0-8252-77e0f272a677" ], "type": "ip" }, { "name": "spine_leaf_link_ips", "pool_ids": [ "ed7d8830-c703-4ac0-8252-77e0f272a677" ], "type": "ip" }, { "name": "spine_loopback_ips", "pool_ids": [ "56e8e0dc-babd-4652-92a5-fc37294a7b26" ], "type": "ip" } ] }
API - IP 풀
IP 풀 만들기
IP 풀 생성을 위한 JSON 페이로드:
{ "id": "example_ip_pool", "display_name": "example_ip_pool", "tags": ["default"], "subnets": [ {"network": "10.0.0.0/8"} ] }
서브넷 섹션에는 CIDR 마스크와 일치하는 키워드 네트워크 및 값이 있는 사전 목록이 필요합니다. 서브넷은 동일한 풀에서 서로 겹칠 수 없습니다. 즉, 192.168.10.0/24 및 192.168.0.0/16은 동일한 풀에서 구성할 수 없습니다.
태그는 선택 사항이며 현재 Apstra에서 사용되지 않습니다. ID가 지정되면 저장되며, 그렇지 않으면 풀을 생성한 후 HTTP 응답에 ID가 반환됩니다.
JSON 페이로드를 사용하여 https://aos-server/api/resources/ip-pools HTTP POST가 새 IP 풀의 ID로 회신합니다.
curl 'https://192.168.25.250/api/resources/ip-pools' -X POST -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmF tZSI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWi IsInNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.Fn JMR3crPoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"display_name": "example_ip_pool","subnets":[{"network":"10.0.0.0/8"},{"network": "192.168.0.0/16"}],"tags":[]}' --compressed --insecure
{"id": "d0312b4a-017e-4478-8b8d-df0417ce8d3b"}
IP 풀 목록
HTTP GET를 https://aos-server/api/resources/ip-pools 수행 -
jp@ApstraVM ~ $ curl 'https://192.168.25.250/api/resources/ip-pools' -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbW luIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3Npb24 iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0-lQRXnpP OJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure | python -m json.tool
{ "items": [ { "created_at": "2017-05-31T03:48:38.562331Z", "display_name": "example_ip_pool", "id": "d5046aa6-eab2-4990-9816-0a519ce1a8db", "last_modified_at": "2017-05-31T03:48:38.562331Z", "status": "not_in_use", "subnets": [ { "network": "10.0.0.0/8", "status": "pool_element_available" }, { "network": "192.168.0.0/16", "status": "pool_element_available" } ], "tags": [] }, { "created_at": "2017-05-30T12:56:50.576598Z", "display_name": "L3-CLOS", "id": "ed7d8830-c703-4ac0-8252-77e0f272a677", "last_modified_at": "2017-05-30T12:56:50.576598Z", "status": "in_use", "subnets": [ { "network": "10.16.0.0/16", "status": "pool_element_in_use" } ], "tags": [] }, { "created_at": "2017-05-30T12:56:24.222906Z", "display_name": "Loopbacks", "id": "56e8e0dc-babd-4652-92a5-fc37294a7b26", "last_modified_at": "2017-05-30T12:56:24.222906Z", "status": "in_use", "subnets": [ { "network": "10.254.0.0/16", "status": "pool_element_in_use" } ], "tags": [] }, { "created_at": "2017-05-31T03:49:15.485164Z", "display_name": "example_ip_pool", "id": "d0312b4a-017e-4478-8b8d-df0417ce8d3b", "last_modified_at": "2017-05-31T03:49:15.485164Z", "status": "not_in_use", "subnets": [ { "network": "10.0.0.0/8", "status": "pool_element_available" }, { "network": "192.168.0.0/16", "status": "pool_element_available" } ], "tags": [] } ] }
IP 풀 삭제
IP 풀을 삭제하려면 HTTP 삭제를 수행하여 https://aos-server/resources/ip-pools/{pool_id}
성공적으로 삭제하면 HTTP 200 OK 및 빈 JSON 응답이 반환됩니다. {}
curl 'https://192.168.25.250/api/resources/ip-pools/d0312b4a-017e-4478-8b8d-df0417ce8d3b' -X DELETE -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZS I6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNl c3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0 -lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure
청사진에 IP 할당
청사진에 IP 풀을 할당하려면 <blueprint_id>/resource_groups/ip/ <group_name> https://aos-server/blueprints/ HTTP PUT를 수행합니다.
예를 들어, 리소스 풀 spine_loopback_ips 청사진과 연결하려면 먼저 리소스 풀의 ID를 구하고 슬롯 할당 목록에 추가합니다. IP 풀 리소스 그룹을 업데이트할 때 페이로드의 모든 풀을 동시에 지정합니다. 단일 풀을 추가할 수 없으므로 모든 풀을 한꺼번에 배치합니다. Apstra가 IP 풀을 'ed7d8830-c703-4ac0-8252-77e0f272a677'과 연결하도록 지시합니다. 기존 풀을 삭제하지 않도록 새 풀을 추가하기 전에 기존 풀 ID를 확보해야 할 수 있습니다.
페이로드:
{"pool_ids": ["pool_id1", "pool_id2", "pool_id3"] }
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/ip/spine_loopback_ips' -X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImF kbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3Npb2 4iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD0-lQRXnp POJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":["ed7d8830-c703-4ac0-825 2-77e0f272a677"]}' --compressed --insecure
성공적인 할당은 HTTP 200 확인을 반환합니다.
청사진에서 IP 제거
블루프린트에서 IP 풀을 제거하려면 페이로드[]
를 사용하여 빈 pool_id
목록을 청사진에 넣습니다.
HTTP 엔드포인트 https://aos-server/api/blueprints/<blueprint_id>/resource_groups/ip/<allocation_group_name>
페이로드를 통해 다음을 수행합니다.
{ "pool_ids": [] }
CURL 예시
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups/ip/spine_loopback_ips' -X PUT -H 'AuthToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZ SI6ImFkbWluIiwiY3JlYXRlZF9hdCI6IjIwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsI nNlc3Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3cr PoD0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --data-binary '{"pool_ids":[]}' --compressed --insecure
성공적으로 제거하면 빈 응답이 반환됩니다. {}
청사진에 할당된 목록 IP
curl 'https://192.168.25.250/api/blueprints/4c1e69c6-97bd-4c99-9504-7818f138b17f/resource_groups' -H 'AuthToken: eyJhbGciOiJIUzI1NwMTctMDUtMzFUMDA6MjI6MDcuNTIwMTgzWiIsInNlc3 Npb24iOiJjOTliOGVlOS05Y2NjLTRjZTAtYTY5NS0wODI3N2ZkYjA0ZDYifQ.FnJMR3crPoD 0-lQRXnpPOJ8TCsRG9Wr-DaddnAIj6ko' --compressed --insecure | python -m json.tool
{ "items": [ { "name": "leaf_asns", "pool_ids": [ "c23ea447-8f37-419a-9b1c-c48cc55d5b9c" ], "type": "asn" }, { "name": "spine_asns", "pool_ids": [ "c23ea447-8f37-419a-9b1c-c48cc55d5b9c" ], "type": "asn" }, { "name": "leaf_loopback_ips", "pool_ids": [ "56e8e0dc-babd-4652-92a5-fc37294a7b26" ], "type": "ip" }, { "name": "mlag_domain_svi_subnets", "pool_ids": [ "ed7d8830-c703-4ac0-8252-77e0f272a677" ], "type": "ip" }, { "name": "spine_leaf_link_ips", "pool_ids": [ "ed7d8830-c703-4ac0-8252-77e0f272a677" ], "type": "ip" }, { "name": "spine_loopback_ips", "pool_ids": [ "56e8e0dc-babd-4652-92a5-fc37294a7b26" ], "type": "ip" } ] }