huntresslabs / deployment-scripts

RMM deployment scripts for Huntress
37 stars 33 forks source link

Suggestion for PowerShell install script maintainability #67

Open alexipeck opened 6 months ago

alexipeck commented 6 months ago

In the current v2 install script, I see that it gets the latest installer versions via consistent URLs. If you want the entire script to be more maintainable without clients needing to update the install script itself in their respective deployed environments and considering that you have already split it out into many functions, it may be worth setting up a PowerShell module, containing all these functions within a .psm1 file with added version control of some kind to reduce the network load. This would allow you to significantly shorten/simplify the install script, leaving only end-user modification of AccountKey, OrganizationKey, TagsKey, DebugPreference and timeout. Values like estimatedSpaceNeeded could be maintained yourself within the module based on the current installer version.

I have included a short example for importing a module directly from GitHub (this function is adapted from my more generic module import function and doesn't necessarily handle the install location as you may want to)

$modulePath = Join-Path -Path $env:PSModulePath.Split(';')[0] -ChildPath "HuntressInstallerModule"
if (-not (Test-Path -Path $modulePath)) { New-Item -ItemType Directory -Path $modulePath | Out-Null }
$moduleFilePath = Join-Path -Path $modulePath -ChildPath "HuntressInstallerModule.psm1"
try {
    Invoke-WebRequest -Uri "https://raw.githubusercontent.com/huntresslabs/deployment-scripts/main/HuntressInstallerModule.psm1" -OutFile $moduleFilePath -ErrorAction Stop
    & { $WarningPreference = 'SilentlyContinue'; Import-Module -Name $moduleFilePath -ErrorAction Stop }
    Write-Host "Imported module 'HuntressInstallModule' successfully."
} catch {
    Write-Host "Error: Required module HuntressInstallerModule could not be downloaded or installed: $($_.Exception.Message). Exiting"
    exit 1
}
deborahjones-huntress commented 6 months ago

Open a ticket in Shortcut https://app.shortcut.com/huntress/story/117836

alexipeck commented 6 months ago

Open a ticket in Shortcut https://app.shortcut.com/huntress/story/117836

I'm guessing Shortcut is only available to your internal team. I don't have access to this