【问题标题】:Azure provisioning with Jenkins使用 Jenkins 进行 Azure 预配
【发布时间】:2019-01-31 14:47:39
【问题描述】:

作为 QA 管道(在 Jenkins 中)的一部分,目标是自动配置和配置 VM 以运行 QA 测试。

Jenkins 管道可以触发 Terraform 代码以自动配置 VM 和用于配置 VM 的 ansible 代码,但是,回滚错误处理等问题并不容易,除非我们使用一些供应商特定的模板,例如 AzureResourceManager 模板。

那么,对于 Jenkins 管道,在 Azure 云中预配和配置 VM 的最佳方法应该是什么?我们为詹金斯管道编写管道脚本......

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-plugins azure-resource-manager provisioning


    【解决方案1】:

    由于目标是了解自动配置和配置 VM 以运行 QA 测试的最佳方法,因此我将使用简单的 jenkins 管道脚本,利用其中的 Azure CLI 命令。 准确地说,我只是将 Azure 服务主体添加到 Jenkins 凭据。然后使用 'withCredentials([azureServicePrincipal('SERVICEPRINCIPALCREDENTIALID')])' 编写简单的 Jenkins 管道脚本,然后使用 'sh' 部分让 Azure CLI 命令预配和配置 VM。与此相关的说明可以参考https://docs.microsoft.com/en-us/azure/jenkins/execute-cli-jenkins-pipeline#add-azure-service-principal-to-jenkins-credential

    关于使用 Jenkins 管道触发 Ansible 代码(使用或不使用 ARM 模板)的方法时回滚和错误处理等问题,该方法可以自动配置和配置 VM 以运行 QA 测试,(您可能已经意识到这一点,但想让您知道)对于某些类型的任务,您可以编写可以利用错误处理功能的自定义模块,并且在少数情况下您可以利用“failed_when”选项。您还可以利用“块”功能定义一组要在救援:部分中执行的任务。这种“阻止”功能特别应该有助于使我们能够回滚事情。

    希望这会有所帮助! :)

    【讨论】:

    • 我刚刚意识到您已经通过添加 Terraform 和 Ansible 来编辑问题,但我认为我之前对此的评论仍然有效:)
    • Here 它谈到了 5 种配置方式。为什么你更喜欢这里面的第三个?哪个是脚本(azure CLI)
    • 我没有考虑第一种方式(即 Portal),因为它是手动方式。我更喜欢第三种方式(即脚本),因为它是自动化选项中最简单的方式。下一个偏好将是第四种方式(即 REST API)。这与第三种方式(即脚本)相邻,因为它依赖于 Curl 或 Postman。
    • 下一个偏好将是第二种方式(即 ARM)。这是第四种方式(即 REST API)的旁边,因为与其他方式相比,这种方式需要更多的学习,花一点时间来创建等等。如果要求不同于即,如果要求是作为一个组来部署、管理、监控解决方案的许多资源,而不是单独处理多个资源。
    • 下一个偏好将是第五种方式(即管理 SDK)。这仅次于第二种方式(即 ARM),因为这依赖于 .Net、Java、Python、PHP、JavaScript、Go 等开发语言,因为 Azure 提供了支持这些管理 SDK 的包/库。 AFAIK 管理 SDK 非常适合希望使用 Azure 开发支持云的应用程序的开发人员。
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多