VENTES: 1-800-867-1389

Création d'un déploiement de machine virtuelle

Mis à jour: octobre 2014

L'opération Create Virtual Machine Deployment crée un déploiement, puis une machine virtuelle dans le déploiement en fonction de la configuration spécifiée.

La requête Create Virtual Machine Deployment peut être spécifiée comme suit. Remplacez <subscription-id> par l'ID d'abonnement et <cloudservice-name> par le nom du service cloud.

 

Méthode URI de demande

POST

https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments

Vous devez vous assurer que la demande adressée au service de gestion est sécurisée. Pour plus de détails, consultez Authentification des demandes de gestion des services.

Le tableau suivant décrit les en-têtes de la demande.

 

En-tête de demande Description

x-ms-version

Obligatoire. Spécifie la version de l'opération à utiliser pour cette demande. Cet en-tête devrait être défini sur 01/03/2012 ou une version ultérieure. Pour plus d'informations sur les en-têtes de contrôle de version, consultez Contrôle de version de la gestion des services.

Le corps de la demande présente le format suivant :


<Deployment xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Name>name-of-deployment</Name>
  <DeploymentSlot>deployment-environment</DeploymentSlot>
  <Label>identifier-of-deployment</Label>      
  <RoleList>
    <Role>
      <RoleName>name-of-the-virtual-machine</RoleName>
      <RoleType>PersistentVMRole</RoleType>
      <ConfigurationSets>
        <ConfigurationSet i:type="WindowsProvisioningConfigurationSet">
          <ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType>
          <ComputerName>name-of-computer</ComputerName>
          <AdminPassword>administrator-password</AdminPassword>
          <EnableAutomaticUpdates>enable-updates</EnableAutomaticUpdates>  
          <TimeZone>time-zone</TimeZone>
          <DomainJoin>
            <Credentials>
              <Domain>domain-to-join</Domain>
              <Username>user-name-in-the-domain</Username>
              <Password>password-for-the-user-name</Password>
            </Credentials>
            <JoinDomain>domain-to-join</JoinDomain>
            <MachineObjectOU>distinguished-name-of-the-ou</MachineObjectOU>
          </DomainJoin>
          <StoredCertificateSettings>
            <CertificateSetting>
              <StoreLocation>LocalMachine</StoreLocation>
              <StoreName>name-of-store-on-the-machine</StoreName>
              <Thumbprint>certificate-thumbprint</Thumbprint>
            </CertificateSetting>
          </StoredCertificateSettings>
          <WinRM>
            <Listeners>
              <Listener>
                <Protocol>listener-protocol</Protocol>
              </Listener>
              <Listener>
                <CertificateThumbprint>certificate-thumbprint</CertificateThumbprint>
                <Protocol>listener-protocol</Protocol>
              </Listener>
            </Listeners>
          </WinRM>
          <AdminUsername>name-of-administrator-account</AdminUsername>
          <CustomData>base-64-encoded-data</CustomData>
          <AdditionalUnattendContent>
            <Passes>
              <UnattendPass>
                <PassName>name-of-pass</PassName>
                <Components>
                  <UnattendComponent>
                    <ComponentName>name-of-component</ComponentName>
                    <ComponentSettings>
                      <ComponentSetting>
                        <SettingName>name-of-setting</SettingName>
                        <Content>base-64-encoded-XML-content</Content>
                      </ComponentSetting>
                    </ComponentSettings>
                  </UnattendComponent>
                </Components>
              </UnattendPass>
            </Passes>
          </AdditionalUnattendContent>
        </ConfigurationSet>
        <ConfigurationSet i:type="LinuxProvisioningConfigurationSet">
          <ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType>
          <HostName>host-name-for-the-virtual-machine</HostName>
          <UserName>new-user-name</UserName> 
          <UserPassword>password-for-the-new-user</UserPassword> 
          <DisableSshPasswordAuthentication>password-authentication</DisableSshPasswordAuthentication>           
          <SSH>
            <PublicKeys>
              <PublicKey>
                <FingerPrint>certificate-fingerprint</FingerPrint>
                <Path>SSH-public-key-storage-location</Path>     
              </PublicKey>
            </PublicKeys>
            <KeyPairs>
              <KeyPair>
                <FingerPrint>certificate-fingerprint</FinguerPrint>
                <Path>SSH-public-key-storage-location</Path>
              </KeyPair>
            </KeyPairs>
          </SSH>
          <CustomData>base-64-encoded-data</CustomData>
        </ConfigurationSet>        
        <ConfigurationSet> 
          <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
          <InputEndpoints>
            <InputEndpoint>
              <LoadBalancedEndpointSetName>name-of-load-balanced-set</LoadBalancedEndpointSetName>
              <LocalPort>local-port-number</LocalPort>
              <Name>name-of-endpoint</Name>
              <Port>external-port-number</Port>
              <LoadBalancerProbe>
                <Path>path-of-probe</Path>
                <Port>port-assigned-to-probe</Port>
                <Protocol>probe-protocol</Protocol>
                <IntervalInSeconds>interval-of-probe</IntervalInSeconds>
                <TimeoutInSeconds>timeout-for-probe</TimeoutInSeconds>
              </LoadBalancerProbe>          
              <Protocol>endpoint-protocol</Protocol>                 
              <EnableDirectServerReturn>enable-direct-server-return</EnableDirectServerReturn>       
              <EndpointACL>
                <Rules>
                  <Rule>
                    <Order>priority-of-the-rule</Order>
                    <Action>permit-rule</Action>
                    <RemoteSubnet>subnet-of-the-rule</RemoteSubnet>
                    <Description>description-of-the-rule</Description>
                  </Rule>
                </Rules>
              </EndpointACL>
              <LoadBalancerName>name-of-internal-loadbalancer</LoadBalancerName>
              <IdleTimeoutInMinutes>timeout-for-tcp-idle-connection</IdleTimeoutInMinutes>
            </InputEndpoint>
          </InputEndpoints>
          <SubnetNames>
            <SubnetName>name-of-subnet</SubnetName>
          </SubnetNames> 
          <StaticVirtualNetworkIPAddress>ip-address</StaticVirtualNetworkIPAddress>
          <PublicIPs>
            <PublicIP>
              <Name>name-of-public-ip</Name>
              <IdleTimeoutInMinutes>timeout-for-tcp-idle-connection</IdleTimeoutInMinutes>
            </PublicIP>
          </PublicIPs>
        </ConfigurationSet>
      </ConfigurationSets>
      <ResourceExtensionReferences>
        <ResourceExtensionReference>
          <ReferenceName>name-of-reference</ReferenceName>
          <Publisher>name-of-publisher</Publisher>
          <Name>name-of-extension</Name>
          <Version>version-of-extension</Version>
          <ResourceExtensionParameterValues>
            <ResourceExtensionParameterValue>
              <Key>name-of-parameter-key</Key>
              <Value>parameter-value</Value>
              <Type>type-of-parameter</Type>
            </ResourceExtensionParameterValue>
          </ResourceExtensionParameterValues>
          <State>state-of-resource</State>
          <Certificates>
            <Certificate>
  <Thumbprint>certificate-thumbprint</Thumbprint>
  <ThumbprintAlgorithm>certificate-algorithm</ThumbprintAlgorithm>
            </Certificate>
          </Certificates>
        </ResourceExtensionReference>
      </ResourceExtensionReferences>
      <VMImageName>name-of-vm-image</VMImageName>
      <MediaLocation>path-to-vhd</MediaLocation>
      <AvailabilitySetName>name-of-availability-set</AvailabilitySetName>
      <DataVirtualHardDisks>
        <DataVirtualHardDisk>
          <HostCaching>caching-mode</HostCaching> 
          <DiskLabel>label-of-data-disk</DiskLabel>            
          <DiskName>name-of-disk</DiskName>
          <Lun>logical-unit-number</Lun>
          <LogicalDiskSizeInGB>size-in-gb-of-data-disk</LogicalDiskSizeInGB>            
          <MediaLink>path-to-vhd</MediaLink>
        </DataVirtualHardDisk>
      </DataVirtualHardDisks>
      <OSVirtualHardDisk>
        <HostCaching>caching-mode</HostCaching>    
        <DiskLabel>label-of-operating-system-disk</DiskLabel>
        <DiskName>name-of-disk</DiskName>                    
        <MediaLink>path-to-vhd</MediaLink>
        <SourceImageName>name-of-source-image</SourceImageName>
        <OS>operating-system-of-image</OS>
        <RemoteSourceImageLink>path-to-source-image</RemoteSourceImageLink>
      </OSVirtualHardDisk>      
      <RoleSize>size-of-virtual-machine</RoleSize>
      <ProvisionGuestAgent>install-an-agent</ProvisionGuestAgent>
    </Role>
  </RoleList>
  <VirtualNetworkName>name-of-virtual-network</VirtualNetworkName>
  <Dns>
    <DnsServers>
      <DnsServer>
        <Name>dns-name</Name>
        <Address>dns-ip-address</Address>
      </DnsServer>
    </DnsServers>
  </Dns>
  <ReservedIPName>name-of-reserved-ip</ReservedIPName>
  <LoadBalancers>
    <LoadBalancer>
      <Name>name-of-internal-load-balancer</Name>
      <FrontendIpConfiguration>
        <Type>type-of-ip-address</Type>
        <SubnetName>name-of-subnet</SubnetName>
        <StaticVirtualNetworkIPAddress>static-ip-address</StaticVirtualNetworkIPAddress>
      </FrontendIpConfiguration>
    </LoadBalancer>
  </LoadBalancers>
