forked from microsoft/azure_arc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial fork of Data scenarios with DC deployments cleaned up.
Also included Arck ML notebook and CLI examples
- Loading branch information
1 parent
ca64dea
commit aff921b
Showing
14 changed files
with
2,198 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
{ | ||
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#", | ||
"contentVersion": "1.0.0.0", | ||
"parameters": { | ||
"virtualNetworkName": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Name of the VNET" | ||
} | ||
}, | ||
"subnetName": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Name of the subnet in the virtual network" | ||
} | ||
}, | ||
"addressPrefix": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "VNET CIDR" | ||
} | ||
}, | ||
"subnetAddressPrefix": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Subnet CIDR" | ||
} | ||
} | ||
}, | ||
"resources": [ | ||
{ | ||
"type": "Microsoft.Network/virtualNetworks", | ||
"comments": "Deploys a VNET and Subnet for Client and K8s VM", | ||
"apiVersion": "2019-04-01", | ||
"name": "[parameters('virtualNetworkName')]", | ||
"location": "[resourceGroup().location]", | ||
"properties": { | ||
"addressSpace": { | ||
"addressPrefixes": ["[parameters('addressPrefix')]"] | ||
}, | ||
"subnets": [ | ||
{ | ||
"name": "[parameters('subnetName')]", | ||
"properties": { | ||
"addressPrefix": "[parameters('subnetAddressPrefix')]", | ||
"privateEndpointNetworkPolicies": "Enabled", | ||
"privateLinkServiceNetworkPolicies": "Enabled" | ||
} | ||
} | ||
] | ||
} | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
{ | ||
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", | ||
"contentVersion": "1.0.0.0", | ||
"parameters": { | ||
"clusterName": { | ||
"type": "string", | ||
"defaultValue": "Arc-Data-AKS", | ||
"metadata": { | ||
"description": "The name of the Kubernetes cluster resource.." | ||
} | ||
}, | ||
"location": { | ||
"type": "string", | ||
"defaultValue": "[resourceGroup().location]", | ||
"metadata": { | ||
"description": "The location of the Managed Cluster resource." | ||
} | ||
}, | ||
"dnsPrefix": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." | ||
} | ||
}, | ||
"osDiskSizeGB": { | ||
"type": "int", | ||
"defaultValue": 0, | ||
"metadata": { | ||
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize." | ||
}, | ||
"minValue": 0, | ||
"maxValue": 1023 | ||
}, | ||
"agentCount": { | ||
"type": "int", | ||
"defaultValue": 1, | ||
"metadata": { | ||
"description": "The number of nodes for the cluster." | ||
}, | ||
"minValue": 1, | ||
"maxValue": 50 | ||
}, | ||
"agentVMSize": { | ||
"type": "string", | ||
"defaultValue": "Standard_D8s_v3", | ||
"metadata": { | ||
"description": "The size of the Virtual Machine." | ||
} | ||
}, | ||
"linuxAdminUsername": { | ||
"type": "string", | ||
"defaultValue": "arcdemo", | ||
"metadata": { | ||
"description": "User name for the Linux Virtual Machines." | ||
} | ||
}, | ||
"sshRSAPublicKey": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" | ||
} | ||
}, | ||
"spnClientId": { | ||
"metadata": { | ||
"description": "Client ID (used by cloudprovider)" | ||
}, | ||
"type": "securestring" | ||
}, | ||
"spnClientSecret": { | ||
"metadata": { | ||
"description": "The Service Principal Client Secret." | ||
}, | ||
"type": "securestring" | ||
}, | ||
"enableRBAC": { | ||
"defaultValue": true, | ||
"type": "bool", | ||
"metadata": { | ||
"description": "boolean flag to turn on and off of RBAC" | ||
} | ||
}, | ||
"osType": { | ||
"type": "string", | ||
"defaultValue": "Linux", | ||
"allowedValues": ["Linux"], | ||
"metadata": { | ||
"description": "The type of operating system." | ||
} | ||
}, | ||
"kubernetesVersion": { | ||
"defaultValue": "1.18.17", | ||
"type": "string", | ||
"metadata": { | ||
"description": "The version of Kubernetes." | ||
} | ||
}, | ||
"resourceTags": { | ||
"type": "object", | ||
"defaultValue": { | ||
"Project": "jumpstart_azure_arc_data_services" | ||
} | ||
} | ||
}, | ||
"resources": [ | ||
{ | ||
"apiVersion": "2020-03-01", | ||
"type": "Microsoft.ContainerService/managedClusters", | ||
"location": "[parameters('location')]", | ||
"name": "[parameters('clusterName')]", | ||
"tags": "[parameters('resourceTags')]", | ||
"properties": { | ||
"kubernetesVersion": "[parameters('kubernetesVersion')]", | ||
"enableRBAC": "[parameters('enableRBAC')]", | ||
"dnsPrefix": "[parameters('dnsPrefix')]", | ||
"agentPoolProfiles": [ | ||
{ | ||
"name": "agentpool", | ||
"mode": "System", | ||
"osDiskSizeGB": "[parameters('osDiskSizeGB')]", | ||
"count": "[parameters('agentCount')]", | ||
"vmSize": "[parameters('agentVMSize')]", | ||
"osType": "[parameters('osType')]", | ||
"storageProfile": "ManagedDisks", | ||
"type": "VirtualMachineScaleSets" | ||
} | ||
], | ||
"linuxProfile": { | ||
"adminUsername": "[parameters('linuxAdminUsername')]", | ||
"ssh": { | ||
"publicKeys": [ | ||
{ | ||
"keyData": "[parameters('sshRSAPublicKey')]" | ||
} | ||
] | ||
} | ||
}, | ||
"servicePrincipalProfile": { | ||
"clientId": "[parameters('spnClientId')]", | ||
"Secret": "[parameters('spnClientSecret')]" | ||
} | ||
} | ||
} | ||
], | ||
"outputs": { | ||
"controlPlaneFQDN": { | ||
"type": "string", | ||
"value": "[reference(parameters('clusterName')).fqdn]" | ||
} | ||
} | ||
} |
142 changes: 142 additions & 0 deletions
142
azure_arc_ml_jumpstart/aks/arm_template/artifacts/Bootstrap.ps1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
param ( | ||
[string]$adminUsername, | ||
[string]$spnClientId, | ||
[string]$spnClientSecret, | ||
[string]$spnTenantId, | ||
[string]$spnAuthority, | ||
[string]$subscriptionId, | ||
[string]$resourceGroup, | ||
[string]$azdataUsername, | ||
[string]$azdataPassword, | ||
[string]$acceptEula, | ||
[string]$arcDcName, | ||
[string]$azureLocation, | ||
[string]$workspaceName, | ||
[string]$clusterName, | ||
[string]$deploySQLMI, | ||
[string]$deployPostgreSQL, | ||
[string]$templateBaseUrl | ||
) | ||
|
||
[System.Environment]::SetEnvironmentVariable('adminUsername', $adminUsername,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('spnClientID', $spnClientId,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('spnClientSecret', $spnClientSecret,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('spnTenantId', $spnTenantId,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('spnAuthority', $spnAuthority,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('resourceGroup', $resourceGroup,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('AZDATA_USERNAME', $azdataUsername,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('AZDATA_PASSWORD', $azdataPassword,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('ACCEPT_EULA', $acceptEula,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('arcDcName', $arcDcName,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('subscriptionId', $subscriptionId,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('azureLocation', $azureLocation,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('workspaceName', $workspaceName,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('deploySQLMI', $deploySQLMI,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('deployPostgreSQL', $deployPostgreSQL,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('clusterName', $clusterName,[System.EnvironmentVariableTarget]::Machine) | ||
[System.Environment]::SetEnvironmentVariable('templateBaseUrl', $templateBaseUrl,[System.EnvironmentVariableTarget]::Machine) | ||
|
||
# Create path | ||
Write-Output "Create deployment path" | ||
$tempDir = "C:\Temp" | ||
New-Item -Path $tempDir -ItemType directory -Force | ||
|
||
Start-Transcript "C:\Temp\Bootstrap.log" | ||
|
||
$ErrorActionPreference = 'SilentlyContinue' | ||
|
||
# Uninstall Internet Explorer | ||
Disable-WindowsOptionalFeature -FeatureName Internet-Explorer-Optional-amd64 -Online -NoRestart | ||
|
||
# Disabling IE Enhanced Security Configuration | ||
Write-Host "Disabling IE Enhanced Security Configuration" | ||
function Disable-ieESC { | ||
$AdminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}" | ||
$UserKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}" | ||
Set-ItemProperty -Path $AdminKey -Name "IsInstalled" -Value 0 | ||
Set-ItemProperty -Path $UserKey -Name "IsInstalled" -Value 0 | ||
Stop-Process -Name Explorer | ||
Write-Host "IE Enhanced Security Configuration (ESC) has been disabled." -ForegroundColor Green | ||
} | ||
Disable-ieESC | ||
|
||
# Extending C:\ partition to the maximum size | ||
Write-Host "Extending C:\ partition to the maximum size" | ||
Resize-Partition -DriveLetter C -Size $(Get-PartitionSupportedSize -DriveLetter C).SizeMax | ||
|
||
# Downloading GitHub artifacts for DataServicesLogonScript.ps1 | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/settingsTemplate.json") -OutFile "C:\Temp\settingsTemplate.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/DataServicesLogonScript.ps1") -OutFile "C:\Temp\DataServicesLogonScript.ps1" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/DeploySQLMI.ps1") -OutFile "C:\Temp\DeploySQLMI.ps1" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/DeployPostgreSQL.ps1") -OutFile "C:\Temp\DeployPostgreSQL.ps1" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/dataController.json") -OutFile "C:\Temp\dataController.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/dataController.parameters.json") -OutFile "C:\Temp\dataController.parameters.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/SQLMI.json") -OutFile "C:\Temp\SQLMI.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/SQLMI.parameters.json") -OutFile "C:\Temp\SQLMI.parameters.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/postgreSQL.json") -OutFile "C:\Temp\postgreSQL.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/postgreSQL.parameters.json") -OutFile "C:\Temp\postgreSQL.parameters.json" | ||
Invoke-WebRequest ($templateBaseUrl + "artifacts/wallpaper.png") -OutFile "C:\Temp\wallpaper.png" | ||
|
||
# Installing tools | ||
workflow ClientTools_01 | ||
{ | ||
$chocolateyAppList = 'azure-cli,az.powershell,kubernetes-cli,vcredist140,microsoft-edge,azcopy10,vscode,putty.install,kubernetes-helm,grep' | ||
#Run commands in parallel. | ||
Parallel | ||
{ | ||
InlineScript { | ||
param ( | ||
[string]$chocolateyAppList | ||
) | ||
if ([string]::IsNullOrWhiteSpace($using:chocolateyAppList) -eq $false) | ||
{ | ||
try{ | ||
choco config get cacheLocation | ||
}catch{ | ||
Write-Output "Chocolatey not detected, trying to install now" | ||
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) | ||
} | ||
} | ||
if ([string]::IsNullOrWhiteSpace($using:chocolateyAppList) -eq $false){ | ||
Write-Host "Chocolatey Apps Specified" | ||
|
||
$appsToInstall = $using:chocolateyAppList -split "," | foreach { "$($_.Trim())" } | ||
|
||
foreach ($app in $appsToInstall) | ||
{ | ||
Write-Host "Installing $app" | ||
& choco install $app /y -Force| Write-Output | ||
} | ||
} | ||
} | ||
Invoke-WebRequest "https://azuredatastudio-update.azurewebsites.net/latest/win32-x64-archive/stable" -OutFile "C:\Temp\azuredatastudio.zip" | ||
Invoke-WebRequest "https://aka.ms/azdata-msi" -OutFile "C:\Temp\AZDataCLI.msi" | ||
} | ||
} | ||
|
||
ClientTools_01 | Format-Table | ||
|
||
workflow ClientTools_02 | ||
{ | ||
#Run commands in parallel. | ||
Parallel | ||
{ | ||
InlineScript { | ||
Expand-Archive C:\Temp\azuredatastudio.zip -DestinationPath 'C:\Program Files\Azure Data Studio' | ||
Start-Process msiexec.exe -Wait -ArgumentList '/I C:\Temp\AZDataCLI.msi /quiet' | ||
} | ||
} | ||
} | ||
|
||
ClientTools_02 | Format-Table | ||
|
||
New-Item -path alias:kubectl -value 'C:\ProgramData\chocolatey\lib\kubernetes-cli\tools\kubernetes\client\bin\kubectl.exe' | ||
New-Item -path alias:azdata -value 'C:\Program Files (x86)\Microsoft SDKs\Azdata\CLI\wbin\azdata.cmd' | ||
|
||
# Creating scheduled task for DataServicesLogonScript.ps1 | ||
$Trigger = New-ScheduledTaskTrigger -AtLogOn | ||
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument 'C:\Temp\DataServicesLogonScript.ps1' | ||
Register-ScheduledTask -TaskName "DataServicesLogonScript" -Trigger $Trigger -User $adminUsername -Action $Action -RunLevel "Highest" -Force | ||
|
||
# Disabling Windows Server Manager Scheduled Task | ||
Get-ScheduledTask -TaskName ServerManager | Disable-ScheduledTask |
Oops, something went wrong.