问题标签 [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.

0 投票
1 回答
932 浏览

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/7c606540​​980a45a3a7915ccae2e0b140

模板已编写好,因此我可以将该"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。

结果传递- 但能够传递对象的想法是它可以有任意数量的键/值对。这样,不仅变量和参数必须进行硬编码,运行手册也是如此。不是很灵活。


我没主意了。请问有什么建议吗?

0 投票
1 回答
1235 浏览

azure - 基于输入参数的 Azure ARM 模板参数

给定一个 template.json :

如何根据 virtualMachineName 的输入设置 networkInterfaceName?

例如:

将提示输入 VirtualMachineName,如果输入了“test-vm”,我们希望 networkInterfaceName 默认为“test-vm-nic”。

我们已经尝试添加这个parameters.json:

但收到错误:

0 投票
1 回答
1128 浏览

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

0 投票
1 回答
1263 浏览

azure - ARM 模板将多个证书指纹分配给 WEBSITES_LOAD_CERTIFICATES

我正在使用 ARM 模板将应用程序部署到 Azure App 服务,并希望在 App 服务的 App Settings 中的 WEBSITES_LOAD_CERTIFICATES 中加载两个证书的指纹。

我已经尝试如下但给出错误。我没有找到加载两个证书指纹的任何帮助。

请帮助使用 ARM 模板将两个证书指纹加载到 WEBSITES_LOAD_CERTIFICATES 尝试如下但仅加载第二个证书指纹。

0 投票
1 回答
476 浏览

azure - 如何从 docker 注册表中提取容器映像以部署 azure 容器

我目前在一个 azure 项目中工作,我们需要一种将图像推送到公共注册表的方法——它可以是 Azure ACR 或 docker 注册表。

看起来 Azure 不支持对 Azure ACR 的匿名读取访问。因此,唯一的方法是在 azure 中的容器部署期间将映像推送到 docker 注册表并从 docker 注册表中提取映像。

可能吗?如果是这样,我该如何使用 azure 模板来实现呢?请问有什么例子吗?

0 投票
0 回答
840 浏览

powershell - Register-Scheduledjob 创建一个作业,但它从不在启动时运行

我已经尝试了 100 种方法来 register-scheduledjob 来运行启动程序的脚本。似乎没有什么能始终如一地工作。我的最后一次尝试是使用 Register-ScheduledTask,这个确实创建了作业,但不会在系统启动时自动启动它。有趣的是,如果我手动运行一次,它将在未来重新启动时自行启动。但是,如果我想自己运行一次,那么安排工作毫无意义!

这就是我正在做的事情:

我原来的代码是:

我也试过这个:

带触发器和选项:

$taskParametersPath 是一个 powershell 脚本,它启动另一个 powershell 脚本并为其传递所有必需的参数。所有这些偶尔都会起作用,但有时它会因为我在这里遇到的错误而无法安排作业。当我登录机器并尝试注册作业时,它一直有效,但是当我使用 azure 堆栈模板将它作为 VM 创建脚本的一部分运行时,它偶尔会失败。:(这是我得到的错误:

0 投票
1 回答
97 浏览

azure - 无法为 Azure 资源管理器模板使用资源函数

我的参数文件如下所示:

adminPassword值将从具有特定id的指定KeyVault中获取。但是,我必须对“id”值进行硬编码。 根据此链接,我可以使用以下内容指定 id:

但是,当使用上述语法/资源函数时,我在使用VSTS发布和部署我的应用服务时收到错误(我使用Azure 资源组部署任务进行 APP 部署)。错误是这样的:

id 必须采用以下格式:

不知道我做错了什么?

0 投票
1 回答
503 浏览

azure - 通过 ARM 模板设置 Azure 主机/功能键

我在网上找到了一些资源,描述了如何检索 Azure 函数的函数/主机密钥,但是,我还没有遇到任何允许 ARM 模板设置/添加函数或主机密钥的东西。这在当前版本的 Azure Functions 中是否可行?

0 投票
0 回答
179 浏览

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 条件,它会起作用,如下所示:-

0 投票
1 回答
3725 浏览

azure - 如何使用 ARM 模板在 Azure Functions App 中禁用 ftps/ftp

我正在使用 ARM 模板部署 Azure Functions 应用程序并希望禁用 ftp/ftps 访问。

该设置很容易在门户中找到:

在此处输入图像描述

如何找到此属性或应用程序设置,以便我可以在 json ARM 模板中对其进行配置?

我已经试过了

我希望该设置与 siteConfig 中的类似设置一起存在:

在此处输入图像描述