Question Nommage via boucle de serveurs

Plus d'informations
il y a 3 ans 5 mois - il y a 3 ans 5 mois #30104 par Olivier
Bonjour,

Je recherche à définir le nom de différents serveurs que je dois déployer.

Pour cela, je voudrais déployer par exemple 8 serveurs dont :
2 srv -> esx1
3 srv -> esx2
3 srv -> esx3

Les variables seraient :
ESX1 = "IP1"
ESX2 = "IP2"
ESX3 = "IP3"

Nbr_VM_ESX1 = "2"
Nbr_VM_ESX2 = "3"
Nbr_VM_ESX3 = "3"

Prefix_Name = "SRV-0"


Comment faire pour avoir le résultat résultat suivant au niveau du nom de la VM (

ESX1 = SRV01
ESX1 = SRV02
ESX2 = SRV03
ESX2 = SRV04
ESX2 = SRV05
ESX3 = SRV06
ESX3 = SRV07
ESX3 = SRV08

Ensuite, je vais utiliser le résultat de ces variables dans une boucle pour générer automatiquement mes VM via la commande
New-VM -Name $VM_Name -Template $VM_Template -VMHost $ESX1 -Datastore $DataStore -ResourcePool $vCenter_Cluster -Location $DataStore_Folder -OSCustomizationSpec $VM_CustomeSpec

Je sais pas si j'ai été clair dans ma demande mais suis prêt à donner plus de détails si nécessaire.

Merci d'avance pour vos prochaines lumières

Olivier

Pour info, j'ai déjà un bout de code qui ressemble à cela :
1..5 | Foreach {
New-vm -vmhost esx04.vmpros.local -Name FS-SVR$_ -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template
}
Le problème est que cela me nomme pour chaques ESX les serveur à partir de "0" et non pas en suivant le numéro du dernier serveur déployé sur le précédent ESX ...
Dernière édition: il y a 3 ans 5 mois par Olivier.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30106 par Laurent Dardenne
Salut

Olivier écrit: Je sais pas si j'ai été clair dans ma demande mais suis prêt à donner plus de détails si nécessaire.

Un ou + exemples du résultat attendu serait utile. J'ai un peu de mal à associer les infos que tu as donné avec la ligne de commande cité.

Olivier écrit: Le problème est que cela me nomme pour chaque ESX les serveur à partir de "0" et non pas en suivant le numéro du dernier serveur déployé sur le précédent ESX ...

Il faut formater la chaîne, c'est à dire dans ton cas le numéro reçu via le pipeline :
"{0:00}" -f 1
#01
"{0:00}" -f 10
#10
"{0:000}" -f 10
#010
Ici aussi de donner le résultat attendu serait préférable.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30107 par Olivier
Réponse de Olivier sur le sujet Nommage via boucle de serveurs
Désolé, j'ai peine à m'exprimer des fois :-|

ça devrait ressembler à ça :
$Count = "8"
$Prefix = "VM-0"

$Test = @{
"VM-01" = "ESX11";
"VM-02" = "ESX11";
"VM-03" = "ESX12";
"VM-04" = "ESX12";
"VM-05" = "ESX12";
"VM-06" = "ESX13";
"VM-07" = "ESX13";
"VM-08" = "ESX13"}

1..$Count | % {$VM_Name = "$Prefix{0:D1}" -f $_} | foreach
{
Write-Host "La VM $VM_Name sera déployée sur l'ESX "$Test.value""

}

Mais en version qui fonctionne et peu-être sans devoir faire de tableau associatif...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30108 par Olivier
Réponse de Olivier sur le sujet Nommage via boucle de serveurs
Ce qui est à définir manuellement, c'est combien de VM je veux déployer sur tel ESX.

Je ferais les modifications du script pour modifier que le nombre de VM par ESX.

Là, j'arrive au bout de presque tout mon projet et je bloque juste sur ça :-|

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30110 par Laurent Dardenne

Olivier écrit: ... et peut-être sans devoir faire de tableau associatif

Les hashtables rendent de grand service en Powershell, simple à construire, facile à maintenir.
Une solution verbeuse ( à vérifier) :
$Todo=[ordered]@{
 esx1=@{VmCount=2}
 esx2=@{VmCount=3}
 esx3=@{VmCount=3}
}

$VmPrefix = 'VM-'
#débute à 1
$Postfix=1



Foreach($Current in $Todo.GetEnumerator()) 
{
    $ExsName=$Current.Key
    $CountOfVM=$Current.Value.VmCount

    Write-host "Traite '$($Current.Value.VmCount)' vm sur l'esx : $ExsName"
    
    for ($i=1; $i -le $CountOfVM; $i++)
    {
      $VM_Name = "$VmPrefix{0:00}" -f $Postfix;
      Write-Host "`tLa VM $VM_Name sera déployée sur l'ESX '$ExsName'"
      $Postfix++
    }
}

# Traite '2' vm sur l'esx : esx1
#         La VM VM-01 sera déployée sur l'ESX 'esx1'
#         La VM VM-02 sera déployée sur l'ESX 'esx1'
# Traite '3' vm sur l'esx : esx2
#         La VM VM-03 sera déployée sur l'ESX 'esx2'
#         La VM VM-04 sera déployée sur l'ESX 'esx2'
#         La VM VM-05 sera déployée sur l'ESX 'esx2'
# Traite '3' vm sur l'esx : esx3
#         La VM VM-06 sera déployée sur l'ESX 'esx3'
#         La VM VM-07 sera déployée sur l'ESX 'esx3'
#         La VM VM-08 sera déployée sur l'ESX 'esx3'
Ensuite reste à savoir si en cas d'erreur,lors de l'appel au cmdlet de création d'une VM, le numéro de la prochaine VM est modifié ou pas.

Tutoriels PowerShell
Les utilisateur(s) suivant ont remercié: Olivier

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30114 par Olivier
Réponse de Olivier sur le sujet Nommage via boucle de serveurs
Un immense merci pour ton aide.

Excellente journée !

Olivier

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.103 secondes
Propulsé par Kunena