【问题标题】:Advantages of Templates ( ie infrastructure as code) over API calls模板(即基础设施即代码)相对于 API 调用的优势
【发布时间】:2020-01-17 12:25:22
【问题描述】:

我正在尝试设置一个模块来在云中部署资源(它可以是任何云提供商)。我没有看到使用模板(即部署管理器)优于直接 API 调用的优势:

使用模板创建虚拟机:

# deployment.yaml
resources:
- type: compute.v1.instance
  name: quickstart-deployment-vm
  properties:
    zone: us-central1-f
    machineType: f1-micro
 ...

# bash command to deploy yaml file
gcloud deployment-manager deployments create vm-deploy --config deployment.yaml

使用 API 调用创建 VM:

def addInstance(http, listOfHeaders):
  url = "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances"

  body = {
    "name": "quickstart-deployment-vm",
    "zone": " us-central1-f",
    "machineType": "f1-micro",
...
     }]

bodyContentURLEncoded = urllib.urlencode(bodyContent)
http.request(uri=url, method="POST", body=body)

有人可以向我解释一下使用模板有什么好处吗?

【问题讨论】:

    标签: amazon-cloudformation azure-resource-manager google-deployment-manager infrastructure-as-code


    【解决方案1】:

    可读性\易于使用\为您处理的身份验证\无需成为编码器\等。可能有很多优点,这实际上取决于您如何看待它。这取决于您使用的背景\工具。

    专门为您使用 python 可能会更有益。

    【讨论】:

      【解决方案2】:

      使用模板更容易,并且您可以获得许多内置功能,例如在模板上运行验证以扫描可能的安全漏洞等。您还可以使用与创建它相同的模板轻松删除您的基础设施。 FWIW,我一直使用模板,并尽可能多地使用模板和更小的单元。例如,使用 GitLab 中的管道进行部署,可以轻松移出部分基础设施或将其复制到另一个项目。

      【讨论】:

      • 哇,用模板删除基础设施?
      • @4c74356b41 是的,从 CLI 中“取消部署”比手动删除更好docs.aws.amazon.com/cli/latest/reference/cloudformation/…
      • 啊,我在想azure,你不能那样做
      • @4c74356b41 在 AWS 中,如果我们从控制台执行删除操作,堆栈会在删除过程中卡住,然后我们必须等待 40 分钟才能超时。我们在删除堆栈方面取得了更大的成功,就像我们从命令行部署一样。值得注意的是,当部署几乎总是通过按下 ui 控制台中的按钮删除时,谷歌云很少发生这种情况。这可能是因为“堆栈”之间的依赖关系在 AWS 中是如何处理的,并且我们的 AWS 账户中的部署具有更多的依赖关系。我开源了一个例子我是如何做到的gitlab.com/montao/aws-lambda-go-gitlab-sls
      【解决方案3】:

      使用模板而不是 API 调用的原因是模板可用于需要确定性结果的用例。

      【讨论】:

        【解决方案4】:

        模板和 API 调用都有其自身的优势。这两个选项之间总是存在权衡。如果您想在部署中获得更大的灵活性,那么 API 调用更适合您。另一方面,如果安全和完整的修订是您的首要任务,那么模板应该是您的选择。详情可以在这个online documentation找到。

        【讨论】:

          【解决方案5】:

          使用模板时,部署的编排由平台处理。使用 API 调用(或其他命令式方法)时,您需要处理编排。

          【讨论】:

            猜你喜欢
            • 2020-08-27
            • 2021-01-25
            • 2016-05-22
            • 2021-06-27
            • 1970-01-01
            • 2021-04-19
            • 1970-01-01
            • 2019-08-10
            • 2019-03-10
            相关资源
            最近更新 更多