问题标签 [azure-template]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 如何将哈希表/对象从模板传递到运行手册
我已经编写了一个模板和随附的运行手册。模板触发 Runbook。模板和 Runbook 工作正常,直到我尝试将对象传递给 Runbook 的参数之一。Azure 错误是:
错误
我不确定 是什么意思ModelState
,但是job.properties.parameters.MyTags
指向麻烦的参数。
我确信这与数据类型有关。这可能是因为参数作为 JSON 对象传递,而 Runbook 无法理解它。我更习惯于将对象从 PowerShell 传递到模板。
运行手册 (Update-ResourceGroupTags.ps1)
对于测试,运行手册如下所示:
没有身份验证,因为它还不是必需的,我故意不输入$MyTags
,尽管我已经尝试[object]
并使用 `[parameter(Mandatory = $true)] 以防万一有不成文/遗漏的规则。
目标
简而言之,我在模板中创建了一个复杂对象作为变量,并且我想将它作为单个对象传递给 Runbook 的参数。这些值是动态的,直到部署时才知道。必须在运行手册中指定每个参数(测试 8)打破了这一要求。
New-AzureRmResourceGroupDeployment
我使用cmdlet启动模板。
我创建了一个“复杂对象”变量:
该模板运行"type" : "jobs"
.
运行的 Runbookjobs
有一个MyTags
需要接受的参数roleTagObject
,我将其传递给jobs.properties.parameters.MyTags
:
这是行不通的。如果我将其分解为每个键(测试 8),它就可以工作。
我最初的想法是将其转换为单个字符串并使用json()
函数将其传递给运行手册,但我不知道在模板中执行此操作的方法。
模板(testRunbook.json)
我已将模板放在 GIST 中,以免再提出这个问题。 https://gist.github.com/arcotek-ltd/7c606540980a45a3a7915ccae2e0b140
模板已编写好,因此我可以将该"resources":[]
部分复制到不同的模板中。因此,为什么某些变量和参数的名称可能看起来很奇怪。正如我所说,除了这个问题之外,模板有效。
电源外壳
我使用 PowerShell 调用模板,因此:
我尝试了以下测试:
测试 1
取消注释$TemplateParametersObject.runbookParameters.MyTags
:
结果失败- 请参阅上面的错误。
测试 2
替换$MyTags
为$JsonTagsHash
:
结果:PASS按预期工作。将参数传递给 Runbook。
测试 2 有效,但我需要能够将参数传递给运行时在模板内生成的运行手册。换句话说,我不能使用 PowerShell。在模板内部job.properties.parameters
(要点中的第 103 行)
测试 3
为了证明它是MyTags
导致问题的原因,请将其完全取出:
结果:没有错误,但是,myTags
没有通过(显然)。
测试 4
创建一个变量对象并将其传递给参数:
回到job.properties.parameters
:
结果失败- 请参阅上面的错误。
测试 5
直接试试:
结果失败- 请参阅上面的错误。
测试 6
使用json()
模板功能。并不是说我希望它能够工作,因为它需要一个字符串。
结果失败。正如预测的那样:
测试 7
尝试使用我的 MS 提供的json()
模板功能示例:
结果失败- 请参阅上面的错误。有趣的!但为什么?有效的 PowerShell 测试表明它需要是一个 JSON 对象。这不是什么json()
吗?
测试 8
将对象分解为单个键/值:
我还必须将 Runbook 中的参数从 1 更改为 3。
结果传递- 但能够传递对象的想法是它可以有任意数量的键/值对。这样,不仅变量和参数必须进行硬编码,运行手册也是如此。不是很灵活。
我没主意了。请问有什么建议吗?
azure - 基于输入参数的 Azure ARM 模板参数
给定一个 template.json :
如何根据 virtualMachineName 的输入设置 networkInterfaceName?
例如:
将提示输入 VirtualMachineName,如果输入了“test-vm”,我们希望 networkInterfaceName 默认为“test-vm-nic”。
我们已经尝试添加这个parameters.json:
但收到错误:
azure - 无法在链接的 ARM 模板之间传递安全值
我正在尝试输出在一个链接模板中创建的秘密,并将其作为参数引用到另一个模板中。测试场景:
部署1:
部署2:
运行此方案会在 '34' 行和 '9' 列引发错误“无法处理资源 '/subscriptions//resourceGroups/testrg1/providers/Microsoft.Resources/deployments/deployment2' 的模板语言表达式。'语言表达式属性'value' 不存在,可用的属性是 'type'。'"
因此,如果我将引用参数更改为,安全字符串输出上的“.value”将不起作用
the errors changes to 'Deployment template validation failed: 'The provided value for the template parameter 'testInput2' at line '5' and column '23' is not valid.'.'
Is it possible to achieve what I am doing?
Thanks in advance
azure - ARM 模板将多个证书指纹分配给 WEBSITES_LOAD_CERTIFICATES
我正在使用 ARM 模板将应用程序部署到 Azure App 服务,并希望在 App 服务的 App Settings 中的 WEBSITES_LOAD_CERTIFICATES 中加载两个证书的指纹。
我已经尝试如下但给出错误。我没有找到加载两个证书指纹的任何帮助。
请帮助使用 ARM 模板将两个证书指纹加载到 WEBSITES_LOAD_CERTIFICATES 尝试如下但仅加载第二个证书指纹。
azure - 如何从 docker 注册表中提取容器映像以部署 azure 容器
我目前在一个 azure 项目中工作,我们需要一种将图像推送到公共注册表的方法——它可以是 Azure ACR 或 docker 注册表。
看起来 Azure 不支持对 Azure ACR 的匿名读取访问。因此,唯一的方法是在 azure 中的容器部署期间将映像推送到 docker 注册表并从 docker 注册表中提取映像。
可能吗?如果是这样,我该如何使用 azure 模板来实现呢?请问有什么例子吗?
powershell - Register-Scheduledjob 创建一个作业,但它从不在启动时运行
我已经尝试了 100 种方法来 register-scheduledjob 来运行启动程序的脚本。似乎没有什么能始终如一地工作。我的最后一次尝试是使用 Register-ScheduledTask,这个确实创建了作业,但不会在系统启动时自动启动它。有趣的是,如果我手动运行一次,它将在未来重新启动时自行启动。但是,如果我想自己运行一次,那么安排工作毫无意义!
这就是我正在做的事情:
我原来的代码是:
我也试过这个:
带触发器和选项:
$taskParametersPath 是一个 powershell 脚本,它启动另一个 powershell 脚本并为其传递所有必需的参数。所有这些偶尔都会起作用,但有时它会因为我在这里遇到的错误而无法安排作业。当我登录机器并尝试注册作业时,它一直有效,但是当我使用 azure 堆栈模板将它作为 VM 创建脚本的一部分运行时,它偶尔会失败。:(这是我得到的错误:
azure - 无法为 Azure 资源管理器模板使用资源函数
我的参数文件如下所示:
adminPassword值将从具有特定id的指定KeyVault中获取。但是,我必须对“id”值进行硬编码。
根据此链接,我可以使用以下内容指定 id:
但是,当使用上述语法/资源函数时,我在使用VSTS发布和部署我的应用服务时收到错误(我使用Azure 资源组部署任务进行 APP 部署)。错误是这样的:
id 必须采用以下格式:
不知道我做错了什么?
azure - 通过 ARM 模板设置 Azure 主机/功能键
我在网上找到了一些资源,描述了如何检索 Azure 函数的函数/主机密钥,但是,我还没有遇到任何允许 ARM 模板设置/添加函数或主机密钥的东西。这在当前版本的 Azure Functions 中是否可行?
azure - Azure:无法在 IF 条件下使用链接模板的输出
我正在尝试使用具有多个子网的 ARM 模板部署虚拟网络。我有一个链接模板,它创建 NSG、路由表并将其分配给特定的子网。我正在使用副本创建多个子网。路由表应该只分配给一个特定的子网。我使用 If 条件控制它。这里的问题是我无法在 If 条件中使用链接的模板输出。它失败并出现以下错误。
'{ "error": { "code": "InvalidTemplate", "message": "Unable to process template language expressions for resource '/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks/' at line '143'和列'9'。'为模板语言函数'if'提供的参数无效:所有参数都应为'boolean'类型。有关用法,请参阅https://aka.ms/arm-template-expressions#if细节。'” } }'
主模板(子网创建片段):-
路由表(输出片段): -
如果我定义一个变量并将其传递给类似于 nsg 的 if 条件,它会起作用,如下所示:-
azure - 如何使用 ARM 模板在 Azure Functions App 中禁用 ftps/ftp
我正在使用 ARM 模板部署 Azure Functions 应用程序并希望禁用 ftp/ftps 访问。
该设置很容易在门户中找到:
如何找到此属性或应用程序设置,以便我可以在 json ARM 模板中对其进行配置?
我已经试过了
- 查看Microsoft 文档
- 运行 PowerShell 命令
Get-AzureRmResource
并Get-AzureRmWebApp
探索返回的站点对象 - 在Azure 资源资源管理器中搜索属性
- 猜测属性名称和测试部署——反复试验
我希望该设置与 siteConfig 中的类似设置一起存在: