vagrant-uplift 0.2.1902.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/console +13 -0
- data/bin/setup +8 -0
- data/lib/scripts/vagrant/uplift.vagrant.core/uplift.fix-second-network.ps1 +59 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/dc.dsc.ps1 +128 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/dc.replica.dsc.ps1 +117 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/dc.users.dsc.ps1 +147 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/tests/dc.dsc.Tests.ps1 +165 -0
- data/lib/scripts/vagrant/uplift.vagrant.dcjoin/dc.join.dsc.ps1 +125 -0
- data/lib/scripts/vagrant/uplift.vagrant.dcjoin/dc.join.hostname.ps1 +13 -0
- data/lib/scripts/vagrant/uplift.vagrant.dcjoin/tests/dc.join.dsc.Tests.ps1 +12 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/shared/sp.helpers.ps1 +155 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2013.dsc.ps1 +248 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2013.post_setup.dsc.ps1 +117 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.dsc.ps1 +246 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.farm-only.dsc.ps1 +281 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.info.ps1 +36 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.post_setup.dsc.ps1 +125 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.pre_setup1.dsc.ps1 +28 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.pre_setup2.dsc.ps1 +75 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/tests/sp2013.dsc.wfe.Tests.ps1 +68 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/tests/sp2016.dsc.wfe.Tests.ps1 +68 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.complete.dsc.ps1 +186 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.dsc.ps1 +66 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.optimize.dsc.ps1 +50 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.prepare.dsc.ps1 +60 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/tests/sql.dsc.Tests.ps1 +23 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/tests/sql12.dsc.Tests.ps1 +45 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/tests/sql16.dsc.Tests.ps1 +22 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio13/tests/vs13.dsc.Tests.ps1 +61 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio13/vs13.dsc.post_deploy.ps1 +32 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio13/vs13.dsc.ps1 +69 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio17/tests/vs17.dsc.Tests.ps1 +61 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio17/vs17.dsc.post_deploy.ps1 +34 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio17/vs17.dsc.ps1 +134 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/soe.dsc.ps1 +115 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/soe.shortcuts.dsc.ps1 +41 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/tests/soe.dsc.modules.Tests.ps1 +71 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/tests/soe.dsc.os.Tests.ps1 +89 -0
- data/lib/vagrant-uplift.rb +8 -0
- data/lib/vagrant-uplift/config_builder.rb +819 -0
- data/lib/vagrant-uplift/log.rb +146 -0
- data/lib/vagrant-uplift/plugin-vagrant-uplift-checkpoint.rb +41 -0
- data/lib/vagrant-uplift/plugin.rb +16 -0
- data/lib/vagrant-uplift/version.rb +10 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5d87292c8668a405ab0d16e13e3fbef281058c77a5976bb4461749bdb7a2f032
|
4
|
+
data.tar.gz: cea9495057318c1f2a826d899d62b2e185b7f103a5633ae2e81db8ecc9807187
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: db4236e3ca8e99f457939fa64133d7274579bc67fcde29082f91374043d42ebcb2a7a8750848c1a0a43b32327e1ae14d769653927299f13f1a6b3943549216f5
|
7
|
+
data.tar.gz: 49cbd51d6c8c788da147a1a42f8f8a0bc268b33a745777e197db8fff8b88163af3d7666a3d39b4511acb5f629100eebbc05bb506ea10d5959b9d81da00b5bb13
|
data/bin/console
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
|
5
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
6
|
+
# with your gem easier. You can also use a different console, if you like.
|
7
|
+
|
8
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
9
|
+
# require "pry"
|
10
|
+
# Pry.start
|
11
|
+
|
12
|
+
require "irb"
|
13
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
param ([String] $ip, [String] $dns)
|
2
|
+
|
3
|
+
# fail on errors and include uplift helpers
|
4
|
+
$ErrorActionPreference = "Stop"
|
5
|
+
|
6
|
+
Import-Module Uplift.Core
|
7
|
+
|
8
|
+
Write-UpliftMessage "Fixing up network settings..."
|
9
|
+
Write-UpliftEnv
|
10
|
+
|
11
|
+
# if (Test-Path C:\Users\vagrant\enable-winrm-after-customization.bat) {
|
12
|
+
# Write-UpliftMessage "Nothing to do in vCloud."
|
13
|
+
# exit 0
|
14
|
+
# }
|
15
|
+
# if (! (Test-Path 'C:\Program Files\VMware\VMware Tools')) {
|
16
|
+
# Write-UpliftMessage "Nothing to do for other providers than VMware."
|
17
|
+
# exit 0
|
18
|
+
# }
|
19
|
+
|
20
|
+
$subnet = $ip -replace "\.\d+$", ""
|
21
|
+
|
22
|
+
Write-UpliftMessage " - ip : $ip"
|
23
|
+
Write-UpliftMessage " - subnet: $subnet"
|
24
|
+
|
25
|
+
$name = (Get-NetIPAddress -AddressFamily IPv4 `
|
26
|
+
| Where-Object -FilterScript { ($_.IPAddress).StartsWith($subnet) } `
|
27
|
+
).InterfaceAlias
|
28
|
+
|
29
|
+
if (!$name) {
|
30
|
+
$name = (Get-NetIPAddress -AddressFamily IPv4 `
|
31
|
+
| Where-Object -FilterScript { ($_.IPAddress).StartsWith("169.254.") } `
|
32
|
+
).InterfaceAlias
|
33
|
+
}
|
34
|
+
|
35
|
+
if ($name) {
|
36
|
+
Write-UpliftMessage "Set IP address to $ip of interface $name"
|
37
|
+
& netsh.exe int ip set address "$name" static $ip 255.255.255.0 "$subnet.1"
|
38
|
+
|
39
|
+
Confirm-UpliftExitCode $LASTEXITCODE "Cannot set IP address to $ip of interface $name" @(0,1)
|
40
|
+
|
41
|
+
if ($dns) {
|
42
|
+
Write-UpliftMessage "Set DNS server address to $dns of interface $name"
|
43
|
+
& netsh.exe interface ipv4 add dnsserver "$name" address=$dns index=1
|
44
|
+
|
45
|
+
Confirm-UpliftExitCode $LASTEXITCODE "Cannot set DNS server address to $dns of interface $name" @(0,1)
|
46
|
+
}
|
47
|
+
} else {
|
48
|
+
|
49
|
+
Write-UpliftMessage "Running ipconfig /all"
|
50
|
+
ipconfig /all
|
51
|
+
Confirm-UpliftExitCode $LASTEXITCODE "Cannot run ipconfig"
|
52
|
+
|
53
|
+
$errorMessage = "Could not find a interface with subnet $subnet.xx"
|
54
|
+
|
55
|
+
Write-UpliftMessage $errorMessage
|
56
|
+
throw $errorMessage
|
57
|
+
}
|
58
|
+
|
59
|
+
exit 0
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# fail on errors and include uplift helpers
|
2
|
+
$ErrorActionPreference = "Stop"
|
3
|
+
|
4
|
+
Import-Module Uplift.Core
|
5
|
+
|
6
|
+
Write-UpliftMessage "Installing primary controller..."
|
7
|
+
Write-UpliftEnv
|
8
|
+
|
9
|
+
$domainName = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_NAME"
|
10
|
+
$domainAdminName = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_ADMIN_NAME"
|
11
|
+
$domainAdminPassword = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_ADMIN_PASSWORD"
|
12
|
+
|
13
|
+
$isPartOfDomain = (Get-CimInstance -Class Win32_ComputerSystem).PartOfDomain
|
14
|
+
|
15
|
+
if($isPartOfDomain -eq $True) {
|
16
|
+
Write-UpliftMessage "This computer is already part of domain. No domain join or reboot is required"
|
17
|
+
exit 0
|
18
|
+
}
|
19
|
+
|
20
|
+
Write-UpliftMessage "Fixing DC promo settings..."
|
21
|
+
Set-UpliftDCPromoSettings $domainAdminPassword
|
22
|
+
|
23
|
+
Configuration Install_DomainController {
|
24
|
+
|
25
|
+
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
|
26
|
+
Import-DscResource -ModuleName 'xActiveDirectory'
|
27
|
+
Import-DscResource -ModuleName 'xNetworking'
|
28
|
+
|
29
|
+
Node localhost
|
30
|
+
{
|
31
|
+
$domainName = $Node.DomainName
|
32
|
+
$domainAdminName = $Node.DomainAdminName
|
33
|
+
$domainAdminPassword = $Node.DomainAdminPassword
|
34
|
+
|
35
|
+
$securePassword = ConvertTo-SecureString $domainAdminPassword -AsPlainText -Force
|
36
|
+
$domainAdminCreds = New-Object System.Management.Automation.PSCredential(
|
37
|
+
$domainAdminName,
|
38
|
+
$securePassword
|
39
|
+
)
|
40
|
+
|
41
|
+
$safeModeAdminCreds = $domainAdminCreds
|
42
|
+
|
43
|
+
LocalConfigurationManager
|
44
|
+
{
|
45
|
+
ConfigurationMode = 'ApplyOnly'
|
46
|
+
RebootNodeIfNeeded = $false
|
47
|
+
RefreshMode = "Push"
|
48
|
+
}
|
49
|
+
|
50
|
+
WindowsFeature DNS
|
51
|
+
{
|
52
|
+
Ensure = "Present"
|
53
|
+
Name = "DNS"
|
54
|
+
}
|
55
|
+
|
56
|
+
xDnsServerAddress DnsServerAddress
|
57
|
+
{
|
58
|
+
Address = '127.0.0.1'
|
59
|
+
InterfaceAlias = 'Ethernet'
|
60
|
+
AddressFamily = 'IPv4'
|
61
|
+
DependsOn = "[WindowsFeature]DNS"
|
62
|
+
}
|
63
|
+
|
64
|
+
WindowsFeature ADDSInstall
|
65
|
+
{
|
66
|
+
Ensure = "Present"
|
67
|
+
Name = "AD-Domain-Services"
|
68
|
+
}
|
69
|
+
|
70
|
+
WindowsFeature ADDSRSAT
|
71
|
+
{
|
72
|
+
Ensure = "Present"
|
73
|
+
Name = "RSAT-ADDS-Tools"
|
74
|
+
}
|
75
|
+
|
76
|
+
WindowsFeature RSAT
|
77
|
+
{
|
78
|
+
Ensure = "Present"
|
79
|
+
Name = "RSAT"
|
80
|
+
}
|
81
|
+
|
82
|
+
xADDomain PrimaryDomainController
|
83
|
+
{
|
84
|
+
DomainName = $domainName
|
85
|
+
|
86
|
+
# Windows 2016 fix
|
87
|
+
# http://vcloud-lab.com/entries/active-directory/powershell-dsc-xactivedirectory-error-a-netbios-domain-name-must-be-specified-
|
88
|
+
DomainNetBIOSName = $domainName.Split('.')[0]
|
89
|
+
|
90
|
+
DomainAdministratorCredential = $domainAdminCreds
|
91
|
+
SafemodeAdministratorPassword = $safeModeAdminCreds
|
92
|
+
|
93
|
+
DatabasePath = "C:\NTDS"
|
94
|
+
LogPath = "C:\NTDS"
|
95
|
+
SysvolPath = "C:\SYSVOL"
|
96
|
+
|
97
|
+
DependsOn = @(
|
98
|
+
"[WindowsFeature]ADDSInstall",
|
99
|
+
"[WindowsFeature]RSAT",
|
100
|
+
"[WindowsFeature]ADDSRSAT",
|
101
|
+
"[xDnsServerAddress]DnsServerAddress"
|
102
|
+
)
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
$config = @{
|
108
|
+
AllNodes = @(
|
109
|
+
@{
|
110
|
+
NodeName = 'localhost'
|
111
|
+
|
112
|
+
PSDscAllowDomainUser = $true
|
113
|
+
PSDscAllowPlainTextPassword = $true
|
114
|
+
|
115
|
+
RetryCount = 10
|
116
|
+
RetryIntervalSec = 30
|
117
|
+
|
118
|
+
DomainName = $domainName
|
119
|
+
DomainAdminName = $domainAdminName
|
120
|
+
DomainAdminPassword = $domainAdminPassword
|
121
|
+
}
|
122
|
+
)
|
123
|
+
}
|
124
|
+
|
125
|
+
$configuration = Get-Command Install_DomainController
|
126
|
+
Start-UpliftDSCConfiguration $configuration $config
|
127
|
+
|
128
|
+
exit 0
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# fail on errors and include uplift helpers
|
2
|
+
$ErrorActionPreference = "Stop"
|
3
|
+
|
4
|
+
Import-Module Uplift.Core
|
5
|
+
|
6
|
+
Write-UpliftMessage "Installing replica domain controller..."
|
7
|
+
Write-UpliftEnv
|
8
|
+
|
9
|
+
$domainName = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_NAME"
|
10
|
+
$domainAdminName = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_ADMIN_NAME"
|
11
|
+
$domainAdminPassword = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_ADMIN_PASSWORD"
|
12
|
+
|
13
|
+
Write-UpliftMessage "Fixing DC promo settings..."
|
14
|
+
Set-UpliftDCPromoSettings $domainAdminPassword
|
15
|
+
|
16
|
+
# disable IP6 to ensure replica controller can be promoted
|
17
|
+
Write-UpliftMessage "Disabling IP6 interfaces..."
|
18
|
+
Disable-UpliftIP6Interface
|
19
|
+
|
20
|
+
Configuration Install_ReplicaDomainController {
|
21
|
+
|
22
|
+
Import-DscResource -ModuleName xActiveDirectory
|
23
|
+
Import-DscResource -ModuleName xNetworking
|
24
|
+
|
25
|
+
Node localhost
|
26
|
+
{
|
27
|
+
$domainName = $Node.DomainName
|
28
|
+
$domainAdminName = $Node.DomainAdminName
|
29
|
+
$domainAdminPassword = $Node.DomainAdminPassword
|
30
|
+
|
31
|
+
$securePassword = ConvertTo-SecureString $domainAdminPassword -AsPlainText -Force
|
32
|
+
|
33
|
+
$domainAdminCreds = New-Object System.Management.Automation.PSCredential($domainAdminName, $securePassword)
|
34
|
+
$safeModeAdminCreds = $domainAdminCreds
|
35
|
+
$dnsDelegationCreds = $domainAdminCreds
|
36
|
+
|
37
|
+
LocalConfigurationManager
|
38
|
+
{
|
39
|
+
ConfigurationMode = 'ApplyOnly'
|
40
|
+
RebootNodeIfNeeded = $false
|
41
|
+
RefreshMode = "Push"
|
42
|
+
}
|
43
|
+
|
44
|
+
# WindowsFeature DNS
|
45
|
+
# {
|
46
|
+
# Ensure = "Present"
|
47
|
+
# Name = "DNS"
|
48
|
+
# }
|
49
|
+
|
50
|
+
# xDnsServerAddress DnsServerAddress
|
51
|
+
# {
|
52
|
+
# Address = '127.0.0.1'
|
53
|
+
# InterfaceAlias = 'Ethernet'
|
54
|
+
# AddressFamily = 'IPv4'
|
55
|
+
# DependsOn = "[WindowsFeature]DNS"
|
56
|
+
# }
|
57
|
+
|
58
|
+
WindowsFeature ADDSInstall
|
59
|
+
{
|
60
|
+
Ensure = "Present"
|
61
|
+
Name = "AD-Domain-Services"
|
62
|
+
}
|
63
|
+
|
64
|
+
# WindowsFeature ADDSRSAT
|
65
|
+
# {
|
66
|
+
# Ensure = "Present"
|
67
|
+
# Name = "RSAT-ADDS-Tools"
|
68
|
+
# }
|
69
|
+
|
70
|
+
# WindowsFeature RSAT
|
71
|
+
# {
|
72
|
+
# Ensure = "Present"
|
73
|
+
# Name = "RSAT"
|
74
|
+
# }
|
75
|
+
|
76
|
+
xADDomainController ReplicaDomainController
|
77
|
+
{
|
78
|
+
DomainName = $domainName
|
79
|
+
# win16 fix
|
80
|
+
# http://vcloud-lab.com/entries/active-directory/powershell-dsc-xactivedirectory-error-a-netbios-domain-name-must-be-specified-
|
81
|
+
# DomainNetBIOSName = $domainName.Split('.')[0]
|
82
|
+
|
83
|
+
DomainAdministratorCredential = $domainAdminCreds
|
84
|
+
SafemodeAdministratorPassword = $safeModeAdminCreds
|
85
|
+
|
86
|
+
DependsOn = @(
|
87
|
+
"[WindowsFeature]ADDSInstall"
|
88
|
+
# "[WindowsFeature]RSAT",
|
89
|
+
# "[WindowsFeature]ADDSRSAT",
|
90
|
+
#"[xDnsServerAddress]DnsServerAddress"
|
91
|
+
)
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
$config = @{
|
97
|
+
AllNodes = @(
|
98
|
+
@{
|
99
|
+
NodeName = 'localhost'
|
100
|
+
|
101
|
+
PSDscAllowDomainUser = $true
|
102
|
+
PSDscAllowPlainTextPassword = $true
|
103
|
+
|
104
|
+
RetryCount = 10
|
105
|
+
RetryIntervalSec = 30
|
106
|
+
|
107
|
+
DomainName = $domainName
|
108
|
+
DomainAdminName = $domainAdminName
|
109
|
+
DomainAdminPassword = $domainAdminPassword
|
110
|
+
}
|
111
|
+
)
|
112
|
+
}
|
113
|
+
|
114
|
+
$configuration = Get-Command Install_ReplicaDomainController
|
115
|
+
Start-UpliftDSCConfiguration $configuration $config
|
116
|
+
|
117
|
+
exit 0
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# fail on errors and include uplift helpers
|
2
|
+
$ErrorActionPreference = "Stop"
|
3
|
+
|
4
|
+
Import-Module Uplift.Core
|
5
|
+
|
6
|
+
Write-UpliftMessage "Installing new domain controller..."
|
7
|
+
Write-UpliftEnv
|
8
|
+
|
9
|
+
function WaitForAdServices($tries) {
|
10
|
+
|
11
|
+
# Somehow Win2016 might stuck at "Applying computer settings"
|
12
|
+
# that happens for several minutes, them all comes back
|
13
|
+
# could be a feature setup after DC/Defender removal, could be DNS thing
|
14
|
+
|
15
|
+
# so waiting for 5 minutes, and then fail
|
16
|
+
$user = "vagrant"
|
17
|
+
|
18
|
+
# 10 sec timout
|
19
|
+
$timeOut = 30000
|
20
|
+
|
21
|
+
# 10 minutes (6 * 10 sec => 10 times)
|
22
|
+
if($null -eq $tries) {
|
23
|
+
$tries = 6 * 10
|
24
|
+
}
|
25
|
+
|
26
|
+
$current = 0;
|
27
|
+
$hasError = $false
|
28
|
+
|
29
|
+
do {
|
30
|
+
|
31
|
+
try {
|
32
|
+
Write-UpliftMessage "[$current/$tries] waiting for AD services to come online, resolving user: [$user]"
|
33
|
+
$user = Get-ADUser "vagrant"
|
34
|
+
|
35
|
+
$hasError = $false
|
36
|
+
|
37
|
+
Write-UpliftMessage "[$current/$tries] No error! Nice!"
|
38
|
+
} catch {
|
39
|
+
|
40
|
+
Write-UpliftMessage "Failed with $_"
|
41
|
+
Write-UpliftMessage "Sleeping [$timeOut] milliseconds..."
|
42
|
+
|
43
|
+
$current++;
|
44
|
+
Start-Sleep -Milliseconds $timeOut
|
45
|
+
$hasError = $true
|
46
|
+
}
|
47
|
+
|
48
|
+
if($hasError -eq $false) {
|
49
|
+
break;
|
50
|
+
}
|
51
|
+
|
52
|
+
if($current -gt $tries) {
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
while($hasError -eq $true)
|
57
|
+
}
|
58
|
+
|
59
|
+
$domainName = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_NAME"
|
60
|
+
$vagrantUserName = Get-UpliftEnvVariable "UPLF_VAGRANT_USER_NAME"
|
61
|
+
$vagrantUserPassword = Get-UpliftEnvVariable "UPLF_VAGRANT_USER_PASSWORD"
|
62
|
+
$domainUserName = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_ADMIN_NAME"
|
63
|
+
$domainUserPassword = Get-UpliftEnvVariable "UPLF_DC_DOMAIN_ADMIN_PASSWORD"
|
64
|
+
|
65
|
+
# ensuring AD services are up and running
|
66
|
+
Write-UpliftMessage "Starting NTDS service..."
|
67
|
+
start-service NTDS
|
68
|
+
|
69
|
+
Write-UpliftMessage "Starting ADWS service..."
|
70
|
+
start-service ADWS
|
71
|
+
|
72
|
+
# wait until AD comes up after reboot and applying setting
|
73
|
+
Write-UpliftMessage "Waiting for host to apply setting and make AD available...";
|
74
|
+
WaitForAdServices
|
75
|
+
|
76
|
+
$securePassword = ConvertTo-SecureString $domainUserPassword -AsPlainText -Force
|
77
|
+
|
78
|
+
$domainAdminCreds = New-Object System.Management.Automation.PSCredential(
|
79
|
+
$domainUserName,
|
80
|
+
$securePassword
|
81
|
+
)
|
82
|
+
$safeModeAdminCreds = $domainAdminCreds
|
83
|
+
|
84
|
+
$vagrantSecurePassword = ConvertTo-SecureString $vagrantUserPassword -AsPlainText -Force
|
85
|
+
$vagrantCreds = New-Object System.Management.Automation.PSCredential(
|
86
|
+
$vagrantUserName,
|
87
|
+
$vagrantSecurePassword
|
88
|
+
)
|
89
|
+
|
90
|
+
Configuration Configure_DomainUsers {
|
91
|
+
|
92
|
+
Import-DscResource -ModuleName xActiveDirectory
|
93
|
+
Import-DscResource -ModuleName xNetworking
|
94
|
+
|
95
|
+
Node localhost
|
96
|
+
{
|
97
|
+
LocalConfigurationManager
|
98
|
+
{
|
99
|
+
ConfigurationMode = 'ApplyOnly'
|
100
|
+
RebootNodeIfNeeded = $false
|
101
|
+
RefreshMode = "Push"
|
102
|
+
}
|
103
|
+
|
104
|
+
xADUser DomainAdmin
|
105
|
+
{
|
106
|
+
DomainName = $Node.DomainName
|
107
|
+
DomainAdministratorCredential = $vagrantCreds
|
108
|
+
UserName = $domainUserName
|
109
|
+
Password = $domainAdminCreds
|
110
|
+
Ensure = "Present"
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
$config = @{
|
116
|
+
AllNodes = @(
|
117
|
+
@{
|
118
|
+
NodeName = 'localhost'
|
119
|
+
PSDscAllowPlainTextPassword = $true
|
120
|
+
PSDscAllowDomainUser = $true
|
121
|
+
RetryCount = 10
|
122
|
+
RetryIntervalSec = 30
|
123
|
+
|
124
|
+
DomainName = $domainName.Split('.')[0]
|
125
|
+
}
|
126
|
+
)
|
127
|
+
}
|
128
|
+
|
129
|
+
$configuration = Get-Command Configure_DomainUsers
|
130
|
+
Start-UpliftDSCConfiguration $configuration $config
|
131
|
+
|
132
|
+
# ensuring group memebership
|
133
|
+
Write-UpliftMessage "Ensuring group memberships..."
|
134
|
+
try {
|
135
|
+
Write-UpliftMessage "[1/2] Ensuring group memberships..."
|
136
|
+
|
137
|
+
Add-ADGroupMember 'Domain Admins' 'vagrant',' admin'
|
138
|
+
} catch {
|
139
|
+
Write-UpliftMessage "[2/2] Ensuring group memberships..."
|
140
|
+
|
141
|
+
# try twice to ensure the following random issue
|
142
|
+
# Attempting to perform the InitializeDefaultDrives operation on the 'ActiveDirectory' provider failed
|
143
|
+
|
144
|
+
Add-ADGroupMember 'Domain Admins' 'vagrant',' admin'
|
145
|
+
}
|
146
|
+
|
147
|
+
exit 0
|