ARM 템플릿의 베일 벗기: 매개 변수

앞의 강좌에서 우리는 Azure 자원 관리자(ARM) 템플릿을 사용하여 자원을 만드는 방법을 배웠다.그러나 이것은 정적이며 템플릿에 정의되어 있습니다.이 강좌에서 템플릿을 동적이고 쉽게 사용할 수 있도록 매개 변수를 사용하는 방법을 배울 것입니다.

Azure DevOps-DevOps 랩 - 비디오

  • YouTube
  • Channel9
  • 매개변수 유형


    템플릿을 동적화하기 위해서, 우리는 매개 변수를 사용하여 템플릿을 호출할 때 정보를 전달할 수 있다.템플릿 맨 위의 일부 파라미터를 기억하십니까?
    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {},
    }
    
    이것이 바로 우리가 매개 변수를 정의하는 곳이다.여러 종류의 매개 변수가 있지만, 우리가 그것들을 열거하고 일부 장면을 보기 전에, 매개 변수가 어떻게 정의되었는지 먼저 이해하자.

    Azure 자원 관리자 템플릿의 매개 변수 정의


    키 쌍 값과 같은 매개 변수를 고려하기 쉽다.매개변수의 이름과 값과 유사합니다.하지만 더 많아요.여기서 파라미터 부분을 검사합시다.
    "parameters": {
      "storageSKU": {
        "type": "string",
        "allowedValues": [
          "Standard_LRS",
          "Standard_ZRS",
          "Standard_GRS",
          "Standard_RAGRS",
          "Premium_LRS"
        ],
        "defaultValue": "Premium_LRS",
        "metadata": {
          "description": "The type of replication to use for the storage account."
        }
      }
    }
    
    여기에는 storageSKU 라는 매개변수가 정의되어 있습니다.이것은 문자열이지만, 사용자가 어떤 값을 쓸 때 allowedValues 속성을 사용해서 파라미터의 허용 값을 표시하지 않았기 때문입니다.AllowedValues는 모든 유형의 값 그룹입니다.
    다른 두 가지 속성을 사용하여 사용자가 매개 변수를 어떻게 사용하는지 이해하는 데 도움을 주는 것은 좋은 방법이다. defaultValuedescription.기본값은 사용자에게 말하는 방식입니다. 모르면 뭐라고 하세요.이것은 유연성을 해치지 않고 우리의 템플릿을 쉽게 사용할 수 있는 좋은 방법이다.설명, 메타데이터 부분의 일부분은 당연히 귀하가 예상치와/또는 이미 배치된 자원에 대한 영향에 대한 가장 상세한 정보를 제공하는 곳입니다.
    또한 MinValue, MinLenght, MaxValue, MaxLenght는 받아들일 수 있는 값을 제한합니다.

    매개변수 유형


    다양한 유형의 매개 변수가 서로 다른 유형의 정보에 적응한다.우리는 이미 string 유형과 기타 더 많은 유형, 예를 들어 int, bool, array 을 언급했다.
    예를 들어 securestring 암호를 전달하는 데 매우 편리한 방식이 있다.securestring 유형을 사용하면 자원 배치 후 정보를 읽을 수 없습니다.
    마지막으로 우리는 objectsecureObject가 있다.이것들이 있으면 많은 속성을 가진 완전한 대상을 정의할 수 있다. 그것은 매우 강하다.이 모든 유형을 혼합하기 시작할 때, 일은 매우 유연해진다. 예를 들어 한 그룹의 대상을 전달하는 것!우리는 다음 장에서 이 장면들을 소개할 것이다.

    매개변수 사용


    이제 우리는 매개 변수를 어떻게 설명하는지 알게 되었다. 이제는 우리가 그것을 어떻게 사용하는지 볼 때가 되었다.이는 ARM에 포함된 함수 이름parameters({parameterName})을 사용하여 쉽게 수행할 수 있습니다.이 함수는 "parameterName"값을 반환합니다.예를 들어 parameters('storageSKU') 는 Premium_LRS 를 반환합니다.
    ARM 템플릿에서 이 함수를 사용하려면 대괄호[] 사이에 넣어야 합니다.다음 예에서, 우리는 속성의 값을 매개 변수와 같이 설정합니다.
    {
       ...
        "name": "[parameters('storageSKU')]",
       ...
    }
    

    매개변수 배포 사용


    앞에서 우리는 ARM 템플릿을 배치하는 다른 방법을 배웠지만 어떻게 매개 변수 값을 전달함으로써 같은 방법을 실현합니까?물론 Azure CLI를 사용하면 모든 키 쌍 값을 다음 명령에 전달할 수 있습니다.
    az group deployment create -g MyResourceGroup --template-file azuredeploy.json --parameters storageName=tstStorage storageKind=StorageV2
    
    이것은 효과적인 명령으로 작용할 것이다.그러나 그것은 매우 편리하고 휴대하기 편리하지 않다.나의 가장 좋은 방법은 매개 변수 파일을 전달하는 것이다.대상 환경에 따라 다른 파일을 사용할 수 있습니다.
    az group deployment create -g MyResourceGroup --template-file azuredeploy.json --parameters azuredeploy.parameters.json
    

    매개변수 파일을 생성합니다.


    매개변수 파일은 다른 JSON 파일일 뿐입니다.따라서 모든 텍스트 편집기에서 쉽게 만들 수 있습니다.그러나 VS 코드 확장에는 매우 좋은 몇 가지 기능이 있습니다. Azure Resource Manager (ARM) Tools 이것은 많은 시간을 절약할 수 있습니다.
    새 매개변수 파일을 작성하려면 ARM 템플릿의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 팝업합니다.매개변수 파일 선택/생성 선택...,그 다음은 새것이고, 마지막은 모든 매개 변수이다.
    그러면 다음 구조를 가진 새 파일이 생성됩니다.
    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageSKU": {
                "value": "Premium_LRS"
            }
        }
    }
    
    Azure 자원 관리자(ARM) 도구를 사용하는 흥미로운 기능 중 하나는 템플릿과 관련된 매개 변수 값을 검증하는 것이다.

    인증 오류 메시지는 콘솔의 문제 탭(Ctrl+`에 마우스로 멈출 수 있습니다.

    더욱 안전하다


    팔뚝 안쪽 securestring 정말 좋아요.그것들을 사용하면 우리의 민감한 정보가 로그에 나타나지 않도록 확보할 수 있다.단, 만약 우리가 사용하는 것이 매개 변수 파일이라면, 이 값도 명문 형식으로 나타날 것이다!이렇게 하는 것을 피하고 원본 코드 관리에서 비밀번호를 잘못 입력하기 위해서는 Azure KeyVault 를 사용해야 한다.이렇게 하면 매개변수 파일에서 비밀을 참조할 수 있는 활성 KeyVault가 필요합니다.
    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
        "adminPassword": {
            "reference": {
            "keyVault": {
            "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
            },
            "secretName": "ExamplePassword"
            }
        },
        }
    }
    
    이 예시에서 키 라이브러리에 포함된 비밀secretName을 전달합니다.KeyVault 생성 방법에 대해서는 참조Use Azure Key Vault to pass secure parameter value during deployment

    참조:

  • Parameters in Azure Resource Manager templates
  • GitHub Learning-ARM
  • 좋은 웹페이지 즐겨찾기