내보내기(0) 인쇄
모두 확장

가상 컴퓨터 배포 만들기

업데이트 날짜: 2014년 10월

Create Virtual Machine Deployment 작업은 배포를 만들고 그런 다음 지정된 구성을 기반으로 하는 배포에서 가상 컴퓨터를 만듭니다.

다음과 같이 Create Virtual Machine Deployment 요청을 지정할 수 있습니다. <subscription-id>를 구독 ID로 바꾸고, <cloudservice-name>을 클라우드 서비스의 이름으로 바꾸십시오.

 

메서드 요청 URI

POST

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

관리 서비스에 대한 요청이 안전한지 확인해야 합니다. 자세한 내용은 서비스 관리 요청 인증을 참조하십시오.

다음 표에서는 요청 헤더에 대해 설명합니다.

 

요청 헤더 설명

x-ms-version

필수 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 이 헤더는 01.03.12 이후로 설정되어야 합니다. 버전 관리 헤더에 대한 자세한 내용은 서비스 관리 버전 관리를 참조하십시오.

요청 본문의 형식은 다음과 같습니다.


<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>
                  <ComponentName>name-of-component</ComponentName>
                  <ComponentSettings>
                    <ComponentSetting>
                      <SettingName>name-of-setting</SettingName>
                      <Content>base-64-encoded-XML-content</Content>
                    </ComponentSetting>
                  </ComponentSettings>
                </Components>
              </UnattendedPass>
            </Passes>
          </AdditionalUnattendedContent>
        </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>
              <LoadBalancerName>name-of-internal-loadbalancer</LoadBalancerName>
              <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>
            </InputEndpoint>
          </InputEndpoints>
          <SubnetNames>
            <SubnetName>name-of-subnet</SubnetName>
          </SubnetNames> 
          <StaticVirtualNetworkIPAddress>ip-address</StaticVirtualNetworkIPAddress>
          <PublicIPs>
            <PublicIP>
              <Name>name-of-public-ip</Name>
            <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>
        </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>
        <RemoteSourceImageLink>path-to-source-image</RemoteSourceImageLink>
        <OS>operating-system-of-image</OS>
      </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>

다음 표에서는 요청 본문의 요소에 대해 설명합니다.

 

요소 이름 설명

Name

필수 사항입니다. 배포의 이름을 지정합니다. 배포 이름은 클라우드 서비스에 있는 다른 배포와는 다른 고유 이름이어야 합니다.

DeploymentSlot

필수 사항입니다. 가상 컴퓨터를 배포할 환경을 지정합니다. Production 값만 허용됩니다.

Label

필수 사항입니다. 배포의 식별자를 지정합니다. 레이블은 최대 100자까지 지정할 수 있습니다. 레이블은 추적용으로 사용할 수 있습니다.

RoleList

필수 사항입니다. 배포할 가상 컴퓨터에 대한 정보를 포함합니다.

VirtualNetworkName

선택 사항입니다. 배포가 속할 기존 가상 네트워크의 이름을 지정합니다.

가상 네트워크는 네트워크 구성 설정 작업을 호출하여 만듭니다.

Dns

선택 사항입니다. 가상 컴퓨터에 연결할 DNS 서버 목록을 포함합니다.

ReservedIPName

선택 사항입니다. 배포에 할당할 예약된 IP 주소 이름을 지정합니다. 이 요소를 사용하여 배포에 주소를 할당하려면 먼저 예약된 IP 주소 만들기를 실행해야 합니다.

ReservedIPName 요소는 버전 01.05.14 이후인 경우에만 사용할 수 있습니다.

LoadBalancers

선택 사항입니다. 입력 끝점에 할당할 수 있는 내부 부하 분산 장치 목록을 포함합니다.

LoadBalancers 요소는 버전 01.05.14 이후인 경우에만 사용할 수 있습니다.

배포할 가상 컴퓨터에 대한 정보를 포함합니다.

 

요소 이름 설명

역할

필수 사항입니다. 가상 컴퓨터를 만드는 데 사용되는 구성 집합을 포함합니다.

가상 컴퓨터를 만드는 데 사용되는 구성 집합을 포함합니다.

 

요소 이름 설명

RoleName

필수 사항입니다. 가상 컴퓨터의 이름을 지정합니다.

RoleType

필수 사항입니다. 사용할 역할의 유형을 지정합니다. 가상 컴퓨터의 경우 이 값이 PersistentVMRole이어야 합니다.

ConfigurationSets

선택 사항입니다. 시스템 및 응용 프로그램 설정을 정의하는 구성 집합 컬렉션을 포함합니다.

ResourceExtensionReferences

선택 사항입니다. 가상 컴퓨터에 설치할 리소스 확장 컬렉션을 포함합니다. 이 요소는 ProvisionGuestAgent가 true로 설정된 경우에 사용됩니다.

ResourceExtensionReferences 요소는 버전 01.11.13 이후인 경우에만 사용할 수 있습니다.

VMImageName

선택 사항입니다. 가상 컴퓨터를 만드는 데 사용할 VM 이미지의 이름을 지정합니다. 이 요소를 사용하는 경우 ConfigurationSets 요소는 사용되지 않습니다. 자세한 내용은 VM 이미지 캡처를 참조하십시오.

