-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
azurerm_data_factory_linked_service_sql_server SSIS Integration Runtime #3275
Comments
Hey @jungopro, unfortunately we haven't written the integration runtime resource yet. In the meantime, you can create one through the data factory portal and use the name to attach it to the linked service through Terraform. |
@jungopro found this issue as i'm looking for something similar or even the same. But i'm currently not sure if you mean this resource: https://docs.microsoft.com/de-de/azure/templates/microsoft.datafactory/2018-06-01/factories/integrationruntimes which is a subresource of the data factory. |
I do mean this resource, yes |
Okay, then i'm also looking for this. Probably i'll have to develop it on my own. |
Haven't tried that, sorry What I currently have is an arm template and TF module to deploy ARM template. This might be a bit of an overkill but it can help you get started quickly ARM {
"contentVersion": "1.0.0.0",
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"parameters": {
"name": {
"type": "string",
"metadata": {
"description": "Name of the data factory. Must be globally unique."
}
},
"location": {
"type": "string",
"defaultValue": "East US",
"metadata": {
"description": "Location of the data factory. Currently, only East US, East US 2, and West Europe are supported. "
}
},
"nodeSize": {
"type": "string",
"allowedValues": [
"Standard_A4_v2",
"Standard_A8_v2",
"Standard_D1_v2",
"Standard_D2_v2",
"Standard_D3_v2",
"Standard_D4_v2"
],
"metadata": {
"description": "Location of the data factory."
}
},
"nodeNumber": {
"type": "string",
"metadata": {
"description": "Number of nodes in the cluster."
}
},
"maximumParallelExecutionsPerNode": {
"type": "string",
"metadata": {
"description": "Maximim number of parallel executions per node in the cluster."
}
},
"azureSqlServerName": {
"type": "string",
"metadata": {
"description": "Name of the Azure SQL server that hosts the SSISDB database (SSIS Catalog). Example: servername.database.windows.net"
}
},
"databaseAdminUsername": {
"type": "string",
"metadata": {
"description": "Name of the Azure SQL database user."
}
},
"databaseAdminPassword": {
"type": "securestring",
"metadata": {
"description": "Password for the database user."
}
},
"catalogPricingTier": {
"type": "string",
"metadata": {
"description": "Pricing tier of the SSIS Catalog (SSISDB datbase)"
}
},
"computeType": {
"type": "string",
"metadata": {
"description": "Compute Type"
}
},
"coreCount": {
"type": "string",
"metadata": {
"description": "Number of cores"
}
},
"ttlMinutes": {
"type": "string",
"metadata": {
"description": "TTL in minutes"
}
}
},
"resources": [{
"name": "[parameters('name')]",
"apiVersion": "2018-06-01",
"type": "Microsoft.DataFactory/factories",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"resources": [
{
"name": "[concat(parameters('name'), '/SPAzureSsisIR')]",
"type": "Microsoft.DataFactory/factories/integrationRuntimes",
"dependsOn": [
"[parameters('name')]"
],
"apiVersion": "2018-06-01",
"properties": {
"type": "Managed",
"typeProperties": {
"computeProperties": {
"location": "[parameters('location')]",
"nodeSize": "[parameters('nodeSize')]",
"numberOfNodes": "[int(parameters('nodeNumber'))]",
"maxParallelExecutionsPerNode": "[int(parameters('maximumParallelExecutionsPerNode'))]",
"dataFlowRuntime": {
"computeType": "[parameters('computeType')]",
"coreCount": "[int(parameters('coreCount'))]",
"timeToLiveInMinutes": "[int(parameters('ttlMinutes'))]"
}
},
"ssisProperties": {
"catalogInfo": {
"catalogServerEndpoint": "[parameters('azureSqlServerName')]",
"catalogAdminUserName": "[parameters('databaseAdminUserName')]",
"catalogAdminPassword": {
"type": "SecureString",
"value": "[parameters('databaseAdminPassword')]"
},
"catalogPricingTier": "[parameters('catalogPricingTier')]"
},
"edition": "Standard",
"licenseType": "LicenseIncluded"
}
}
}
}
]
}
],
"outputs": {
"name": {
"type": "string",
"value": "[parameters('name')]"
}
}
} And the TF module: resource "random_string" "random_string" {
keepers = {
# Generate a new ID only when a new resource group is defined
resource_group = "${var.resource_group}"
}
length = 5
upper = false
special = false
}
data "template_file" "arm_template" {
template = "${file("${path.root}/arm_templates/${var.template_file}")}"
}
resource "azurerm_template_deployment" "arm_deployment" {
name = "${var.resource_group}-deployment-${random_string.random_string.result}"
resource_group_name = "${var.resource_group}"
template_body = "${data.template_file.arm_template.rendered}"
parameters = "${var.template_parametes}"
deployment_mode = "${var.deployment_mode}"
} |
After a bit of research and a look into the API specs i will try to implement it and i already started. #fyi: i'll at first only implement the managed SSIS integration runtime, not the self-hosted one. I'd propose a structure like this and will update when i come across some inevitable changes. resource "azurerm_data_factory_integration_runtime_managed" "integration_runtime" {
name = "managed-ssis-integration-runtime"
description = "My managed integration runtime"
data_factory_name = "datafactory1"
resource_group_name = "my-resourcegroup"
location = "northeurope"
node_size = "Standard_D8_v3"
number_of_nodes = 2
max_parallel_executions_per_node = 16
edition = "Standard"
license_type = "LicenseIncluded" # LicenseIncluded or BasePrize (1st is used if you don't already own a valid license, didn't use BasePrice)
vnet_integration {
vnet_id = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-network-rg/providers/Microsoft.Network/virtualNetworks/my-vnet"
subnet_name = "default"
}
custom_setup_script {
blob_container_uri = "https://myssisinstallationstore.blob.core.windows.net/setup-files" # is used for installing custom vendor scripts, e.g. SAP Hana Client
sas_token = "?st=2019-08-31T11%3A52%3A00Z&se=2026-08-07T11%3A52%3A00Z&sp=rwl&sv=2018-03-28&sr=c&sig=vutouO1KNhy4npyO6PvRLFWWC67XKyDEm61mSJDF2N8%3D" # SAS token to get access to the container. Permissions needed: read, write, list
}
catalog_info {
server_endpoint = "my-ssis-catalog-server.database.windows.net" # Azure SQL Server endpoint for the catalog to be deployed: DB will be called SSISDB
administrator_login = "ssis_admin" # SQL Server admin login
administrator_password = "MyH4rDPassw0rd!" # SQL Server admin password
pricing_tier = "Basic" # pricing tier of the SSISDB
}
} //edit: @jungopro can you tell me what that |
Hey @r0bnet. This implementation looks good so far but I have a few tweaks that I'd like you to consider. First what're your thoughts on renaming the resource to |
Hi @mbfrahry thanks for your review. The renaming thing definitely makes sense and i'll update it accordingly. |
All that sounds good but I do want to confirm |
I reviewed it and you're totally right. I mixed it up because it wasn't clear from the ARM script i used. But yes they can be moved outside the |
I totally get that. Thanks for taking the time to go over it early though. I'll be keeping any eye out for this so feel free to ask any questions if they come up |
I believe this doc explains it. I can swear I had a better reference but I can't find it... |
PR: #4342 |
HI, I have deployed Azure SSIS IR in a VNET but the IR state is "stopped", I have then went to the portal and did VNET validation manually and updated, which made IR state "running". Could someone pl help me how to make IR running after the deployment or how to make the VNET validation using TF |
Hey @muralidar44, |
Thanks @r0bnet , i have added powershell task in my release pipeline to start IR with force and it succeeded. Even the VNET validation which is the option in UI also take care with PowerShell command. But when I use SQL Manage instance as my target Azure SQL to deploy SSIDB, i get following error. But I have commented Pricing Tier variable and function in my code. Please suggest.. Error 1:
|
@vizel014 Catalog Pricing Tier isn't related to the original issue, so I'm going to close this one. Would you mind opening a new one if the issue that you're facing is still relevant? Thank you. |
I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. |
Community Note
Terraform (and AzureRM Provider) Version
Terraform v0.11.13
Affected Resource(s)
azurerm_data_factory_linked_service_sql_server
References
In the documentation for the
azurerm_data_factory_linked_service_sql_server
resource there's a reference to the integration runtime. However, I don't see any place mentioning how to create / query / config the integration runtime.With the new data_factory set of resources, I expect there will be a standard way to provision and configure SSIS integration runtime inside data factory with SQL connection
Am I missing something in the documentation or does this feature not yet implemented?
Thanks
Omer
The text was updated successfully, but these errors were encountered: