Mise à jour des CustomFields
Les CustomFields sont des champs personnalisés au niveau de vCenter qui permettent de définir des entrées supplémentaires par type d’objet (Global | Virtual Machine | Host).
Le menu pour accéder aux Customfields se trouve dans la console du vCenter en faisant Administration > Custom Fields
Dans notre cas, nous avons un champ personnalisé **IP**
qui est remplie automatiquement lors du déploiement de la machine virtuelle avec l’adresse IP de la machine virtuelle (logique ^^).
Nous avons eu besoin à un certains moment de changer certaines adresses IP au niveau des machines virtuelles, donc le CustomField n’était plus à jour. Comme d’habitude, pour faire des opérations de masse, la méthode dite du cliquou-cliquou
(très appréciée de notre ami Reichstag ^^) ou le PowerCLI.
Voici donc un petit script (ou plutôt OneLiner) PowerCLI qui montre une mise à jour massive de CustomField :
ForEach ($vm in (Get-View -ViewType VirtualMachine) { $vm | Select @{N="name";E={ $_.Name }}, @{N="ipField";E={($vm.customvalue | Where { $_.Key -eq (($vm.AvailableField | Where { $_.Name -eq "IP" }).Key)}).Value }},@{N="ipGuest";E={ $_.guest.ipAddress }} | ?{ ($_.ipField -ne $_.ipGuest) -And ($_.ipGuest -ne "0.0.0.0") -And ($_.ipGuest -ne $null) -And ($_.ipGuest -notmatch "^169.254.") } | %{$vm.setCustomValue("IP",$_.ipGuest)}}
Et au final, un petit script qui fait le boulot qu’on lui demande :