Structure Overhaul
This commit is contained in:
19
Code/PowerShell/Components.json
Normal file
19
Code/PowerShell/Components.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"linkedServices": [
|
||||
"/linkedService/Keys.json",
|
||||
"/linkedService/FrameworkFunctions.json",
|
||||
"/linkedService/SupportDatabase.json"
|
||||
],
|
||||
"datasets": [
|
||||
"/dataset/GetSetMetadata.json"
|
||||
],
|
||||
"pipelines": [
|
||||
"/pipeline/04-Infant.json",
|
||||
"/pipeline/03-Child.json",
|
||||
"/pipeline/02-Parent.json",
|
||||
"/pipeline/01-Grandparent.json"
|
||||
],
|
||||
"triggers": [
|
||||
"/trigger/FunctionalTestingTrigger.json"
|
||||
]
|
||||
}
|
||||
238
Code/PowerShell/Deploy Components.ps1
Normal file
238
Code/PowerShell/Deploy Components.ps1
Normal file
@@ -0,0 +1,238 @@
|
||||
# Set global variables as required:
|
||||
$resourceGroupName = "ADF.procfwk"
|
||||
$dataFactoryName = "FrameworkFactoryDev"
|
||||
$region = "uksouth"
|
||||
|
||||
#SPN for deploying ADF:
|
||||
$tenantId = [System.Environment]::GetEnvironmentVariable('AZURE_TENANT_ID')
|
||||
$subscriptionId = [System.Environment]::GetEnvironmentVariable('AZURE_SUBSCRIPTION_ID')
|
||||
$spId = [System.Environment]::GetEnvironmentVariable('AZURE_CLIENT_ID')
|
||||
$spKey = [System.Environment]::GetEnvironmentVariable('AZURE_CLIENT_SECRET')
|
||||
|
||||
#Modules
|
||||
Import-Module -Name "Az"
|
||||
#Update-Module -Name "Az"
|
||||
|
||||
Import-Module -Name "Az.DataFactory"
|
||||
#Update-Module -Name "Az.DataFactory"
|
||||
|
||||
# Login as a Service Principal
|
||||
$passwd = ConvertTo-SecureString $spKey -AsPlainText -Force
|
||||
$pscredential = New-Object System.Management.Automation.PSCredential($spId, $passwd)
|
||||
Connect-AzAccount -ServicePrincipal -Credential $pscredential -TenantId $tenantId | Out-Null
|
||||
|
||||
# Get Deployment Objects and Params files
|
||||
$scriptPath = "C:\Users\PaulAndrew\Source\GitHub\ADF.procfwk\DeploymentTools\DataFactory\"
|
||||
#$deploymentFilePath = $scriptPath + "\ProcFwkComponents.json"
|
||||
$deploymentFilePath = "C:\Users\PaulAndrew\Source\GitHub\ADF.procfwk\DeploymentTools\DataFactory\ProcFwkComponents.json"
|
||||
|
||||
#Write-Host $scriptPath
|
||||
|
||||
$deploymentObject = (Get-Content $deploymentFilePath) | ConvertFrom-Json
|
||||
|
||||
<#
|
||||
Create Data Factory
|
||||
#>
|
||||
Write-Host ""
|
||||
Write-Host "-----------------------Data Factory-------------------------"
|
||||
|
||||
$check = Get-AzDataFactoryV2 `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-ErrorAction SilentlyContinue
|
||||
|
||||
if($check -eq $null)
|
||||
{
|
||||
Write-Host "Creating Data Factory:" $dataFactoryName
|
||||
|
||||
try
|
||||
{
|
||||
Set-AzDataFactoryV2 `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Location $region | Format-List | Out-Null
|
||||
|
||||
Write-Host "...done" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "Failed to created data factory:" $dataFactoryName -ForegroundColor Red
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.Exception.ItemName
|
||||
Exit
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "Data Factory $dataFactoryName already exists..."
|
||||
}
|
||||
|
||||
<#
|
||||
Deploy Linked Services
|
||||
#>
|
||||
Write-Host ""
|
||||
Write-Host "----------------------Linked Services-----------------------"
|
||||
|
||||
ForEach ($linkedService in $deploymentObject.linkedServices)
|
||||
{
|
||||
$componentPath = $scriptPath.Replace("DeploymentTools\","") + $linkedService
|
||||
|
||||
$linkedServiceFile = (Get-Content $componentPath) | ConvertFrom-Json
|
||||
$linkedServiceName = $linkedServiceFile.name
|
||||
Write-Host "Deploying Linked Service:" $linkedServiceName
|
||||
|
||||
try
|
||||
{
|
||||
Set-AzDataFactoryV2LinkedService `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Name $linkedServiceName `
|
||||
-DefinitionFile $componentPath `
|
||||
-Force | Format-List | Out-Null
|
||||
|
||||
Write-Host "...done" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "Failed to deploy linked service:" $linkedServiceName -ForegroundColor Green
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.Exception.ItemName
|
||||
Exit
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
Deploy Datasets
|
||||
#>
|
||||
Write-Host ""
|
||||
Write-Host "--------------------------Datasets--------------------------"
|
||||
|
||||
ForEach ($dataSet in $deploymentObject.datasets)
|
||||
{
|
||||
$componentPath = $scriptPath.Replace("DeploymentTools\","") + $dataSet
|
||||
|
||||
$datasetFile = (Get-Content $componentPath) | ConvertFrom-Json
|
||||
$datasetName = $datasetFile.name
|
||||
Write-Host "Deploying Dataset:" $datasetName
|
||||
|
||||
try
|
||||
{
|
||||
Set-AzDataFactoryV2Dataset `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Name $datasetName `
|
||||
-DefinitionFile $componentPath `
|
||||
-Force | Format-List | Out-Null
|
||||
|
||||
Write-Host "...done" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "Failed to deploy dataset:" $datasetName -ForegroundColor Red
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.Exception.ItemName
|
||||
Exit
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
Deploy Pipelines
|
||||
#>
|
||||
Write-Host ""
|
||||
Write-Host "-------------------------Pipelines--------------------------"
|
||||
|
||||
ForEach ($pipeline in $deploymentObject.pipelines)
|
||||
{
|
||||
$componentPath = $scriptPath.Replace("DeploymentTools\","") + $pipeline
|
||||
|
||||
$pipelineFile = (Get-Content $componentPath) | ConvertFrom-Json
|
||||
$pipelineName = $pipelineFile.name
|
||||
Write-Host "Deploying Pipeline:" $pipelineName
|
||||
|
||||
try
|
||||
{
|
||||
##Bug in SDK means this native cmdlet can't be used if pipeline contains a Wait activity expression.
|
||||
<#
|
||||
Set-AzDataFactoryV2Pipeline `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Name $pipelineName `
|
||||
-DefinitionFile $componentPath `
|
||||
-Force | Format-List | Out-Null
|
||||
#>
|
||||
$body = (Get-Content -Path $componentPath | Out-String)
|
||||
$json = $body | ConvertFrom-Json
|
||||
|
||||
New-AzResource `
|
||||
-ResourceType 'Microsoft.DataFactory/factories/pipelines' `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-Name "$dataFactoryName/$pipelineName" `
|
||||
-ApiVersion "2018-06-01" `
|
||||
-Properties $json `
|
||||
-IsFullObject -Force | Out-Null
|
||||
|
||||
Write-Host "...done" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "Failed to deploy pipeline:" $pipelineName -ForegroundColor Red
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.Exception.ItemName
|
||||
Exit
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
<#
|
||||
Deploy Triggers
|
||||
#>
|
||||
Write-Host ""
|
||||
Write-Host "-------------------------Triggers---------------------------"
|
||||
|
||||
ForEach ($trigger in $deploymentObject.triggers)
|
||||
{
|
||||
$componentPath = $scriptPath.Replace("DeploymentTools\","") + $trigger
|
||||
|
||||
$triggerFile = (Get-Content $componentPath) | ConvertFrom-Json
|
||||
$triggerName = $triggerFile.name
|
||||
Write-Host "Deploying Trigger:" $triggerName
|
||||
|
||||
$currentTrigger = Get-AzDataFactoryV2Trigger `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Name $triggerName `
|
||||
-ErrorAction SilentlyContinue
|
||||
|
||||
try
|
||||
{
|
||||
if($currentTrigger -ne $null)
|
||||
{
|
||||
#Stop trigger if already deployed as can't deploy over running trigger.
|
||||
Stop-AzDataFactoryV2Trigger `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Name $triggerName -Force | Out-Null
|
||||
}
|
||||
|
||||
Set-AzDataFactoryV2Trigger `
|
||||
-ResourceGroupName $resourceGroupName `
|
||||
-DataFactoryName $dataFactoryName `
|
||||
-Name $triggerName `
|
||||
-DefinitionFile $componentPath `
|
||||
-Force | Format-List | Out-Null
|
||||
|
||||
Write-Host "...done" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host "Failed to deploy trigger:" $triggerName -ForegroundColor Red
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.Exception.ItemName
|
||||
Exit
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user