通过ARM模板提供经典云服务

2024-04-19

在我们的一个项目中,我们正在尝试在 Azure 上自动部署云组件。对于大多数组件(基本上所有 ARM 组件,如 Redis、服务总线、应用服务等)我们能够使用 ARM 模板和 Powershell 脚本来实现它。

然而,我们却陷入了困境云服务(经典)成分。云服务组件中仅包含WebRole,无需发放VM。

我们可以采用经典的部署模型,即在 power shell 中使用 ASM 命令。但由于 ARM 模型支持从 azure 门户进行配置和部署,因此我想知道 ARM REST API 也必须对此组件提供开箱即用的支持。我试图弄清楚但找不到任何相关文档。


到目前为止我已经尝试过的

Azure 模板 (AzureDeploy.json)

{
    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "parameters": {
        "name": {
            "type": "string"
        },
        "location": {
            "type": "string"
        }
    },
    "resources": [
         {
            "apiVersion": "2014-06-01",
            "name": "[parameters('name')]",
            "location": "[parameters('location')]",
            "type": "Microsoft.ClassicCompute/domainNames"
        }
    ]
}

Powershell脚本:

Param(
    [string] $ResourceGroupLocation = 'South India',
    [string] $ResourceGroupName = 'FreeTrial',
    [string] $TemplateFile = 'AzureDeploy.json'
)

$TemplateFile = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, $TemplateFile))

New-AzureRmResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation -Verbose -Force -ErrorAction Stop 
New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
                                   -ResourceGroupName $ResourceGroupName `
                                   -TemplateFile $TemplateFile `
                                   -Force -Verbose

If I try to execute the above script, execution gets stuck at Checking deployment for an hour or so and have to manually kill the script execution. Script execution.


但是,如果我在 power shell 中运行以下命令,它会成功在门户中创建资源:

New-AzureRmResource -位置“印度南部”-ResourceName “cloudsmplservice”-资源类型 “Microsoft.ClassicCompute/domainNames”-ResourceGroupName“FreeTrial”

但我不明白 ARM 模板方法有什么问题。有人可以指导我解决第一种方法中的问题吗?


附录:

我发现了一个奇怪的行为。如果我在资源定义中对资源名称值进行硬编码或在 powershell 提示时传递它,则部署工作正常。

但是,如果我为参数设置一些默认值或通过参数文件传递它,它就不起作用。

{
  "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "cloudName": {
      "type": "string",
      "defaultValue": "cloudsrvc"
    }
  },
  "resources": [
    {
      "apiVersion": "2015-06-01",
      "name": "[parameters('cloudName')]",
      "location": "[resourceGroup().location]",
      "type": "Microsoft.ClassicCompute/domainNames"
    }
  ]
}

附录2:

似乎是一些 powershell 配置问题。将向 Azure 团队报告更多详细信息。到目前为止,我们可以通过简单的步骤来重现它:

  1. 在天蓝色中创建了一个新的虚拟机。
  2. 导入的 AzureRM 模块。
  3. 尝试使用默认值模板配置云服务。 (如前所述,卡住了)
  4. 现在尝试通过从 powershell 传递参数来进行配置。 (效果很好)
  5. 现在使用默认值模板重试。 (效果很好)

我建议您从以下位置验证您的云服务 ARM 模板:模板部署在 Azure 门户中。

我可以使用下面的模板部署裸机云服务,并且部署在几秒钟内就成功了。

当尝试从 Azure 门户创建新的云服务时,您还可以通过单击“自动化”选项对云服务 ARM 模板进行“逆向工程”。

我没有看到通过 ARM 模板方法实现云服务自动化的问题。

Note:

我已经将其部署在南印度位置和它的工作原理。

附录:

我已经使用您的 PowerShell 脚本部署了如下模板,它也能正常工作。

Azure PowerShell 版本是4.3.1(2017年8月).

Screenshot as below. enter image description here

{
    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "string"
        },
        "location": {
            "type": "string"
        }
    },
    "resources": [
        {
            "apiVersion": "2016-11-01",
            "name": "[parameters('name')]",
            "location": "[parameters('location')]",
            "type": "Microsoft.ClassicCompute/domainNames"
        }
    ]
}

附录2:

尝试使用具有默认参数值的模板,部署也成功。

注意:我注意到您的 api 版本较旧,而我的云服务的 api 版本是2016-11-01

{
  "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "name": {
      "type": "string",
      "defaultValue": "[resourceGroup().name]"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "apiVersion": "2016-11-01",
      "name": "[parameters('name')]",
      "location": "[parameters('location')]",
      "type": "Microsoft.ClassicCompute/domainNames"
    }
  ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过ARM模板提供经典云服务 的相关文章

