Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Problem

When configuring the SeaLights agent for DotNet, it isn't easy to manage the agent files in the correct version - especially in standalone environments (containers, backend servers, etc)

Solution

The following PowerShell script checks for the recommended agent and latest version, and in case it does not exist locally - downloads & unzips it in the given directory.

Downloading the Recommended Agent set in settings

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$previousProgressPref=$global:ProgressPreference
$global:ProgressPreference = "SilentlyContinue" #Disable Progress bar to speed up download and expand

$sldomain="mycompany.sealights.co" #Update with your customer domain
$slToken="$(Get-Content sltoken.txt)" #Prefer a credential Environment variable for the token

Write-Output "Retrieve version from Sealights settings..." 
$slHeader=@{'Accept'='application/json'; 'Authorization'="Bearer $slToken"}
$SLSettingsVersion = ((iwr -Uri https://$sldomain/api/v2/agents/dotnet/recommended -UseBasicParsing -Headers $slHeader).Content | ConvertFrom-Json | Select-Object agent).agent.version

$SLAgentPath=".\SL.DotNet\"
$SlAgentVersionPath = $(Join-Path -Path $SLAgentPath -ChildPath "version.txt")

if( $(Test-Path -Path $SlAgentVersionPath -PathType Leaf) ) 
{
    $SLLocalVersion=Get-Content $SlAgentVersionPath
 
    if ( $SLLocalVersion -eq $SLSettingsVersion )
	{
        Write-Output "Skipping Download - Local agent matches current settings version: $SLLocalVersion"
	} else {
        Write-Output "Local agent is not using the latest version. Deleting local agent."
        Remove-Item -Recurse -Force $SLAgentPath
		#Get-ChildItem -path $SLAgentPath -include * -Recurse -exclude sltoken.txt -erroraction silentlycontinue | Remove-Item -Force -Verbose
	}
}

if( -Not $(Test-Path -Path $SlAgentVersionPath -PathType Leaf) ) 
{
	Write-Output "Download Sealights DotNet agent set in settings..." 
	iwr -OutFile .\sealights-dotnet-agent.zip -UseBasicParsing -Uri http://agents.sealights.co/SL.DotNet/SL.DotNet-$SLSettingsVersion.zip 
	Write-Output "Expanding downloaded archive and placing token..." 
	Expand-Archive .\sealights-dotnet-agent.zip -DestinationPath $SLAgentPath -Force
	Remove-Item -Force .\sealights-dotnet-agent.zip
	Get-ChildItem -Directory -Path .\SL.DotNet\ | Foreach-Object { $slToken | Out-File -NoNewline -Force (Join-Path $_.FullName "sltoken.txt") }
	Write-Output "Sealights agent version used is: $(Get-Content $SlAgentVersionPath)"  
}

#Restore progress bar
$global:ProgressPreference = $previousProgressPref
#End of script




  • No labels