-
Notifications
You must be signed in to change notification settings - Fork 0
/
bake.ps1
91 lines (78 loc) · 3.4 KB
/
bake.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#Requires -Version 5
<#PSScriptInfo
.VERSION 1.0
.GUID TODO
.AUTHOR psadmin.io
.SYNOPSIS
todo
.DESCRIPTION
todo
.EXAMPLE
TODO
#>
[CmdletBinding(DefaultParameterSetName="Help")]
Param(
[Parameter(Mandatory=$true)][String]$MOS_USERNAME = $env:MOS_USERNAME,
[Parameter(Mandatory=$true)][String]$MOS_PASSWORD = $env:MOS_PASSWORD, # TODO secure string
[Parameter(Mandatory=$true)][String]$MOS_PATCH_ID = $env:MOS_PATCH_ID,
[Parameter(Mandatory=$false)][String]$MOS_ELK_PATCH_ID = $env:MOS_ELK_PATCH_ID
)
Begin {
# TODO - params?
# Valid values: "Stop", "Inquire", "Continue", "Suspend", "SilentlyContinue"
$ErrorActionPreference = "Stop"
$DebugPreference = "SilentlyContinue"
$VerbosePreference = "SilentlyContinue"
$log = "c:\temp\psft-pi-baker.log" # TODO
Push-Location $PSScriptRoot
Function log($msg) {
$stamp = [DateTime]::Now.ToString("yyyyMMdd-HHmmss")
Add-Content $log "[$stamp] $msg"
}
Function info($msg) {
log("INFO: $msg")
}
Function debug($msg) {
log("DEBUG: $msg")
}
Function error($msg) {
log("ERROR: $msg")
}
}
Process {
# Setup file structure
Try {
info("Setting up file structure.")
New-Item -ItemType directory -Path "c:/psft/cfg" -Force
New-Item -ItemType directory -Path "c:/psft/dpk/downloads" -Force
New-Item -ItemType directory -Path "c:/vagrant/config" -Force
New-Item -ItemType directory -Path "c:/vagrant/scripts" -Force
Copy-Item -Path "./files/psft_customizations-win.yaml" -Destination "c:/vagrant/config/psft_customizations.yaml"
Copy-Item -Path "./files/vagabond.json" -Destination "c:/vagrant/scripts/vagabond.json"
} Catch {
error($_.Exception.Message)
Break
}
# Run provisoners
info("banner")
& ./powershell/banner.ps1 >> $log
info("download")
& ./powershell/provision-download.ps1 -MOS_USERNAME "$MOS_USERNAME" -MOS_PASSWORD "$MOS_PASSWORD" -PATCH_ID "$MOS_PATCH_ID" -DPK_INSTALL "c:/psft/dpk/downloads/$MOS_PATCH_ID" >> $log
info("bootstrap")
& ./powershell/provision-bootstrap-ps.ps1 -PATCH_ID "$MOS_PATCH_ID" -DPK_INSTALL "c:/psft/dpk/downloads/$MOS_PATCH_ID" -PSFT_BASE_DIR "c:/psft" -PUPPET_HOME "c:/psft/dpk/puppet" >> $log
info("yaml")
& ./powershell/provision-yaml.ps1 -DPK_INSTALL "c:/psft/dpk/downloads/$MOS_PATCH_ID" -PSFT_BASE_DIR "c:/psft" -PUPPET_HOME "c:/psft/dpk/puppet" >> $log
info("puppet apply")
& ./powershell/provision-puppet-apply.ps1 -DPK_INSTALL "c:/psft/dpk/downloads/$MOS_PATCH_ID" -PSFT_BASE_DIR "c:/psft" -PUPPET_HOME "c:/psft/dpk/puppet" >> $log
info("util")
& ./powershell/provision-utilities.ps1 >> $log
if (${MOS_ELK_PATCH_ID}) {
& ./powershell/provision-download.ps1 -MOS_USERNAME "${MOS_USERNAME}" -MOS_PASSWORD "${MOS_PASSWORD}" -PATCH_ID "${MOS_ELK_PATCH_ID}" -DPK_INSTALL "c:/psft/dpk/downloads/${MOS_ELK_PATCH_ID}" | set-content -path $log
$APP = (ls c:/psft/dpk/downloads/${MOS_PATCH_ID}\APP*.zip | select -First 1).Name.split("-")[3]
& ./powershell/provision-elk.ps1 -ELK_INSTALL "c:/psft/dpk/downloads/${MOS_ELK_PATCH_ID}" -APP $APP -PUPPET_HOME "c:/psft/dpk/puppet" -ELK_BASE_DIR "c:/psft/elk" -ESADMIN_PWD "Passw0rd#" -PEOPLE_PWD "peop1e" | set-content -path $log
}
info("done done.")
}
End {
Pop-Location
}