저는 Azure ARM 템플릿에서 링크 된 템플릿을 사용하고 있습니다. 하위 템플릿의 기본값을 사용하려고하지만 여전히 상위 템플릿에서 매개 변수에 대한 참조를 유지하는 데 문제가 있습니다.Azure 트리거 링크 된 템플릿 defaultValue
parent.json
...
parameters: {
foo: {
type: "string"
}
},
resources: [{
type: "Microsoft.Resources/deployments",
properties: {
templateLink: {
uri: "sub.json",
contentVersion: "1.0.0.0"
},
parameters: {
bar: {
value: "[parameters('foo')]"
}
}
}
}]
...
sub.json
...
parameters: {
bar: {
type: "string",
allowedValues: ["larry", "moe", "curly"],
defaultValue: "curly"
}
}
...
불행하게도, 부모 템플릿에 foo를위한 널 값을 전달하는 것은 The value of deployment parameter 'foo' is null
에러 것입니다. foo에 빈 문자열을 전달하면 The provided value '' for the template parameter 'bar' is not valid. The parameter value is not part of the allowed value(s): 'larry,moe,curly'
오류가 발생합니다.
...
resources: [{
type: "Microsoft.Resources/deployments"
properties: {
...
parameters: {
bar: {
value: "[if(empty(parameters('foo')), json('null'), parameters('foo'))]"
}
}
}
}]
...
에서 퍼팅 시도했지만 그것은 단지 같은 값이 null 줄 것이다. 값 aws::NoValue
을 사용하여 AWS 중첩 스택에서이 작업을 수행 할 수 있지만 azure에서는 해당 항목을 찾을 수 없습니다. 아무도 시도 할 다른 것을 알 수 있습니까?
기술적 즉 그들이해야 함을 변경하려면 내가 찾는거야이 유일한 문제는 당신이 DEFAULTVALUE를 사용하는 사용자를 강제하고 있다는이고 무엇 그래 매개 변수의 값을 전달하는 대신 템플리트를 편집 할 수 있습니다. – SamMade
글쎄, 두 템플릿의 기본값을 '동기화'할 수 있으므로 아무 것도 전달되지 않으면 동일한 기본값을 템플릿에 전달하게됩니다. 또한 나는 대답을 편집 할 것이다. – 4c74356b41
이것이 네거티브라는 것은 변수에서 런타임 상태를 사용할 수 없다는 것입니다. 따라서 다른 리소스의 런타임 상태를 사용하여 속성을 전달해야하는 경우 변수가 아니라 매개 변수에서 직접 선언해야합니다. – SamMade