Outils avancés
Objectif
Ce guide vous présente l'ensemble des outils d'administration, autres que les interfaces web Prism Central et Prim Element, que sont :
- ncli accessible sur un poste local, en SSH sur Prism Central et Prism Element.
- acli utilisable en SSH sur les CVM.
- Cmdlets pour Powershell.
- L'interface REST API à partir de l'URL de Prism Central ou Prism Element.
Warning
OVHcloud vous met à disposition des services dont la configuration, la gestion et la responsabilité vous incombent. Il vous appartient donc de ce fait d’en assurer le bon fonctionnement.
Ce guide a pour but de vous accompagner au mieux sur des tâches courantes. Néanmoins, nous vous recommandons de faire appel à l'équipe Professional Services OVHcloud ou à un prestataire spécialisé si vous éprouvez des difficultés ou des doutes concernant l’administration, l’utilisation ou la mise en place d’un service sur un serveur.
Prérequis
- Disposer d'un cluster Nutanix dans votre compte OVHcloud.
- Être connecté à votre espace client OVHcloud.
- Pour l'interface REST API, vous devez disposer d'une machine virtuelle sous Linux avec un éditeur de texte, afin d'exécuter les commandes curl et jq.
Info
Certaines commandes ne sont utilisables que si vous avez accès à Prism Central et Prism Element en SSH.
Présentation des outils
Commande ncli
ncli se trouve sur Prism Central et sur toutes les CVM au travers d'une connexion SSH. Vous pouvez aussi l'installer en local sur un poste Windows ou Linux à partir de l'interface web Prism Central.
ncli permet de gérer des aspects du cluster Nutanix comme le stockage, les tâches et certaines actions sur les machines virtuelles à l'intérieur du cluster.
Outil acli
La commande acli est uniquement disponible sur les CVM. Elle est utilisée pour la gestion des hôtes des machines virtuelles, des réseaux et des snapshots.
Extensions Powershell
Powershell est un langage de script qui a été développé par Microsoft et qui se base sur Net.Framework.
Il fonctionne dans les environnements Microsoft, Linux et MacOS mais il est principalement utilisé dans un environnement Microsoft.
Tous les exemples cités ci-dessous ont été exécutés uniquement sur cet environnement.
Nutanix a rajouté des extensions qui permettent l'administration du cluster et des VM en utilisant des scripts Powershell.
Interface d'administration REST API
Au travers de l'URL de Prism central ou Prism Element, vous pouvez utiliser une API nommée REST API soit en ligne de commande avec l'outil curl, soit au travers d'un autre langage de programmation comme python ou php, voire même avec les commandes standard de Powershell.
Pour plus de détails sur ces commandes, reportez-vous à la section « Aller plus loin » de ce guide.
En pratique
Exemples d'utilisation de ncli
Connectez-vous en SSH avec un client SSH sur une des CVM :
La commande ncli s'utilise suivie d'options, comme ici ncli entité action option1="valeur" option2="valeur2 mais elle est aussi utilisable de manière interactive en exécutant uniquement ncli.
Création d'un Storage Container nommé newcontainer en mode interactif
ncli
<ncli>
<ncli> ctr create name="NewContainer" sp-name="default-storage-pool-10728992352041"
Id : 0005ce15-3f3c-a8ce-3802-043f72bf18a6::2900908
Uuid : c3db4020-2a98-4636-b9eb-8ebf10a1b351
Name : Moncontainer
Storage Pool Id : 0005ce15-3f3c-a8ce-3802-043f72bf18a6::9
Storage Pool Uuid : 111d4e91-10df-4f6c-a774-b79b53077131
Free Space (Logical) : 37.69 TiB (41,445,056,716,652 bytes)
Used Space (Logical) : 0 bytes
Allowed Max Capacity : 37.69 TiB (41,445,056,716,652 bytes)
Used by other Containers : 260.86 GiB (280,096,141,312 bytes)
Explicit Reservation : 0 bytes
Thick Provisioned : 0 bytes
Replication Factor : 2
Oplog Replication Factor : 2
NFS Whitelist Inherited : true
Container NFS Whitelist : 192.168.0.77/255.255.255.255
VStore Name(s) : Moncontainer
Random I/O Pri Order : SSD-PCIe, SSD-SATA, DAS-SATA
Sequential I/O Pri Order : SSD-PCIe, SSD-SATA, DAS-SATA
Compression : off
Fingerprint On Write : off
On-Disk Dedup : off
Erasure Code : off
Software Encryption : off
<ncli>
Suppression du Storage Container
Lancez la commande ci-dessous pour supprimer sans confirmation le Storage Container :
ncli ctr remove name="Newcontainer"
Exemples d'utilisation de la commande acli
Connectez-vous en SSH avec un client SSH sur une des CVM :
ssh nutanix@oneofcvmipaddress
La commande acli s'utilise suivie d'options, comme ici acli entities.action for-which option1="value1" option2="value2" mais elle est aussi utilisable de manière interactive en uniquement acli depuis une CVM
Si l'on utilise acli suivie d'une suite de commandes, une demande de confirmation sera systématiquement proposée si un choix se présente.
Pour automatiser la tâche et faire un choix par défaut, utilisez plutôt cette syntaxe acli -y entities.action for-which option1="value" option2="value2"
Création d'un snapshot en mode interactif
Executez cette suite de commandes à partir d'une des CVM :
acli
<acropolis> vm.snapshot_create VM-TEST snapshot_name_list="Example"
<acropolis> exit
Affichage et suppression d'un snapshot sans passer par le mode interactif
Saisissez ces commandes pour afficher et supprimer un snapshot avec une demande de confirmation :
# Snapshot listing
acli snapshot.list
Snapshot Name Snapshot ID Creation Time VM Name
Example2 fce5483f-5a9d-4b76-9ad7-48685fb4a638 Wednesday March 23 2022, 09:27:16 AM VM-TEST
# Snapshot delete
acli snapshot.delete Example2
Delete 1 snapshots? (yes/no)
Delete 1 snapshots? (yes/no) yes
Example2: pending
Example2: complete
Utilisez cette syntaxe sans demande de confirmation lors de la suppression du snapshot :
# Snapshot delete
acli -y snapshot.delete Example2
Example2: pending
Example2: complete
Configuration de Powershell sous Windows et utilisation pratique
Installation de Powershell 7 et des modules pour Nutanix
Il est nécessaire d'installer la dernière version de Powershell à partir ce lien Site pour installation Powershell
Téléchargez et installez le programme d'installation qui correspond à votre version de Windows, en 32 bits ou plus généralement en 64 bits.
Lancez l'invite de Commande Powershell 7 en mode administrateur.
PS C:\Users\Administrator> Install-Module Nutanix.Cli
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):A
PS C:\Users\Administrator> Install-module Nutanix.Prism.PS.Cmds
PS C:\Users\Administrator> Install-module Nutanix.Prism.Common
Exemples de commandes avec Powershell pour Nutanix
Importez les modules pour Powershell depuis la console PowerShell 7 :
PS C:\Users\Administrator> Import-Module Nutanix.Cli -Prefix NTNX
PS C:\Users\Administrator> Import-Module Nutanix.Prism.Common -Prefix NTNX
PS C:\Users\Administrator> Import-Module Nutanix.Prism.PS.Cmds -Prefix NTNX
Connectez-vous à Prism Central en executant la commande ci-dessous en modifiant ces éléments :
< PRISM CENTRAL IP > remplacez cet élément par l'adresse IP ou le FQDN de Prism Central
< PRISM CENTRAL USERNAME > remplacez cet élément par le nom de l'utilisateur de Prism Central
PS C:\Users\Administrator> Connect-NTNXPrismCentral <PRISM CENTRAL IP> -UserName < PRISM CENTRAL USERNAME > -AcceptInvalidSSLCerts
Password: *****************
[Warning]: This Prism Central version[pc.2022.1] might not be compatible.This might cause some cmdlets to not function correctly.Please consider upgrading to pc.2020.7 or later Do you still want to continue [Y/N]?:Y
Server : ipprismcentral
Version : pc.2022.1
UserName : < PRISM CENTRAL IP >
AcceptInvalidSSLCerts : True
ForcedConnection : False
Exécutez la commande ci-dessous pour afficher la liste de toutes les machines virtuelles :
PS C:\Users\Administrator> Get-NTNXvm
pcHostName : 192.168.0.222
vmId : 0005ce15-3f3c-a8ce-3802-043f72bf18a6::c8ef83db-a095-49f3-9bb8-cbcdc85c3ebf
uuid : c8ef83db-a095-49f3-9bb8-cbcdc85c3ebf
powerState : off
vmName : OVHgateway
guestOperatingSystem :
ipAddresses : {}
hypervisorType : kKvm
hostName :
hostId :
hostUuid :
containerIds : {0005ce15-3f3c-a8ce-3802-043f72bf18a6::728, 0005ce15-3f3c-a8ce-3802-043f72bf18a6::728}
containerUuids : {98e67c38-77c4-4e05-bc20-b38bab5b28b2, 98e67c38-77c4-4e05-bc20-b38bab5b28b2}
nutanixVirtualDisks : {/SelfServiceContainer/.acropolis/vmdisk/a7da0957-9f90-4c07-8d12-65f851350453,
/SelfServiceContainer/.acropolis/vmdisk/b308778d-594f-4903-bc30-c2a2fd45ed5d}
nutanixVirtualDiskIds : {0005ce15-3f3c-a8ce-3802-043f72bf18a6::a7da0957-9f90-4c07-8d12-65f851350453,
0005ce15-3f3c-a8ce-3802-043f72bf18a6::b308778d-594f-4903-bc30-c2a2fd45ed5d}
nutanixVirtualDiskUuids : {a7da0957-9f90-4c07-8d12-65f851350453, b308778d-594f-4903-bc30-c2a2fd45ed5d}
virtualNicIds : {0005ce15-3f3c-a8ce-3802-043f72bf18a6::c8ef83db-a095-49f3-9bb8-cbcdc85c3ebf:50:6b:8d:c5
:d4:8a, 0005ce15-3f3c-a8ce-3802-043f72bf18a6::c8ef83db-a095-49f3-9bb8-cbcdc85c3ebf:50:6
b:8d:e2:16:4e}
virtualNicUuids : {1e8defc6-ea18-4d67-ba41-d3ae21047940, 537632dc-4db3-483e-a7bb-500d2c1e56ba}
clusterUuid : 0005ce15-3f3c-a8ce-3802-043f72bf18a6
virtualGpuUuids :
memoryCapacityInBytes : 1073741824
memoryReservedCapacityInBytes : 0
numVCpus : 1
cpuReservedInHz :
numNetworkAdapters : 2
controllerVm : False
controlDomain :
vdiskNames : {}
vdiskFilePaths : {/SelfServiceContainer/.acropolis/vmdisk/a7da0957-9f90-4c07-8d12-65f851350453,
/SelfServiceContainer/.acropolis/vmdisk/b308778d-594f-4903-bc30-c2a2fd45ed5d}
diskCapacityInBytes : 11811543040
displayable : False
acropolisVm : True
protectionDomainName :
protectionType :
consistencyGroupName :
description :
runningOnNdfs : True
nonNdfsDetails :
fingerPrintOnWrite :
onDiskDedup :
gpusInUse : False
vmType :
Réutilisez la commande précedente suivie de | et de la commande ft pour n'afficher que le nom de la machine virtuelle :
PS C:\Users\Administrator> Get-NTNXvm | ft vmname
vmName
------
vmfromrestapimajhttpd3
WS2022TEMPLATE
vmfromrestapiws
NTNX-221060034-A-CVM
VM-WS2019
gateway368
PFSENSE-POUR-MOVE
VM-TESTFG
WS2022b
prism-central
NutaDemo1
NTNX-520001155-A-CVM
NTNX-520001158-A-CVM
MOVE
NTNX-520000892-A-CVM
VM-WS2022
OVHgateway
Utilisez cet enchainement de commandes pour rechercher une machine virtuelle nommée VW-WS2022 et la supprimer :
PS C:\Users\Administrator> Get-NTNXVM | where-object {$_.Source.vmname -like "VM-WS2022" } | Remove-NTNXVM
Utilisation des commandes REST API
Tous les exemples montrés ci-dessous doivent être exécutés sur une machine virtuelle sous Linux avec l'outil curl.
Certaines commandes ont besoin d'autres outils qui sont disponibles dans la plupart des distributions Linux.
Affichage de toutes les options API à partir de Prism central
Il est possible d'avoir la liste des options REST API à partir de Prism Central.
En haut à droite de l'interface Prism Central, cliquez sur Username puis sur REST API Explorer.
La liste des groupes de commandes est affichée à gauche.
Cliquez sur List operations à droite d'un des groupes de commandes pour faire apparaitre toutes les commandes possibles de ce groupe.
Cliquez sur Expand operations pour lister la syntaxe d'une commande en particulier.
Divers exemples simples
Connectez-vous en SSH sur une VM Linux du cluster qui a les commandes curl et jq installées.
Pour que ces exemples fonctionnent, remplacez :
< PRISMCENTRAL IP > par l'adresse IP ou le nom FQDN de Prism Central;
< PRISM CENTRAL USER > par l'utilisateur de Prism Central;
< PRISM CENTRAL PASSWORD > par le mot de passe de l'utilisateur de Prism Central.
Afficher la liste des images ISO et QCOW2 installées sur Prism Central
curl -k -X POST --header "Content-Type: application/json" --header "Accept: application/json" -u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" -d {} "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/images/list" | jq
Cette commande a généré un fichier au format json lisible grâce à la commande jq qui contient la liste des images et les informations nécessaires pour d'autres commandes REST API.
{
"api_version": "3.1",
"metadata": {
"total_matches": 14,
"kind": "image",
"length": 14,
"offset": 0
},
"entities": [
{
"status": {
"state": "COMPLETE",
"execution_context": {
"task_uuid": [
"3a4315c8-0f9e-4182-be89-9083371ef40e"
]
},
"name": "ubuntu-20.04.3-live-server-amd64.iso",
"resources": {
"retrieval_uri_list": [
"https://127.0.0.1:9440/api/nutanix/v3/images/4a48f395-80f3-4afe-a3e4-91700db88901/file"
],
"current_cluster_reference_list": [
{
"kind": "cluster",
"uuid": "0005ce15-3f3c-a8ce-3802-043f72bf18a6"
}
],
"architecture": "X86_64",
"size_bytes": 1261371392,
"image_type": "ISO_IMAGE",
"source_uri": "file://4a48f395-80f3-4afe-a3e4-91700db88901"
},
"description": "Ubuntu Server 20.04"
},
"spec": {
"name": "ubuntu-20.04.3-live-server-amd64.iso",
"resources": {
"image_type": "ISO_IMAGE",
"source_uri": "file://4a48f395-80f3-4afe-a3e4-91700db88901",
"architecture": "X86_64"
},
"description": "Ubuntu Server 20.04"
},
"metadata": {
"last_update_time": "2021-10-12T13:38:55Z",
"kind": "image",
"uuid": "4a48f395-80f3-4afe-a3e4-91700db88901",
"creation_time": "2021-10-12T13:38:49Z",
"spec_version": 2,
"spec_hash": "00000000000000000000000000000000000000000000000000",
"categories_mapping": {},
"owner_reference": {
"kind": "user",
"uuid": "00000000-0000-0000-0000-000000000000",
"name": "admin"
},
"categories": {}
}
},
Affichage de la liste des machines virtuelles
Exécutez cette commande pour afficher la liste des machines virtuelles :
curl -k -X POST --header "Content-Type: application/json" --header "Accept: application/json" -u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" -d {} "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/vms/list" | jq
Le résultat est toujours au format json.
Ci-dessous une partie du fichier généré, contenant l'UUID de la machine virtuelle.
Il existe un UUID pour chaque élément des clusters Nutanix (VM, Vdisks, images, etc....). Ce numéro est unique.
"kind:" "vm" correspond au type de l'objet.
"kind": "vm",
"uuid": "46574b90-333b-4cd9-a737-3af0f8e242b7",
Lancez la commande ci dessous en remplaçant < VM UUID > par l'UUID d'une machine virtuelle listée précédemment :
curl -k -X GET --header "Accept: application/json" - u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/vms/< VM UUID >" | jq
Affichage de la liste des réseaux
Lancez cette commande pour afficher la liste des réseaux dans Nutanix :
curl -k -X POST --header "Content-Type: application/json" --header "Accept: application/json" -u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" -d {} "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/subnets/list" | jq
Lancez la commande ci-dessous pour afficher les informations sur les clusters administrés par Prism Central :
curl -k --request POST --url "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/clusters/list" -u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" --header 'Content-Type: application/json' --data '{ }' | jq
Exemples avancés
En plus de pouvoir afficher des informations, vous pouvez agir sur le cluster Nutanix pour créer ou modifier des éléments d'un cluster.
Nous allons voir comment créer deux machines virtuelles d'une manière automatisée, l'une dans un environnement Linux, l'autre sous Windows.
Création d'une machine virtuelle sous Linux
Il est possible d'installer Linux à partir d'images préinstallées et de personnaliser la configuration avec cloud-init qui utilise le format de fichiers yaml. Pour importer des images dans un cluster Nutanix, vous pouvez vous aider de notre guide sur l'importation d'images ISO.
Suivez ces instructions pour créer une machine virtuelle à partir d'une image personnalisable avec cloud-init d'Ubuntu.
Sous Linux, créez un mot passe au format SHA-512 avec la commande mkpasswd :
mkpasswd --method=SHA-512 -s
Password:
ExampleSHA512axUNIzgF$4R6hbeVF7Nqz3JMUSI47vINSmwt3XufAIC1lvu15twR/8HMkuRIGd7ZNNLMDGYYGyrgZXwgI7q2BP2rCAv9BU1
Editez le fichier cloud-config.yaml. Remplacez :
< RSAKEYFORLOGIN > par une clé RSA qui permettra de se connecter avec le compte userlinux en SSH au travers de cette clé.
< PASSWORDGENERATEDBYMKPASSWORD > par le mot de passe créé au format SHA-512.
#cloud-config
hostname: vm-fromcloudinit
fqdn: vm-fromcloudinit.localdomain
users:
- name: userlinux
ssh-authorized-keys:
- ssh-rsa < RSAKEYFORLOGIN >
sudo: ['ALL=(ALL) NOPASSWD:ALL']
groups: sudo
shell: /bin/bash
lock_passwd: false
passwd: < PASSWORDGENERATEDBYMKPASSWD >
package_upgrade: true
packages:
- nginx
runcmd:
- sleep 60 & reboot
Le fichier au format yaml est créé avec la possibilité de faire l'installation d'une machine virtuelle sous LINUX avec le serveur WEB NGINX.
Transformez le fichier yaml au format mime64 puis stockez-le dans une variable pour pouvoir l'intégrer dans le fichier de configuration de la machine virtuelle.
USERDATA=$(base64 -w 0 cloud-config.yaml)
echo $USERDATA
Editez le fichier vmlinux.json ci-dessous en modifiant ces éléments pour l'adapter à votre environnement :
< VMNAME > doit être remplacé par le nom de la machine virtuelle que vous voulez donner dans la console Nutanix.
< UUID-IMAGE-LINUX-CLOUD-INIT > doit être remplacé par l'UUID de l'image Linux compatible avec cloud-init.
< UUID-NETWORK > doit être remplacé par l'UUID du réseau sur laquelle la machine virtuelle va fonctionner.
< MIME64FORMATEDYAMLFILE > doit être remplacé par le contenu de la variable $USERDATA.
< CLUSTER-NAME > doit être remplacé par le nom du cluster.
< CLUSTER-UUID > doit être remplacé par l'UUID du cluster.
Toutes les informations nécessaires sont soit accessibles depuis l'interface web de Prism central, soit au travers des accès à REST API vus précédemment.
{
"spec":{
"name":"< VMNAME >",
"resources":{
"power_state":"ON",
"num_vcpus_per_socket":1,
"num_sockets":1,
"memory_size_mib":1024,
"disk_list":[{
"device_properties":{
"device_type":"DISK",
"disk_address": {
"device_index": 0,
"adapter_type": "SCSI"
}
},
"data_source_reference": {
"kind": "image",
"uuid": "< UUID-IMAGE-LINUX-CLOUD-INIT >"
}
},
{
"device_properties":{
"device_type":"CDROM",
"disk_address": {
"device_index": 0,
"adapter_type": "IDE"
}
}
}],
"nic_list":[{
"nic_type":"NORMAL_NIC",
"is_connected":true,
"ip_endpoint_list":[{
"ip_type":"DHCP"
}],
"subnet_reference":{
"kind":"subnet",
"name":"base",
"uuid":"< UUID-NETWORK >"
}
}],
"guest_tools":{
"nutanix_guest_tools":{
"state":"ENABLED",
"iso_mount_state":"MOUNTED"
}
},
"guest_customization": {
"cloud_init": {
"user_data": "< MIME64FORMATEDYAMLFILE >"
},
"is_overridable": false
}
},
"cluster_reference":{
"kind":"cluster",
"name":"Cluster_368",
"uuid":"0005ce15-3f3c-a8ce-3802-043f72bf18a6"
}
},
"api_version":"3.1.0",
"metadata":{
"kind":"vm"
}
}
Lancez cette commande pour installer la machine virtuelle :
curl -k -H Accept:application/json -H Content-Type:application/json -u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" -X POST "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/vms" -d @vmlinux.json | jq .
La nouvelle machine virtuelle va alors apparaitre dans Prism Central avec NGINX installé et les mises à jours effectuées.
Création d'une machine virtuelle sous Windows
Vous pouvez installer des machines virtuelles sous Windows à partir d'une image préparée à l'aide de la commande sysprep intégrée à Windows, et y appliquer un fichier de personnalisation.
L'image peut être importée directement d'une machine virtuelle du cluster.
Le fichier de configuration est un fichier au format XML. Il est possible de créer ce fichier au travers des outils Windows ADK téléchargeables sur le site de Microsoft via ce lien et d'utiliser Windows system image manager pour créer un fichier XML adéquat.
Ci-dessous un exemple de fichier XML pour Windows 2019 qui crée un utilisateur admin et qui modifie le mot de passe du compte admin et Administrator en P@ssw0rd :
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
<WillShowUI>Never</WillShowUI>
</SetupUILanguage>
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserData>
<AcceptEula>true</AcceptEula>
<FullName>Nutanix Doc</FullName>
<Organization>Nutanix Doc</Organization>
</UserData>
<EnableFirewall>true</EnableFirewall>
<EnableNetwork>true</EnableNetwork>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<TimeZone>Central Standard Time</TimeZone>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserAccounts>
<AdministratorPassword>
<Value>UABAAHMAcwB3ADAAcgBkAEEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIAUABhAHMAcwB3AG8AcgBkAA==</Value>
<PlainText>false</PlainText>
</AdministratorPassword>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>UABAAHMAcwB3ADAAcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value>
<PlainText>false</PlainText>
</Password>
<Group>Administrators</Group>
<Name>admin</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<ProtectYourPC>1</ProtectYourPC>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
</OOBE>
</component>
<component name="Microsoft-Windows-International-Core" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
<SystemLocale>en-US</SystemLocale>
<InputLocale>0409:00000409</InputLocale>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:c:/sw2019/sources/install.wim#Windows Server 2019 SERVERSTANDARD" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
Copiez le fichier XML sur une VM Linux du cluster et transformez-le au format MIME64, comme ci-dessous, pour l'intégrer dans le fichier de configuration de la machine virtuelle au format json :
USERDATA=$(base64 -w 0 answerfile.xml)
echo $USERDATA
Editez le fichier vmwindows.json ci-dessous en modifiant ces éléments pour l'adapter à votre environnement :
< VMNAME > doit être remplacé par le nom de la VM que vous voulez donner dans la console Nutanix.
< UUID-IMAGE-WINDOWS2022SYSPREPED > doit être remplacé par l'UUID de l'image Windows SYSPREPED utilisable avec un fichier XML.
< UUID-NETWORK > doit être remplacé par le nom du réseau sur laquelle la machine virtuelle va fonctionner.
< MIME64FORMATEDYAMLFILE > doit être remplacé par le contenu de la variable $USERDATA.
< CLUSTER-NAME > doit être remplacé par le nom du cluster.
< CLUSTER-UUID > doit être remplacé par l'UUID du cluster.
Toutes les informations nécessaires sont soit accessibles depuis l'interface web de Prism central ou au travers de commandes REST API.
{
"spec":{
"name":"< VMNAME >",
"resources":{
"power_state":"ON",
"num_vcpus_per_socket":2,
"num_sockets":2,
"memory_size_mib":4096,
"disk_list":[{
"device_properties":{
"device_type":"DISK",
"disk_address": {
"device_index": 0,
"adapter_type": "SCSI"
}
},
"data_source_reference": {
"kind": "image",
"uuid": "< UUID-IMAGE-WINDOWS2022SYSPREPED >"
}
},
{
"device_properties":{
"device_type":"CDROM",
"disk_address": {
"device_index": 0,
"adapter_type": "IDE"
}
}
}],
"nic_list":[{
"nic_type":"NORMAL_NIC",
"is_connected":true,
"ip_endpoint_list":[{
"ip_type":"DHCP"
}],
"subnet_reference":{
"kind":"subnet",
"name":"base",
"uuid":"< UUID-NETWORK >"
}
}],
"guest_tools":{
"nutanix_guest_tools":{
"state":"ENABLED",
"iso_mount_state":"MOUNTED"
}
},
"guest_customization": {
"sysprep": {
"unattend_xml": "< MIME64FORMATEDYAMLFILE >"
},
"is_overridable": false
}
},
"cluster_reference":{
"kind":"cluster",
"name":"< CLUSTER-NAME >",
"uuid":"< CLUSTER-UUID >"
}
},
"api_version":"3.1.0",
"metadata":{
"kind":"vm"
}
}
curl -k -H Accept:application/json -H Content-Type:application/json -u "< PRISM CENTRAL USER >:< PRISM CENTRAL PASSWORD >" -X POST "https://< PRISM CENTRAL IP >:9440/api/nutanix/v3/vms" -d @vmwindows.json | jq .
La nouvelle machine virtuelle doit apparaitre dans Prism Central, elle est alors démarrée avec les options du fichier de réponse.
Aller plus loin
Références NCLI de Nutanix
Références ACLI de NUTANIX
Installation des CmdLets Nutanix
Réferences sur les outils de développements de Nutanix
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
Échangez avec notre communauté d'utilisateurs.