VMImageName 요소는 버전 01.02.14 이후인 경우에만 사용할 수 있습니다.

MediaLocation

게시된 VM 이미지에서 가상 컴퓨터를 만드는 경우 필수 사항입니다. VMImageName에 게시된 VM 이미지를 지정할 때 생성되는 VHD 파일의 위치를 지정합니다.

MediaLocation 요소는 버전 01.05.14 이후인 경우에만 사용할 수 있습니다.

AvailabilitySetName

선택 사항입니다. 가상 컴퓨터 컬렉션의 이름을 지정합니다. 동일한 가용성 집합에 지정된 가상 컴퓨터는 가용성을 최대화하기 위해 서로 다른 노드에 할당됩니다. 가용성 집합에 대한 자세한 내용은 가상 컴퓨터의 가용성 관리를 참조하십시오.

DataVirtualHardDisks

선택 사항입니다. 가상 컴퓨터에 데이터 디스크를 추가하는 데 사용되는 매개 변수를 포함합니다. VM 이미지를 사용하여 가상 컴퓨터를 만드는 경우 이 요소는 사용되지 않습니다. 데이터 디스크에 대한 자세한 내용은 디스크 및 이미지 관리를 참조하십시오.

OSVirtualHardDisk

선택 사항입니다. 가상 컴퓨터에 대한 운영 체제 디스크를 만드는 데 사용되는 매개 변수를 포함합니다. VM 이미지를 사용하여 가상 컴퓨터를 만드는 경우 이 요소는 사용되지 않습니다.

RoleSize

선택 사항입니다. 가상 컴퓨터의 크기를 지정합니다. 기본 크기는 작음입니다. 가상 컴퓨터 크기에 자세한 내용은 Azure의 가상 컴퓨터 및 클라우드 서비스 크기를 참조하십시오.

ProvisionGuestAgent

선택 사항입니다. VM 에이전트가 가상 컴퓨터에 설치되었는지 여부를 나타냅니다. 가상 컴퓨터에서 리소스 확장을 실행하려면 이 서비스를 설치해야 합니다.

가능한 값은 다음과 같습니다.

  • true

  • false

시스템 및 응용 프로그램 구성 설정을 지정하는 구성 집합 컬렉션을 포함합니다.

 

요소 이름 설명

ConfigurationSet

필수 사항입니다. 가상 컴퓨터의 구성 요소를 지정합니다. type 특성은 관리자 암호가 작업 기록 파일에 기록되지 않도록 방지하기 위해 필요합니다.

ConfigurationSetType

필수 사항입니다. 가상 컴퓨터를 만들려면 다음 구성 집합 중 하나를 지정해야 합니다.

  • WindowsProvisioningConfiguration

  • LinuxProvisioningConfiguration

선택 사항입니다. 필요에 따라 가상 컴퓨터에 대한 가상 네트워크 구성을 만드는 데 필요한 메타데이터를 포함하는 NetworkConfiguration 집합을 지정할 수 있습니다

ComputerName

WindowsProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터의 컴퓨터 이름을 지정합니다. 컴퓨터 이름을 지정하지 않은 경우 배포 이름, 역할 이름 및 식별 번호를 조합한 이름이 할당됩니다. 컴퓨터 이름의 길이는 1자에서 15자까지 가능합니다.

AdminPassword

WindowsProvisioningConfiguration에서는 선택 사항입니다. 만들려는 가상 컴퓨터의 관리자 계정에 사용할 암호를 지정합니다. 이미지를 사용하여 가상 컴퓨터를 만드는 경우 AdminUsername 요소를 사용하여 컴퓨터에 만들 관리자 계정의 이름을 지정해야 합니다. 또한 AdminPassword 요소를 사용하여 만들려는 관리자 계정의 암호를 지정해야 합니다. 기존의 특수한 디스크를 사용하여 가상 컴퓨터를 만드는 경우에는 계정이 디스크에 이미 있어야 하므로 이 요소는 사용되지 않습니다.

EnableAutomaticUpdates

WindowsProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터에 대해 자동 업데이트를 사용으로 설정할지 여부를 지정합니다.

가능한 값은 다음과 같습니다.

  • true

  • false

기본값은 true입니다.

TimeZone

WindowsProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터의 표준 시간대를 지정합니다.

지원되는 표준 시간대 항목의 전체 목록을 보려면 다음을 수행합니다.

  • 레지스트리 항목 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones에 나열된 값을 참조하십시오.

  • tzutil 명령줄 도구를 사용하여 유효한 표준 시간대를 나열할 수 있습니다.

DomainJoin

WindowsProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터가 참가하게 될 도메인을 정의하는 속성을 포함합니다.

StoredCertificateSettings

WindowsProvisioningConfiguration에서는 선택 사항입니다. 새 가상 컴퓨터에 프로비전하는 데 사용할 서비스 인증서 목록을 포함합니다.

WinRM

WindowsProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터에 Windows 원격 관리 서비스에 대한 구성 설정을 포함합니다. 따라서 원격 Windows PowerShell을 사용할 수 있습니다.

WinRM 요소는 버전 01.03.13 이후인 경우에만 사용할 수 있습니다.

AdminUsername

WindowsProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터에 액세스하기 위해 만든 관리자 계정의 이름을 지정합니다. 이미지를 사용하여 가상 컴퓨터를 만드는 경우 이 요소를 사용하여 만들려는 관리자 계정의 이름을 지정해야 합니다. 또한 AdminPassword 요소를 사용하여 만들려는 관리자 계정의 암호를 지정해야 합니다. 기존의 특수한 디스크를 사용하여 가상 컴퓨터를 만드는 경우에는 계정이 디스크에 이미 있어야 하므로 이 요소는 사용되지 않습니다.

CustomData

WindowsProvisioningConfiguration에서는 선택 사항입니다. 사용자 지정 데이터의 Base-64로 인코딩된 문자열을 지정합니다. Base-64로 인코딩된 문자열은 가상 컴퓨터에 파일로 저장된 이진 배열로 디코딩됩니다. 이진 배열의 최대 길이는 65535바이트입니다. 파일은 %SYSTEMDRIVE%\AzureData\CustomData.bin에 저장됩니다. 파일이 있으면 덮어씁니다. 디렉터리에 대한 보안은 시스템:모든 권한 및 관리자:모든 권한으로 설정됩니다.

CustomData 요소는 버전 01.10.13 이후인 경우에만 사용할 수 있습니다.

AdditionalUnattendContent

선택 사항입니다. Windows 설치 프로그램에서 사용되는 Unattend.xml 파일에 포함할 수 있는 Base-64로 인코딩된 XML 형식의 정보를 추가로 지정합니다. 자세한 내용은 응답 파일 개요를 참조하십시오.

AdditionalUnattendContent 요소는 버전 01.04.14 이후인 경우에만 사용할 수 있습니다.

HostName

LinuxProvisioningConfiguration에서는 필수 사항입니다. 가상 컴퓨터의 호스트 이름을 지정합니다. 호스트 이름의 길이는 1자에서 64자까지 가능합니다.

UserName

LinuxProvisioningConfiguration에서는 필수 사항입니다. 가상 컴퓨터의 sudoer 그룹에 만들 사용자 계정의 이름을 지정합니다. 사용자 계정 이름은 1자에서 32자까지 가능합니다.

UserPassword

LinuxProvisioningConfiguration에서는 필수 사항입니다. 사용자 계정의 암호를 지정합니다. 암호 길이는 6자에서 72자까지 가능합니다.

DisableSshPasswordAuthentication

LinuxProvisioningConfiguration에서는 선택 사항입니다. SSH 암호 인증을 사용 안 함으로 설정할지 여부를 지정합니다. 기본적으로 이 값은 true로 설정됩니다.

가능한 값은 다음과 같습니다.

  • true

  • false

기본값은 true입니다.

SSH

LinuxProvisioningConfiguration에서는 선택 사항입니다. 가상 컴퓨터에 사용할 SSH 공용 키 및 키 쌍을 지정합니다.

CustomData

LinuxProvisioningConfiguration에서는 선택 사항입니다. 사용자 지정 데이터의 Base-64로 인코딩된 문자열을 지정합니다. Base-64로 인코딩된 문자열은 가상 컴퓨터의 ISO에서 ovf-env.xml 파일에 있습니다. 이 파일은 Azure Linux 에이전트에 의해 /var/lib/waagent/ovf-env.xml에 복사됩니다. 또한 Azure Linux 에이전트는 프로비전 중에 Base-64로 인코딩된 데이터를 /var/lib/waagent/CustomData에 배치합니다. 이진 배열의 최대 길이는 65535바이트입니다.

CustomData 요소는 버전 01.10.13 이후인 경우에만 사용할 수 있습니다.

InputEndpoints

NetworkConfiguration에서는 선택 사항입니다. 가상 컴퓨터에 대한 외부 끝점 컬렉션을 포함합니다.

SubnetNames

StaticVirtualNetworkIPAddress를 지정하면 필수 사항이고, 그렇지 않으면 NetworkConfiguration에서 선택 사항입니다. 가상 컴퓨터가 속하게 될 서브넷 목록을 포함합니다.

StaticVirtualNetworkIPAddress

선택 사항입니다. 가상 네트워크의 가상 컴퓨터에 대한 내부 IP 주소를 지정합니다. 이 요소를 지정한 경우 서브넷이 하나만 정의된 SubnetNames 요소도 지정해야 합니다. 이 요소에 지정된 IP 주소는 SubnetNames에 정의된 서브넷에 속해야 하며 서브넷에 있는 처음 네 개의 IP 주소 중 하나 또는 마지막 IP 주소여서는 안 됩니다. 웹 역할 또는 작업자 역할을 StaticVirtualNetworkIPAddress가 정의된 가상 컴퓨터가 있는 서브넷에 배포할 수는 없습니다.

StaticVirtualNetworkIPAddress 요소는 버전 01.11.13 이후인 경우에만 사용할 수 있습니다.

PublicIPs

선택 사항입니다. 가상 컴퓨터의 기본 가상 IP 주소에 추가로 사용할 수 있는 공유 IP 주소를 포함합니다.

PublicIPs 요소는 버전 01.05.14 이후인 경우에만 사용할 수 있습니다.

가상 컴퓨터가 참가하게 될 도메인을 정의하는 속성을 포함합니다.

 

요소 이름 설명

Credentials

선택 사항입니다. 가상 컴퓨터가 도메인에 참가할 때 사용할 자격 증명을 지정합니다.

JoinDomain

선택 사항입니다. 참가할 도메인을 지정합니다.

MachineObjectOU

선택 사항입니다. 컴퓨터 계정이 만들어진 OU(조직 구성 단위)의 LDAP(Lightweight Directory Access Protocol) X 500 고유 이름을 지정합니다. 이 계정은 컴퓨터가 참가하고 있는 도메인의 도메인 컨트롤러에 있는 Active Directory에 있습니다.

예:

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

가상 컴퓨터가 도메인에 참가할 때 사용할 자격 증명을 지정합니다.

 

요소 이름 설명

Domain

선택 사항입니다. 계정을 인증하는 데 사용되는 도메인의 이름을 지정합니다. 이 값은 정규화된 DNS 도메인입니다.

도메인 이름을 지정하지 않을 경우 Username에 UPN(사용자 계정 이름) 형식(user@fully-qualified-DNS-domain) 또는 fully-qualified-DNS-domain\username 형식을 지정해야 합니다.

예:

example.com

Username

필수 사항입니다. 도메인에 참가하는 데 사용될 수 있는 도메인 내의 사용자 이름을 지정합니다.

Password

필수 사항입니다. 도메인에 참가하는 데 사용할 암호를 지정합니다.

새 가상 컴퓨터에 프로비전하는 데 사용할 서비스 인증서 목록을 포함합니다. 저장된 인증서 설정은 클라우드 서비스에 이미 있는 인증서를 참조합니다. 가상 컴퓨터에 대한 저장된 인증서를 구성하기 전에 서비스 인증서 추가 작업을 호출하거나 관리 포털을 사용하여 인증서를 추가해야 합니다.

 

요소 이름 설명

CertificateSetting

필수 사항입니다. 인증서의 매개 변수를 지정합니다.

StoreLocation

필수 사항입니다. 가상 컴퓨터에 있는 인증서 저장소 위치를 지정합니다.

LocalMachine 값만 지원됩니다.

StoreName

필수 사항입니다. 인증서를 검색할 인증서 저장소의 이름을 지정합니다.

예를 들어 "My"입니다.

Thumbprint

필수 사항입니다. 인증서의 지문을 지정합니다. 지문에 기존 서비스 인증서를 지정해야 합니다.

가상 컴퓨터에 Windows 원격 관리 서비스에 대한 구성 설정을 포함합니다.

 

요소 이름 설명

Listeners

필수 사항입니다. 원격 Windows PowerShell을 지원하는 데 필요한 정보의 컬렉션을 포함합니다.

Listener

필수 사항입니다. 수신기의 프로토콜 및 인증서 정보를 지정합니다.

프로토콜

수신기의 프로토콜을 지정합니다.

가능한 값은 다음과 같습니다.

  • Http

  • Https

이 값은 대/소문자를 구분합니다.

CertificateThumbprint

선택 사항입니다. 보안 연결용 인증서 지문을 지정합니다. 이 값을 지정하지 않으면 자체 서명된 인증서가 생성되어 가상 컴퓨터에 사용됩니다.

Windows 설치 프로그램에서 사용되는 Unattend.xml 파일에 포함할 수 있는 Base-64로 인코딩된 XML 형식의 정보를 추가로 지정합니다.

 

요소 이름 설명

PassName

필수 사항입니다. 콘텐츠가 적용되는 패스 이름을 지정합니다. oobeSystem 값만 허용됩니다.

ComponentName

필수 사항입니다. 추가한 콘텐츠로 구성할 구성 요소의 이름을 지정합니다. Microsoft-Windows-Shell-Setup 값만 허용됩니다.

SettingName

필수 사항입니다. 콘텐츠가 적용되는 설정의 이름을 지정합니다.

가능한 값은 다음과 같습니다.

  • FirstLogonCommands

  • AutoLogon

Content

필수 사항입니다. 지정한 경로 및 구성 요소의 unattend.xml 파일에 추가되는 Base-64로 인코딩된 XML 형식의 콘텐츠를 지정합니다. XML은 4KB 미만이어야 하며, 삽입할 설정 또는 기능의 루트 요소를 포함해야 합니다.

가상 컴퓨터에 사용할 SSH 공용 키 및 키 쌍을 지정합니다.

 

요소 이름 설명

PublicKeys

선택 사항입니다. SSH 공용 키 컬렉션을 지정합니다.

PublicKey

필수 사항입니다. 공용 키를 지정합니다.

FingerPrint

필수 사항입니다. 클라우드 서비스에 연결되는 X509 인증서의 SHA1 지문을 지정하고 SSH 공용 키를 포함합니다.

Path

필수 사항입니다. 가상 컴퓨터에서 SSH 공용 키가 저장된 파일의 전체 경로를 지정합니다. 파일이 이미 있으면 지정한 키는 파일에 추가됩니다.

예:

/home/user/.ssh/authorized_keys

KeyPairs

필수 사항입니다. SSH 키 쌍 컬렉션을 지정합니다.

KeyPair

필수 사항입니다. 가상 컴퓨터에 설치할 SSH 키 쌍을 지정합니다.

FingerPrint

필수 사항입니다. 클라우드 서비스에 연결되는 X509 인증서의 SHA1 지문을 지정하고 SSH 키 쌍을 포함합니다.

Path

