annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
cancel
2558
Visites
20
Compliment
9
Réponses

Modifier un objet existant sur ACI / modify an existing object on ACI

Said73363
Level 1
Level 1

Bonjour tout le monde,

Comment pourrais-je modifier le nom du Tenant qui contient EPG et BD ?

Actuellement, j'ai :
Tenant A, AP A, EPG A, EP A et BD A

Je souhaite mettre à jour le Tenant Name et conserver l'objet associé :
Tenant B, AP A, EPG A, EP A et BD A

Texte d'origine :

hello everybody,

how could I modify the Tenant name which contains EPG and BD?

Currently, I have :
Tenant A,AP A, EPG A, EP A and BD A

I want update the Tenant Name and Keep the associated object:
Tenant B, AP A, EPG A, EP A and BD A

 

2 SOLUTIONS APPROUVÉES

Solutions approuvées

ACI est très maniable au travers des APIs même si depuis le GUI il semble restrictif. Cela est normal que depuis le GUI, vous ne puissiez pas renommer car il y a beaucoup de liaisons faites dans le back-end.

 

Avez vous déjà utilisé les APIs ?

 

Je vous conseille d'utiliser la librairie acitoolkit qui a déjà des exemples et qui vous permet rapidement d'extraire et réimporter la configuration d'un tenant.

 

Voici un pas à pas qui va vous aider mais sachez qu'il y a un impact car vous devrez supprimer le tenant existant. Je vous conseille de télécharger ACI simulator depuis le site de Cisco, de déployer l'OVA et de restaurer la configuration que vous avez en production pour faire vos tests. Aussi, faites un snapshot de votre configuration sur l'APIC avant de vous lancer.

 

Pour éviter de downloader toutes les librairies, installer docker sur votre machine et télécharger le docker de acitoolkit avec la commande 

docker pull dockercisco/acitoolkit 

Une fois le docker téléchargé, exécuter le :

docker run -it --privileged -v ~/Downloads:/Downloads dockercisco/acitoolkit

J'utilise une machine linux donc il faudra adapter la partie de la commande pour l'attribut -v

Dans mon cas ~/Downloads correspond à mon folder Download dans mon home directory. 

Le /Downloads est le répertoire que je map dans le docker.

 

Depuis le docker, assumons que votre tenant s’appelle CORP. La commande suivante permet de télécharger la config au format JSON.

python aci-copy-tenant-config.py --config CORP.json --tenant CORP --pull-from-apic

J'ai eu des soucis dans le passé pour le download de la config donc si cela ne fonctionne pas pour vous, nous allons le faire manuellement pour la partie export (Laisser le docker exécuter, nous y reviendrons plus tard, surtout ne pas faire exit.)

Aller dans APIC dans le menu Tenant et sur l'onglet All Tenants. Faites un right click sur votre tenant et choisissez save as.

Screenshot from 2020-05-19 20-10-27.png

Choisissez les options comme sur le screenshot ci dessus et cliquez sur Download.

 

Ouvrez le fichier JSON obtenu avec un éditeur type Visual Studio Code ou autre.

Dans le fichier, supprimez le texte de début comme montré ci dessous :

