SUR CETTE PAGE
Pools de ressources (API)
Cette référence illustre l’utilisation de l’API du groupe de ressources avec parité avec l’interface utilisateur. Pour obtenir la documentation complète de l’API, consultez la référence de l’API de la plate-forme REST sous l’interface graphique d’Apstra.
Pour répertorier les emplacements de groupe de ressources dans un blueprint, effectuez un HTTP GET authentifié à https://aos-server/api/blueprints/<blueprint_id>/resource_groups
Des pools ASN et IP doivent être affectés pour qu’un blueprint termine la phase de génération.
API - ASN Pools
- Créer un pool ASN
- Liste des pools ASN
- Supprimer le pool ASN
- Attribuer un ASN à un Blueprint
- Annuler l’attribution d’un ASN du Blueprint
- Liste des ASN affectés à Blueprint
Créer un pool ASN
Exemple de charge utile pour la création d’un pool ASN :
Si aucun ID n’est spécifié, un ID sera créé et renvoyé dans la réponse HTTP.
{ "id": "RFC6996-Private", "display_name": "RFC6996-Private", "tags": [ "default" ], "ranges": [ { "last": 65534, "first": 64512 } ] }
Pour créer un pool ASN, effectuez un HTTP POST vers https://aos-server/api/resources/asn-pools avec une charge utile JSON.
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
Liste des pools 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": [] } ] }
Supprimer le pool ASN
Pour supprimer un pool ASN, exécutez une requête HTTP DELETE sur https://aos-server/resources/asn-pools/{pool_id}
Une suppression réussie renvoie HTTP 200 OK.
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
Attribuer un ASN à un Blueprint
Pour affecter un pool d’adresses IP au blueprint, exécutez un HTTP PUT sur https://aos-server/blueprints/<blueprint_id>/resource_groups/ip/<pool_name>
Par exemple, pour publier un pool de ressources sur spine_loopback_ips, obtenez d’abord l’ID du pool de ressources et ajoutez-le à une liste pour l’attribution des emplacements. Lors de la mise à jour du groupe de ressources Pool IP, spécifiez tous les pools de la charge utile en même temps. Nous ne pouvons pas ajouter de pools uniques, alors METTEZ-les tous en même temps.
Charge:
{"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
Une instruction ASSIGNMENT réussie renvoie HTTP 200 OK.
Annuler l’attribution d’un ASN du Blueprint
Lorsque vous supprimez des pools d’adresses IP d’un blueprint, PLACEZ une liste de pool_id vide sur le blueprint avec la charge []
utile :
PUT au point de terminaison HTTP https://aos-server/api/blueprints/<blueprint_id> /resource_groups/asn/<pool_name>
Avec la charge utile :
{ "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
Si la demande aboutit, il n’y aura pas de réponse.
Liste des ASN affectés à Blueprint
Les groupes de ressources du pool ASN disponibles pour l’attribution peuvent être affichés avec un 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 Pools
- Créer un pool d’adresses IP
- Liste des pools d’adresses IP
- Supprimer le pool d’adresses IP
- Attribuer une adresse IP à un blueprint
- Supprimer l’IP du blueprint
- Liste des adresses IP affectées au blueprint
Créer un pool d’adresses IP
Charge utile JSON pour la création d’un pool IP :
{ "id": "example_ip_pool", "display_name": "example_ip_pool", "tags": ["default"], "subnets": [ {"network": "10.0.0.0/8"} ] }
La section des sous-réseaux requiert une liste de dictionnaires avec le réseau de mots-clés et la valeur correspondant à un masque d’adresse CIDR. Les sous-réseaux ne peuvent pas se chevaucher dans le même pool. C’est-à-dire que 192.168.10.0/24 et 192.168.0.0/16 ne peuvent pas être configurés dans le même pool.
Les balises sont facultatives et ne sont actuellement pas utilisées dans Apstra. Si ID est spécifié, il sera enregistré, sinon un ID sera renvoyé dans la réponse HTTP après la création du pool.
Un HTTP POST pour https://aos-server/api/resources/ip-pools avec une charge utile JSON répondra avec l’ID du nouveau pool IP.
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"}
Liste des pools d’adresses IP
Effectuer un HTTP GET pour 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": [] } ] }
Supprimer le pool d’adresses IP
Pour supprimer un pool d’adresses IP, exécutez une requête HTTP DELETE vers https://aos-server/resources/ip-pools/{pool_id}
Une suppression réussie renvoie HTTP 200 OK et une réponse JSON vide {}
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
Attribuer une adresse IP à un blueprint
Pour affecter un pool d’adresses IP au blueprint, effectuez un PUT HTTP sur https://aos-server/blueprints/ <blueprint_id>/resource_groups/ip/<group_name>
Par exemple, pour associer un spine_loopback_ips de pool de ressources à un blueprint, obtenez d’abord l’ID du pool de ressources et ajoutez-le à une liste pour l’attribution d’emplacements. Lors de la mise à jour du groupe de ressources Pool IP, spécifiez tous les pools de la charge utile en même temps. Nous ne pouvons pas ajouter de pools uniques, alors METTEZ-les tous en même temps. Demandez à Apstra d’associer le pool d’adresses IP à l’ID 'ed7d8830-c703-4ac0-8252-77e0f272a677' au blueprint. Vous devrez peut-être obtenir des ID de pool existants avant d’en ajouter un nouveau pour éviter de supprimer des pools existants.
Charge:
{"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
Une instruction ASSIGNMENT réussie renvoie un HTTP 200 OK.
Supprimer l’IP du blueprint
Pour supprimer les pools IP du blueprint, PLACEZ une liste vide pool_id
sur le blueprint avec la charge []
utile :
PUT au point de terminaison HTTP https://aos-server/api/blueprints/<blueprint_id>/ resource_groups/ip/<allocation_group_name>
Avec la charge utile :
{ "pool_ids": [] }
Exemple 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
Une suppression réussie renvoie une réponse vide : {}
Liste des adresses IP affectées au blueprint
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" } ] }