필수 사항입니다. 가상 컴퓨터에서 SSH 개인 키가 저장된 파일의 전체 경로를 지정합니다. 파일에 키를 여러 개 작성하면 파일에서는 덮어쓰여집니다. SSH 공용 키는 개인 키와 동일한 디렉터리에 저장되고 개인 키와 이름이 같으며 접미사가 .pub입니다.

예:

/home/user/.ssh/id_rsa

가상 컴퓨터에 대한 외부 끝점 컬렉션을 포함합니다.

 

요소 이름 설명

InputEndpoint

필수 사항입니다. 가상 컴퓨터에 대한 외부 끝점을 정의하는 속성을 지정합니다.

LoadBalancedEndpointSetName

선택 사항입니다. 부하 분산된 끝점 집합의 이름을 지정합니다. 끝점에 대해 이 요소를 지정하면 끝점이 집합에 추가됩니다.

원격 데스크톱을 사용하여 가상 컴퓨터에 연결할 끝점을 추가하는 경우에는 이 속성을 설정하지 마십시오.

note참고
끝점 이름은 가상 컴퓨터 범위 내에서 고유해야 합니다.

LocalPort

필수 사항입니다. 가상 컴퓨터에서 수신하는 내부 포트를 지정합니다.

Name

필수 사항입니다. 외부 끝점의 이름을 지정합니다.

Port

필수 사항입니다. 끝점에 사용할 외부 포트를 지정합니다.

LoadBalancerProbe

선택 사항입니다. 부하 분산 장치가 끝점으로 트래픽을 전달하기 전에 가상 컴퓨터의 가용성을 모니터링하기 위해 사용하는 끝점 설정을 정의하는 속성을 포함합니다.

LoadBalancerName

선택 사항입니다. 이 끝점에 연결된 내부 부하 분산 장치의 이름을 지정합니다. 내부 부하 분산 장치 이름은 LoadBalancers에 지정됩니다.

LoadBalancerName 요소는 버전 01.05.14 이후인 경우에만 사용할 수 있습니다.

프로토콜

필수 사항입니다. 끝점의 전송 프로토콜을 지정합니다.

가능한 값은 다음과 같습니다.

  • TCP

  • UDP

EnableDirectServerReturn

선택 사항입니다. 끝점이 Direct Server Return을 사용하는지 여부를 지정합니다. EnableDirectServerReturn 요소는 RDP, SSH 또는 WinRM 끝점에 대해 지원되지 않으며 끝점의 공용 포트 및 로컬 포트가 다른 경우 지원되지 않습니다. AlwaysOn 가용성 그룹 및 SQL Server용 가상 컴퓨터를 설정할 때만 이 요소를 사용하는 것이 좋습니다. 자세한 내용은 Azure 가상 컴퓨터의 SQL Server에 대한 고가용성 및 재해 복구를 참조하십시오.

가능한 값은 다음과 같습니다.

  • true

  • false

기본값은 false입니다.

EndpointACL

선택 사항입니다. 끝점에 대한 네트워크 트래픽을 제어하는 규칙의 컬렉션을 포함합니다.

EndpointACL 요소는 버전 2013-06-01 이후인 경우에만 사용할 수 있습니다.

부하 분산 장치가 끝점으로 트래픽을 전달하기 전에 가상 컴퓨터의 가용성을 모니터링하기 위해 사용하는 끝점 설정을 정의하는 속성을 포함합니다.

 

요소 이름 설명

Path

선택 사항입니다. 가상 컴퓨터의 가용성 상태를 확인하기 위해 조사할 상대 경로를 지정합니다. Protocol이 TCP로 설정되어 있으면 이 값이 Null이어야 합니다.

예:

path

검색은 검색을 수행하기 위해 https://example.com/path를 사용합니다.

Port

선택 사항입니다. 가상 컴퓨터의 가용성 상태를 조사하기 위해 사용할 포트를 지정합니다.

프로토콜

선택 사항입니다. 가상 컴퓨터의 가용성 상태를 조사하기 위해 사용할 프로토콜을 지정합니다.

가능한 값은 다음과 같습니다.

  • HTTP

  • TCP

IntervalInSeconds

선택 사항입니다. 부하 분산 장치의 검색 간격(초)을 지정합니다. 최소값은 5초입니다. 기본값은 15초입니다.

TimeoutInSeconds

선택 사항입니다. 부하 분산 장치의 검색 제한 시간(초)을 지정합니다. 최소값은 11초입니다. 기본값은 31초입니다.

끝점에 대한 네트워크 트래픽을 제어하는 규칙의 컬렉션을 포함합니다.

 

요소 이름 설명

Rules

필수 사항입니다. 액세스 제어 규칙의 컬렉션을 지정합니다. 최대 50개의 규칙을 사용할 수 있습니다.

Rule

필수 사항입니다. 액세스 제어 규칙의 정의를 지정합니다.

Order

필수 사항입니다. 규칙의 우선 순위를 지정합니다. 이 값은 0에서 65535 사이일 수 있습니다. 컬렉션에서 각 규칙에 대한 주문 번호는 고유해야 합니다. 주문 번호가 작을 수록 규칙의 우선 순위가 높아집니다.

Action

필수 사항입니다. 규칙과 일치하는 트래픽을 허용할지 또는 거부할지를 지정합니다.

