Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ $environmentName = "sqlhack"
$sharedResourceGroupName = "rg-sqlhack-shared"
$adminUsername = "DemoUser"
$adminPassword = New-MhhStablePassword -Purpose 'vm-admin' -SubscriptionId $SubscriptionId -ResourceGroupName "Default"
$sqlMiAdminUsername = "DemoUser"
$sqlMiAdminPassword = New-MhhStablePassword -Purpose 'sqlmi-admin' -SubscriptionId $SubscriptionId -ResourceGroupName "Default"

# Template file path
$templatePath = Join-Path $scriptPath "infra"
Expand Down Expand Up @@ -88,6 +90,7 @@ $vmPostfix = $vmPostfix -replace "_", "-"
$vmName = "VM-$vmPostfix"
$TeamName = $me.ShortName
$TeamName = $TeamName.ToUpper()
$SqlMiSysadminUser = $me.UserPrincipalName

# feed the effective resource group back to the console
#@{"HackboxCredential" = @{ name = "ResourceGroupName" ; value = $effectiveResourceGroup; note = "The name of the resource group where lab resources are deployed" }}
Expand Down Expand Up @@ -120,6 +123,9 @@ $result = Invoke-MhhDeploymentWithRegionFallback `
vmName = $vmName
TeamName = $TeamName
legacySQLName = $legacySQLName
sqlMiAdminUsername = $sqlMiAdminUsername
sqlMiAdminPassword = $sqlMiAdminPassword
SqlMiSysadminUser = $SqlMiSysadminUser
}

Write-Host "[$SubscriptionId] Lab deployment completed successfully"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ module legacySqlVm 'modules/sql2016-vm.bicep' = {
vmSize: legacyVmSize
adminUsername: adminUsername
adminPassword: adminPassword
sqlMiAdminUsername: sqlMiAdminUsername
sqlMiAdminPassword: sqlMiAdminPassword
tags: tags
}
}
Expand All @@ -116,6 +118,8 @@ module sqlarcSqlVm 'modules/sql2022-vm.bicep' = {
vmSize: sqlarcVmSize
adminUsername: adminUsername
adminPassword: adminPassword
sqlMiAdminUsername: sqlMiAdminUsername
sqlMiAdminPassword: sqlMiAdminPassword
tags: tags
}
}
Expand Down Expand Up @@ -193,6 +197,8 @@ module sqlarcSqlVm_cse 'modules/sql2022-vm-cse.bicep' = {
vmName: 'arcSQL2022'
adminUsername: adminUsername
adminPassword: adminPassword
sqlMiAdminUsername: sqlMiAdminUsername
sqlMiAdminPassword: sqlMiAdminPassword
repoBaseURL: repoBaseURL
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ param adminUsername string
@secure()
param adminPassword string

param sqlMiAdminUsername string
@secure()
param sqlMiAdminPassword string

param SqlMiSysadminUser string

param teamVmSize string = 'Standard_D2s_v5'

param tags object = {
Expand Down Expand Up @@ -67,6 +73,9 @@ module teamVms_cse 'modules/team-vm-cse.bicep' = {
legacySQLName: legacySQLName
adminUsername: adminUsername
adminPassword: adminPassword
sqlMiAdminUsername: sqlMiAdminUsername
sqlMiAdminPassword: sqlMiAdminPassword
SqlMiSysadminUser: SqlMiSysadminUser
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ param subnetId string
param privateIPAddress string
param vmSize string
param adminUsername string

@secure()
param adminPassword string
param sqlMiAdminUsername string
@secure()
param sqlMiAdminPassword string

param tags object

Expand Down Expand Up @@ -119,8 +121,8 @@ resource sqlVirtualMachine 'Microsoft.SqlVirtualMachine/sqlVirtualMachines@2023-
connectivityType: 'PRIVATE'
port: 1433

sqlAuthUpdateUserName: adminUsername
sqlAuthUpdatePassword: adminPassword
sqlAuthUpdateUserName: sqlMiAdminUsername
sqlAuthUpdatePassword: sqlMiAdminPassword
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ param adminUsername string
@secure()
param adminPassword string

param sqlMiAdminUsername string
@secure()
param sqlMiAdminPassword string

var ConfigureSQLMachineCommand = 'powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "bootstrap-newsql.ps1" -BackupUri "https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak" -adminUsername ${adminUsername} -adminPassword ${adminPassword}'

resource virtualMachine 'Microsoft.Compute/virtualMachines@2024-11-01' existing = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ param subnetId string
param privateIPAddress string
param vmSize string
param adminUsername string

@secure()
param adminPassword string
param sqlMiAdminUsername string
@secure()
param sqlMiAdminPassword string

param tags object

Expand Down Expand Up @@ -115,8 +117,8 @@ resource sqlVirtualMachine 'Microsoft.SqlVirtualMachine/sqlVirtualMachines@2023-
connectivityType: 'PRIVATE'
port: 1433

sqlAuthUpdateUserName: adminUsername
sqlAuthUpdatePassword: adminPassword
sqlAuthUpdateUserName: sqlMiAdminUsername
sqlAuthUpdatePassword: sqlMiAdminPassword
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,15 @@ param adminUsername string
@secure()
param adminPassword string

param sqlMiAdminUsername string
@secure()
param sqlMiAdminPassword string

param SqlMiSysadminUser string


//var ConfigureTeamVMCommand = 'powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "bootstrap-teamvm.ps1" -SamplesBaseUri "${repoBaseURL}/TSQL_Scripts" -WallpaperUri "${repoBaseURL}/assets/BaseWallpaper.jpg" -TeamNumber ##teamNumber##'
var ConfigureTeamVMCommand = 'powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "bootstrap-teamvm.ps1" -SamplesBaseUri "${repoBaseURL}/TSQL_Scripts" -WallpaperUri "${repoBaseURL}/assets/BaseWallpaper.jpg" -TeamName ${TeamName} -LabsBaseUri "${repoBaseURL}/LABS" -ManagedInstanceServer "${managedInstanceServer}" -StorageAccountName "${storageAccountName}" -BackupBaseUri "${repoBaseURL}/Databases" -ServerInstance "${legacySQLName}" -adminUsername "${adminUsername}" -adminPassword "${adminPassword}"'
var ConfigureTeamVMCommand = 'powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "bootstrap-teamvm.ps1" -SamplesBaseUri "${repoBaseURL}/TSQL_Scripts" -WallpaperUri "${repoBaseURL}/assets/BaseWallpaper.jpg" -TeamName ${TeamName} -LabsBaseUri "${repoBaseURL}/LABS" -ManagedInstanceServer "${managedInstanceServer}" -StorageAccountName "${storageAccountName}" -BackupBaseUri "${repoBaseURL}/Databases" -ServerInstance "${legacySQLName}" -adminUsername "${adminUsername}" -adminPassword "${adminPassword}" -sqlMiAdminUsername "${sqlMiAdminUsername}" -sqlMiAdminPassword "${sqlMiAdminPassword}" -SqlMiSysadminUser "${SqlMiSysadminUser}"'
resource virtualMachine 'Microsoft.Compute/virtualMachines@2024-11-01' existing = {
name: vmName
}
Expand All @@ -34,6 +41,7 @@ resource ConfigureTeamMachine 'Microsoft.Compute/virtualMachines/extensions@2024
'${repoBaseURL}/scripts/Configure-Teams-Shortcuts.ps1'
'${repoBaseURL}/scripts/Restore-TeamDatabases.ps1'
'${repoBaseURL}/scripts/Configure-legacySQL-DB.ps1'
'${repoBaseURL}/scripts/Configure-SQLMI-Sysadmins.ps1'
'${repoBaseURL}/scripts/Download-Labs.ps1'
'${repoBaseURL}/scripts/Configure-TeamWallpaper.ps1'
]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
param(
[Parameter(Mandatory)]
[string]$ManagedInstanceServer,

[Parameter(Mandatory)]
[string] $sqlusername,

[Parameter(Mandatory)]
[string] $sqlpassword,

[Parameter(Mandatory)]
[string] $sqlMiSysadminUser
)

$ErrorActionPreference = 'Stop'

$logPath = 'C:\Windows\Temp\Configure-SQLMI-Sysadmins.log'
Start-Transcript -Path $logPath -Append

Write-Host 'Configuring SQL Managed Instance Sysadmins...'

$ConfigureSql = @"
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'$sqlMiSysadminUser')
BEGIN
CREATE LOGIN [$sqlMiSysadminUser] FROM EXTERNAL PROVIDER;
END
ALTER SERVER ROLE [sysadmin] ADD MEMBER [$sqlMiSysadminUser];
"@

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null

$connectionString = "Data Source=$ManagedInstanceServer;Initial Catalog=master;TrustServerCertificate=True;"
$Connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
[System.Security.SecureString]$SQLPwd = $sqlpassword | ConvertTo-SecureString -AsPlainText -Force
$SQLPwd.MakeReadOnly()
$cred = New-Object System.Data.SqlClient.SqlCredential($sqlusername,$SQLPwd)
$Connection.credential = $cred

# 5. SMO-Serververbindung initialisieren
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($Connection)
$server = New-Object Microsoft.SqlServer.Management.Smo.Server($serverConnection)

try {
# Ausführung des Skripts inkl. GO-Trenner
[void]$server.ConnectionContext.ExecuteNonQuery($ConfigureSql)
#Write-Host "Skript erfolgreich auf SQL MI ausgeführt." -ForegroundColor Green
}
catch {
$ErrorString = $_ | format-list -force | Out-String
Write-Error "ERR: $ErrorString"
}
finally {
if ($null -ne $serverConnection -and $serverConnection.IsOpen) {
$serverConnection.Disconnect()
}
}
try {
$Connection.Close()
}
catch {
}

Stop-Transcript
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ param(
[string]$BackupBaseUri,
[string]$adminUsername,
[string]$adminPassword,
[string]$sqlMiAdminUsername,
[string]$sqlMiAdminPassword,
[string]$WallpaperUri,
[string]$TeamName,
[string]$ManagedInstanceServer,
[string]$StorageAccountName,
[string]$ServerInstance
[string]$ServerInstance,
[string]$SqlMiSysadminUser
)

$ErrorActionPreference = 'Stop'
Expand All @@ -23,10 +26,13 @@ Write-Host "Configure Team Wallpaper..."
& .\Configure-TeamWallpaper.ps1 -WallpaperUri $WallpaperUri -TeamName $TeamName

Write-Host "Restoring Team Databases..."
& .\Restore-TeamDatabases.ps1 -TeamName $TeamName -BackupBaseUri $BackupBaseUri -sqlusername $adminUsername -sqlpassword $adminPassword -ServerInstance $ServerInstance
& .\Restore-TeamDatabases.ps1 -TeamName $TeamName -BackupBaseUri $BackupBaseUri -sqlusername $sqlMiAdminUsername -sqlpassword $sqlMiAdminPassword -ServerInstance $ServerInstance

Write-Host "Configuring Team Databases..."
& .\Configure-legacySQL-DB.ps1 -TeamName $TeamName -sqlusername $adminUsername -sqlpassword $adminPassword -ServerInstance $ServerInstance
& .\Configure-legacySQL-DB.ps1 -TeamName $TeamName -sqlusername $sqlMiAdminUsername -sqlpassword $sqlMiAdminPassword -ServerInstance $ServerInstance

Write-Host "Configuring SQL MI Sysadmins..."
& .\Configure-SQLMI-Sysadmins.ps1 -ManagedInstanceServer $ManagedInstanceServer -sqlusername $sqlMiAdminUsername -sqlpassword $sqlMiAdminPassword -sqlMiSysadminUser $SqlMiSysadminUser

Write-Host "Installing Team Tools..."
& .\install-team-tools.ps1
Expand Down
Loading
Loading