</Deployment>

Le tableau suivant décrit les éléments du corps de la demande.

 

Nom de l'élément Description

Nom

Obligatoire. Spécifie un nom pour le déploiement. Ce nom de déploiement doit être unique parmi les autres déploiements pour le service cloud.

DeploymentSlot

Obligatoire. Spécifie l'environnement dans lequel la machine virtuelle doit être déployée. La seule valeur autorisée est Production.

Étiquette

Obligatoire. Spécifie un identificateur unique pour le déploiement. L'étiquette peut contenir jusqu'à 100 caractères. L'étiquette peut être utilisée à des fins de suivi.

RoleList

Obligatoire. Contient les informations relatives aux machines virtuelles à déployer.

VirtualNetworkName

Facultatif. Spécifie le nom d'un réseau virtuel existant auquel le déploiement appartiendra.

Les réseaux virtuels sont créés en appelant l'opération Définir la configuration réseau.

Dns

Facultatif. Contient une liste de serveurs DNS à associer à la machine virtuelle.

ReservedIPName

Facultatif. Indique le nom d'une adresse IP réservée à affecter au déploiement. Vous devez exécuter Create Reserved IP Address avant de pouvoir affecter l'adresse au déploiement à l'aide de cet élément.

L'élément ReservedIPName est uniquement disponible si vous utilisez la version 01/05/2014 ou une version ultérieure.

LoadBalancers

Facultatif. Contient une liste de programmes d'équilibrage de charge internes qui peuvent être affectés à des points de terminaison d'entrée.

L'élément LoadBalancers est uniquement disponible si vous utilisez la version 01/05/2014 ou une version ultérieure.

Contient les informations relatives aux machines virtuelles à déployer.

 

Nom de l'élément Description

Rôle

Obligatoire. Contient les jeux de configuration qui sont utilisés pour créer des machines virtuelles.

Contient les jeux de configuration qui sont utilisés pour créer des machines virtuelles.

 

Nom de l'élément Description

RoleName

Obligatoire. Spécifie le nom de la machine virtuelle.

RoleType

Obligatoire. Spécifie le type de rôle à utiliser. Pour les machines virtuelles, il doit être PersistentVMRole.

ConfigurationSets

Facultatif. Contient une collection de jeux de configurations qui définissent les paramètres système et de l'application.

ResourceExtensionReferences

Facultatif. Contient une collection d'extensions de ressources à installer sur la machine virtuelle. Cet élément est utilisé si ProvisionGuestAgent a la valeur true.

L'élément ResourceExtensionReferences est uniquement disponible si vous utilisez la version 01/11/2013 ou une version ultérieure.

VMImageName

Facultatif. Spécifie le nom de l'image de machine virtuelle utilisée pour créer la machine virtuelle. Si vous utilisez cet élément, l'élément ConfigurationSets n'est pas utilisé. Pour plus d'informations, consultez Capturer une image de machine virtuelle.

L'élément VMImageName est uniquement disponible si vous utilisez la version 01/02/2014 ou une version ultérieure.

MediaLocation

Requis si la machine virtuelle est créée à partir d'une image de machine virtuelle publiée. Spécifie l'emplacement du fichier de disque dur virtuel créé quand VMImageName spécifie une image de machine virtuelle publiée.

L'élément MediaLocation est uniquement disponible si vous utilisez la version 01/05/2014 ou une version ultérieure.

AvailabilitySetName

Facultatif. Spécifie le nom de la collection de machines virtuelles. Les machines virtuelles spécifiées dans le même groupe à haute disponibilité sont attribuées à des nœuds différents pour optimiser la disponibilité. Pour plus d'informations sur les groupes à haute disponibilité, consultez Gérer la disponibilité des machines virtuelles.

DataVirtualHardDisks

