Azure数据工程指南-十九、部署数据工厂更改

作者: Apache CN

使用 Azure DevOps 持续集成和部署流程的最佳实践将 Azure Data Factory 从一个环境部署到另一个环境的迫切需求为成功完成部署流程带来了许多复杂性。在本章中,我将介绍如何利用 PowerShell 脚本和 Azure 资源组部署任务来启动/停止 ADF 触发器,并通过 Azure DevOps 的 Azure 数据工厂 CI/CD 更改的端到端部署来更改 ADF 环境连接配置属性。

先决条件

要继续这个练习,你需要一些必备的 Azure 资源。本节展示了在构建端到端 CI/CD 流程之前必须创建和运行的内容。

图 [19-1]中的资源的一致性,并将这些资源用作 DEV 资源组的 ADF 中的链接服务连接,该 ADF 将部署到 QA ADF。

创建如图 [19-1]。

img/511918_1_En_19_Fig1_HTML.jpg

图 19-1 Azure 门户开发资源组

然后创建如图 [19-2] Fig2) 所示的 QA 资源组。该资源组将包含上层环境(QA

img/511918_1_En_19_Fig2_HTML.jpg

图 19-2 Azure 门户 QA 资源组

在图 [19-3] Fig3) 所示的 DEV 资源组和图 [19-4](Fig4

  • ls-adls2-akv :这将包含 DEV 和 QA ADLS Gen2 账户的访问密钥,可在各自的 DEV 和 QA 数据湖存储账户的访问密钥部分找到。
  • ls-sql-akv :这将包含用于验证目的的开发和 QA Azure SQL 服务器和数据库的管理员密码。

图 [19-3] Fig3

img/511918_1_En_19_Fig3_HTML.jpg

图 19-3 Azure 门户开发密钥保管库机密

类似地,图 [19-4] Fig4

img/511918_1_En_19_Fig4_HTML.jpg

图 19-4 Azure 门户 QA 密钥库机密

在 DEV 密钥库内,记住通过添加密钥库访问策略来授予 DEV 数据工厂对密钥库的 get 和 list 权限访问,如图 [19-5] Fig5

img/511918_1_En_19_Fig5_HTML.jpg

图 19-5 Azure 门户开发密钥库访问策略

类似地,在 QA 密钥库中,记得通过添加密钥库访问策略来授予 QA 数据工厂对密钥库的 get 和 list 权限,如图 [19-6] Fig6

img/511918_1_En_19_Fig6_HTML.jpg

图 19-6 Azure 门户 QA 密钥库访问策略

出于测试目的,在开发数据工厂中创建以下链接服务,如图 [19-7] Fig7

img/511918_1_En_19_Fig7_HTML.jpg

图 19-7

开发数据工厂中的链接服务

以下是 Azure 数据湖存储链接服务连接的 JSON 脚本:

{
    "name": "LS_AzureDataLakeStorage",
    "properties": {
        "annotations": [],
        "type": "AzureBlobFS",
        "typeProperties": {
            "url": "https://adls2dev.dfs.core.windows.net",
            "accountKey": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "LS_AzureKeyVault",
                    "type": "LinkedServiceReference"
                },
                "secretName": "ls-adls2-akv",
                "secretVersion": ""
            }
        }
    }
}

以下是 Azure Key Vault 链接服务连接的 JSON 脚本:

{
    "name": "LS_AzureKeyVault",
    "properties": {
        "annotations": [],
        "type": "AzureKeyVault",
        "typeProperties": {
            "baseUrl": "https://rl-kv-001-dev.vault.azure.net/"
        }
    }
}

以下是 Azure SQL 数据库链接服务连接的 JSON 脚本:

{
    "name": "LS_AzureSqlDatabase",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Integrated Security=False;Encrypt=True;Connection Timeout=30;Data Source=rl-sqlserver-001-dev.database.windows.net;Initial Catalog=rl-sql-001-dev;User ID=devadmin",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "LS_AzureKeyVault",
                    "type": "LinkedServiceReference"
                },
                "secretName": "ls-sql-akv"
            }
        }
    }
}

图 [19-8] 将帮助你理解这个触发器将存在于何处。

img/511918_1_En_19_Fig8_HTML.jpg

图 19-8

开发数据工厂中的触发器

一旦添加了链接的服务连接和触发器,发布 DEV 数据工厂以将更改提交到 adf_publish 分支,并为 DevOps CI/CD 流程做准备。请注意,这个方法将使用 adf_publish 分支,而不是 CI/CD 部署流程的主分支。请确认数据工厂的添加和变更已经发布到 GitHub repo 中的 adf_publish 分支,如图 [19-9] Fig9

img/511918_1_En_19_Fig9_HTML.jpg

图 19-9

