VM 을 만들거나 가상네트워크를 만들면 아래 처럼 두가지 항목이 있다.

kjun-vm985 는 사설 ip
kjun-VM-ip 는 공인 ip

위 두항목의 static 설정하는 방법은 아래와 같다.

- private ip

kjun-vm985 를 클릭하면 아래와 같은 화면이 나오는데 여기서 IP configuration 을 선택하고
우측 항목인 ipconfig1 을 선택한다.

ipconfig1 에서 아래쪽에 Assigment 의 Static 를 선택 IP address 에 원하는 ip 를 적는다
(단, 가상 네트워크단에서 설정한 subnet 범위안에서만 설정이 가능하다.)

 

- public ip

kjun-VM-ip 를 선택하면 아래와 같이 화면이 나오는데 여기서 Configuration 을 선택하고
우측 상단의  Static 를 선택한다.

Dynamic 이면 가상서버가 재부팅되면 public 가 변경된다. 하지만 Static 이면 고정된 ip 를 사용할 수

 

AZ 명령어가 최신 버전이다.

AzureRM 명령어는 예전 버전으로 아마도 사용을 안하는 쪽으로 변경이 될듯.

 

// 해당 이름으로 스토리지 생성이 가능한지 알아보는 명령
Get-AzureRmStorageAccountNameAvailability -Name '스토리지명'

// 스토리지 생성
New-AzureRmStorageAccount -ResourceGroupName 리소스명 -AccountName 스토리지명 -Location eastus2 -SkuName Standard_GRS

// 생성되었는지 확인
Get-AzureRmStorageAccount -ResourceGroupName "리소스명" -AccountName "스토리지명"

// Type 지정
Set-AzureRmStorageAccount -ResourceGroupName "리소스명" -AccountName "스토리지명" -Type "Standard_RAGRS" 

* Type 종류
https://docs.microsoft.com/ko-kr/dotnet/api/microsoft.azure.management.storage.fluent.storageaccountskutype?view=azure-dotnet

윈도우의 파워쉘에서 스크립트를 실행하기 위해선 ExecutionPolicy 를 변경해줘야한다.

ExecutionPolicy 는 파워쉘의 실행정책으로 기본적으로 스크립트를 실행할수 없도록 기본 설정되어 있다.

먼저 아래 명령어로 자신의 실행정책 상태를 조회할수 있다.

Get-ExecutionPolicy

여기서 결과가 Restricted 으로 나오면 실행할 수 없도록 되있는 것이다.

아래 명령을 통해 이를 풀어주면 된다.

(아래 명령은 파워쉘이 관리자 권한으로 실행되어있어야 실행이 된다.)

Set-ExecutionPolicy -ExecutionPolicy Unrestricted


참고

Windows PowerShell 실행 정책
기본 정책은 “Restricted”입니다.

Restricted
– 기본 실행 정책입니다.
– 개별 명령을 허용하지만 스크립트를 실행하지 않습니다.
– 서식 지정 및 구성 파일(.ps1xml), 모듈 스크립트 파일(.psm1), Windows
PowerShell 프로필(.ps1) 등의 모든 스크립트 파일을 실행할 수 없습니다.

AllSigned
– 스크립트를 실행할 수 있습니다.
– 로컬 컴퓨터에 작성하는 스크립트를 포함하여 모든 스크립트 및 구성 파일에 신뢰된 게시자가
서명해야 합니다.
– 신뢰된 게시자나 신뢰되지 않은 게시자로 아직 분류하지 않은 게시자의 스크립트를 실행하기 전에
메시지를 표시합니다.
– 인터넷 이외의 다른 소스에서 가져온 서명되지 않은 스크립트를 실행하거나 서명되었지만 악의적인
스크립트를 실행할 위험이 있습니다.

