ARM을 사용하여 신속하게 Azure VM 생성하기


참고: https://goo.gl/566hG4

한 번 생성하여 운영했던 VM을 나중에 다시 생성하고자 할 때는 사전에 ARM(Azure Resource Manager) Template를 생성하여 활용하면 된다

이것을 Infrastructure as a Code라고 하는데, JSON 포맷으로 ARM Template를 생성하여 활용하는 것이다.

<Azure에서 Template을 생성하는 방법>
1) More Services에서 Template를 입력하여 검색한다
2) 아래와 같이 입력한다. 특히 Code는 위의 참고 URL에서 복사하여 넣는다
11

22

33

3) Deploy를 클릭한다
55

4) 필요한 내용을 입력한 후 구입(Purchase)를 클릭하여 VM을 생성한다
44

5) 만약에 VNet 및 IP Subnet도 동일하게 하려면 JSON Code에서 사전에 수정하여 Template를 생성하면 된다. 그런 다음 이 Template를 사용하여 필요한 정보를 적절하게 입력한 후 구입(Purchase)을 클릭하여 VM을 생성하면 된다

 

 

AD에서 사용자 생성시 자동으로 특정한 Group에 구성원으로 추가하는 script 생성하기


사내에서 Active  Directory Domain 환경하에서 File Server를 운영할 때, 신규 사용자 계정을 생성하면 반자동으로 자기 부서 Group의 구성원으로 추가할 필요가 있을 때는 다음과 같이 작업을 하면 된다. 즉, 아래와 같이 Script를 생성하여 둔 상태에서 새로운 사용자를 AD에 추가한 후에 Script 파일을 실행하면 자동으로 해당 사용자는 자기 부서 Group에 할당되고, File Server의 특정한 공유 폴더에 액세스할 수 있게 된다.

여기서 주의할 사항은 자기 부서 OU아래에 사용자를 만들면 그 OU와 동일한 이름의 Group 이름을 만들어 두어야 한다는 것이다.

아래에 보면 알겠지만 Select-Object Name,@{l=”OU”;e={$_.DistinguishedName.split(‘,’)[1].split(‘=’)[1]}} 에서 Custom Property인 OU를 생성할 때 split이라는 Property를 사용하여 comma가 구분자로서 두번째 항목을 선택한 것을 유념하여 본다

ou1

 

ou2

Linux의 Touch 명령어처럼 사용하는 cmdlet


Linux의 Touch 명령어는 데트스용으로 내용이 없는 빈 파일을 생성하거나 파일들의 수정 시간을 변경할 때 유용하게 사용하는 것이다.

PowerShell에도 이와 비슷한 cmdlet가 있다.
1) 빈 파일을 만들거나 기존 파일의 내용을 없애는 것: Format-Custom
2) 파일이 내용은 지우지 않고 파일 수정 시간만 변경하는 것: LastWriteTime이라는 Property 이용

자세한 내용은 아래에 있다.

touch

cmdlet은 Object 기반(Property+ Method 구성), Windows 명령은 Text 기반


PowerShell Cmdlet는 Object 기반으로서 Property와 그에 대한 Value로 구성되어 있다.
한편 Windows 및 Linux는 Text기반이므로 Property라는 것이 없다.
사람이라는 개체는 속성과 그 속성 값으로 구성되는데, 예를 들면 몸무게, 키, 출신지, 직장은 속성이고 그 속성의 값들이 있기 마련이다. 몸무게는 73Kg, 키는 170Cm, 출신지는 울산, 직장은 Freelancer이다.
이러한 개체(Object)는 또 다른 사람, 양, 자동차 등도 있다.
그렇다면 각 개체의 속성에 대한 값을 가지고 있는 상태에서 출신지별로 구분하거나 직장별로 선정할 수도 있다.
그렇 때 속성에 대한 값을 모두 입력된 상태에서 동일한 속성 값을 갖는 개체를 필터링할 수 있다.
이것이 바로 Where-Object, Select-Object, ForEach-Object를 사용하여 작업한다.
Where-Object는 Property를 기준으로 필터링하고, Select-Object는 지원되는 Parameter(Not Property)를 기준으로 선택하므로 상대적으로 활용성에는 제한이 있다. 하지만 Where-Object에 비해 편리한 것도 있다(-First, 등등)
이렇게 Object기반일 때는 분류하여 작업을 하기 편리하지만 리눅스처럼 Text기반일 때는 명령어에 대한 처리를 할 때 상대적으로 불편함이 따른다. 하지만 리눅스는 오래되어 발전해 왔기 때문에 나름대로 일정한 체계가 잡혀있다는 것도 사실이다.
비유하자면 PowerShell cmdlet는 체계화된 명령어이고, Linux는 관록이 있고 많은 경험이 쌓인 노련한 것이라 할 수 있다.
PowerShell을 가지고 각 Property 값을 보기만 하지 않고 값을 입력하고 수정도 할 수 있다.
Get-Service -Name bits
Get-Service | Where-Object {$_.Name -eq “bits” }
-Name bits에서 -Name은 Parameter이다.
$_.Name에서 Name은 Property이다.
위의 두 명령어의 결과는 같지만 접근 방법은 다르다.
사실 Get-Service를 실행할 때 service name을 많이 찾기 때문에 Name이라는 Property를 Parameter 이름으로 만들어서 사용하는 것이다.
원칙은 Property 이름이고, 편의를 위해서 -Name이라는 Parameter를 만든 것이다.
Parameter 이름과 Property 이름을 혼동하기 쉬우니 주의한다.

PowerShell Core 6.0 on Linux 설치하기


참고: https://blogs.msdn.microsoft.com/powershell/2017/02/01/installing-latest-powershell-core-6-0-release-on-linux-just-got-easier/

<CentOS에 설치하기>
1) PowerShell을 사용할 수 있도록 Repository 등록하기
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/microsoft.repo

2) PowerShell 설치하기
yum install -y powershell

3) PowerShell 실행하기
powershell

4) 몇 개의 명령어가 있는지 확인하기
Get-Command | Measure-Object
349개

5) 현재 버전 확인하기
$psversiontable
%ec%9d%b4%eb%af%b8%ec%a7%80-1

6) PowerShell에서 빠져 나오기
exit

<Ubuntu 16.04에서 설치하기>
1) public repository GPG keys 가져오기
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –

2)Microsoft Ubuntu repository 등록하기
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list

3) 업데이트하기
sudo apt-get update

4) PowerShell 설치하기
sudo apt-get install -y powershell

5) PowerShell 시작하기
powershell