-
Notifications
You must be signed in to change notification settings - Fork 61
/
register-polling-tentacle.ps1
58 lines (45 loc) · 2.19 KB
/
register-polling-tentacle.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# If for whatever reason this doesn't work, check this file:
Start-Transcript -path "C:\Octopus\Logs\register-polling-tentacle.txt" -append
$OFS = "`r`n"
$OctopusURI = "http://localhost:81"
$octopusAdminUsername="OctoAdmin"
$octopusAdminPassword="SuperS3cretPassw0rd!"
# we have setup the tentacle via DSC, and given it a thumbprint, but have requested it to
# not register with the server. (ie, simulating the situation where tentacles cannot see the server)
# so, we need to register the tentacle outside of DSC
try
{
Add-Type -Path "${env:ProgramFiles}\Octopus Deploy\Octopus\Newtonsoft.Json.dll"
Add-Type -Path "${env:ProgramFiles}\Octopus Deploy\Octopus\Octopus.Client.dll"
#connect
$endpoint = new-object Octopus.Client.OctopusServerEndpoint $OctopusURI
$repository = new-object Octopus.Client.OctopusRepository $endpoint
#sign in
$credentials = New-Object Octopus.Client.Model.LoginCommand
$credentials.Username = $octopusAdminUsername
$credentials.Password = $octopusAdminPassword
$repository.Users.SignIn($credentials) | Out-Null
$environment = $repository.Environments.FindByName("The-Env")
$existingMachine = $repository.machines.findbyname("ListeningTentacleWithThumbprintWithoutAutoRegister")
if ($null -ne $existingMachine) {
$repository.machines.Delete($existingMachine) | Out-Null
}
$tentacleThumbprint = & "C:\Program Files\Octopus Deploy\Tentacle\Tentacle.exe" "show-thumbprint" "--instance=ListeningTentacleWithThumbprintWithoutAutoRegister" "--nologo" "--thumbprint-only" "--console"
$environmentId = $environment.id
$role = "Test-Tentacle"
$machineName = "ListeningTentacleWithThumbprintWithoutAutoRegister"
$tentacleEndpoint = New-Object Octopus.Client.Model.EndPoints.ListeningTentacleEndpointResource
$tentacleEndpoint.Thumbprint = $tentacleThumbprint
$tentacleEndpoint.Uri = "https://localhost:10935"
$tentacle = New-Object Octopus.Client.Model.MachineResource
$tentacle.Endpoint = $tentacleEndpoint
$tentacle.EnvironmentIds.Add($environmentId)
$tentacle.Roles.Add($role)
$tentacle.Name = $machineName
$repository.Machines.Create($tentacle) | Out-Null
}
catch
{
Write-Output $_
exit 1
}