가능한 값은 다음과 같습니다.

  • permit

  • deny

RemoteSubnet

필수 사항입니다. 규칙의 서브넷을 지정합니다. 서브넷은 IPV4 CIDR(Classless Interdomain Routing) 표기법을 따라야 하고 유효한 서브넷이어야 합니다.

예: 10.0.0.0/24

설명

선택 사항입니다. 규칙에 대한 설명을 지정합니다. 설명의 최대 길이는 256자입니다.

가상 컴퓨터의 기본 가상 IP 주소에 추가로 사용할 수 있는 공유 IP 주소를 포함합니다.

 

요소 이름 설명

PublicIP

필수 사항입니다. 가상 컴퓨터와 통신하는 데 사용할 수 있는 추가 IP 공용 주소를 지정합니다.

Name

필수 사항입니다. 공용 IP 주소의 이름을 지정합니다.

가상 컴퓨터가 속하게 될 서브넷 목록을 포함합니다.

 

요소 이름 설명

SubnetName

필수 사항입니다. 가상 컴퓨터가 속하는 서브넷의 이름을 지정합니다.

가상 컴퓨터에 데이터 디스크를 추가하는 데 사용되는 매개 변수를 포함합니다.

 

요소 이름 설명

DataVirtualHardDisk

필수 사항입니다. 데이터 디스크를 만드는 데 사용되는 속성을 지정합니다.

HostCaching

선택 사항입니다. 데이터 디스크의 캐싱 모드를 지정합니다.

가능한 값은 다음과 같습니다.

  • None

  • ReadOnly

  • ReadWrite

기본값은 None입니다.

DiskLabel

선택 사항입니다. 추가할 디스크가 구독에 이미 등록되어 있는 경우 이 요소는 무시됩니다. 새 디스크가 생성되면 이 요소는 디스크에 대한 설명을 제공하는 데 사용됩니다. 이 요소의 값은 프로그래밍 방식으로만 가져올 수 있고 관리 포털에 나타나지 않습니다.

DiskName

선택 사항입니다. 추가할 디스크가 구독에 이미 등록되어 있는 경우 이 요소는 추가할 디스크를 식별하는 데 사용됩니다. Azure에서 새 디스크 및 연결된 VHD를 만드는 경우 이 요소가 사용되지 않으며 Azure에서 배포 이름, 역할 이름 및 식별 번호를 조합한 고유 이름을 할당합니다.

디스크 이름에는 영숫자 문자, 밑줄, 마침표 또는 대시만 사용해야 합니다. 이름은 256자보다 길면 안 됩니다. 이름은 마침표 또는 대시로 끝나지 않아야 합니다.

디스크 나열을 사용하여 사용 가능한 디스크를 찾을 수 있습니다.

Lun

선택 사항입니다. 데이터 디스크에 대한 LUN(논리 단위 번호)을 지정합니다. 디스크가 추가된 첫 번째 디스크인 경우 이 요소는 선택 사항이며 기본값 0이 사용됩니다. 여러 디스크가 추가되는 경우 이 요소는 필수 사항입니다.

역할 가져오기를 사용하여 이미 사용 중인 LUN 숫자를 찾을 수 있습니다.

유효한 LUN 값은 0에서 15까지입니다.

LogicalDiskSizeInGB

선택 사항입니다. 가상 컴퓨터에 연결할 빈 디스크의 크기(GB)를 지정합니다. 추가할 디스크가 구독에 이미 등록되어 있는 경우 이 요소는 무시됩니다. 추가된 대로 Azure에서 디스크 및 VHD를 만드는 경우 이 요소는 새 디스크의 크기를 정의합니다.

가상 컴퓨터에 추가할 수 있는 디스크 수는 컴퓨터의 크기에 의해 제한됩니다. 자세한 내용은 Azure의 가상 컴퓨터 및 클라우드 서비스 크기를 참조하십시오.

이 요소는 MediaLink 요소와 함께 사용됩니다.

MediaLink

선택 사항입니다. 추가할 디스크가 구독에 이미 등록되어 있거나 디스크의 VHD가 Blob 저장소에 이미 있는 경우 이 요소는 무시됩니다. VHD 파일이 Blob 저장소에 없는 경우 이 요소는 새 디스크를 추가할 때 생성되는 새 VHD의 위치를 정의합니다.

예:

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

SourceMediaLink

선택 사항입니다. 추가할 디스크가 구독에 이미 등록되어 있거나 디스크의 VHD가 Blob 저장소에 없는 경우 이 요소는 무시됩니다. VHD 파일이 Blob 저장소에 있는 경우 이 요소는 VHD의 경로를 정의하며 디스크가 해당 경로에서 등록되고 가상 컴퓨터에 연결됩니다.

가상 컴퓨터에 대한 운영 체제 디스크를 만드는 데 사용되는 매개 변수를 포함합니다.

 

요소 이름 설명

HostCaching

선택 사항입니다. 운영 체제 디스크의 캐싱 모드를 지정합니다. 이 설정은 디스크의 일관성과 성능에 영향을 줍니다.

가능한 값은 다음과 같습니다.

  • ReadOnly

  • ReadWrite

기본값은 ReadWrite입니다.

note참고
이 값을 변경하면 가상 컴퓨터가 다시 부팅됩니다.

DiskLabel

