Невозможно создать несколько машин одновременно в сценарии.
Я пытался клонировать среду в 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.