베하~~ 안녕하세요 이번주도 돌아온 BETTER MONDAY팀입니다!!
날씨가 조금씩 추워지기 시작합니다 다들 감기와 코로나 조심하세요!!!
이번주는 Azure의 솔루션들을 코드형 인프라로 편하게 구현하는 ARM템플릿(Azure Resource Manager 템플릿)에 대하여 알아보겠습니다.
그럼 슈우우웃~
ARM 템플릿이란?
서버 환경을 클라우드로 전황하며 많은 팀이 Agile 개발 방법을 채택했습니다. 이들 팀은 반복 작업을 빠르게 수행합니다. 클라우드에 솔루션을 반복적으로 배포해야 하고, 인프라가 신뢰할 수 있는 상태에 있는지 파악해야 합니다. 인프라가 반복 프로세스의 일부가 되면서 작업과 개발 간의 구분이 사라졌습니다. 팀은 통합 프로세스를 통해 인프라 및 애플리케이션 코드를 관리해야 합니다.
Azure 솔루션의 코드형 인프라를 구현하려면 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하세요. 해당 템플릿은 프로젝트에 대한 인프라 및 구성을 정의하는 JSON(JavaScript Object Notation) 파일입니다. 이 템플릿은 대상을 만들기 위한 프로그래밍 명령 시퀀스를 작성하지 않고도 배포하려는 대상을 설명할 수 있는 선언적 구문입니다. 배포할 리소스와 해당 리소스의 속성을 템플릿에서 지정합니다.
ARM 템플릿을 사용해야 하는 이유?
다른 코드형 인프라(Iac)도 있지만 템플릿 사용 시 장점에 대해 설명하겠습니다.
선언적 구문: ARM 템플릿을 사용하면 전체 Azure 인프라를 선언적으로 생성하고 배포할 수 있습니다. 예를 들면 가상 머신뿐만 아니라 네트워크 인프라, 스토리지 시스템 및 필요한 기타 리소스도 배포할 수 있습니다.
반복 가능한 결과: 개발 수명 주기 내내 인프라를 반복적으로 배포하며, 안정적이고 일관된 리소스 배포를 보장할 수 있습니다. 템플릿은 idempotent이며, 이는 동일한 템플릿을 여러 번 배포하고 동일한 상태에 있는 동일한 유형의 리소스를 가져올 수 있음을 의미합니다. 업데이트를 나타내는 여러 개의 개별 템플릿을 개발하는 대신 원하는 상태를 나타내는 하나의 템플릿을 개발할 수 있습니다.
오케스트레이션: 복잡한 작업 순서 지정 작업에 대해 우려할 필요가 없습니다. Resource Manager는 리소스가 올바른 순서로 생성되도록 상호 의존적인 리소스의 배포를 오케스트레이션합니다. 가능한 경우 Resource Manager는 리소스를 병렬로 배포하여, 직렬로 배포될 때보다 배포가 빠르게 완료되도록 합니다. 다수의 명령어가 아닌 하나의 명령으로 템플릿을 배포합니다.
CI/CD 통합: CI/CD(연속 통합 및 지속적인 배포) 도구에 템플릿을 통합하여 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화할 수 있습니다. Azure DevOps 및 Resource Manager 템플릿 작업을 통해 Azure Pipelines를 사용해서 ARM 템플릿 프로젝트를 지속적으로 빌드하고 배포할 수 있습니다.
많은 장점들이 있겠지만 이 정도가 대표적인 장점입니다.
템플릿 배포 과정
템플릿은 Json 기능을 사용하고 기능을 확장하는 템플릿 식을 작성할 수 있습니다. 해당 식은 Resource Manager 에서 제공하는 함수를 사용합니다.
템플릿은 다음과 같은 섹션으로 구성됩니다.
-매개 변수 - 배포 중에 다양한 환경에서 동일한 템플릿을 사용할 수 있도록 허용하는 값을 제공합니다.
-변수 - 템플릿에서 재사용되는 값을 정의합니다. 변수는 매개 변수 값에서 생성될 수 있습니다.
-사용자 정의 함수 - 템플릿을 간소화하는 사용자 지정 함수를 만듭니다.
-리소스 - 배포할 리소스를 지정합니다.
-출력 - 배포된 리소스의 값을 반환합니다.
이제 실습을 진행해보도록 하겠습니다!!
우선 Azure Portal에 접속하여 deploy(배포)를 검색해줍니다.Deply a custom template(사용자 지정 템플릿 배포)를 눌러줍니다.
저희는 간단하게 VNET을 배포 하도록 하겠습니다.
Build your own template in the editor(편집기에서 사용자 고유의 템플릿 빌드)를 눌러줍니다.
아래와 같이 빈 템플릿이 표시됩니다.
VNet 배포를 위해 아래의 Json 파일을 복사합니다(Microsoft docs의 예시입니다)
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vnetName": {
"type": "string",
"defaultValue": "VNet1",
"metadata": {
"description": "VNet name"
}
},
"vnetAddressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address prefix"
}
},
"subnetPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Subnet Prefix"
}
},
"subnetName": {
"type": "string",
"defaultValue": "Subnet1",
"metadata": {
"description": "Subnet Name"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-08-01",
"name": "[parameters('vnetName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetAddressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnetName')]",
"properties": {
"addressPrefix": "[parameters('subnetPrefix')]"
}
}
]
}
}
]
}
저장을 눌러줍니다.
배포 할 리소스 그룹을 선택합니다.
배포를 진행 후 리소스 그룹을 선택하면 VNet1이 배포가 잘 되어 있는것을 확인 하실 수 있습니다.
자 오늘은 ARM 템플릿에 대해 알아보고 간단하게 실습도 진행하였습니다. VM을 한번에 여러개 배포한다거나 리소스들을 다 수 배포해야한다면 템플릿도 유용한 선택이라고 할 수 있습니다!
저희가 준비한 내용은 여기까지 입니다. 다음주에 만나요 베~~바~~
출처:https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/overview
'CSP (Cloud Service Provider) > Azure' 카테고리의 다른 글
Azure VPN Gateway를 통한 VPN Tunneling(1) (0) | 2022.11.18 |
---|---|
Azure Managed ID (0) | 2022.11.02 |
Azure Monitor란? (0) | 2022.09.15 |
MicrosoftLearn이란? (0) | 2022.08.29 |
Azure Files란? (0) | 2022.08.04 |
댓글