선택 사항입니다. 디스크에 대한 설명을 지정합니다.

DiskName

기존 디스크를 사용하여 가상 컴퓨터를 만드는 경우 필수 사항입니다. 새 디스크 또는 기존 디스크의 이름을 지정합니다. 새 디스크의 경우 이 요소를 지정하지 않으면 배포 이름, 역할 이름 및 식별 번호를 조합한 고유 이름이 할당됩니다.

디스크 이름에는 영숫자 문자, 밑줄, 마침표 또는 대시만 사용해야 합니다. 이름은 256자보다 길면 안 됩니다. 이름은 마침표 또는 대시로 끝나지 않아야 합니다.

MediaLink

플랫폼 이미지에서 가상 컴퓨터를 만드는 경우 필수 사항입니다. SourceImageName에 플랫폼 이미지를 지정할 때 생성되는 VHD 파일의 위치를 지정합니다. 기존 디스크를 사용하여 가상 컴퓨터를 만드는 경우에는 이 요소는 사용되지 않습니다.

예:

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

SourceImageName

선택 사항입니다. 가상 컴퓨터를 만드는 데 사용할 이미지의 이름을 지정합니다. 사용자 이미지 또는 플랫폼 이미지를 지정할 수 있습니다. 이미지는 항상 VHD와 연결되며 Azure의 저장소 계정에 페이지 Blob으로 저장되는 .vhd 파일입니다. 플랫폼 이미지를 지정하는 경우 연결된 VHD가 생성되며 MediaLink 요소를 사용하여 VHD를 저장할 저장소의 위치를 지정해야 합니다.

RemoteSourceImageLink

선택 사항입니다. 가상 컴퓨터를 만드는 데 사용되는 OS 이미지가 저장된 위치의 URI를 지정합니다. 이 위치는 Azure의 사용자 또는 플랫폼 이미지 리포지토리의 위치와 다를 수 있습니다. 이미지는 항상 VHD와 연결되며 Windows Azure의 저장소 계정에 페이지 Blob으로 저장되는 .vhd 파일입니다. 이 요소를 사용하여 이미지의 경로를 지정하는 경우 연결된 VHD가 생성되며 MediaLink 요소를 사용하여 VHD를 저장할 저장소의 위치를 지정해야 합니다. 이 요소를 사용하는 경우 SourceImageName은 사용되지 않습니다.

RemoteSourceImageLink 요소는 버전 01.05.14 이후인 경우에만 사용할 수 있습니다.

OS

RemoteSourceImageLink를 사용하는 경우 필수 사항입니다. 이미지에 설치된 운영 체제의 유형을 지정합니다.

가능한 값은 다음과 같습니다.

  • Windows

  • Linux

가상 컴퓨터에 설치할 리소스 확장 컬렉션을 포함합니다. 리소스 확장은 가상 컴퓨터에 설치된 소프트웨어 구성 요소입니다. 리소스 확장을 설치하려면 VM 에이전트를 가상 컴퓨터에 설치해야 합니다. 자세한 내용은 확장 관리를 참조하십시오.

 

요소 이름 설명

ResourceExtensionReference

필수 사항입니다. 가상 컴퓨터에 설치해야 하는 리소스 확장의 속성을 지정합니다.

ReferenceName

필수 사항입니다. 리소스 확장의 참조 이름을 지정합니다.

Publisher

필수 사항입니다. 리소스 확장을 만든 게시자의 이름을 지정합니다. 리소스 확장 나열을 사용하여 리소스 확장의 게시자 이름을 찾을 수 있습니다.

Name

필수 사항입니다. 리소스 확장의 이름을 지정합니다. 리소스 확장 나열을 사용하여 사용 가능한 리소스 확장의 이름을 찾을 수 있습니다.

Version

필수 사항입니다. 리소스 확장의 버전을 지정합니다. 이 값을 *로 설정하여 최신 버전의 확장을 사용할 수 있습니다. 확장을 최근에 추가하거나 업데이트한 경우 해당 버전의 확장을 사용하려면 먼저 ReplicationCompleted 값이 true로 설정되어 있는지 확인해야 합니다. 리소스 확장 버전 나열를 사용하여 복제 상태 및 사용 가능한 확장 버전을 확인할 수 있습니다.

ResourceExtensionParameterValues

선택 사항입니다. 리소스 확장을 설치할 때 리소스 확장에 전달되는 매개 변수 컬렉션을 포함합니다.

State

선택 사항입니다. 리소스 확장의 상태를 지정합니다. 가상 컴퓨터를 만든 경우에는 enable 상태만 지정할 수 있습니다. 이 상태는 이 요소가 사용되지 않는 경우의 기본값입니다. 확장을 사용하지 않도록 설정하거나 제거하는 방법에 대한 자세한 내용은 역할 업데이트를 참조하십시오.

리소스 확장을 설치할 때 리소스 확장에 전달되는 매개 변수 컬렉션을 포함합니다.

 

요소 이름 설명

ResourceExtensionParameterValue

필수 사항입니다. 키, 값 및 매개 변수 유형을 지정합니다.

Key

필수 사항입니다. 매개 변수의 키를 지정합니다.