{"totalCount":"1","imdata":[

Votre fichier commencera donc par :

{"fvTenant":{"attributes":

Ensuite, à la fin du fichier, supprimer les 2 derniers caractères: 

]}
La dernière modification est comme suit.
Le début du fichier devrait être:
{"fvTenant":{"attributes":{"annotation":"","descr":"description tenant CORP","dn":"uni/tn-CORP","name":"CORP"
Remplacer le dn et l'attribut name par le nouveau nom du tenant. Dans mon cas, je vais le nommer CORPTEST.
{"fvTenant":{"attributes":{"annotation":"","descr":"description tenant CORP","dn":"uni/tn-CORPTEST","name":"CORPTEST"
Sauvegarder le fichier avec les changements dans le répertoire ~/Downloads (ou celui que vous avez utilisé plus haut lors de l'exécution du docker.
 
La partie délicate est maintenant.
Il va falloir supprimer le tenant CORP actuel et cela va couper le trafic de production.
Assumons que vous avez n'avez pas changé le répertoire de destination du docker qui est /Downloads (selon ma commande au début de l'exécution du docker), retourner dans la fenêtre du docker.
Si vous exécuter la commande 
ll /Downloads | grep tn-CORP
vous devriez avoir l'output suivant :
-rw-rw-r-- 1 1000 1000      7274 May 20 00:00 tn-CORP.json
Si c'est le cas, nous pouvons continuer vers la dernière étape.
Toujours depuis le docker, taper la commande
python aci-copy-tenant-config.py --config /Downloads/tn-CORP.json --tenant CORPTEST --push-to-apic
Le nom indiqué après --tenant est le nouveau de mon tenant, dans mon cas CORPTEST et doit correspondre à celui indiqué dans le fichier lors de nos changements.
 
La commande s'exécute et le message suivant apparaît :
Successfully pushed configuration to APIC.
Vous pouvez checker sur APIC, le renommage du nom du tenant devrait être effectué avec succès.
 
Si vous avez besoin d'aide, revenez vers moi.
 

Thanks
Francesco
PS: Please don't forget to rate and select as validated answer if this answered your question

Voir la solution dans l'envoi d'origine

Effectivement, dans le cas de raccordement simple, les EP de l'EPG renseignent directement le LEAF et le port. Dois-je en déduire que le changement de nommage est transparent pour ce cas de figure?

 

Par contre pour les IPG de type vpc ou PC, il faut renseigner l'IPG en EP dans l'EPG....

Donc le changement de nom doit être repris dans l'ensemble des EPG qui utilisait l'ancien IPG?

 

Merci pour vos réponses qui me permettent d'y voir clair.

 

Voir la solution dans l'envoi d'origine

9 RÉPONSES 9

Francesco Molino
VIP Alumni
VIP Alumni
Bonjour,

Je vais répondre en francais car nous sommes sur le community Français. Si vous souhaitez que je communique en anglais, laissez moi savoir.

Vous êtes obligés de passer par les APIs car malheureusement le renommage des Tenants n'est pas possible. Même au travers des APIs, il va falloir lire l'ensemble des objets attachés et les déplacer sous le nouveau tenant. Sachez qu'en faisant cela, vous allez impacter la production car j'imagine que c'est actuellement en production avec du routage associé.

Thanks
Francesco
PS: Please don't forget to rate and select as validated answer if this answered your question

Je comprends de votre réponse que cela ne peut pas se faire sans impact... pas très flexible comme solution... dommage que Cisco n'ait pas prévu un clique droit "rename" qui réaliserait la modification sur l'ensemble des objets liés à ce type de mise à jour...

Avez-vous un exemple à me partager svp via API?

Je vous remercie pour votre retour 

ACI est très maniable au travers des APIs même si depuis le GUI il semble restrictif. Cela est normal que depuis le GUI, vous ne puissiez pas renommer car il y a beaucoup de liaisons faites dans le back-end.

 

Avez vous déjà utilisé les APIs ?

 

Je vous conseille d'utiliser la librairie acitoolkit qui a déjà des exemples et qui vous permet rapidement d'extraire et réimporter la configuration d'un tenant.

 

Voici un pas à pas qui va vous aider mais sachez qu'il y a un impact car vous devrez supprimer le tenant existant. Je vous conseille de télécharger ACI simulator depuis le site de Cisco, de déployer l'OVA et de restaurer la configuration que vous avez en production pour faire vos tests. Aussi, faites un snapshot de votre configuration sur l'APIC avant de vous lancer.

 

Pour éviter de downloader toutes les librairies, installer docker sur votre machine et télécharger le docker de acitoolkit avec la commande 

docker pull dockercisco/acitoolkit 

Une fois le docker téléchargé, exécuter le :

docker run -it --privileged -v ~/Downloads:/Downloads dockercisco/acitoolkit

J'utilise une machine linux donc il faudra adapter la partie de la commande pour l'attribut -v

Dans mon cas ~/Downloads correspond à mon folder Download dans mon home directory. 

Le /Downloads est le répertoire que je map dans le docker.

 

Depuis le docker, assumons que votre tenant s’appelle CORP. La commande suivante permet de télécharger la config au format JSON.

python aci-copy-tenant-config.py --config CORP.json --tenant CORP --pull-from-apic

J'ai eu des soucis dans le passé pour le download de la config donc si cela ne fonctionne pas pour vous, nous allons le faire manuellement pour la partie export (Laisser le docker exécuter, nous y reviendrons plus tard, surtout ne pas faire exit.)

Aller dans APIC dans le menu Tenant et sur l'onglet All Tenants. Faites un right click sur votre tenant et choisissez save as.

Screenshot from 2020-05-19 20-10-27.png

Choisissez les options comme sur le screenshot ci dessus et cliquez sur Download.

 

Ouvrez le fichier JSON obtenu avec un éditeur type Visual Studio Code ou autre.

Dans le fichier, supprimez le texte de début comme montré ci dessous :

{"totalCount":"1","imdata":[

Votre fichier commencera donc par :

{"fvTenant":{"attributes":

Ensuite, à la fin du fichier, supprimer les 2 derniers caractères: 

]}
La dernière modification est comme suit.
Le début du fichier devrait être:
{"fvTenant":{"attributes":{"annotation":"","descr":"description tenant CORP","dn":"uni/tn-CORP","name":"CORP"
Remplacer le dn et l'attribut name par le nouveau nom du tenant. Dans mon cas, je vais le nommer CORPTEST.
{"fvTenant":{"attributes":{"annotation":"","descr":"description tenant CORP","dn":"uni/tn-CORPTEST","name":"CORPTEST"
Sauvegarder le fichier avec les changements dans le répertoire ~/Downloads (ou celui que vous avez utilisé plus haut lors de l'exécution du docker.
 
La partie délicate est maintenant.
Il va falloir supprimer le tenant CORP actuel et cela va couper le trafic de production.
Assumons que vous avez n'avez pas changé le répertoire de destination du docker qui est /Downloads (selon ma commande au début de l'exécution du docker), retourner dans la fenêtre du docker.
Si vous exécuter la commande 
ll /Downloads | grep tn-CORP
vous devriez avoir l'output suivant :
-rw-rw-r-- 1 1000 1000      7274 May 20 00:00 tn-CORP.json
Si c'est le cas, nous pouvons continuer vers la dernière étape.
Toujours depuis le docker, taper la commande
python aci-copy-tenant-config.py --config /Downloads/tn-CORP.json --tenant CORPTEST --push-to-apic
Le nom indiqué après --tenant est le nouveau de mon tenant, dans mon cas CORPTEST et doit correspondre à celui indiqué dans le fichier lors de nos changements.
 
La commande s'exécute et le message suivant apparaît :
Successfully pushed configuration to APIC.
Vous pouvez checker sur APIC, le renommage du nom du tenant devrait être effectué avec succès.
 
Si vous avez besoin d'aide, revenez vers moi.
 

Thanks
Francesco
PS: Please don't forget to rate and select as validated answer if this answered your question

Cela est très clair pour le changement de nom de Tenant...

 

J'ai un autre scénario, celui du changement du nom d'INTERFACE PROFILE et/ou d'IPG qui ne sont pas configurés dans le subtree du Tenant mais qui sont utilisés en tant qu'EP dans l'EPG...

 

Il faudra donc identifier tous les EPG (dans tous les Tenant) utilisant cet IPG et les changer...

 

Quelle serait votre recommandation svp ?

Pouvez vous être plus clair sur ce que vous souhaitez modifier? car les IPG sont attachés à des interfaces profiles qui elles lient le port et le Policy-group. Au niveau des EPGs, vous avez l'attachement de l'interface physique elle même.

Sauf si vous parlez de port-channel et/ou VPC?


Thanks
Francesco
PS: Please don't forget to rate and select as validated answer if this answered your question

Effectivement, dans le cas de raccordement simple, les EP de l'EPG renseignent directement le LEAF et le port. Dois-je en déduire que le changement de nommage est transparent pour ce cas de figure?

 

Par contre pour les IPG de type vpc ou PC, il faut renseigner l'IPG en EP dans l'EPG....

Donc le changement de nom doit être repris dans l'ensemble des EPG qui utilisait l'ancien IPG?

 

Merci pour vos réponses qui me permettent d'y voir clair.

 

Transparent non car si vous changez l'IPG cela peut avoir un impact même si minime.
Vous pouvez tout préparer (IPG par exemple) en avance et le jour J les rattacher aux interfaces.
Pour les PC et VPC, c'est à peu près la même chose, mais tout dépend ce que vous souhaitez changer. L'impact peut être réduit au minimum en scriptant, mais il faut connaitre les changements à faire au préalable et voir leurs impacts. Par exemple, si vous changez la vitesse d'un port mais que de l'autre côté, il est en auto ou configuré avec une autre vitesse, cela peut impacter le port qui ne montera pas...

Pouvez vous donner un exemple des changements que vous souhaitez faire?


Thanks
Francesco
PS: Please don't forget to rate and select as validated answer if this answered your question

Actuellement, je souhaite uniquement changer le nom des objets.

 

Donc il y a 2 cas de figure:

-changement de nom d'IPG sans PC/vPC : préparer la configuration en avance et changer la liaison IP -> IPG

 

-changement de nom d'IPG avec PC/vPC:

préparer la configuration en avance et changer la liaison IP -> IPG cependant il faudra également mettre à jour les EPG qui utilisait cet IPG. 

 

C'est bien cela?

 

désolé mais vous parlez du même changement avec et sans VPC, je ne comprends pas.
IPG peut être créé en double et quand vous serez prêt il faudra l'appliquer sur le bon port dans l'interface profile. Pour un PC et VPC, le nom du IPG est celui à attacher à l'EPG donc il faudra le faire en même temps que l'assignation à l'interface profile et supprimer l'ancienne.

Thanks
Francesco
PS: Please don't forget to rate and select as validated answer if this answered your question