2

似乎有很多方法可以在 Azure 中使用 PowerShell 实现自动化。由于 ARM 模板是最新的,Azure 中的任何其他 PowerShell 选项已经过时了吗?这些工具/脚本之间有什么区别:

  • Azure 运行手册
  • Azure 自动化
  • Powershell DSC
  • Azure CLI
  • ARM 模板(使用 PowerShell 执行的 JSON 文件)
  • Azure API
  • 我错过了 Azure 中的任何其他 PowerShell 可能性吗?a) Azure 自动关闭 b) Azure 更改跟踪
4

2 回答 2

2

Azure Runbook 是 Azure 自动化的“功能”之一。除非您创建运行手册,否则您可以使用 Azure 自动化真正实现任何事情的自动化。

Powershell DSC 并没有真正用于在 Azure 中创建资源,因此您不能(当然可以,但这样做肯定是一种糟糕的方式)用它在 Azure 中创建资源。

Azure Cli 根本不是 powershell,不知道你为什么提到这一点。ARM 模板也不是 powershell,但可以从 powershell 调用它们(如果你在机器上安装了 Azure Cli)。

您完全忽略了诸如 ansible\terraform\chef\puppet\etc 之类的解决方案。还有各种SDK。

您应该想到的最重要的区别 - 命令式\声明式。在 Azure 中创建资源的方法有很多。根据您的用例,您可能会使用一种或另一种工具,其中一些功能更多,一些功能更少,但它们都在下面使用 Azure REST Api。

于 2018-11-19T15:05:57.350 回答
2
  • Powershell 脚本中最好的是 AZ (azure CLI),因为它优化了 powershell 脚本(从头开始)
  • 任何形式中最好的是 ARM 模板 (.json),因为它在更新现有基础设施时是智能的(它不会删除现有的但会添加缺失的)。因此它击败了 AZ,但有时 AZ 有助于 ARM 模板(例如:缺少某些功能)。
  • Azure 自动化有助于安排任务:

例如:开发机器应该运行 12 小时。创建 PowerShell 工作流脚本,然后将它们绑定到两个 azure 自动化计划(开始 + 停止)

  • DSC 是一项 PowerShell 功能,可防止配置漂移。例如:部署防止服务器服务停止的 DSC 配置。

大多数时候,可供选择的选项有限(4 个选项)

例如:要创建一个虚拟网络,这些是选项:

  1. 使用门户
  2. 使用 Powershell
  3. 使用 Azure CLI
  4. Json ARM 模板 在此处输入图像描述 在此处输入图像描述

根据要求于 2020 年编辑:

IAC(基础设施即代码)是当今的事实,公司要么选择 ARM 模板,要么选择 Terraform(或类似的)。使用 Terraform 时,与 arm 模板的兼容性可能会成为问题。我使用 80% 的带有 AZ 的 powershell(主要是因为涉及 VM)和 20% 的 ARM 模板。那么问题就是失去幂等性。所以开发者需要知道哪些命令是幂等的。这会导致 arm 模板继承和这样的设计考虑。另一个问题可能是:“我应该一起创建 Keyvault 和 VM,还是应该将 Keyvault 分开?” 或者换句话说,对资源创建或更新进行分组,无论它们存在哪个天蓝色资源组。

Azure 函数也用于自动化,例如:基于某些条件的 VM 开始时间和结束时间。

Azure 策略在企业自动化方面发挥着重要作用。例如:如果在创建时将标签添加到 VM,那么它会触发加入域的策略(在 10 分钟内)。这样,企业中的每个团队都可以在需要时重用代码。

我能想到的其他脚本和自动化是 KQL(Kusto 查询语言),它提供用于监控的仪表板并采取必要的操作,例如关闭 VM。但它可能不适合“自动化”。

于 2019-01-20T20:13:51.450 回答