필수 사항입니다. Base-64로 인코딩된 매개 변수 값을 지정합니다. 확장의 구성이 XML 형식으로 지정된 경우 이 값은 공용 또는 개인 스키마를 통해 유효성이 검사됩니다. 사용되는 스키마는 Type 값에 따라 다릅니다.

확장의 구성이 JSON 형식으로 지정된 경우 이 값은 유효한 JSON 개체를 포함해야 합니다. 공용 또는 개인 스키마를 사용하여 개체의 유효성을 검사할 수 없습니다. JSON 개체를 사용하려면 버전이 2014-04-01 이상이어야 합니다.

Type

필수 사항입니다. 리소스 확장의 유형을 지정합니다.

가능한 값은 다음과 같습니다.

  • Public

  • Private

이 값을 Private으로 설정하면 배포 가져오기에서 매개 변수가 반환되지 않습니다. 최대 두 개의 매개 변수에 대해 하나의 공용 매개 변수와 하나의 개인 매개 변수만 지정할 수 있습니다.

가상 컴퓨터에 연결할 DNS 서버 목록을 포함합니다.

 

요소 이름 설명

DnsServers

필수 사항입니다. 가상 컴퓨터에 사용할 DNS 서버를 지정하는 매개 변수를 포함합니다.

DnsServer

필수 사항입니다. DNS 서버의 NameAddress 요소를 포함합니다.

Name

필수 사항입니다. DNS 서버의 이름을 지정합니다.

Address

필수 사항입니다. DNS 서버의 IP 주소를 지정합니다.

입력 끝점에 할당할 수 있는 내부 부하 분산 장치 목록을 포함합니다.

 

요소 이름 설명

부하 분산 장치

필수 사항입니다. 내부 부하 분산 장치의 특성을 지정합니다.

Name

필수 사항입니다. 내부 부하 분산 장치의 이름을 지정합니다.

FrontendIpConfiguration

필수 사항입니다. 부하 분산 장치에서 제공하는 가상 IP 주소의 구성을 지정합니다.

Type

필수 사항입니다. 부하 분산 장치에서 제공하는 가상 IP 주소의 유형을 지정합니다. Private 값만 허용됩니다.

SubnetName

가상 네트워크에 배포가 존재하고 StaticVirtualNetworkIPAddress가 할당된 경우 필수 사항입니다. 부하 분산 장치에서 사용하는 가상 네트워크의 서브넷을 지정합니다. 부하 분산 장치에서 관리하는 가상 IP 주소는 이 서브넷에 포함됩니다.

StaticVirtualNetworkIPAddress

선택 사항입니다. 가상 네트워크의 서브넷에서 부하 분산 장치에 사용되는 특정 가상 IP 주소를 지정합니다.

응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.

작업에 성공하면 상태 코드 202(수락됨)가 반환됩니다. 상태 코드에 대한 자세한 내용은 서비스 관리 상태 및 오류 코드를 참조하십시오.

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더가 포함될 수도 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 따릅니다.

 

응답 헤더 설명

x-ms-request-id

관리 서비스에 대해 수행된 요청을 고유하게 식별하는 값입니다.

없음.

다음 리소스를 사용하여 가상 컴퓨터의 배포를 만들 수도 있습니다.

가상 컴퓨터에 대한 배포를 만들 때 사용하는 클라우드 서비스 및 디스크 또는 이미지가 동일한 지역에 있도록 해야 합니다. 예를 들어 클라우드 서비스를 West US 지역에서 만든 경우 사용하는 디스크 또는 이미지도 West US 지역의 저장소 계정에 위치해야 합니다.

이 예제를 실행 하려면 다음 변수 값을 바꾸십시오.

 

변수

Thumbprint

Azure에서 수행할 작업에 권한을 부여하기 위해 업로드된 관리 인증서의 지문을 제공합니다. 자세한 내용은 Azure에 대한 관리 인증서 만들기 및 업로드를 참조하십시오.

SubscriptionId

적합한 클라우드 서비스를 찾는 데 필요한 구독 식별자를 제공합니다. 구독 식별자를 찾으려면 관리 포털에서 설정을 클릭합니다.

ServiceName

가상 컴퓨터를 배포할 기존 클라우드 서비스의 이름을 제공합니다. 클라우드 서비스 나열을 사용하여 기존 서비스의 이름을 찾을 수 있습니다. 관리 포털, 클라우드 서비스 만들기 또는 New-AzureService cmdlet을 사용하여 클라우드 서비스를 만들 수 있습니다.

DeploymentName

새 배포의 이름을 제공합니다.

DeploymentLabel

배포의 식별자를 제공합니다. 이 레이블은 추적용으로 사용할 수 있습니다.

UserName

가상 컴퓨터의 관리자 계정에 대한 이름을 제공합니다.

RoleName

역할의 이름을 제공합니다. 이 예제에서 역할 이름은 컴퓨터 이름으로도 사용됩니다.

SourceImage

가상 컴퓨터를 프로비전하는 데 사용할 플랫폼 이미지의 이름을 제공합니다. OS 이미지 나열을 사용하여 이미지 리포지토리에서 사용 가능한 플랫폼 이미지의 이름을 가져올 수 있습니다.

OSVhdPath

만드는 운영 체제 디스크를 저장할 Azure 저장소의 경로를 제공합니다. 자세한 내용은 저장소 계정을 만드는 방법을 참조하십시오.


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;
    }
  }
}

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft