Как создать цели развертывания в Octopus Deploy из хеш-таблицы в PowerShell - PullRequest
0 голосов
/ 08 октября 2019

Невозможно создать несколько машин одновременно в сценарии.

Я пытался клонировать среду в Octopus, главным образом для меня, чтобы попрактиковаться во взаимодействии с API. Мне удалось создать среду, а затем создать единую цель развертывания в этой среде, однако мне было интересно, есть ли способ создать несколько целей развертывания в одном сценарии, не вводя весь код снова и снова. Может быть, цикл ForEach со значениями, хранящимися в хешабле?

$env:OctopusURL = 'MY-Octo-URL'
$enV:OctopusAPIKey = 'MY-API-KEy'
$headers = @{"X-Octopus-ApiKey" = $enV:OctopusAPIKey}
$API = Invoke-RestMethod -Method GET -Uri $env:OctopusURL  -Headers 
$headers
$endpoint = New-Object Octopus.Client.OctopusServerEndpoint 
$env:OctopusURL, $enV:OctopusAPIKey
$repository = New-Object Octopus.Client.OctopusRepository $endpoint

$Hash = $Null
$Hash = @{}  
$OctoAppServers = @(Get-OctopusMachine -EnvironmentName VM01 | select 
name, roles)
Foreach ($Server in $OctoAppServers) { 
$hash.Add($Server.name, $Server.roles)}

$properties = @{Name="VM01(Clone)";Description="Copy of VM01"} 

$envObj = New-object Octopus.Client.Model.EnvironmentResource -property 
$properties

$repository.Environments.Create($envObj) 

<#$EnvID = Get-OctopusEnvironment -EnvironmentName $envObj.name | select 
ID
$machinename = $hash.keys 
$Role1 = Foreach ($key in $hash.keys) {$Value = $Hash[$key]} 
$MachineURI = 

Foreach ($Server in $OctoAppServers) {#> 

$tentacle = New-object Octopus.Client.Model.MachineResource 

$tentacle.Name = "Vlaue" 
$tentacle.EnvironmentIds.Add("environment") 
$tentacle.Roles.Add("Role")


$tentacleEndpoint =  New-Object  
Octopus.Client.Model.Endpoints.ListeningTentacleEndpointResource 
$tentacle.Endpoint = $tentacleEndpoint 
$tentacle.Endpoint.URI = "https://vm01appserver01:10933/" 
$tentacle.Endpoint.Thumbprint = 
"0BECF7038DC3D43AC9B9CDA896FAA09DC3F269C7"

$repository.Machines.Create($tentacle) 

Приведенный выше код создает среду и одну цель развертывания в ней. Хэшированные переменные - это то место, где я пытаюсь реализовать цикл foreach.

...