RemoteSigned
– 스크립트를 실행할 수 있습니다.
– 전자 메일과 인스턴트 메시징 프로그램을 포함하여 인터넷에서 다운로드하는 스크립트와 구성
파일에는 신뢰된 게시자의 디지털 서명이 필요합니다.
– 이미 실행한 스크립트와 로컬 컴퓨터에 작성한(인터넷에서 다운로드하지 않음) 스크립트에는
디지털 서명이 필요 없습니다.
– 서명되었지만 악의적인 스크립트를 실행할 위험이 있습니다.

Unrestricted
– 서명되지 않은 스크립트를 실행할 수 있습니다. 이 경우 악의적인 스크립트를 실행할 위험이
있습니다.
– 인터넷에서 다운로드한 스크립트와 구성 파일을 실행하기 전에 사용자에게 경고합니다.

Bypass
– 아무 것도 차단되지 않으며 경고나 메시지가 표시되지 않습니다.
– 이 실행 정책은 Windows PowerShell 스크립트가 대규모 응용 프로그램에 기본 제공되는 구성 또는
고유의 보안 모델을 가진 프로그램이 Windows PowerShell을 기초로 하는 구성을 위해
설계되었습니다.

Undefined
– 현재 범위에 설정된 실행 정책이 없습니다.
– 모든 범위의 실행 정책이 Undefined인 경우 적용되는 실행 정책은 기본 실행 정책인
Restricted입니다.

https://docs.microsoft.com/en-us/powershell/azure/servicemanagement/overview?view=azuresmps-4.0.0

* AZ LOGIN

 

* Connect-AzureRmAccount

 

AZ LOGIN 을 하면 구독  Id 가 보이는데 Connect-AzureRmAccount 명령어는 구독 아이디가 보이지 않는다.

 

Get-AzureRmStorageAccountNameAvailability -Name 'kjunstorage1'

* kjunstorage1 명칭으로 스토리지 생성이 가능한지 알아볼 수 있다.

https://docs.microsoft.com/ko-kr/azure/service-fabric/service-fabric-get-started

'Azure' 카테고리의 다른 글

(Azure-PowerShell) az login , Connect-AzureRmAccount  (0) 2019.04.21
(Azure-PowerShell) 특정이름으로 스토리지 생성이 가능한지 알아보는 명령  (0) 2019.04.21
Azure Service Fabric  (0) 2019.04.05
Azure portal app  (0) 2019.03.28
AZ-203 정리  (0) 2019.03.22
AZ-101 정리  (0) 2019.03.21
Azure Portal 이 Application 으로 나왔다
크롬으로 하면 되지만 크롬이 싫은 사람들은 아래 선택지도 나쁘지 않을듯.
아래 링크에서 다운받으면 된다.
https://preview.portal.azure.com/app/Download?fbclid=IwAR217DE2VXObk5TGFiMo6tzbkgPWCekumyqweyrMBA5M861ZWhBA_ld06Ng

아래는 실행해본 화면.

'Azure' 카테고리의 다른 글

(Azure-PowerShell) 특정이름으로 스토리지 생성이 가능한지 알아보는 명령  (0) 2019.04.21
Azure Service Fabric  (0) 2019.04.05
Azure portal app  (0) 2019.03.28
AZ-203 정리  (0) 2019.03.22
AZ-101 정리  (0) 2019.03.21
Azure 자격증 관련 설명된 사이트  (0) 2019.03.21

*  Azure CLI 명령어 이외의 Azure 명령어는 아래 명령어로 모듈을 설치해야한다.
  - Install-Module -Name Az -AllowClobber

* 파워쉘버전 5 버전 이상이어야 함
  - echo $PSVersionTable.PSVersion

* 교육사이트 추천 : https://www.katacoda.com/

---실습 ---

* Connect-AzAccount -

Account              SubscriptionName      TenantId                             Environment
-------              ----------------      --------                             -----------
junijuniya@naver.com Azure Pass - 스폰서쉽 a3ba6a60-2561-4d3b-9bd0-84f25acd256a AzureCloud

 

* az login 을 해야 구독 ID 가 나타남 (주의)

