-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun-rabbitmq.ps1
68 lines (56 loc) · 2.39 KB
/
run-rabbitmq.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
58
59
60
61
62
63
64
65
66
67
68
$ProgressPreference = 'Continue'
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version 2.0
New-Variable -Name curdir -Option Constant `
-Value (Split-Path -Parent $MyInvocation.MyCommand.Definition)
Write-Host "[INFO] script directory: $curdir"
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 'Tls12'
New-Variable -Name rabbitmq_version -Option Constant -Value '3.12.2'
$rabbitmq_dir = Join-Path -Path $curdir -ChildPath "rabbitmq_server-$rabbitmq_version"
$rabbitmq_sbin = Join-Path -Path $rabbitmq_dir -ChildPath 'sbin'
$rabbitmq_download_url = "https://github.com/rabbitmq/rabbitmq-server/releases/download/v$rabbitmq_version/rabbitmq-server-windows-$rabbitmq_version.zip"
$rabbitmq_zip_file = Join-Path -Path $curdir -ChildPath "rabbitmq-server-windows-$rabbitmq_version.zip"
$rabbitmqctl_cmd = Join-Path -Path $rabbitmq_sbin -ChildPath 'rabbitmqctl.bat'
$rabbitmq_plugins_cmd = Join-Path -Path $rabbitmq_sbin -ChildPath 'rabbitmq-plugins.bat'
$rabbitmq_server_cmd = Join-Path -Path $rabbitmq_sbin -ChildPath 'rabbitmq-server.bat'
$rabbitmq_base = Join-Path -Path $curdir -ChildPath 'rmq'
$rabbitmq_conf_in = Join-Path -Path $curdir -ChildPath 'rabbitmq.conf.in'
$rabbitmq_conf_out = Join-Path -Path $rabbitmq_base -ChildPath 'rabbitmq.conf'
if (!(Test-Path -Path $rabbitmq_dir))
{
New-Item -Path $rabbitmq_base -ItemType Directory
Invoke-WebRequest -Verbose -UseBasicParsing -Uri $rabbitmq_download_url -OutFile $rabbitmq_zip_file
Expand-Archive -Path $rabbitmq_zip_file -DestinationPath $curdir
}
$pwd_slashes = $curdir -Replace '\\','/'
(Get-Content -Raw -Path $rabbitmq_conf_in) -Replace '@@PWD@@', $pwd_slashes | Set-Content -Path $rabbitmq_conf_out
try
{
$env:RABBITMQ_BASE = $rabbitmq_base
try
{
$ErrorActionPreference = 'Continue'
& $rabbitmq_plugins_cmd enable rabbitmq_management rabbitmq_top rabbitmq_auth_mechanism_ssl
}
finally
{
$ErrorActionPreference = 'Stop'
}
& $rabbitmq_server_cmd -detached
try
{
Start-Sleep -Seconds 5
$ErrorActionPreference = 'Continue'
& $rabbitmqctl_cmd await_startup
& $rabbitmqctl_cmd add_user 'O=client,CN=localhost' 'unused'
& $rabbitmqctl_cmd set_permissions 'O=client,CN=localhost' '.*' '.*' '.*'
}
finally
{
$ErrorActionPreference = 'Stop'
}
}
finally
{
Remove-Item -Path env:\RABBITMQ_BASE
}