发布到 adf_publish 分支的更改

最后,添加示例预部署和后部署脚本,它包含在 ADF ( https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment##script )中微软关于持续集成和交付的文章的底部。还要确保将文件添加到与图 19-10 所示的 DEV ADF 资源相同的文件夹中,并将其命名为 cicd。ps1 。这个文件的详细内容也可以在我的 GitHub repo ( https://github.com/ronlesteve/demo-dev-adf/blob/adf_publish/rl-adf-001-dev/cicd.ps1 )中找到。

img/511918_1_En_19_Fig10_HTML.jpg

图 19-10

部署前和部署后脚本示例

创建 DevOps 持续集成构建管道

在创建所有必要的先决条件后,您可以通过在 Azure DevOps pipelines 中单击“新建管道”来开始创建 Azure DevOps 持续集成构建管道,如图 [19-11] Fig11

img/511918_1_En_19_Fig11_HTML.jpg

图 19-11

新构建管道

选择图 [19-12] Fig12

img/511918_1_En_19_Fig12_HTML.jpg

图 19-12

使用经典编辑器

选择 GitHub,因为那是保存代码报告的地方。同时选择回购名称和 adf_publish 分支,如图 [19-13] Fig13

img/511918_1_En_19_Fig13_HTML.jpg

图 19-13

选择 GitHub 源和回购详细信息

从一个空的作业模板开始,如图 [19-14] Fig14

img/511918_1_En_19_Fig14_HTML.jpg

图 19-14

从一个空的作业模板开始

单击代理作业上的+图标添加新任务。还要添加发布构建工件任务,这可以在图 [19-15] Fig15

img/511918_1_En_19_Fig15_HTML.jpg

图 19-15

添加发布构建工件任务

配置发布构建工件任务,如图 [19-16] Fig16

img/511918_1_En_19_Fig16_HTML.jpg

图 19-16

配置发布构建工件任务

验证图 [19-17] Fig17

img/511918_1_En_19_Fig17_HTML.jpg

图 19-17

运行管道

一旦作业成功完成运行,验证工件是否已经发布,如图 [19-18] Fig18

img/511918_1_En_19_Fig18_HTML.jpg

图 19-18

验证已发布的工件

正如所料,图 [19-19] Fig19

img/511918_1_En_19_Fig19_HTML.jpg

图 19-19 Azure DevOps 中发布的工件

创建 DevOps 持续部署发布渠道

既然已经成功完成并验证了持续集成 Fig20

img/511918_1_En_19_Fig20_HTML.jpg

图 19-20

新发布管道

点击添加工件,如图 [19-21] Fig21

img/511918_1_En_19_Fig21_HTML.jpg

图 19-21

添加工件

选择“构建”作为来源类型。另外,选择在上一节中创建的构建管道,并填充额外的必需细节,如图 [19-22] Fig22

img/511918_1_En_19_Fig22_HTML.jpg

图 19-22

添加构建工件详细信息

接下来,添加一个阶段,如图 [19-23] Fig23

img/511918_1_En_19_Fig23_HTML.png

图 19-23

添加一个阶段

从图 [19-24] Fig24

img/511918_1_En_19_Fig24_HTML.jpg

图 19-24

从一个空的作业模板开始

接下来,点击链接添加任务,如图 [19-25] Fig25

img/511918_1_En_19_Fig25_HTML.png

图 19-25

添加任务的链接

首先添加一个 Azure PowerShell 脚本任务,如图 [19-26] Fig26

img/511918_1_En_19_Fig26_HTML.jpg

图 19-26 Azure PowerShell 脚本任务

另外增加一个 ARM 模板部署任务,如图 [19-27] Fig27

img/511918_1_En_19_Fig27_HTML.jpg

图 19-27 ARM 模板部署任务

最后,还要添加另一个 Azure PowerShell 任务,如图 [19-28] Fig28

img/511918_1_En_19_Fig28_HTML.jpg

图 19-28 Azure PowerShell 任务重新启动 ADF 触发器

在配置之前,确保所有三个任务按照图 [19-29] Fig29

img/511918_1_En_19_Fig29_HTML.jpg

图 19-29

组织代理作业任务

Azure PowerShell 任务停止触发器

开始配置 Azure PowerShell 脚本,停止 QA 环境中的数据工厂触发器,如图 [19-30] Fig30

img/511918_1_En_19_Fig30_HTML.png

图 19-30

配置 Azure PowerShell 脚本以停止 ADF 触发器

请确保添加脚本路径和参数。以下是您在图 [19-30] Fig30 预部署脚本路径:应为全限定路径或相对于默认工作目录,如以下代码所示:

$(System.DefaultWorkingDirectory)/_ADF-Demo-Project-CI1/dev/cicd.ps1

预部署脚本参数:传递给 PowerShell 的附加参数,可以是序号参数,也可以是命名参数,如以下代码所示:

-armTemplate "$(System.DefaultWorkingDirectory)/_ADF-Demo-Project-CI1/dev/ARMTemplateForFactory.json" -ResourceGroupName rl-rg-001-dev -DataFactoryName rl-adf-001-dev -predeployment $true -deleteDeployment $false

ARM 模板部署任务

这个发布管道任务将使用您从构建管道发布到 DevOps 工件的开发数据工厂的模板和模板参数来增量更新 QA 资源组。这些工件在开发数据工厂中发布,并提交到 adf_publish 分支 GitHub repo。务必选择合适的armtemplateforfactory . JSONarmtemplateparametersforfactory . JSON文件,如图 [19-31] Fig31

img/511918_1_En_19_Fig31_HTML.png

图 19-31

创建或更新资源组的任务

一旦图 [19-31] Fig31) 中的所有其他 Azure 细节配置完成,通过点击…图标选择覆盖模板参数,如图 [19-32](Fig32

img/511918_1_En_19_Fig32_HTML.jpg

图 19-32

覆盖模板参数

部署任务中定义了以下模板和参数,如图 [19-31] Fig31) 和 [19-32](Fig32 部署模板:指定指向 Azure 资源管理器模板的路径或模式。有关模板的更多信息,请访问以下网址( https://aka.ms/azuretemplates ),),要开始使用示例模板,请访问以下网址: https://aka.ms/sampletemplate

$(System.DefaultWorkingDirectory)/_ADF-Demo-Project-CI1/dev/ARMTemplateForFactory.json.

模板参数:确保选择指向 Azure 资源管理器模板参数文件的路径或模式:

$(System.DefaultWorkingDirectory)/_ADF-Demo-Project-CI1/dev/ARMTemplateParametersForFactory.json

覆盖模板参数:覆盖模板参数文本框旁边的“…”将显示模板参数。您还可以在文本框中键入要覆盖的模板参数,例如,–storageName fabrikam –adminUsername $(vmusername) -adminPassword $(password) –azureKeyVaultName $(fabrikamFibre).如果您将使用的参数值有多个单词,请确保用引号将它们括起来,即使您使用变量传递它们,例如,-name " parameter value “-name 2 " $(var)“。要覆盖对象类型参数,请使用字符串化的 JSON 对象,例如,-options[” option 1 “]-map { " key 1 “:” value 1 " }。

-factoryName "rl-adf-001-qa" -LS_AzureSqlDatabase_connectionString "Integrated Security=False;Encrypt=True;Connection Timeout=30;Data Source=rl-sqlserver-001-qa.database.windows.net;Initial Catalog=rl-sql-001-qa;User ID=qaadmin" -LS_AzureDataLakeStorage_properties_typeProperties_url "https://adls2qa.dfs.core.windows.net" -LS_AzureKeyVault_properties_typeProperties_baseUrl "https://rl-kv-001-qa.vault.azure.net/"

将覆盖模板参数更改为图 [19-33] Fig33

img/511918_1_En_19_Fig33_HTML.jpg

图 19-33

将覆盖模板参数更改为 QA

Azure PowerShell 任务启动触发器

最后,配置 Azure PowerShell 脚本以在 QA 环境中启动数据工厂触发器。确保脚本路径指向您在先决条件步骤中添加到 GitHub repo 的 cicd.ps1 文件。如图 [19-34] Fig34

img/511918_1_En_19_Fig34_HTML.png

图 19-34

重新启动 ADF 触发器的 PowerShell 任务

另外,将以下部署后脚本路径添加到任务配置中,如图 [19-34] Fig34

$(System.DefaultWorkingDirectory)/_ADF-Demo-Project-CI1/dev/cicd.ps1

您还需要将以下部署后脚本参数添加到任务配置中,如图 [19-34] Fig34

-armTemplate "$(System.DefaultWorkingDirectory)/_ADF-Demo-Project-CI1/dev/ARMTemplateForFactory.json" -ResourceGroupName rl-rg-001-dev -DataFactoryName rl-adf-001-dev -predeployment $false -deleteDeployment $true

运行发布管道

添加和配置如图 [19-35] Fig35) 所示的持续部署(CD

img/511918_1_En_19_Fig35_HTML.jpg

图 19-35

运行发布管道

不出所料,图 [19-36] Fig36

img/511918_1_En_19_Fig36_HTML.jpg

图 19-36

发布成功

导航到图 [19-37] Fig37

img/511918_1_En_19_Fig37_HTML.jpg

图 19-37

代理作业部署流程成功

验证部署的数据工厂资源

作为确保 QA 数据工厂更改已正确部署的最后一项检查,导航到 QA 数据工厂并检查链接的服务连接。正如所料,请注意图 [19-38] Fig38

img/511918_1_En_19_Fig38_HTML.jpg

图 19-38 ADF QA 链接的服务连接

此外,还添加并启动了一个触发器。这是在增量 DevOps CI/CD 过程中将要停止和重新启动的触发器,如图 [19-39] Fig39

img/511918_1_En_19_Fig39_HTML.jpg

图 19-39

处于“已启动”状态的 ADF QA 触发器

进一步深入,注意数据湖的连接字符串已经改变,并且连接已经成功测试,如图 [19-40] Fig40

img/511918_1_En_19_Fig40_HTML.jpg

图 19-40 ADF QA 与 ADLS Gen2 的连接

图 [19-41] Fig41

img/511918_1_En_19_Fig41_HTML.jpg

图 19-41

更新了与密钥库的 ADF QA 连接

最后,请注意,SQL Server 和数据库连接也被更改为 QA,并且测试连接已被成功验证,如图 [19-42] Fig42

img/511918_1_En_19_Fig42_HTML.jpg

图 19-42

到 SQL Server 和数据库的 ADF QA 连接已更新

摘要

在本章中,我演示了如何使用 PowerShell 脚本和 Azure 资源组部署任务来启动/停止 ADF 触发器,并通过 Azure DevOps 的 Azure 数据工厂 CI/CD 更改的端到端部署来更改 ADF 环境连接配置属性。有关本练习的更多信息,特别是要找到本章涉及的示例,请访问以下 URL 查看我的 GitHub repo:https://github.com/ronlesteve/demo-dev-adf/tree/adf_publish。对于为 ADF 管道部署 JSON 的替代方法,除了 ARM 模板部署,探索发布 ADF 任务( https://marketplace.visualstudio.com/items?itemName=SQLPlayer.DataFactoryTools ),该任务可以在 Visual Studio marketplace 中找到,并且可以作为任务添加到 Azure DevOps CI/CD 管道中。

文章列表

更多推荐

更多
  • Pharo敏捷人工智能-第一部分:神经网络
    Apache CN

  • Pharo敏捷人工智能-第二部分:遗传算法
    Apache CN

  • Pharo敏捷人工智能-# 第三部分:神经进化 第三部分:神经进化
    Apache CN

  • Azure上Linux管理-十、使用 Azure Kubernetes 服务 技术要求,开始使用 AKS,与 Helm 一起工作,使用草稿,管理 Kubernetes,问题,进一步,使用 WSL 和 VS Code,安装依赖,kubectl 安装,使用 Azure CLI 创建集群,AKS 首次部署,创建服务,多
    Apache CN

  • Azure上Linux管理-十一、故障排除和监控您的工作负载 module(load="imuxsock"),技术要求,访问您的系统,Azure 日志分析,性能监控,问题,进一步,不允许远程访问,正在端口上工作,使用 nftables,引导诊断,Linux 登录,配置日志分析服务,安装 Azure
    Apache CN

  • Azure上Linux管理-十二、附录 第一章:探索微软 Azure 云,第二章:Azure 云入门,第三章:Linux 基础管理,第 4 章:管理 Azure,第五章:高级 Linux 管理,第七章:部署虚拟机,第八章:探索连续配置自动化,第 9 章:Azure 中的容器虚
    Apache CN

  • Azure上Linux管理-九、Azure 中的容器虚拟化 cloudconfig,集装箱技术导论,系统生成,Docker,Azure 容器实例,Buildah, Podman, and Skopeo,容器和储存,问题,进一步,容器历史,chroot 环境,OpenVZ,LXC,创建一个带启动的
    Apache CN

  • Azure上Linux管理-七、部署你的虚拟机 ResourceGroup 不存在,创建它:,vnet 不存在,创建 vnet,cloudconfig,Vagrant.config 结束,部署场景,Azure 中的自动部署选项,初始配置,流浪,封隔器,自定义虚拟机和 vhd,问题,进
    Apache CN

  • Azure上Linux管理-八、探索持续配置自动化 了解配置管理,使用 Ansible,使用地球形态,使用 PowerShell DSC,Azure 策略客户端配置,其他解决方案,问题,进一步,技术要求,Ansible 的安装,SSH 配置,裸最小配置,库存文件,Ansible 剧本和模
    Apache CN

  • Azure上Linux管理-五、高级 Linux 管理 技术要求,软件管理,网络,存储,systemd,问题,进一步,RPM 软件管理器,YUM 软件管理,基于 DNF 的软件管理,DPKG 软件管理器,运用 apt 进行软件管理,ZYpp 软件管理,识别网络接口,IP 地址识别,显示路由表
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多