[
  {
    "cloudName": "AzureCloud",
    "id": "2ca3303c-3b27-4fd9-b768-6b77718f8929",
    "isDefault": true,
    "name": "Azure Pass - 스폰서쉽",
    "state": "Enabled",
    "tenantId": "a3ba6a60-2561-4d3b-9bd0-84f25acd256a",
    "user": {
      "name": "junijuniya@naver.com",
      "type": "user"
    }
  }

 

* C#을 사용하여 Azure에서 Windows VM 생성 및 관리 따라하기

https://docs.microsoft.com/ko-kr/azure/virtual-machines/windows/csharp 

* 방법: Azure PowerShell을 사용하여 인증서로 서비스 주체 만들기
https://docs.microsoft.com/ko-kr/azure/active-directory/develop/howto-authenticate-service-principal-powershell

* self-signed certificate generator (powershell) 파일 다운받아 압축 풀로 한글명 없는 곳으로 위치시킨다.
https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6

아래 명령어 실행

Import-Module -Name D:\azure\New-SelfSignedCertificateEx.ps1

New-SelfSignedCertificateEx -StoreLocation CurrentUser `
-Subject "CN=exampleapp" `
-KeySpec "Exchange" `
-FriendlyName "exampleapp"

결과

Thumbprint                                Subject
----------                                -------
11513D37E379B415E5667319EBC1043531B00FCC  CN=exampleapp

아래 명령어도 추가로 실행한다.

$cert = Get-ChildItem -path Cert:\CurrentUser\my | where {$PSitem.Subject -eq 'CN=exampleapp' }

11513D37E379B415E5667319EBC1043531B00FCC 파일명으로 인증서 찾아서 위치를 알아낸다.
(위 명령어로 만들어진 인증서 위치 : C:\Users\kjun\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates)

아래 명령어로도 찾을수 있다.


PS C:\WINDOWS\system32> cd  Cert:\CurrentUser\my
PS Cert:\CurrentUser\my> ls
   PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\my

Thumbprint                                Subject
----------                                -------
DC469AF6DA38EDC95A2AF5B824237C1D8BE76861  CN=MyWorking-PC\MyWorking
AE06EEA3946FDE01A9D45C65376DCEEEE4D0E3D8  E=mksong@markany.com, CN=127.0.0.1, OU=MarkAny, O=MarkAny, L=Seoul, S=Seou...
AD07ACBA0DD92B8C9AF4B8C1AD24600EFBF18796  E=vegabon@unidocs.co.kr, CN=127.0.0.1, OU=unidocs, O=unidocs, L=Seoul, S=S...
87CA7511BDAAC82FCC675C3ABC4B8C1BE46D5974  CN=kjun
11513D37E379B415E5667319EBC1043531B00FCC  CN=exampleapp
0B98390FFF231539064B4DCCB825C582297713DA  CN=localhost

 

* azure portal 에서 active directory 만들기 - preview 이용

New registeration 으로 하나 만든다 (디펄트 설정)

만들어진 AD 를 클릭하여 Certificates & secrets 를 클릭

상단의 Upload certificate 버튼을 클릭하여 아까 인증서를 업로드한다.

하단의 New client secret 를 클릭하여 VALUE 를 얻는다. (나중에 KEY 로 사용 - TtTa}.n53qYa9w>5OZ{=VT[=dTUv#dR-)

 

* 콘솔 프로젝트 만들어서  Nuget 콘솔 관리자에서

아래 명령어로 Azure Nuget 설치한다.

Install-Package Microsoft.Azure.Management.Fluent

 

* 추가>새항목 에서 텍스트 파일을 'azureauth.properties' 이름으로 만들어

subscription=<subscription-id>
client=<application-id>
key=<authentication-key>
tenant=<tenant-id>
managementURI=https://management.core.windows.net/
baseURL=https://management.azure.com/
authURL=https://login.windows.net/
graphURL=https://graph.windows.net/

앞서 조사한 내용을 채워넣는다. KEY 부분이 앞서 행한 VALUE 값이다.

subscription=2ca3303c-3b27-4fd9-b768-6b77718f8929
client=5ecbdc05-ed47-48a6-98f8-ea1a7ac1daa8
key=TtTa}.n53qYa9w>5OZ{=VT[=dTUv#dR-
tenant=a3ba6a60-2561-4d3b-9bd0-84f25acd256a
managementURI=https://management.core.windows.net/
baseURL=https://management.azure.com/
authURL=https://login.windows.net/
graphURL=https://graph.windows.net/

 

* 아래 명령어로 권한을 부여한다.

New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName [ApplicationID]

New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName 5ecbdc05-ed47-48a6-98
f8-ea1a7ac1daa8


RoleAssignmentId   : /subscriptions/2ca3303c-3b27-4fd9-b768-6b77718f8929/providers/Microsoft.Authorization/roleAssignme
                     nts/508fc21c-d608-4f2a-87d4-bd8104c199fa
Scope              : /subscriptions/2ca3303c-3b27-4fd9-b768-6b77718f8929
DisplayName        : exampleapp2
SignInName         :
RoleDefinitionName : Contributor
RoleDefinitionId   : b24988ac-6180-42a0-ab88-20f7382dd24c
ObjectId           : b48fac0e-641a-4b55-82e3-80e85ebc0829
ObjectType         : ServicePrincipal
CanDelegate        : False

 

* 프로젝트에 아래처럼 코딩한다.

 var credentials = SdkContext.AzureCredentialsFactory
    .FromFile("azureauth.properties");

            var azure = Azure
                .Configure()
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .Authenticate(credentials)
                .WithDefaultSubscription();

            var groupName = "myResourceGroup";
            var vmName = "myVM";
            var location = Region.USWest;

            Console.WriteLine("Creating resource group...");
            var resourceGroup = azure.ResourceGroups.Define(groupName)
                .WithRegion(location)
                .Create();

            Console.WriteLine("Creating availability set...");
            var availabilitySet = azure.AvailabilitySets.Define("myAVSet")
                .WithRegion(location)
                .WithExistingResourceGroup(groupName)
                .WithSku(AvailabilitySetSkuTypes.Managed)
                .Create();

            Console.WriteLine("Creating public IP address...");
            var publicIPAddress = azure.PublicIPAddresses.Define("myPublicIP")
                .WithRegion(location)
                .WithExistingResourceGroup(groupName)
                .WithDynamicIP()
                .Create();

            Console.WriteLine("Creating virtual network...");
            var network = azure.Networks.Define("myVNet")
                .WithRegion(location)
                .WithExistingResourceGroup(groupName)
                .WithAddressSpace("10.0.0.0/16")
                .WithSubnet("mySubnet", "10.0.0.0/24")
                .Create();

            Console.WriteLine("Creating network interface...");
            var networkInterface = azure.NetworkInterfaces.Define("myNIC")
                .WithRegion(location)
                .WithExistingResourceGroup(groupName)
                .WithExistingPrimaryNetwork(network)
                .WithSubnet("mySubnet")
                .WithPrimaryPrivateIPAddressDynamic()
                .WithExistingPrimaryPublicIPAddress(publicIPAddress)
                .Create();

            Console.WriteLine("Creating virtual machine...");
            azure.VirtualMachines.Define(vmName)
                .WithRegion(location)
                .WithExistingResourceGroup(groupName)
                .WithExistingPrimaryNetworkInterface(networkInterface)
                .WithLatestWindowsImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
                .WithAdminUsername("azureuser")
                .WithAdminPassword("Azure12345678")
                .WithComputerName(vmName)
                .WithExistingAvailabilitySet(availabilitySet)
                .WithSize(VirtualMachineSizeTypes.StandardDS1)
                .Create();

* 최종 결과

 

 

 

 

'Azure' 카테고리의 다른 글

Azure Service Fabric  (0) 2019.04.05
Azure portal app  (0) 2019.03.28
AZ-203 정리  (0) 2019.03.22
AZ-101 정리  (0) 2019.03.21
Azure 자격증 관련 설명된 사이트  (0) 2019.03.21
AZ-100 정리  (0) 2019.03.07

+ Recent posts