Facultatif. Contient les paramètres utilisés pour ajouter un disque de données à une machine virtuelle. Si vous créez une machine virtuelle à l'aide d'une image de machine virtuelle, cet élément n'est pas utilisé. Pour plus d'informations sur les disques de données, consultez Gestion des disques et des images.

OSVirtualHardDisk

Facultatif. Contient les paramètres utilisés pour créer le disque de système d'exploitation pour une machine virtuelle. Si vous créez une machine virtuelle à l'aide d'une image de machine virtuelle, cet élément n'est pas utilisé.

RoleSize

Facultatif. Spécifie la taille de la machine virtuelle. La taille par défaut est la petite taille. Pour plus d'informations sur la taille des machines virtuelles, consultez Tailles de machine virtuelle et de service cloud pour Azure.

ProvisionGuestAgent

Facultatif. Indique si l'agent de machine virtuelle est installé sur la machine virtuelle. Pour exécuter une extension de ressource sur une machine virtuelle, ce service doit être installé.

Les valeurs possibles sont les suivantes :

  • true

  • false

Contient une collection de jeux de configurations qui spécifient les paramètres système et de configuration de l'application.

 

Nom de l'élément Description

ConfigurationSet

Obligatoire. Spécifie les éléments de configuration de la machine virtuelle. L'attribut de type est requis pour empêcher l'écriture du mot de passe administrateur dans le fichier d'historique des opérations.

ConfigurationSetType

Obligatoire. Pour créer une machine virtuelle, vous devez spécifier l'un des jeux de configuration suivants :

  • WindowsProvisioningConfiguration

  • LinuxProvisioningConfiguration

Facultatif. Vous pouvez éventuellement spécifier un jeu NetworkConfiguration qui contient les métadonnées nécessaires pour créer la configuration de réseau virtuel d'une machine virtuelle.

ComputerName

Facultatif dans WindowsProvisioningConfiguration. Spécifie le nom d'ordinateur de la machine virtuelle. Si vous ne spécifiez pas de nom d'ordinateur, un nom constitué d'une combinaison du nom du déploiement, du nom du rôle et du numéro d'identification est attribué. Les noms d'ordinateur doivent contenir entre 1 et 15 caractères.

AdminPassword

Facultatif dans WindowsProvisioningConfiguration. Spécifie le mot de passe à utiliser pour un compte Administrateur sur la machine virtuelle en cours de création. Si vous créez une machine virtuelle à partir d'une image, vous devez spécifier un nom de compte Administrateur à créer sur la machine à l'aide de l'élément AdminUsername. Vous devez utiliser l'élément AdminPassword pour spécifier le mot de passe du compte Administrateur en cours de création. Si vous créez une machine virtuelle à partir d'un disque spécialisé existant, cet élément n'est pas utilisé, car le compte doit déjà exister sur le disque.

EnableAutomaticUpdates

Facultatif dans WindowsProvisioningConfiguration. Spécifie si les mises à jour automatiques sont activées pour la machine virtuelle.

Les valeurs possibles sont les suivantes :

  • true

  • false

La valeur par défaut est true.

TimeZone

Facultatif dans WindowsProvisioningConfiguration. Spécifie le fuseau horaire de la machine virtuelle.

Pour la liste complète des entrées de fuseau horaire prises en charge, vous pouvez :

  • Reportez-vous aux valeurs répertoriées dans l'entrée de Registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

  • Utilisez l'outil de ligne de commande tzutil pour répertorier l'heure valide.

DomainJoin

Facultatif dans WindowsProvisioningConfiguration. Contient les propriétés qui définissent le domaine auquel la machine virtuelle sera associée.

StoredCertificateSettings

Facultatif dans WindowsProvisioningConfiguration. Contient la liste des certificats de service avec lesquels la nouvelle machine virtuelle sera configurée.

WinRM

Facultatif dans WindowsProvisioningConfiguration. Contient les paramètres de configuration du service de gestion à distance de Windows sur la machine virtuelle. Cela active le Windows PowerShell distant.

L'élément WinRM est uniquement disponible si vous utilisez la version 01/03/2013 ou une version ultérieure.

AdminUsername

Facultatif dans WindowsProvisioningConfiguration. Spécifie le nom du compte Administrateur créé pour accéder à la machine virtuelle. Si vous créez une machine virtuelle à partir d'une image, vous devez spécifier un nom de compte Administrateur à créer à l'aide de cet élément. Vous devez utiliser l'élément AdminPassword pour spécifier le mot de passe du compte Administrateur en cours de création. Si vous créez une machine virtuelle à partir d'un disque spécialisé existant, cet élément n'est pas utilisé, car le compte doit déjà exister sur le disque.

CustomData

Facultatif dans WindowsProvisioningConfiguration. Spécifie une chaîne codée en base 64 de données personnalisées. La chaîne codée en base 64 est décodée dans un tableau binaire enregistré dans un fichier sur la machine virtuelle. La longueur maximale du tableau binaire est 65535 octets. Le fichier est enregistré sur %SYSTEMDRIVE%\AzureData\CustomData.bin. Si le fichier existe déjà, celui-ci est remplacé. La sécurité sur le répertoire est définie à Système : Contrôle total et Administrateurs : Contrôle total.

L'élément CustomData est uniquement disponible si vous utilisez la version 01/10/2013 ou une version ultérieure.

AdditionalUnattendContent

Facultatif. Spécifie des informations supplémentaires au format XML encodées en base 64 pouvant être incluses dans le fichier Unattend.xml. Ce fichier est utilisé par le programme d'installation de Windows. Pour plus d'informations, consultez la rubrique Vue d'ensemble des fichiers de réponses.

L'élément AdditionalUnattendContent est uniquement disponible si vous utilisez la version 01/04/2014 ou une version ultérieure.

HostName

Requis dans LinuxProvisioningConfiguration. Spécifie le nom d'hôte de la machine virtuelle. Les noms d'hôte doivent contenir entre 1 et 64 caractères.

UserName

Requis dans LinuxProvisioningConfiguration. Spécifie le nom de compte d'utilisateur à créer dans le groupe de sous-ordres de la machine virtuelle. Les noms d'utilisateur doivent comprendre entre 1 et 32 caractères.

UserPassword

Requis dans LinuxProvisioningConfiguration. Spécifie le mot de passe du compte d'utilisateur. Les mots de passe doivent comporter entre 6 et 72 caractères.

DisableSshPasswordAuthentication

Facultatif dans LinuxProvisioningConfiguration. Spécifie si l'authentification par mot de passe SSH est désactivée. Cette valeur est définie par défaut sur true.

Les valeurs possibles sont les suivantes :

  • true

  • false

La valeur par défaut est true.

SSH

Facultatif dans LinuxProvisioningConfiguration. Spécifie les clés publiques SSH et les paires de clés à utiliser avec la machine virtuelle.

CustomData

Facultatif dans LinuxProvisioningConfiguration. Spécifie une chaîne codée en base 64 de données personnalisées. La chaîne codée en base 64 se trouve dans le fichier ovf-env.xml sur l'image ISO de la machine virtuelle. Le fichier est copié vers /var/lib/waagent/ovf-env.xml par l'Agent Linux Azure. L'Agent Linux Azure placera également les données codées en base 64 dans /var/lib/waagent/CustomData pendant l'approvisionnement. La longueur maximale du tableau binaire est 65535 octets.

L'élément CustomData est uniquement disponible si vous utilisez la version 01/10/2013 ou une version ultérieure.

InputEndpoints

Facultatif dans NetworkConfiguration. Contient une collection de points de terminaison externes pour la machine virtuelle.

SubnetNames

Obligatoire si StaticVirtualNetworkIPAddress est spécifié ; sinon, facultatif dans NetworkConfiguration. Contient la liste des sous-réseaux auxquels la machine virtuelle appartiendra.

StaticVirtualNetworkIPAddress

Facultatif. Spécifie l'adresse IP interne pour la machine virtuelle dans un réseau virtuel. Si vous spécifiez cet élément, vous devez également spécifier l'élément SubnetNames avec un seul sous-réseau défini. L'adresse IP spécifiée dans cet élément doit appartenir au sous-réseau défini dans SubnetNames et ne doit pas être l'une des quatre premières adresses IP ou la dernière adresse IP du sous-réseau. Le déploiement des rôles web ou de travail dans un sous-réseau disposant de machines virtuelles sur lesquelles StaticVirtualNetworkIPAddress est défini n'est pas pris en charge.

L'élément StaticVirtualNetworkIPAddress est uniquement disponible si vous utilisez la version 01/11/2013 ou une version ultérieure.

PublicIPs

Facultatif. Contient une adresse IP publique pouvant être utilisée en plus de l'adresse IP virtuelle par défaut pour la machine virtuelle.

L'élément PublicIPs est uniquement disponible si vous utilisez la version 01/05/2014 ou une version ultérieure.

Contient les propriétés qui définissent le domaine auquel la machine virtuelle sera associée.

 

Nom de l'élément Description

Informations d'identification

Facultatif. Spécifie les informations d'identification à utiliser pour joindre la machine virtuelle au domaine.

JoinDomain

Facultatif. Spécifie le domaine à joindre.

MachineObjectOU

Facultatif. Spécifie le nom unique au protocole LDAP X 500 de l'unité d'entreprise (OU) dans laquelle le compte d'ordinateur est créé. Ce compte est dans Active Directory sur un contrôleur de domaine, dans le domaine auquel l'ordinateur est attaché.

Exemple :

OU=MyOu, OU=MyParentOu, DC=example.com, DC=MyCompany, DC=com

Spécifie les informations d'identification à utiliser pour joindre la machine virtuelle au domaine.

 

Nom de l'élément Description

Contrôleur

Facultatif. Spécifie le nom du domaine utilisé pour authentifier un compte. La valeur est un domaine DNS complet.

Si le nom de domaine n'est pas spécifié, Username doit spécifier le format de nom d'utilisateur principal (UPN) (utilisateur@domaine-DNS-complet) ou le format domaine-DNS-complet\nomutilisateur.

Exemple :

example.com

Username

Obligatoire. Spécifie un nom d'utilisateur dans le domaine qui peut être utilisé pour attacher le domaine.

Mot de passe

Obligatoire. Spécifie le mot de passe utilisé pour attacher le domaine.

Contient la liste des certificats de service avec lesquels la nouvelle machine virtuelle sera configurée. Les paramètres de certificat stockés référencent les certificats qui existent déjà dans le service cloud. Avant de configurer les certificats stockés pour la machine virtuelle, vous devez appeler l'opération Ajouter un certificat de service ou ajouter le certificat via le Portail de gestion.

 

Nom de l'élément Description

CertificateSetting

Obligatoire. Spécifie les paramètres du certificat.

StoreLocation

Obligatoire. Spécifie l'emplacement du magasin de certificats sur la machine virtuelle.

La seule valeur possible est LocalMachine.

StoreName

Obligatoire. Spécifie le nom du magasin de certificats à partir duquel récupérer le certificat.

Par exemple, « Mon »

Empreinte numérique

Obligatoire. Spécifie l'empreinte du certificat. L'empreinte numérique doit spécifier un certificat de service existant.

Contient les paramètres de configuration du service de gestion à distance de Windows sur la machine virtuelle.

 

Nom de l'élément Description

Écouteurs

Obligatoire. Contient une collection d'informations pour activer la session Windows PowerShell distante.

Port d'écoute

Obligatoire. Spécifie le protocole et les informations de certificat de l'écouteur.

Protocole

Spécifie le protocole de l'écouteur.

Les valeurs possibles sont les suivantes :

  • Http

  • Https

Elle respecte la casse.

CertificateThumbprint

Facultatif. Spécifie l'empreinte numérique du certificat pour la connexion sécurisée. Si cette valeur n'est pas spécifiée, un certificat auto-signé est créé et utilisé pour la machine virtuelle.

Spécifie des informations supplémentaires au format XML encodées en base 64 pouvant être incluses dans le fichier Unattend.xml. Ce fichier est utilisé par le programme d'installation de Windows.

 

Nom de l'élément Description

PassName

Obligatoire. Spécifie le nom de la passe à laquelle le contenu s'applique. La seule valeur autorisée est oobeSystem.

ComponentName

Obligatoire. Spécifie le nom du composant à configurer avec le contenu ajouté. La seule valeur autorisée est Microsoft-Windows-Shell-Setup.

SettingName

Obligatoire. Spécifie le nom du paramètre auquel le contenu s'applique.

Les valeurs possibles sont les suivantes :

  • FirstLogonCommands

  • AutoLogon

Contenu

Obligatoire. Spécifie le contenu au format XML encodé en base 64 qui est ajouté au fichier Unattend.xml pour le chemin d'accès et le composant spécifiés. Le fichier XML doit avoir une taille inférieure à 4 Ko et inclure l'élément racine du paramètre ou de la fonctionnalité qui est inséré.

Spécifie les clés publiques SSH et les paires de clés à utiliser avec la machine virtuelle.

 

Nom de l'élément Description

PublicKeys

Facultatif. Spécifie la collection de clés publiques SSH.

PublicKey

Obligatoire. Spécifie la clé publique.

FingerPrint

Obligatoire. Spécifie l'empreinte SHA1 d'un certificat X509 associé au service cloud et inclut la clé publique SSH.

Chemin d'accès

Obligatoire. Spécifie le chemin complet d'un fichier, sur la machine virtuelle, qui stocke la clé publique SSH. Si le fichier existe déjà, la clé spécifiée est automatiquement ajoutée au fichier.

Exemple :

/home/user/.ssh/authorized_keys

KeyPairs

Obligatoire. Spécifie une collection de paires de clés SSH.

KeyPair

Obligatoire. Spécifie une paire de clés SSH à installer sur la machine virtuelle.

FingerPrint

Obligatoire. Spécifie l'empreinte SHA1 d'un certificat X509 associé au service cloud et inclut la paire de clés SSH.

Chemin d'accès

Obligatoire. Spécifie le chemin complet d'un fichier, sur la machine virtuelle, qui stocke la clé privée SSH. Le fichier est remplacé lorsque plusieurs clés y sont écrites. La clé publique SSH est stockée dans le même répertoire et a le même nom que le fichier de clé privée avec le suffixe .pub.

Exemple :

/home/user/.ssh/id_rsa

Contient une collection de points de terminaison externes pour la machine virtuelle.

 

Nom de l'élément Description

InputEndpoint

Obligatoire. Spécifie les propriétés qui définissent un point de terminaison externe pour la machine virtuelle.

LoadBalancedEndpointSetName

Facultatif. Spécifie un nom pour un ensemble de points de terminaison à charge équilibrée. La spécification de cet élément pour un point de terminaison l'ajoute au groupe.

Ne définissez pas cette propriété si vous ajoutez le point de terminaison pour la connexion à la machine virtuelle via le Bureau à distance.

noteRemarque
Le nom du point de terminaison doit être unique dans l'étendue de la machine virtuelle.

LocalPort

Obligatoire. Spécifie le port interne sur lequel la machine virtuelle écoute.

Nom

Obligatoire. Spécifie le nom du point de terminaison externe.

Port

Obligatoire. Spécifie le port externe à utiliser pour le point de terminaison.

LoadBalancerProbe

Facultatif. Contient les propriétés qui définissent les paramètres de point de terminaison qu'utilise le programme d'équilibrage de charge pour surveiller la disponibilité de la machine virtuelle avant de lui transférer le trafic.

Protocole

Obligatoire. Spécifie le protocole de transport du point de terminaison.

Les valeurs possibles sont les suivantes :

  • TCP

  • UDP

EnableDirectServerReturn

Facultatif. Spécifie si le point de terminaison utilise le retour au serveur direct. L'élément EnableDirectServerReturn n'est pas pris en charge pour les points de terminaison RDP, SSH ou WinRM et n'est pas pris en charge lorsque le port public et le port local d'un point de terminaison sont différents. Il est recommandé que cet élément soit utilisé uniquement lors de la configuration des machines virtuelles pour les groupes de disponibilité AlwaysOn et SQL Server. Pour plus d'informations, consultez Haute disponibilité et récupération d'urgence pour SQL Server sur des machines virtuelles Azure.

Les valeurs possibles sont les suivantes :

  • true

  • false

La valeur par défaut est false.

EndpointACL

Facultatif. Contient une collection de règles qui contrôlent le trafic réseau à un point de terminaison.

L'élément EndpointACL est uniquement disponible si vous utilisez la version 2013-06-01 ou une version ultérieure.

LoadBalancerName

Facultatif. Spécifie le nom de l'équilibrage de charge interne qui est associé à ce point de terminaison. Le nom du programme d'équilibrage de charge interne est spécifié dans LoadBalancers.

L'élément LoadBalancerName est uniquement disponible si vous utilisez la version 01/05/2014 ou une version ultérieure.

IdleTimeoutInMinutes

Facultatif. Spécifie le délai d'expiration de la connexion TCP inactive. La valeur peut être comprise entre 4 et 30 minutes. La valeur par défaut est 4 minutes. Cet élément est utilisé uniquement lorsque le protocole est TCP.

L'élément IdleTimeoutInMinutes est uniquement disponible si vous utilisez la version 01/06/2014 ou une version ultérieure.

Contient les propriétés qui définissent les paramètres de point de terminaison qu'utilise le programme d'équilibrage de charge pour surveiller la disponibilité de la machine virtuelle avant de lui transférer le trafic.

 

Nom de l'élément Description

Chemin d'accès

Facultatif. Spécifie le chemin d'accès relatif à inspecter pour déterminer l'état de disponibilité de la machine virtuelle. Si le protocole est défini sur TCP, cette valeur doit être NULL.

Exemple :

chemin d'accès

La sonde utilisera https://exemple.com/chemin d'accès à des fins de sondage.

Port

Facultatif. Spécifie le port utilisé pour inspecter l'état de disponibilité de la machine virtuelle.

Protocole

Facultatif. Spécifie le protocole utilisé pour inspecter l'état de disponibilité de la machine virtuelle.

Les valeurs possibles sont les suivantes :

  • HTTP

  • TCP

IntervalInSeconds

Facultatif. Spécifie l'intervalle de la sonde d'équilibrage de charge en secondes. La valeur minimale est de 5 secondes. La valeur par défaut est de 15 secondes.

TimeoutInSeconds

Facultatif. Spécifie le délai d'expiration de la sonde d'équilibrage de charge en secondes. La valeur minimale est de 11 secondes. La valeur par défaut est de 31 secondes.

Contient une collection de règles qui contrôlent le trafic réseau au point de terminaison.

 

Nom de l'élément Description

Règles

Obligatoire. Spécifie une collection de règles de contrôle d'accès. 50 règles maximum sont autorisées.

Règle

Obligatoire. Spécifie la définition d'une règle de contrôle d'accès.

Commande

Obligatoire. Spécifie la priorité de la règle. La valeur doit être comprise entre 0 et 65 535. Le numéro d'ordre doit être unique pour chaque règle de la collection. Plus le numéro d'ordre est faible, plus la priorité de la règle est élevée.

Action

Obligatoire. Indique si le trafic qui correspond à la règle doit être autorisé ou refusé.

Les valeurs possibles sont les suivantes :

  • permit

  • deny

RemoteSubnet

Obligatoire. Spécifie le sous-réseau de la règle. Le sous-réseau doit avoir la notation CIDR (Classless Inter-Domain Routing) IPV4, et doit être un sous-réseau valide.

Par exemple, 10.0.0.0/24

Description

Facultatif. Fournit une description de la règle. La longueur maximale de la description est 256 caractères.

Contient une adresse IP publique pouvant être utilisée en plus de l'adresse IP virtuelle par défaut pour la machine virtuelle.

 

Nom de l'élément Description

PublicIP

Obligatoire. Spécifie une adresse IP publique supplémentaire qui peut être utilisée pour communiquer avec la machine virtuelle.

Nom

Obligatoire. Spécifie le nom de l'adresse IP publique.

IdleTimeoutInMinutes

Facultatif. Spécifie le délai d'expiration de la connexion TCP inactive. La valeur peut être comprise entre 4 et 30 minutes. La valeur par défaut est 4 minutes. Cet élément est utilisé uniquement lorsque le protocole est TCP.

L'élément IdleTimeoutInMinutes est uniquement disponible si vous utilisez la version 01/06/2014 ou une version ultérieure.

Contient la liste des sous-réseaux auxquels la machine virtuelle appartiendra.

 

Nom de l'élément Description

SubnetName

Obligatoire. Spécifie le nom du sous-réseau auquel la machine virtuelle appartient.

Contient les paramètres utilisés pour ajouter un disque de données à une machine virtuelle.

 

Nom de l'élément Description

DataVirtualHardDisk

Obligatoire. Spécifie les propriétés utilisées pour créer un disque de données.

HostCaching

Facultatif. Spécifie le mode de mise en cache du disque de données.

Les valeurs possibles sont les suivantes :

  • None

  • ReadOnly

  • ReadWrite

La valeur par défaut est None.

DiskLabel

Facultatif. Si le disque qui est ajouté est déjà enregistré dans l'abonnement, cet élément est ignoré. Si un nouveau disque est créé, cet élément est utilisé pour fournir une description du disque. La valeur de cet élément est uniquement obtenue par programmation et n'apparaît pas dans la portail de gestion.

DiskName

Facultatif. Si le disque en cours d'ajout est déjà enregistré dans l'abonnement, cet élément permet d'identifier le disque à ajouter. Si Azure crée un disque et le disque dur virtuel associé, cet élément n'est pas utilisé et Azure attribue un nom unique, c'est-à-dire une combinaison du nom du déploiement, du nom du rôle et du numéro d'identification.

Le nom du disque ne doit contenir que des caractères alphanumériques, des traits de soulignement, des points ou des tirets. Le nom ne doit pas dépasser 256 caractères. Le nom ne doit pas se terminer par un point ni un tiret.

Vous pouvez utiliser Liste des disques pour rechercher les disques disponibles.

Lun

Facultatif. Spécifie le numéro d'unité logique (LUN) pour le disque de données. Si le disque est le premier disque ajouté, cet élément est facultatif et la valeur par défaut 0 est utilisée. Si plus d'un disque est ajouté, cet élément est requis.

Utilisez Obtenir un rôle pour rechercher les numéros de LUN déjà utilisés.

Les valeurs LUN valides sont comprises entre 0 et 15.

LogicalDiskSizeInGB

Facultatif. Spécifie la taille, en Go, d'un disque vide à joindre à la machine virtuelle. Si le disque qui est ajouté est déjà enregistré dans l'abonnement, cet élément est ignoré. Si le disque et le disque dur virtuel sont créés par Azure lorsqu'ils sont ajoutés, cet élément définit la taille du nouveau disque.

Le nombre de disques que vous pouvez ajouter à une machine virtuelle est limité par la taille de la machine. Pour plus d'informations, consultez Tailles de machine virtuelle et de service cloud pour Azure.

Cet élément est utilisé avec l'élément MediaLink.

MediaLink

Facultatif. Si le disque qui est ajouté est déjà enregistré dans l'abonnement, ou si le disque dur virtuel existe déjà dans le stockage d'objets blob, cet élément est ignoré. Si aucun fichier de disque dur virtuel n'existe dans le stockage d'objets blob, cet élément définit l'emplacement du nouveau disque dur virtuel qui est créé lorsque le nouveau disque est ajouté.

Exemple :

http://example.blob.core.windows.net/disks/mydatadisk.vhd

SourceMediaLink

Facultatif. Si le disque qui est ajouté est déjà enregistré dans l'abonnement, ou si le disque dur virtuel n'existe pas dans le stockage d'objets blob, cet élément est ignoré. Si le fichier de disque dur virtuel existe dans le stockage d'objets blob, cet élément définit le chemin d'accès au disque dur virtuel et un disque est enregistré à partir de celui-ci et attaché à la machine virtuelle.

Contient les paramètres utilisés pour créer le disque de système d'exploitation pour une machine virtuelle.

 

Nom de l'élément Description

HostCaching

Facultatif. Spécifie le mode de mise en cache du disque de système d'exploitation. Ce paramètre affecte la cohérence et les performances du disque.

Les valeurs possibles sont les suivantes :

  • ReadOnly

  • ReadWrite

La valeur par défaut est ReadWrite.

noteRemarque
La modification de cette valeur entraîne le redémarrage de la machine virtuelle.

DiskLabel

Facultatif. Spécifie la description du disque.

DiskName

Ce paramètre est requis si un disque existant est utilisé pour créer une machine virtuelle. Spécifie le nom d'un disque existant ou nouveau. Pour un nouveau disque, si cet élément n'est pas spécifié, un nom unique constitué d'une combinaison du nom du déploiement, du nom du rôle et du numéro d'identification est attribué. Si l'élément RemoteSourceImageLink est utilisé, il doit spécifier un nouveau nom de disque.

Le nom du disque ne doit contenir que des caractères alphanumériques, des traits de soulignement, des points ou des tirets. Le nom ne doit pas dépasser 256 caractères. Le nom ne doit pas se terminer par un point ni un tiret.

MediaLink

Ce paramètre est requis si la machine virtuelle est créée à partir d'une image de plateforme. Spécifie l'emplacement du fichier de disque dur virtuel créé lorsque SourceImageName spécifie une image de plateforme. Cet élément n'est pas utilisé si un disque existant sert à créer la machine virtuelle.

Exemple :

http://contoso.blob.core.windows.net/disks/mydisk.vhd

SourceImageName

Facultatif. Spécifie le nom de l'image à utiliser pour créer la machine virtuelle. Vous pouvez spécifier une image d'utilisateur ou une image de plateforme. Une image est toujours associée à un disque dur virtuel, qui est un fichier .vhd stocké en tant qu'objet blob de pages dans un compte de stockage Azure. Si vous spécifiez une image de plateforme, un disque dur virtuel associé est créé et vous devez utiliser l'élément MediaLink pour spécifier l'emplacement où se trouvera le disque dur virtuel dans le stockage.

Système d'exploitation

Requis si RemoteSourceImageLink est utilisé. Spécifie le type de système d'exploitation installé dans l'image.

Les valeurs possibles sont les suivantes :

  • Windows

  • Linux

RemoteSourceImageLink

Facultatif. Spécifie un URI accessible publiquement ou un URI de signature d'accès partagé (SAS) pointant vers l'emplacement où est stockée une image de système d'exploitation utilisée pour créer la machine virtuelle. Cet emplacement peut être un emplacement différent des référentiels d'images de plateforme ou d'utilisateur dans Azure. Une image est toujours associée à un disque dur virtuel, qui est un fichier .vhd stocké en tant qu'objet blob de pages dans un compte de stockage Azure. Si vous spécifiez le chemin d'accès d'une image à l'aide de cet élément, un disque dur virtuel associé est créé et vous devez utiliser l'élément MediaLink pour spécifier l'emplacement où se trouvera le disque dur virtuel dans le stockage. Si vous utilisez cet élément, SourceImageName n'est pas utilisé.

L'élément RemoteSourceImageLink est uniquement disponible si vous utilisez la version 01/05/2014 ou une version ultérieure.

Contient une collection d'extensions de ressources à installer sur la machine virtuelle. Une extension de ressource est un composant logiciel installé sur la machine virtuelle. Pour installer les extensions de ressource, l'agent de machine virtuelle doit être installé sur la machine virtuelle. Pour plus d'informations, consultez Gestion des extensions.

 

Nom de l'élément Description

ResourceExtensionReference

Obligatoire. Spécifie les propriétés d'une extension de ressource qui doit être installée sur la machine virtuelle.

ReferenceName

Obligatoire. Spécifie le nom de la référence de l'extension de ressource.

Serveur de publication

Obligatoire. Spécifie le nom du serveur de publication qui a créé l'extension de ressource. Vous pouvez utiliser Liste des extensions des ressources pour rechercher le nom du serveur de publication d'une extension de ressource.

Nom

Obligatoire. Spécifie le nom de l'extension de ressource. Vous pouvez utiliser Liste des extensions des ressources pour rechercher les noms des extensions de ressource disponibles.

Version

Obligatoire. Spécifie la version de l'extension de ressource. Vous pouvez définir cette valeur sur * pour utiliser la dernière version de l'extension. Si l'extension a récemment été ajoutée ou mise à jour, vous devez vous assurer que la valeur de ReplicationCompleted est définie sur true avant de pouvoir utiliser la version de l'extension. Vous pouvez utiliser Liste des versions d'extension des ressources pour déterminer l'état de réplication et les versions disponibles de l'extension.

ResourceExtensionParameterValues

Facultatif. Contient une collection de paramètres qui sont transmis à l'extension de ressource lors de son installation.

État

Facultatif. Spécifie l'état de l'extension de ressource. Lors de la création d'une machine virtuelle, le seul état qui peut être spécifié est enable, soit la valeur par défaut si cet élément n'est pas utilisé. Pour plus d'informations sur la désactivation ou la suppression d'une extension, consultez Mettre à jour un rôle.

Certificats

Facultatif. Contient une collection des certificats installés sur la machine virtuelle et utilisés par l'extension. Avant de pouvoir inclure les certificats dans la requête, vous devez ajouter ceux-ci au service cloud. Pour plus d'informations, consultez Ajouter un certificat de service.

L'élément Certificates est uniquement disponible si vous utilisez la version 01/06/2014 ou une version ultérieure.

Contient une collection des certificats installés sur la machine virtuelle et utilisés par l'extension.

 

Nom de l'élément Description

Empreinte numérique

Obligatoire. Spécifie l'empreinte numérique du certificat que l'extension doit utiliser.

ThumbprintAlgorithm

Obligatoire. Spécifie l'algorithme de l'empreinte numérique. Cette valeur est toujours sha1.

Contient une collection de paramètres qui sont transmis à l'extension de ressource lors de son installation.

 

Nom de l'élément Description

ResourceExtensionParameterValue

Obligatoire. Spécifie la clé, la valeur et le type du paramètre.

de l'agent

Obligatoire. Spécifie la clé du paramètre.

Valeur

Obligatoire. Spécifie la valeur encodée en base 64 du paramètre. Si la configuration de l'extension est au format XML, cette valeur est validée en utilisant le schéma public ou privé. Le schéma utilisé dépend de la valeur de Type.

Si la configuration de l'extension est au format JSON, cette valeur doit contenir un objet JSON valide. Vous ne pouvez pas utiliser le schéma public ou privé pour valider l'objet. Pour utiliser un objet JSON, la version doit être 2014-04-01 ou une version ultérieure.

Type

Obligatoire. Spécifie le type de l'extension de ressource.

Les valeurs possibles sont les suivantes :

  • Public

  • Private

Si cette valeur est définie sur Private, le paramètre n'est pas retourné par Obtenir un déploiement. Vous pouvez spécifier un seul paramètre public et un seul paramètre privé pour un maximum de deux paramètres.

Contient une liste de serveurs DNS à associer à la machine virtuelle.

 

Nom de l'élément Description

DnsServers

Obligatoire. Contient les paramètres spécifiant les serveurs DNS à utiliser pour la machine virtuelle.

DnsServer

Obligatoire. Contient les éléments Name et Address du serveur DNS.

Nom

Obligatoire. Spécifie le nom du serveur DNS.

Adresse

Obligatoire. Spécifie l'adresse IP du serveur DNS.

Contient une liste de programmes d'équilibrage de charge internes qui peuvent être affectés à des points de terminaison d'entrée.

 

Nom de l'élément Description

LoadBalancer

Obligatoire. Spécifie les attributs d'un programme d'équilibrage de charge interne.

Nom

Obligatoire. Spécifie le nom du programme d'équilibrage de charge interne.

FrontendIpConfiguration

Obligatoire. Spécifie la configuration pour l'adresse IP virtuelle qui est fournie par le programme d'équilibrage de charge.

Type

Obligatoire. Spécifie le type de l'adresse IP virtuelle qui est fournie par le programme d'équilibrage de charge. La seule valeur autorisée est Private.

SubnetName

Obligatoire si le déploiement existe dans un réseau virtuel et qu'un élément StaticVirtualNetworkIPAddress est affecté. Spécifie le sous-réseau du réseau virtuel utilisé par le programme d'équilibrage de charge. L'adresse IP virtuelle qui est gérée par le programme d'équilibrage de charge est contenue dans ce sous-réseau.

StaticVirtualNetworkIPAddress

Facultatif. Spécifie une adresse IP virtuelle spécifique utilisée par le programme d'équilibrage de charge à partir du sous-réseau dans le réseau virtuel.

La réponse inclut un code d'état HTTP et un ensemble d'en-têtes de réponse.

Une opération ayant réussi retourne le code d'état 202 (Accepté). Pour plus d'informations sur les codes d'état, consultez Codes d'état et d'erreur de la gestion des services.

La réponse de l'opération inclut les en-têtes suivants. La réponse peut aussi inclure des en-têtes HTTP standard supplémentaires. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.

 

En-tête de réponse Description

x-ms-request-id

Valeur qui identifie de façon unique une demande effectuée au service de gestion.

Vous pouvez également créer des déploiements de machines virtuelles en consultant les ressources suivantes :

Lorsque vous créez un déploiement d'une machine virtuelle, vous devez vous assurer que le service cloud et le disque ou l'image que vous utilisez se trouvent dans la même région. Par exemple, si le service cloud a été créé dans la région West US, le disque ou l'image que vous utilisez doit également se trouver dans un compte de stockage dans la région West US.

Pour exécuter cet exemple, remplacez les valeurs des variables suivantes :

 

Variable Valeur

Empreinte numérique

Spécifiez une empreinte numérique d'un certificat de gestion qui a été téléchargé pour autoriser des opérations à effectuer dans Azure. Pour plus d'informations, consultez Créer et télécharger un certificat de gestion pour Azure.

SubscriptionId

Fournissez l'identificateur d'abonnement nécessaire pour rechercher le service cloud approprié. Pour trouver l'identificateur d'abonnement, cliquez sur Paramètres dans le Portail de gestion.

ServiceName

Spécifiez le nom du service cloud existant sur lequel vous voulez déployer la machine virtuelle. Vous pouvez utiliser Liste des services cloud pour rechercher les noms des services existants. Vous pouvez créer un service cloud dans le Portail de gestion en suivant la procédure décrite dans l'article Créer un service cloud ou à l'aide de l'applet de commande New-AzureService.

DeploymentName

Spécifiez un nom pour le nouveau déploiement.

DeploymentLabel

Spécifiez un identificateur pour le déploiement. Cette étiquette peut être utilisée à des fins de suivi.

UserName

Spécifiez un nom pour le compte administrateur sur la machine virtuelle.

RoleName

Spécifiez un nom pour le rôle. Dans cet exemple, le nom de rôle est également utilisé comme nom d'ordinateur.

SourceImage

Spécifiez le nom de l'image de plateforme que vous souhaitez utiliser pour configurer la machine virtuelle. Vous pouvez utiliser Liste des images de système d'exploitation pour obtenir les noms des images de plateforme disponibles dans le référentiel d'image.

OSVhdPath

Spécifiez le chemin d'accès au stockage Azure où le disque de système d'exploitation créé sera enregistré. Pour plus d'informations, consultez Comment créer un compte de stockage.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.IO;

namespace CreateVirtualMachineDeployment
{
  class Program
  {
    private static XNamespace wa = "http://schemas.microsoft.com/windowsazure";
    private const string Thumbprint = "<thumbprint-of-management-certificate>";
    private const string SubscriptionId = "<identifier-of-subscription>";
    private const string Version = "2013-08-01";
    private const string ServiceName = "<name-of-existing-service>";
    private const string DeploymentName = "<name-of-new-deployment>";
    private const string DeploymentLabel = "<label-of-deployment>";
    private const string DeploymentSlot = "production";
    private const string UserName = "<name-of-user-account>";
    private const string RoleName = "<name-of-virtual-machine>";
    private const string SourceImage = "<name-of-platform-image>";
    private const string OSVhdPath = "<storage-path-of-operating-system-disk>";

    // Gets or sets the certificate that matches the Thumbprint value.
    private static X509Certificate2 Certificate { get; set; }

    static void Main(string[] args)
    {
      Certificate = GetStoreCertificate(Thumbprint);

      // Create the uri for the request
      string uriFormat = "https://management.core.windows.net/{0}/services/hostedservices/{1}/deployments";
      Uri uri = new Uri(String.Format(uriFormat, SubscriptionId, ServiceName));

      Console.WriteLine("Enter the administrator password:");
      string AdminPassword = Console.ReadLine();

      // Create the request to add a new Virtual Machine deployment
      XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
      XDocument requestBody = new XDocument(
        new XDeclaration("1.0", "UTF-8", "no"),
        new XElement(wa + "Deployment",
          new XElement(wa + "Name", DeploymentName),
          new XElement(wa + "DeploymentSlot", DeploymentSlot),
          new XElement(wa + "Label", DeploymentLabel),
          new XElement(wa + "RoleList",
            new XElement(wa + "Role",
              new XElement(wa + "RoleName", RoleName),
              new XElement(wa + "RoleType", "PersistentVMRole"),
              new XElement(wa + "ConfigurationSets",
                new XElement(wa + "ConfigurationSet",
                  new XAttribute(xsi + "type", "WindowsProvisioningConfigurationSet"),
                  new XElement(wa + "ConfigurationSetType", "WindowsProvisioningConfiguration"),
                  new XElement(wa + "ComputerName", RoleName),
                  new XElement(wa + "AdminPassword", AdminPassword),
                  new XElement(wa + "AdminUsername", UserName))),
              new XElement(wa + "OSVirtualHardDisk",
                new XElement(wa + "MediaLink", OSVhdPath),
                new XElement(wa + "SourceImageName", SourceImage))))));

      // Submit the request and get the response
      HttpWebResponse response = InvokeRequest(uri, "POST", requestBody);

      HttpStatusCode statusCode = response.StatusCode;
      Console.WriteLine("The status of the operation: {0}", statusCode.ToString());
      Console.Write("Press any key to continue:");
      Console.ReadKey();
    }

    // Gets the certificate matching the thumbprint from the local store.
    // Throws an ArgumentException if a matching certificate is not found.
    private static X509Certificate2 GetStoreCertificate(string thumbprint)
    {
      List<StoreLocation> locations = new List<StoreLocation> 
      { 
        StoreLocation.CurrentUser, 
        StoreLocation.LocalMachine 
      };

      foreach (var location in locations)
      {
        X509Store store = new X509Store("My", location);
        try
        {
          store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
          X509Certificate2Collection certificates = store.Certificates.Find(
            X509FindType.FindByThumbprint, thumbprint, false);
          if (certificates.Count == 1)
          {
            return certificates[0];
          }
        }
        finally
        {
          store.Close();
        }
      }
      throw new ArgumentException(string.Format(
        "A Certificate with Thumbprint '{0}' could not be located.", thumbprint));
    }

    // Add the request headers and get the response from the request
    private static HttpWebResponse InvokeRequest(Uri uri, string method, XDocument requestBody)
    {
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
      request.Method = method;
      request.Headers.Add("x-ms-version", Version);
      request.ClientCertificates.Add(Certificate);
      request.ContentType = "application/xml";

      if (requestBody != null)
      {
        using (Stream requestStream = request.GetRequestStream())
        {
          using (StreamWriter streamWriter = new StreamWriter(
            requestStream, System.Text.UTF8Encoding.UTF8))
          {
            requestBody.Save(streamWriter, SaveOptions.DisableFormatting);
          }
        }
      }

      HttpWebResponse response;
      try
      {
        response = (HttpWebResponse)request.GetResponse();
      }
      catch (WebException ex)
      {
        response = (HttpWebResponse)ex.Response;
      }
      response.Close();
      return response;
    }
  }
}

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Afficher:
© 2014 Microsoft