install/install.ps1 (72 lines of code) (raw):
Write-Output ""
$ErrorActionPreference = 'stop'
# GitHub Org and repo hosting AI Hub
$GitHubOrg = "azure"
$GitHubRepo = "aihub"
$AIHubRoot = "./.aihub"
# Set Github request authentication for basic authentication.
if ($Env:GITHUB_USER) {
$basicAuth = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Env:GITHUB_USER + ":" + $Env:GITHUB_TOKEN));
$githubHeader = @{"Authorization" = "Basic $basicAuth" }
}
else {
$githubHeader = @{}
}
if ((Get-ExecutionPolicy) -gt 'RemoteSigned' -or (Get-ExecutionPolicy) -eq 'ByPass') {
Write-Output "PowerShell requires an execution policy of 'RemoteSigned'."
Write-Output "To make this change please run:"
Write-Output "'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'"
break
}
# Change security protocol to support TLS 1.2 / 1.1 / 1.0 - old powershell uses TLS 1.0 as a default protocol
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
Write-Output "Installing AI Hub..."
# Create Dapr Directory
Write-Output "Creating AIHubRoot directory"
New-Item -ErrorAction Ignore -Path $AIHubRoot -ItemType "directory"
if (!(Test-Path $AIHubRoot -PathType Container)) {
Write-Warning "Please visit https://azure.github.io/aihub/docs/ for instructions on how to install without admin rights."
throw "Cannot create $AIHubRoot"
}
$latest_aihub=$(Invoke-WebRequest -Headers $githubHeader -Uri https://api.github.com/repos/Azure/aihub/releases/latest).content | convertfrom-json | Select-Object -ExpandProperty tag_name
$zipFileUrl = "https://github.com/Azure/aihub/releases/download/$latest_aihub/aihub-tf-module.zip"
Write-Output "Downloading $zipFileUrl ..."
$zipFilePath = "aihub-tf-module.zip"
$githubHeader.Accept = "application/octet-stream"
Invoke-WebRequest -Headers $githubHeader -Uri $zipFileUrl -OutFile $zipFilePath
if (!(Test-Path $zipFilePath -PathType Leaf)) {
throw "Failed to download AI Hub - $zipFilePath"
}
# Extract AI Hub to $AIHubRoot
Write-Output "Extracting $zipFilePath..."
Microsoft.Powershell.Archive\Expand-Archive -Force -Path $zipFilePath -DestinationPath $AIHubRoot
# Move files to root
Move-Item -Path "$AIHubRoot\home\runner\work\aihub\aihub\release\aihub-tf-module\**" -Destination $AIHubRoot -Force
# Clean up folder
Remove-Item "$AIHubRoot\home" -Force -Recurse
# Clean up zipfile
Write-Output "Clean up $zipFilePath..."
Remove-Item $zipFilePath -Force
$zipFileUrl= "https://releases.hashicorp.com/terraform/1.7.4/terraform_1.7.4_windows_386.zip"
$zipFilePath = "aihub-tf-module.zip"
Write-Output "Downloading $zipFileUrl ..."
$zipFilePath = "terraform_1.7.4_windows_386.zip"
Invoke-WebRequest -Uri $zipFileUrl -OutFile $zipFilePath
# Extract terraform to $AIHubRoot
Write-Output "Extracting $zipFilePath..."
Microsoft.Powershell.Archive\Expand-Archive -Force -Path $zipFilePath -DestinationPath $AIHubRoot
# Clean up zipfile
Write-Output "Clean up $zipFilePath..."
Remove-Item $zipFilePath -Force
# Set subscription environment variable
Write-Output "Setting up Azure subscription..."
$Env:ARM_SUBSCRIPTION_ID = (az account show --query id -o tsv)
# Use Terraform to deploy AI Hub
Write-Output "Deploying AI Hub..."
Push-Location $AIHubRoot
Invoke-Expression "./terraform init"
Invoke-Expression "./terraform apply -auto-approve"
Pop-Location
# Everything is done
Write-Output "`r`nAI Hub deployed successfully."
Write-Output "To get started with AI HUb, please visit https://azure.github.io/aihub ."