После создания экземпляра щупальца режим связи (прослушивание или опрос) не может быть изменен. Что вам нужно будет сделать, это создать новый экземпляр. Это один из случаев, когда новая функция Runbooks пригодится.
Обратите внимание: Предполагается, что вы уже переместили свой экземпляр Octopus Deploy на Azure.
У вас будет две книги запусков. Первая книга запусков будет:
- Используйте шаг запуска сценария на существующем щупальце для создания нового экземпляра опрашивающего щупальца.
Вторая книга запусков будет:
- Используйте шаг запуска сценария для нового щупальца опроса, чтобы отключить регистрацию для старых щупалец для прослушивания.
- Пауза для ручного вмешательства при тестировании некоторых развертываний для новых экземпляров щупальца.
- Используйте шаг запуска сценария на новом щупальце опроса, чтобы удалить старые экземпляры прослушивающих щупальцев.
Сначала давайте используем консоль сценария для создания опрашивающих щупалец. Пара замечаний: - Когда вы регистрируете новые щупальца в Octopus Deploy, вам нужно будет указать имя. Я предлагаю вам использовать что-то легко запомнить. Если ваши текущие прослушивающие щупальца зарегистрированы как [MachineName], то используйте [MachineName] -Polling.
- В дополнение к предоставлению ролей развертывания, также добавьте «PollingTentacle» в качестве роли, которая упростит для будущих запусков с Консоль сценария.
$OldMachineName = $OctopusParameters["Octopus.Machine.Name"]
$Environment = $OctopusParameters["Octopus.Environment.Name"]
$Roles = $OctopusParameters["Octopus.Machine.Roles"]
$APIKey = #Your API Key
$Server = #Your Server
$NewMachineName = "$OldMachineName-Polling"
Set-Location "C:\Program Files\Octopus Deploy\Tentacle"
$baseArgs = @("register-with","--instance=Polling","--Name=$NewMachineName","--server=$Server","--apiKey=$octopusApiKey","--comms-style=TentacleActive","--server-comms-port=10943","--environment=$Environment")
$roleList = $roles -split ","
foreach ($role in $roleList) {
$baseArgs += "--role=$role"
}
$baseArgs += "--console"
& .\Tentacle.exe create-instance --instance "Polling" --config "C:\Octopus\Tentacle.config" --console
& .\Tentacle.exe new-certificate --instance "Polling" --if-blank --console
& .\Tentacle.exe configure --instance "Polling" --reset-trust --console
& .\Tentacle.exe configure --instance "Polling" --home "C:\Octopus\Polling" --app "C:\Octopus\Applications\Polling" --noListen "True" --console
& .\Tentacle.exe $baseArgs
& .\Tentacle.exe service --instance "Polling" --install --start --console
Далее, используя API, отключите старые машины. Именно здесь облегчается работа с ролью "PollingTentacles" и регистрацией машины, установленной на [MachineName] -Polling. Этот сценарий отключит более старую цель.
###CONFIG###
$OctopusURL = #Octopus Server root URL
$APIKey = #Octopus API Key
$NewMachineName = $OctopusParameters["Octopus.Machine.Name"]
$machineName = $NewMachineName -replace "-Polling", ""
###PROCESS###
$header = @{ "X-Octopus-ApiKey" = $APIKey }
#Getting all machines
$allmachines = Invoke-RestMethod $OctopusURL/api/machines/all -Headers $header
#Filtering machine by name
$machine = $allmachines | ?{$_.name -eq $machineName}
#Setting the "IsDisabled" property
$machine.IsDisabled = $true #Set to $false to disable the machine
#Converting $machine into a JSON blob to PUT is back to the server
$body = $machine | ConvertTo-Json -Depth 4
#Pushing the modified machine to the userver
Invoke-RestMethod ($OctopusURL + $machine.Links.Self) -Method Put -Body $body -Headers $header
Теперь, когда щупальца опроса работают, а старые щупальца отключены, запустите некоторые тестовые развертывания. Все должно продолжать работать как есть.
Наконец, вам нужно использовать консоль сценария для отмены регистрации и удаления старого щупальца.
cd "C:\Program Files\Octopus Deploy\Tentacle"
Tentacle.exe deregister-from --instance "Tentacle" --server "http://YOUR_OCTOPUS" --apiKey "API-YOUR_API_KEY" --multiple
Tentacle.exe delete-instance --instance "Tentacle"
Для получения дополнительной информации о командной строке, пожалуйста, обратитесь к нашей документации .
Если это ставит вас за пределы вашей лицензии, пожалуйста, свяжитесь с support@octopus.com, объясните, что вы пытаетесь сделать, и мы предоставим вам временная лицензия.