随机推荐

  • 将回调地狱转换为延迟对象

    背景 所以 我有一个相当大的项目 有很多 API 函数 我正在考虑完全转向协程 但由于它们的实现方式是Callback并不是Deferred 我无法有效地使用它们 例如 我想做apiCallOne apiCallTwo and apiCal
  • SqlBulkCopy 的建议批量大小是多少?

    建议的批量大小是多少SqlBulkCopy 我正在寻找一个可以用作性能调整起点的通用公式 我有一个导入实用程序与我的 SQL Server 实例位于同一台物理服务器上 使用自定义IDataReader 它解析平面文件并将它们插入数据库中SQ
  • Vim:如何将一组行重新格式化为一行(如果该行是一个句子)?

    不是重复的在 Vim 中 将文件中的所有行连接成一行的最简单方法是什么 https stackoverflow com questions 391710 in vim what is the simplest way to join all
  • 线段-多边形相交

    问候 我想检测一个线段是否只 接触 多边形或穿过它 人物 解释了我的疑问 如何知道情况A和B的区别 请注意 在这两种情况下 红线在两个顶点处穿过多边形 一个顶点与外部相接触 另一个顶点与内部相交 我有一个段 段相交算法 但我不知道如何正确使
  • 使用 iText 段落之间的图像

    我正在使用 iText 生成自定义 pdf 文档 我尝试了很多 但无法获得包含图像的文本的所需设计 我需要如下所示的输出 我尝试过 Chunk 类和 Paragraph 类 但我无法获得所需的结果 有任何想法吗 你有 至少 两个选择 Use
  • MySQL select for update 返回空集,即使存在一行

    我发现 MySQL 的 选择更新 有一个奇怪的问题 我使用的是5 1 45版本 我有两张桌子 mysql gt show create table tag Tabl
  • 在 Mac 上打开 CSV 文件时出现错误 53

    当我尝试打开 CSV 文件时 我得到 错误 53 找不到文件 我在第四行收到错误 Open FilePath For Input As 1我究竟做错了什么 这是我第一次打开 CSV 请宽容我的代码 Sub opentextfile Dim
  • “Android”中的所见即所得视图编辑器?

    复制 有适用于 Google Android 的表单设计器吗 https stackoverflow com questions 1755860 我想移动一个复选框 以便它显示在与 main xml 内绝对布局下的左上角不同的位置 对于 A
  • 这个文件格式叫什么

    我需要解析以下格式的文件 General Description Some Text Version 4 ProjType 1 Configurations Mice BuildOutputs BuildProject OutputFile
  • 更改背景颜色

    好吧 我对 vim 还很陌生 我不知道如何更改背景颜色 我正在编辑 vimrc 文件来设置这些颜色 但找不到任何背景颜色 我正在使用一个配色方案 我只需要知道如何覆盖它或者要查找什么 以便我可以在我的 color theme vim 文件中
  • 如何让 NSView 不裁剪其边界区域?

    我在 Xcode 上为 OS X 创建了一个空的 Cocoa 应用程序 并添加了 void applicationDidFinishLaunching NSNotification aNotification self view NSVie
  • Android Studio 布局编辑器无法渲染自定义视图

    在 Android Studio 中 布局编辑器无法预览 xml 中的自定义视图 非常简单的例子 public class MyCustomView extends FrameLayout public MyCustomView Conte
  • 使用 Lucene 进行精确短语搜索?

    我正在使用 SpanTerm Query 在 lucene 中搜索确切的短语 但这似乎不起作用 这是我的代码 Indexing IndexWriter writer new IndexWriter dir new StandardAnaly
  • 预计结构位于 的左侧。或 .* 但它是一个结构

    我收到编译错误structure required on left side of or on chest contents 0 but chest是一个结构 class Item public int id int dmg class C
  • 将JSON键值对绑定到polymer dart中的表模板

    如何以聚合物表示法绑定到 json 对象内的键 值对 我有模板重复 jsonarray中的对象 我想布置一个表格 假设每个对象有 1 一 2 二 3 三 就像是
  • Python 线程模块导入失败

    我正在尝试导入线程模块 但是 我似乎只是无缘无故地收到了错误 这是我的代码 import threading class TheThread threading Thread def run self print Insert some t
  • 是否可以引用 styles.xml 文件中的属性?

    我想让用户能够切换整个应用程序的颜色皮肤 我的意思是当用户按下屏幕上的按钮时动态切换应用程序的某些自定义视图的样式 我知道如果你打电话Activity setTheme before onCreate 方法 您可以动态更改应用程序的主题 但
  • 循环调用lambdaify,避免显式调用

    我有这个代码 var a b c arr np array 1 2 3 4 5 6 7 8 9 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 y np hsplit arr len var newdict for
  • Django,如果使用原始 SQL,我应该采取哪些步骤来避免 SQL 注入攻击?

    我读到 ORM 应该最大限度地减少 SQL 注入攻击的可能性 然而在 Django 中 有时 ORM 受到一定限制 我需要使用原始 SQL 我应该采取哪些步骤来避免 SQL 注入攻击 目前我知道检查查询字符串中的分号 但除此之外就不知道了
  • 通过ARM模板提供经典云服务

    在我们的一个项目中 我们正在尝试在 Azure 上自动部署云组件 对于大多数组件 基本上所有 ARM 组件 如 Redis 服务总线 应用服务等 我们能够使用 ARM 模板和 Powershell 脚本来实现它 然而 我们却陷入了困境云服务