Le Cloud est présent dans beaucoup d’infrastructures IT. Utilisé à 100% ou seulement de manière partielle pour certains services, il offre une flexibilité inégalée, aussi bien dans son financement que dans les besoins techniques disponibles et les évolutions possibles.
Mais alors, si le cloud est merveilleux, pourquoi les principaux fournisseurs de cloud cherchent aussi à proposer des solutions dites hybrides (on-premise + cloud) ?
Peut-être qu’il en faut pour tous les goûts 😁?
D’abord, faisons un rapides tour de plusieurs concepts avant tester ensemble une solution hybride via un exercice que propose justement Microsoft.
Qu’est-ce que le cloud hybride ?
Le cloud hybride combine généralement deux types de cloud : public et privé. Par privé est souvent entendu local.
Un cloud hybride est un peu comme une voiture hybride. Les voitures hybrides combinent deux technologies totalement distinctes : un moteur qui brûle de l’essence et un autre qui consomme de l’énergie électrique. Chaque technologie fonctionne de manière totalement différente, et chacune a ses avantages et ses inconvénients. Cependant, lorsque les deux sont combinées efficacement, le résultat est une voiture plus performante que la plupart des voitures uniquement à essence et pourtant plus puissante que la plupart des voitures entièrement électriques. De même, les cloud hybrides combinent les avantages de plusieurs types d’environnements cloud pour une efficacité et une fonctionnalité accrue.
Oracle
Qu’est-ce qu’Azure Stack HCI ?
Azure Stack HCI est une solution développée par Microsoft pour justement aider les entreprises à exploiter les avantages d’un environnement hybride, expliqué précédemment, via les interfaces connues d’Azure et de Windows Admin Center.
Il s’agit d’une solution d’infrastructure hyperconvergée basée sur les technologies Azure de Microsoft. Elle permet de :
- d’intégrer de façon transparente leur environnement
- De créer une expérience hybride cohérente à Azure.
- D’apporter toujours plus de scalabilité et flexibilité.
- De conserver un haut niveau de sécurité et de conformité.
- De profiter d’une passerelle de modernisation de l’infrastructure existante.
Existe-t-il du matériel certifié Azure Stack HCI ?
Microsoft met à disposition un site web dédié à Azure Stack HCI dont voici le lien. Vous pourrez y planifier votre solution en fonction des charges de travail prévues :
Peut-on tester Azure Stack HCI sans forcément acheter du matériel ?
Cela est possible, grâce à … Azure ! En effet, les fournisseurs de cloud autorisent pratiquement toutes les créations de ressources, donc on peut simuler un Azure Stack HCI dans le cloud de Microsoft.
Cette approche permet donc de ne pas dépenser de grandes sommes d’argent pour tester la solution Azure Stack HCI avant de se laisser convaincre. Pour cela je vous laisse lire les différentes étapes ci-dessous pour y parvenir :
- Etape I – Déploiement de l’environnement virtuel sur Azure
- Etape II – Enregistrement du Cluster Azure Stack HCI sur Azure
- Etape III – Configuration d’Azure Ressource Bridge
- Etape IV – Création de la VM sur le Stack
La version originale de l’exercice conçu par Microsoft est également disponible en anglais sur leur page GitHub juste ici.
Rappel des prérequis :
Pour réaliser cet exercice sur Azure Stack HCI, il vous faudra disposer de :
- Un tenant Microsoft
- Une souscription Azure valide
Afin de tester Azure Stack HCI, nous allons avoir besoin créer un environnement virtuel, dans lequel nous allons simuler la présence de nœuds HCI, mais aussi de Windows Admin Center.
Dans Azure, il est en effet possible d’imbriquer de la virtualisation. Cela demande malgré tout quelques exigences, comme le SKU de la machine virtuelle Hyper-V, mais aussi sa génération.
Important : Attention à ne pas laisser tourner l’environnement de démonstration Azure Stack HCI tourner un peu trop longtemps. Beaucoup de ressources Azure sont créées et le compteur des € défile assez vite 🤑.
Etape I – Déploiement de l’environnement virtuel sur Azure :
Commencez par cliquez sur le lien ci-dessous afin déployer les ressources nécessaires sur votre souscription Azure :
Renseignez les champs suivants, puis lancez la validation Azure :
Une fois la validation Azure réussie, cliquez-ici pour commencer la création :
Le déploiement dure environ 30 minutes, attendez que celui-ci se termine, puis cliquez-ici :
Constatez la présence de nombreuses ressources Azure créées pour cette démonstration, puis cliquez sur la machine virtuelle présente, appelée AzSHCIHost001 :
Rendez-vous dans le menu Bastion, puis cliquez-ici pour en déployer un :
Attendez environ 5 minutes que la création d’Azure Bastion se termine :
Modifier la règle NSG suivante créée dans le template Microsoft afin de débloquer l’accès RDP à votre machine Hyper-V :
Retournez sur votre machine virtuelle Hyper-V, puis lancez une session Bastion avec les identifiants renseignés lors de la création du template :
Sur la session RDP ouverte via Azure Bastion, cliquez-ici pour modifier le script de déploiement d’Azure Stack HCI :
Rendez-vous sur la ligne suivante pour modifier la ligne comme ceci :
AVANT :
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
APRES :
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-WebRequest -Uri 'https://chocolatey.org/install.ps1' -OutFile 'install.ps1'; .\install.ps1 -ChocolateyDownloadUrl "https://community.chocolatey.org/api/v2/package/chocolatey/1.4.0"
Vous avez aussi la possibilité de récupérer celui-ci en version corrigée sur mon GitHub
Lancez le script, puis faites preuve d’un petit peu de patience, car celui dure environ … 2 heures 🤣
Si aucune erreur ne s’est manifestée durant le traitement, vous devriez apercevoir le message de succès suivant :
Si le script ne s’est pas correctement terminé, la commande PowerShell suivante permet d’effacer les ressources crées dans Hyper-V afin de pouvoir recommencer le lancement du script :
.\New-AzSHCISandbox.ps1 -Delete $true
Un tour rapide dans la console Hyper-V montre l’apparition de 3 machines virtuelles :
- AzSHOST1 : nœud Azure Stack HCI 1
- AzSHOST2 : nœud Azure Stack HCI 2
- AzSMGMT : Console de management pour Windows Admin Center
Sur le bureau de votre machine virtuelle Hyper-V, une icône de type RDP vient de faire son apparition :
Notre environnement fictif de départ est maintenant terminé. Nous avons besoin d’enregistrer notre cluster Azure Stack HCI sur le portail Azure afin de commencer la facturation mais aussi tester le déploiement de services depuis le portail Azure.
Etape II – Enregistrement du Cluster Azure Stack HCI sur Azure :
Pour cela, cliquez sur l’icône RDP pour ouvrir une session sur la VM WAC puis renseignez les identifiants suivants (mot de passe : Password01) :
Notez la présence d’un domaine Active Directory nommé Contoso. Attendez quelques minutes que la session se charge entièrement :
Sur le bureau, ouvrez le raccourci menant à la page suivante et ayant un icône Google Chrome :
https://admincenter.contoso.com/
Renseignez les identifiants suivants (mot de passe : Password01) :
Attendez quelques secondes que se charge la console de Windows Admin Center :
Fermez la fenêtre de notification de Windows Admin Center :
Attendez environ 10 minutes que tous les modules présents dans Windows Admin Center soient bien mis à jour :
Une fois les mises à jour effectuées, les notifications suivantes devraient apparaître dans WAC :
Afin de pouvoir piloter votre Cluster de serveurs Azure Stack HCI, il est nécessaire de le rajouter dans la console WAC pour terminer la configuration.
Cliquez-ici pour ajouter votre cluster Azure Stack HCI à WAC :
Saisissez le nom AzStackCluster, attendez quelques secondes que WAC retrouve ce dernier, puis cliquez sur Ajouter :
Une fois l’ajout réussi, vérifiez la liste des connexions existantes avec WAC, puis cliquez sur votre cluster de serveurs :
Rendez-vous dans le menu appelé SDN Infrastructure :
Renseignez les identifiants suivants (mot de passe : Password01), puis cochez la case suivante :
Renseignez le contrôleur de réseau suivant, puis cliquez sur Continuer :
Constatez l’apparition des nouveaux menus suivants sous la section Réseau :
Afin de pouvoir utiliser pleinement le portail Azure pour piloter notre cluster Azure Stack HCI, il est nécessaire de passer par quelques étapes d’enregistrement.
Pour cela, rendez-vous toujours depuis WAC dans la section Azure Arc, puis cliquez sur le bouton suivant :
Cliquez-ici pour démarrer l’enregistrement de notre cluster sur Azure :
Utilisez le code Azure pour valider l’authentification Azure AD avec un compte disposant de suffisamment de droits sur la souscription Azure :
Une fois l’authentification Azure AD réussie, vous devriez recevoir l’information suivante, puis cliquez sur Authentifier :
Acceptez la demande de permission de Windows Admin Center avec le consentement global de l’organisation :
Vérifiez la disparition du message sur la page Azure Arc de votre WAC :
Avant d’aller plus loin, retournez sur votre portail Azure afin d’activer le fournisseur de ressources suivant sur votre souscription Azure :
Attendez environ deux minutes que le statut soit correctement changé sur le fournisseur de ressources :
Retournez sur Windows Admin Center, puis cliquez-ici :
Cliquez-ici pour démarrer le processus avec la connexion Azure Arc précédemment créée :
Renseignez les informations qui vous conviennent, puis cliquez sur Enregistrer :
La notification suivante devrait alors apparaître dans WAC :
Attendez environ 5 minutes pour confirmer le bon enregistrement :
Retournez sur le portail Azure afin de constater la présence de votre Azure Stack HCI, puis cliquez dessus :
Naviguez dans les différents menus pour mieux comprendre les informations remontées sur Azure.
Nous allons avoir maintenant besoin d’un autre composant, appelé Azure Resource Bridge. Si l’on souhaite gérer et déployer des ressources sur son cluster depuis Azure, celui-ci est indispensable.
Etape III – Configuration d’Azure Ressource Bridge :
Le pont de ressources Arc est une machine virtuelle empaquetée qui héberge un cluster Kubernetes de gestion nécessitant une gestion minimale des utilisateurs. La machine virtuelle est déployée sur l’infrastructure locale et une ressource ARM du pont de ressources Arc est créée dans Azure. Les deux ressources sont ensuite connectées, ce qui permet la gestion et l’utilisation en libre-service des machines virtuelles à partir d’Azure
Microsoft Learn
Ensuite, cliquez ici pour installer un second module, appelé Azure Resource Bridge :
Attention : certaines étapes sont à faire sur les 2 nœuds présents dans votre cluster Azure Stack HCI
Cliquez sur le lien suivant pour ouvrir le guide d’installation d’Arc Resource Bridge :
Retournez sur votre serveur Hyper-V, puis dans la console Hyper-V, cliquez sur le premier nœud de votre cluster Azure Stack HCI afin d’ouvrir une session :
Renseignez les identifiants suivants (mot de passe : Password01) :
Effectuez le choix 15 pour ouvrir une console PowerShell :
Profitez-en pour ouvrir Notepad depuis PowerShell afin de faciliter les copier / coller :
Saisissez la commande suivante pour installer les premiers modules nécessaires :
Install-PackageProvider -Name NuGet -Force
Install-Module -Name PowershellGet -Force -Confirm:$false -SkipPublisherCheck
Continuez avec celles-ci pour installer d’autres modules :
Install-Module -Name Moc -Repository PSGallery -AcceptLicense -Force
Initialize-MocNode
Install-Module -Name ArcHci -Force -Confirm:$false -SkipPublisherCheck -AcceptLicense
Fermez la fenêtre PowerShell afin de revenir au menu principal, puis entrez le choix 13 pour redémarrer votre premier nœud :
Retournez sur votre serveur Hyper-V, puis dans la console Hyper-V, cliquez sur le second nœud de votre cluster Azure Stack HCI afin d’ouvrir une session :
Renseignez les identifiants suivants (mot de passe : Password01) :
Effectuez le choix 15 pour ouvrir une console PowerShell :
Profitez-en pour également ouvrir Notepad depuis PowerShell afin de faciliter les copier / coller :
Saisissez la commande suivante pour installer les même premiers modules nécessaires :
Install-PackageProvider -Name NuGet -Force
Install-Module -Name PowershellGet -Force -Confirm:$false -SkipPublisherCheck
Continuez avec celles-ci pour installer les mêmes autres modules :
Install-Module -Name Moc -Repository PSGallery -AcceptLicense -Force
Initialize-MocNode
Install-Module -Name ArcHci -Force -Confirm:$false -SkipPublisherCheck -AcceptLicense
Fermez la fenêtre PowerShell afin de revenir au menu principal, puis entrez le choix 13 pour redémarrer votre second nœud :
Retournez sur votre serveur Hyper-V, puis dans la console Hyper-V, cliquez à nouveau sur le premier nœud de votre cluster Azure Stack HCI afin d’ouvrir une session :
Renseignez à nouveau les identifiants suivants (mot de passe : Password01) :
Effectuez à nouveau le choix 15 pour rouvrir une console PowerShell :
Saisissez la commande suivante pour installer le module CLI d’Azure, uniquement nécessaire sur le premier nœud :
$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; Remove-Item .\AzureCLI.msi
Fermez la fenêtre PowerShell afin de revenir au menu principal, puis entrez le choix 13 pour redémarrer à nouveau votre premier nœud :
Retournez sur votre serveur Hyper-V, puis dans la console Hyper-V, cliquez à nouveau sur le premier nœud de votre cluster Azure Stack HCI afin d’ouvrir une session :
Renseignez à nouveau les identifiants suivants (mot de passe : Password01) :
Effectuez à nouveau le choix 15 pour rouvrir une console PowerShell :
Rouvrez à nouveau Notepad depuis PowerShell afin de faciliter les copier / coller.
Préparer les variables suivantes puis lancez-les :
$VswitchName="sdnSwitch"
$ControlPlaneIP="192.168.1.200"
$csv_path="C:\ClusterStorage\S2D_vDISK1\"
$VMIP_1="192.168.1.201"
$VMIP_2="192.168.1.202"
$DNSServers="192.168.1.254"
$IPAddressPrefix="192.168.1.0/24"
$Gateway="192.168.1.1"
$CloudServiceIP="192.168.1.203"
Lancez le script suivant pour préparer la configuration d’Azure Resource Bridge :
mkdir $csv_path\ResourceBridge
Set-MocConfig -workingDir $csv_path\ResourceBridge -imageDir $csv_path\imageStore -skipHostLimitChecks -cloudConfigLocation $csv_path\cloudStore -catalog aks-hci-stable-catalogs-ext -ring stable -CloudServiceIP $cloudServiceIP -createAutoConfigContainers $false
Install-Moc
Retirer les extensions du module PowerShell Az si jamais elles existaient déjà :
az extension remove --name arcappliance
az extension remove --name k8s-extension
az extension remove --name customlocation
az extension remove --name azurestackhci
Installer à nouveaux ces mêmes extensions Az :
az extension add --upgrade --name arcappliance
az extension add --upgrade --name k8s-extension
az extension add --upgrade --name customlocation
az extension add --upgrade --name azurestackhci
Renseignez les informations sur votre environnement Azure :
$subscription="d9b60b07-0ae9-4de3-bfdd-062268de474a"
$resource_group="azurestack-rg"
$location="westeurope"
Continuez avec le script suivant :
az login --use-device-code
az account set --subscription $subscription
az provider register --namespace Microsoft.Kubernetes --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.ResourceConnector --wait
az provider register --namespace Microsoft.AzureStackHCI --wait
az provider register --namespace Microsoft.HybridConnectivity --wait
$hciClusterId= (Get-AzureStackHci).AzureResourceUri
$resource_name= ((Get-AzureStackHci).AzureResourceName) + "-arcbridge"
$customloc_name= ((Get-AzureStackHci).AzureResourceName) + "-CL"
Saisissez le code Azure donnée dans le log des commandes Power Shell :
Utilisez un compte disposant de suffisamment de droits sur la souscription Azure :
Lancez le script suivant pour commencer la configuration K8s :
New-ArcHciConfigFiles -subscriptionID $subscription -location $location -resourceGroup $resource_group -resourceName $resource_name -workDirectory $csv_path\ResourceBridge -controlPlaneIP $controlPlaneIP -vipPoolStart $controlPlaneIP -vipPoolEnd $controlPlaneIP -k8snodeippoolstart $VMIP_1 -k8snodeippoolend $VMIP_2 -gateway $Gateway -dnsservers $DNSServers -ipaddressprefix $IPAddressPrefix -vswitchName $vswitchName
Continuez avec le fichier YAML pour la configuration K8s :
az arcappliance validate hci --config-file $csv_path\ResourceBridge\hci-appliance.yaml
Préparez votre environnement K8s avec la préparation au déploiement de pods :
az arcappliance prepare hci --config-file $csv_path\ResourceBridge\hci-appliance.yaml
Déployez le contenaire K8s dédié à la communication du module Azure Arc Bridge :
az arcappliance deploy hci --config-file $csv_path\ResourceBridge\hci-appliance.yaml --outfile "$csv_path\ResourceBridge\kubeconfig"
Continuez avec le script suivant :
az arcappliance create hci --config-file $csv_path\ResourceBridge\hci-appliance.yaml --kubeconfig "$csv_path\ResourceBridge\kubeconfig"
Vérifiez que les deux statuts soient bien sur Succeded et Connected, retentez quelques minutes plus tard si nécessaire :
az arcappliance show --resource-group $resource_group --name $resource_name --query '[provisioningState, status]'
Continuez avec le script suivant :
az k8s-extension create --cluster-type appliances --cluster-name $resource_name --resource-group $resource_group --name hci-vmoperator --extension-type Microsoft.AZStackHCI.Operator --scope cluster --release-namespace helm-operator2 --configuration-settings Microsoft.CustomLocation.ServiceAccount=hci-vmoperator --config-protected-file $csv_path\ResourceBridge\hci-config.json --configuration-settings HCIClusterID=$hciClusterId --auto-upgrade true
Vérifiez que le statut soit bien sur Succeded, retentez quelques minutes plus tard si nécessaire :
az k8s-extension show --cluster-type appliances --cluster-name $resource_name --resource-group $resource_group --name hci-vmoperator --out table --query '[provisioningState]'
Terminez par la commande de création d’un emplacement personnalisé sur Azure. Ce dernier va nous être utile pour indiquer lors de la création de ressources depuis le portail Azure que celle-ci doit-être créée sur Azure Stack HCI :
az customlocation create --resource-group $resource_group --name paris --cluster-extension-ids "/subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.ResourceConnector/appliances/$resource_name/providers/Microsoft.KubernetesConfiguration/extensions/hci-vmoperator" --namespace hci-vmoperator --host-resource-id "/subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.ResourceConnector/appliances/$resource_name" --location $location
Constatez la bonne création de ce dernier depuis le portail Azure :
Retournez sur la page Azure de votre cluster Azure Stack HCI afin de constater l’avancement des prérequis :
Azure Resource Bridge est maintenant correctement installé. Nous allons enfin pouvoir créer notre machine virtuelle depuis le portail Azure, et déployée directement sur un des 2 nœuds de notre cluster.
Etape IV – Création de la VM sur le Stack :
Cliquez comme ceci pour transférer vers votre cluster une image de VM provenant de la marketplace Microsoft d’Azure :
Renseignez les champs comme ceci, puis lancez la validation :
Une fois la validation réussie, cliquez-ici pour commencer le transfert de données de l’image de Windows Server vers votre cluster :
Ce processus est assez long, comptez environ une bonne heure avant que le transfert de l’image ne se termine :
En cas d’erreur lors du transfert, relancez celui-ci afin d’avoir une image complète sur votre cluster :
De retour sur votre premier nœud de votre cluster Azure Stack HCI, lancez la commande suivante pour initialiser le réseau virtuel :
$vnetName="vnetwork-paris3"
New-MocGroup -name "Default_Group" -location "MocLocation"
New-MocVirtualNetwork -name "$vnetName" -group "Default_Group" -tags @{'VSwitch-Name' = "$vswitchName"}
az azurestackhci virtualnetwork create --subscription $subscription --resource-group $resource_group --extended-location name="/subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.ExtendedLocation/customLocations/paris" type="CustomLocation" --location $Location --network-type "Transparent" --name $vnetName
Retournez sur le portail Azure afin de constater sa bonne création :
Cliquez ensuite ici pour créer votre première VM sur votre Stack HCI :
Renseignez les informations de base :
Définissez sa taille et son identifiant local, puis cliquez sur Suivant :
Ajoutez si besoin des disques de données, puis cliquez sur Suivant :
Ajoutez une carte réseau :
Utilisez le réseau virtuel créé précédemment :
Cliquez-ici pour lancer la validation :
Une fois la validation Azure réussie, cliquez sur Créer :
Le déploiement des ressources est en cours sur votre cluster, comptez environ 30 minutes pour que celui-ci se termine :
Au bout de quelques minutes Il est aussi possible de suivre la création de la VM depuis la console WAC :
Une fois la création de la machine virtuelle terminée, cliquez-ici pour y accéder :
Prenez le temps de vérifier la configuration de celle-ci :
Retournez sur la console WAC afin d’initialiser une connection directe :
Renseignez les identifiant votre compte admin chez Contoso (mot de passe : Password01) :
Cliquez-ici pour déverrouiller la session distante :
Renseignez les identifiants indiqués lors de la création de la VM depuis le portail Azure :
Vous voilà connecté sur votre VM hébergée sur un stack HCI virtuel, hosté sur un serveur Hyper-V, lui-même hosté sur Azure 😁😎💪 :
Conclusion
Après quelques jours de tests, l’intégration des outils Azure et WAC pour piloter le Cluster un véritable tour de force de Microsoft ! Nul doute que certains projets ou infrastructures ne peuvent être hébergées sur le Cloud pour un grand nombre de raisons. C’est pour cela que Microsoft et les autres fournisseurs de Cloud se doivent de proposer des solutions « à mi-chemin ».
Il faudra enfin voir ce que ça donne dans la version publique généralisée car encore beaucoup de scripts à faire dont beaucoup encore en préversion.