Azure Resource Manager 템플릿용 배포 함수Deployment functions for Azure Resource Manager templates

Resource Manager는 템플릿의 섹션에서 값을 가져오고 배포와 관련된 값을 가져오기 위한 다음 함수를 제공합니다.Resource Manager provides the following functions for getting values from sections of the template and values related to the deployment:

리소스, 리소스 그룹 또는 구독에서 값을 가져오려면 리소스 함수를 참조하세요.To get values from resources, resource groups, or subscriptions, see Resource functions.

참고

이 문서는 새 Azure PowerShell Az 모듈을 사용하도록 업데이트되었습니다.This article has been updated to use the new Azure PowerShell Az module. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 수신할 예정이므로 계속 사용하셔도 됩니다.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. 새 Az 모듈 및 AzureRM 호환성에 대한 자세한 내용은 새 Azure PowerShell Az 모듈 소개를 참조하세요.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요.For Az module installation instructions, see Install Azure PowerShell.

배포deployment

deployment()

현재 배포 작업에 대한 정보를 반환합니다.Returns information about the current deployment operation.

반환 값Return value

이 함수는 배포하는 동안 전달되는 개체를 반환합니다.This function returns the object that is passed during deployment. 반환된 개체의 속성은 배포 개체가 링크로 전달되는지 아니면 인라인 개체로 전달되는지에 따라 다릅니다.The properties in the returned object differ based on whether the deployment object is passed as a link or as an in-line object. 배포 개체가 로컬 파일을 가리키기 위해 Azure PowerShell의 -TemplateFile 매개 변수를 사용할 때와 같이 인라인으로 전달되는 경우 개체는 다음 형식으로 반환됩니다.When the deployment object is passed in-line, such as when using the -TemplateFile parameter in Azure PowerShell to point to a local file, the returned object has the following format:

{
    "name": "",
    "properties": {
        "template": {
            "$schema": "",
            "contentVersion": "",
            "parameters": {},
            "variables": {},
            "resources": [
            ],
            "outputs": {}
        },
        "parameters": {},
        "mode": "",
        "provisioningState": ""
    }
}

개체가 원격 개체를 가리키기 위해 -TemplateUri 매개 변수를 사용할 때와 같이 링크로 전달되는 경우 개체는 다음 형식으로 반환됩니다.When the object is passed as a link, such as when using the -TemplateUri parameter to point to a remote object, the object is returned in the following format:

{
    "name": "",
    "properties": {
        "templateLink": {
            "uri": ""
        },
        "template": {
            "$schema": "",
            "contentVersion": "",
            "parameters": {},
            "variables": {},
            "resources": [],
            "outputs": {}
        },
        "parameters": {},
        "mode": "",
        "provisioningState": ""
    }
}

리소스 그룹 대신 Azure 구독에 배포할 때 반환 개체에는 location 속성이 포함됩니다.When you deploy to an Azure subscription, instead of a resource group, the return object includes a location property. 로컬 템플릿 또는 외부 템플릿을 배포할 때 위치 속성이 포함됩니다.The location property is included when deploying either a local template or an external template.

설명Remarks

deployment()를 사용하여 부모 템플릿의 URI를 기반으로 하는 다른 템플릿에 연결할 수 있습니다.You can use deployment() to link to another template based on the URI of the parent template.

"variables": {  
    "sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"  
}

포털의 배포 기록에서 템플릿을 다시 배포하는 경우 템플릿은 로컬 파일로 배포됩니다.If you redeploy a template from the deployment history in the portal, the template is deployed as a local file. templateLink 속성은 배포 함수에 반환되지 않습니다.The templateLink property isn't returned in the deployment function. 템플릿이 templateLink를 사용하여 다른 템플릿과의 링크를 설정하는 경우 포털을 사용하여 다시 배포하지 마세요.If your template relies on templateLink to construct a link to another template, don't use the portal to redeploy. 대신 처음에 템플릿을 배포하는 데 사용한 명령을 사용하세요.Instead, use the commands you used to originally deploy the template.

Example

다음 예제 템플릿에서는 배포 개체를 반환합니다.The following example template returns the deployment object:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [],
    "outputs": {
        "subscriptionOutput": {
            "value": "[deployment()]",
            "type" : "object"
        }
    }
}

앞의 예제에서는 다음 개체를 반환합니다.The preceding example returns the following object:

{
  "name": "deployment",
  "properties": {
    "template": {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [],
      "outputs": {
        "subscriptionOutput": {
          "type": "Object",
          "value": "[deployment()]"
        }
      }
    },
    "parameters": {},
    "mode": "Incremental",
    "provisioningState": "Accepted"
  }
}

Azure CLI에서 이 예제 템플릿을 배포하려면 다음 기능을 사용합니다.To deploy this example template with Azure CLI, use:

az group deployment create -g functionexamplegroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/deployment.json

PowerShell에서 이 예제 템플릿을 배포하려면 다음 기능을 사용합니다.To deploy this example template with PowerShell, use:

New-AzResourceGroupDeployment -ResourceGroupName functionexamplegroup -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/deployment.json

배포 기능을 사용하는 구독 수준 템플릿의 경우 구독 배포 기능을 참조하세요.For a subscription-level template that uses the deployment function, see subscription deployment function. az deployment create 또는 New-AzDeployment 명령을 사용하여 배포됩니다.It's deployed with either az deployment create or New-AzDeployment commands.

매개 변수parameters

parameters(parameterName)

매개 변수 값을 반환합니다.Returns a parameter value. 템플릿의 매개 변수 섹션에서 지정된 매개 변수 이름을 정의해야 합니다.The specified parameter name must be defined in the parameters section of the template.

매개 변수Parameters

매개 변수를 포함해야 합니다.Parameter 필수Required 형식Type 설명Description
parameterNameparameterName Yes stringstring 반환할 매개 변수의 이름입니다.The name of the parameter to return.

반환 값Return value

지정한 매개 변수의 값입니다.The value of the specified parameter.

설명Remarks

일반적으로 매개 변수를 사용하여 리소스 값을 설정합니다.Typically, you use parameters to set resource values. 다음 예제에서는 웹 사이트의 이름을 배포 중에 전달된 매개 변수 값으로 설정합니다.The following example sets the name of web site to the parameter value passed in during deployment.

"parameters": { 
  "siteName": {
      "type": "string"
  }
},
"resources": [
   {
      "apiVersion": "2016-08-01",
      "name": "[parameters('siteName')]",
      "type": "Microsoft.Web/Sites",
      ...
   }
]

Example

다음 예제 템플릿에서는 매개 변수 함수의 간소화된 사용을 보여줍니다.The following example template shows a simplified use of the parameters function.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "stringParameter": {
            "type" : "string",
            "defaultValue": "option 1"
        },
        "intParameter": {
            "type": "int",
            "defaultValue": 1
        },
        "objectParameter": {
            "type": "object",
            "defaultValue": {"one": "a", "two": "b"}
        },
        "arrayParameter": {
            "type": "array",
            "defaultValue": [1, 2, 3]
        },
        "crossParameter": {
            "type": "string",
            "defaultValue": "[parameters('stringParameter')]"
        }
    },
    "variables": {},
    "resources": [],
    "outputs": {
        "stringOutput": {
            "value": "[parameters('stringParameter')]",
            "type" : "string"
        },
        "intOutput": {
            "value": "[parameters('intParameter')]",
            "type" : "int"
        },
        "objectOutput": {
            "value": "[parameters('objectParameter')]",
            "type" : "object"
        },
        "arrayOutput": {
            "value": "[parameters('arrayParameter')]",
            "type" : "array"
        },
        "crossOutput": {
            "value": "[parameters('crossParameter')]",
            "type" : "string"
        }
    }
}

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.The output from the preceding example with the default values is:

이름Name typeType Value
stringOutputstringOutput 문자열String 옵션 1option 1
intOutputintOutput IntInt 11
objectOutputobjectOutput ObjectObject {“one”: “a”, “two”: “b”}{"one": "a", "two": "b"}
arrayOutputarrayOutput 배열Array [1, 2, 3][1, 2, 3]
crossOutputcrossOutput 문자열String 옵션 1option 1

Azure CLI에서 이 예제 템플릿을 배포하려면 다음 기능을 사용합니다.To deploy this example template with Azure CLI, use:

az group deployment create -g functionexamplegroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/parameters.json

PowerShell에서 이 예제 템플릿을 배포하려면 다음 기능을 사용합니다.To deploy this example template with PowerShell, use:

New-AzResourceGroupDeployment -ResourceGroupName functionexamplegroup -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/parameters.json

variablesvariables

variables(variableName)

변수의 값을 반환합니다.Returns the value of variable. 템플릿의 변수 섹션에서 지정된 변수 이름을 정의해야 합니다.The specified variable name must be defined in the variables section of the template.

매개 변수Parameters

매개 변수를 포함해야 합니다.Parameter 필수Required 형식Type 설명Description
variableNamevariableName Yes 문자열String 반환할 변수의 이름입니다.The name of the variable to return.

반환 값Return value

지정한 변수의 값입니다.The value of the specified variable.

설명Remarks

일반적으로 복잡한 값을 한 번만 구성하여 템플릿을 간소화하기 위해 변수를 사용합니다.Typically, you use variables to simplify your template by constructing complex values only once. 다음 예제에서는 저장소 계정에 대한 고유한 이름을 생성합니다.The following example constructs a unique name for a storage account.

"variables": {
    "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
    {
        "type": "Microsoft.Storage/storageAccounts",
        "name": "[variables('storageName')]",
        ...
    },
    {
        "type": "Microsoft.Compute/virtualMachines",
        "dependsOn": [
            "[variables('storageName')]"
        ],
        ...
    }
],

Example

다음 예제 템플릿은 각기 다른 변수 값을 반환합니다.The following example template returns different variable values.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {
        "var1": "myVariable",
        "var2": [ 1,2,3,4 ],
        "var3": "[ variables('var1') ]",
        "var4": {
            "property1": "value1",
            "property2": "value2"
        }
    },
    "resources": [],
    "outputs": {
        "exampleOutput1": {
            "value": "[variables('var1')]",
            "type" : "string"
        },
        "exampleOutput2": {
            "value": "[variables('var2')]",
            "type" : "array"
        },
        "exampleOutput3": {
            "value": "[variables('var3')]",
            "type" : "string"
        },
        "exampleOutput4": {
            "value": "[variables('var4')]",
            "type" : "object"
        }
    }
}

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.The output from the preceding example with the default values is:

이름Name typeType Value
exampleOutput1exampleOutput1 문자열String myVariablemyVariable
exampleOutput2exampleOutput2 배열Array [1, 2, 3, 4][1, 2, 3, 4]
exampleOutput3exampleOutput3 문자열String myVariablemyVariable
exampleOutput4exampleOutput4 ObjectObject {“property1”: “value1”, “property2”: “value2”}{"property1": "value1", "property2": "value2"}

Azure CLI에서 이 예제 템플릿을 배포하려면 다음 기능을 사용합니다.To deploy this example template with Azure CLI, use:

az group deployment create -g functionexamplegroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/variables.json

PowerShell에서 이 예제 템플릿을 배포하려면 다음 기능을 사용합니다.To deploy this example template with PowerShell, use:

New-AzResourceGroupDeployment -ResourceGroupName functionexamplegroup -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/functions/variables.json

다음 단계Next steps