模板(即基础设施即代码)相对于 API 调用的优势

Advantages of Templates ( ie infrastructure as code) over API calls

我正在尝试设置一个模块以在云中部署资源(它可以是任何云提供商)。我看不出使用模板(即部署管理器)比直接 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 调用创建虚拟机:

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)

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

为 you\no 处理的

readability\easy of use\authentication 需要是 coder\etc。可以有很多优点,这实际上取决于您如何看待它。这取决于你使用的background\tools。

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

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

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

中找到

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

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