This script demonstrates how to programmatically associate a list of tenants to one or more deployment targets.
Usage
Provide values for the following:
- Octopus URL
- Octopus API Key
- Name of the space you want to work in
- Octopus Tenanted Participation Type (
Tenanted
|Untenanted
|TenantedOrUntenanted
) - List of deployment targets to associate with the Tenants
- List of Tenants to associate with the deployment targets
Script
PowerShell (REST API)
$ErrorActionPreference = "Stop";
# Define working variables
$octopusURL = "https://your-octopus-url"
$octopusAPIKey = "API-YOUR-KEY"
$header = @{ "X-Octopus-ApiKey" = $octopusAPIKey }
$spaceName = "default"
# Target tenant deployment participation - select either "Tenanted" or "TenantedOrUntenanted"
$tenantedDeploymentParticipation = "TenantedOrUntenanted"
$machineNames = @("")
$tenantNames = @("")
# Get space
$space = (Invoke-RestMethod -Method Get -Uri "$octopusURL/api/spaces/all" -Headers $header) | Where-Object { $_.Name -eq $spaceName }
# Get machines
$allMachines = (Invoke-RestMethod -Method Get -Uri "$octopusURL/api/$($space.Id)/machines/all" -Headers $header)
# Get tenants
$allTenants = (Invoke-RestMethod -Method Get -Uri "$octopusUrl/api/$($space.Id)/tenants/all" -Headers $header)
foreach ($machineName in $machineNames) {
# Get machine
$machine = $allMachines | Where-Object { $_.Name -eq $machineName }
# Update tenanted deployment participation
$machine.TenantedDeploymentParticipation = $tenantedDeploymentParticipation
foreach ($tenantName in $tenantNames) {
# Exchange tenant name for tenant ID
$tenant = $allTenants | Where-Object { $_.name -eq $tenantName }
# Associate tenant ID to deployment target
$machine.TenantIds += ($tenant.Id)
}
Invoke-RestMethod -Method Put -Uri "$octopusURL/api/$($space.Id)/machines/$($machine.Id)" -Body ($machine | ConvertTo-Json -Depth 10) -Headers $header
}
Help us continuously improve
Please let us know if you have any feedback about this page.
Page updated on Sunday, January 1, 2023