facterdb 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.gitignore +5 -0
- data/CHANGELOG.md +7 -0
- data/README.md +2 -0
- data/facterdb.gemspec +2 -2
- data/facts/2.4/windows-2012 r2-x64.facts +77 -0
- data/facts/2.4/windows-7-x64.facts +79 -0
- data/facts/3.0/windows-2012 r2-x86_64.facts +101 -0
- data/facts/3.0/windows-7-x86_64.facts +101 -0
- data/facts/3.1/windows-2012 r2-x86_64.facts +130 -0
- data/facts/3.1/windows-7-x86_64.facts +130 -0
- data/facts/Vagrantfile +24 -0
- data/facts/Windows_README.md +11 -0
- data/facts/windows_get_facts.ps1 +60 -0
- data/facts/windows_packer/2012r2core.json +60 -0
- data/facts/windows_packer/answer_files/2012_r2core/Autounattend.xml +146 -0
- data/facts/windows_packer/scripts/PackerShutdown.bat +2 -0
- data/facts/windows_packer/scripts/SetupComplete-2012.cmd +1 -0
- data/facts/windows_packer/scripts/Test-Command.ps1 +11 -0
- data/facts/windows_packer/scripts/boxstarter.ps1 +12 -0
- data/facts/windows_packer/scripts/oracle.cer +0 -0
- data/facts/windows_packer/scripts/package.ps1 +44 -0
- data/facts/windows_packer/scripts/postunattend.xml +49 -0
- data/facts/windows_packer/scripts/provision.ps1 +86 -0
- data/facts/windows_packer/vagrant_templates/vagrantfile-windows.template +16 -0
- data/lib/facterdb/version.rb +1 -1
- metadata +45 -34
@@ -0,0 +1,130 @@
|
|
1
|
+
{
|
2
|
+
"dmi": {
|
3
|
+
"manufacturer": "innotek GmbH",
|
4
|
+
"product": {
|
5
|
+
"name": "VirtualBox",
|
6
|
+
"serial_number": "0"
|
7
|
+
}
|
8
|
+
},
|
9
|
+
"env_windows_installdir": "C:\\Program Files\\Puppet Labs\\Puppet",
|
10
|
+
"facterversion": "3.1.5",
|
11
|
+
"fqdn": "foo.example.com",
|
12
|
+
"identity": {
|
13
|
+
"user": "FOO\\vagrant"
|
14
|
+
},
|
15
|
+
"is_virtual": true,
|
16
|
+
"kernel": "windows",
|
17
|
+
"kernelmajversion": "6.1",
|
18
|
+
"kernelrelease": "6.1.7600",
|
19
|
+
"kernelversion": "6.1.7600",
|
20
|
+
"memory": {
|
21
|
+
"system": {
|
22
|
+
"available": "321.22 MiB",
|
23
|
+
"available_bytes": 336826368,
|
24
|
+
"capacity": "68.62%",
|
25
|
+
"total": "1023.55 MiB",
|
26
|
+
"total_bytes": 1073274880,
|
27
|
+
"used": "702.33 MiB",
|
28
|
+
"used_bytes": 736448512
|
29
|
+
}
|
30
|
+
},
|
31
|
+
"networking": {
|
32
|
+
"fqdn": "foo",
|
33
|
+
"hostname": "foo",
|
34
|
+
"interfaces": {
|
35
|
+
"Local Area Connection": {
|
36
|
+
"bindings": [
|
37
|
+
{
|
38
|
+
"address": "10.0.2.15",
|
39
|
+
"netmask": "255.255.255.0",
|
40
|
+
"network": "10.0.2.0"
|
41
|
+
}
|
42
|
+
],
|
43
|
+
"bindings6": [
|
44
|
+
{
|
45
|
+
"address": "fe80::700d:3fab:1d54:dc0d%11",
|
46
|
+
"netmask": "ffff:ffff:ffff:ffff::",
|
47
|
+
"network": "fe80::%11"
|
48
|
+
}
|
49
|
+
],
|
50
|
+
"dhcp": "10.0.2.2",
|
51
|
+
"ip": "10.0.2.15",
|
52
|
+
"ip6": "fe80::700d:3fab:1d54:dc0d%11",
|
53
|
+
"mac": "08:00:27:67:C8:1B",
|
54
|
+
"mtu": 1500,
|
55
|
+
"netmask": "255.255.255.0",
|
56
|
+
"netmask6": "ffff:ffff:ffff:ffff::",
|
57
|
+
"network": "10.0.2.0",
|
58
|
+
"network6": "fe80::%11"
|
59
|
+
},
|
60
|
+
"Local Area Connection 3": {
|
61
|
+
"bindings": [
|
62
|
+
{
|
63
|
+
"address": "10.20.1.5",
|
64
|
+
"netmask": "255.255.255.0",
|
65
|
+
"network": "10.20.1.0"
|
66
|
+
}
|
67
|
+
],
|
68
|
+
"bindings6": [
|
69
|
+
{
|
70
|
+
"address": "fe80::15ec:2eb0:42ca:d968%13",
|
71
|
+
"netmask": "ffff:ffff:ffff:ffff::",
|
72
|
+
"network": "fe80::%13"
|
73
|
+
}
|
74
|
+
],
|
75
|
+
"ip": "10.20.1.5",
|
76
|
+
"ip6": "fe80::15ec:2eb0:42ca:d968%13",
|
77
|
+
"mac": "08:00:27:81:BB:CB",
|
78
|
+
"mtu": 1500,
|
79
|
+
"netmask": "255.255.255.0",
|
80
|
+
"netmask6": "ffff:ffff:ffff:ffff::",
|
81
|
+
"network": "10.20.1.0",
|
82
|
+
"network6": "fe80::%13"
|
83
|
+
}
|
84
|
+
},
|
85
|
+
"ip": "10.20.1.5",
|
86
|
+
"ip6": "fe80::15ec:2eb0:42ca:d968%13",
|
87
|
+
"mac": "08:00:27:81:BB:CB",
|
88
|
+
"mtu": 1500,
|
89
|
+
"netmask": "255.255.255.0",
|
90
|
+
"netmask6": "ffff:ffff:ffff:ffff::",
|
91
|
+
"network": "10.20.1.0",
|
92
|
+
"network6": "fe80::%13",
|
93
|
+
"primary": "Local Area Connection 3"
|
94
|
+
},
|
95
|
+
"os": {
|
96
|
+
"architecture": "x64",
|
97
|
+
"family": "windows",
|
98
|
+
"hardware": "x86_64",
|
99
|
+
"name": "windows",
|
100
|
+
"release": {
|
101
|
+
"full": "7",
|
102
|
+
"major": "7"
|
103
|
+
},
|
104
|
+
"windows": {
|
105
|
+
"system32": "C:\\Windows\\system32"
|
106
|
+
}
|
107
|
+
},
|
108
|
+
"path": "C:\\Program Files\\Puppet Labs\\Puppet\\puppet\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\facter\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\hiera\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\mcollective\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\sys\\ruby\\bin;C:\\Program Files\\Puppet Labs\\Puppet\\sys\\tools\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\Git\\bin; ",
|
109
|
+
"processors": {
|
110
|
+
"count": 1,
|
111
|
+
"isa": "x64",
|
112
|
+
"models": [
|
113
|
+
"Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz"
|
114
|
+
],
|
115
|
+
"physicalcount": 1
|
116
|
+
},
|
117
|
+
"ruby": {
|
118
|
+
"platform": "x64-mingw32",
|
119
|
+
"sitedir": "C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/site_ruby/2.1.0",
|
120
|
+
"version": "2.1.8"
|
121
|
+
},
|
122
|
+
"system_uptime": {
|
123
|
+
"days": 0,
|
124
|
+
"hours": 0,
|
125
|
+
"seconds": 177,
|
126
|
+
"uptime": "0:02 hours"
|
127
|
+
},
|
128
|
+
"timezone": "Coordinated Universal Time",
|
129
|
+
"virtual": "virtualbox"
|
130
|
+
}
|
data/facts/Vagrantfile
CHANGED
@@ -189,4 +189,28 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
189
189
|
host.vm.provision "shell", path: "get_facts.sh"
|
190
190
|
host.vm.provision "shell", inline: "/sbin/shutdown -h now"
|
191
191
|
end
|
192
|
+
config.vm.define "windows-7-x86_64" do |host|
|
193
|
+
host.vm.hostname = 'foo'
|
194
|
+
host.vm.box = "ferventcoder/win7pro-x64-nocm-lite"
|
195
|
+
host.vm.communicator = "winrm"
|
196
|
+
host.vm.guest = :windows
|
197
|
+
host.vm.network :private_network, :auto_network => true
|
198
|
+
host.vm.network "forwarded_port", guest: 22, host: 2200, id: "ssh", auto_correct: true
|
199
|
+
host.windows.set_work_network = true
|
200
|
+
host.vm.provision 'shell', path: "windows_get_facts.ps1"
|
201
|
+
#host.vm.provision 'shell', inline: "Stop-Computer -AsJob"
|
202
|
+
host.vm.provision 'shell', inline: "shutdown -s -f -c \"Fact Collection Complete\""
|
203
|
+
#host.vm.post_up_message = 'Note that windows machines do not automatically shutdown. You must run a \'vagrant destroy\' or \'vagrant halt\' to terminate/stop the build vm.'
|
204
|
+
end
|
205
|
+
config.vm.define "windows-2012r2-core-x86_64" do |host|
|
206
|
+
host.vm.hostname = 'foo'
|
207
|
+
host.vm.box = "windows-2012r2-core-x86_64"
|
208
|
+
host.vm.communicator = "winrm"
|
209
|
+
host.vm.guest = :windows
|
210
|
+
host.vm.network :private_network, :auto_network => true
|
211
|
+
host.vm.network "forwarded_port", guest: 22, host: 2200, id: "ssh", auto_correct: true
|
212
|
+
host.windows.set_work_network = true
|
213
|
+
host.vm.provision 'shell', path: "windows_get_facts.ps1"
|
214
|
+
host.vm.provision 'shell', inline: "shutdown -s -f -c \"Fact Collection Complete\""
|
215
|
+
end
|
192
216
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
At the time of writing there are not suitable publicly available windows server
|
2
|
+
vagrant boxes that can be used to generate the facts.
|
3
|
+
|
4
|
+
In order to make fact collection reproducible, I have included packer templates
|
5
|
+
so boxes can be rebuilt.
|
6
|
+
|
7
|
+
run `packer build <file>.json`
|
8
|
+
followed by `vagrant add <boxname> <boxfile>`
|
9
|
+
|
10
|
+
Once the box is added a simple `vagrant up <windows_os_name>` will collect all the facts in the same manner as the unix based hosts.
|
11
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
param(
|
2
|
+
[array]$puppetAgentVersions = ('1.1.1','1.2.2','1.4.0'),
|
3
|
+
[string]$baseUrl = 'https://downloads.puppetlabs.com/windows',
|
4
|
+
[string]$fqdn = 'foo.example.com'
|
5
|
+
)
|
6
|
+
|
7
|
+
$PuppetInstallerPath = 'c:\vagrantshared\resources\installers'
|
8
|
+
|
9
|
+
# Make sure we have enough privs to install the things.
|
10
|
+
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
|
11
|
+
if (! ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))) {
|
12
|
+
Write-Host -ForegroundColor Red "You must run this script as an administrator."
|
13
|
+
Exit 1
|
14
|
+
}
|
15
|
+
|
16
|
+
# Create our tmp dir if it's not found
|
17
|
+
if (!(Test-Path $PuppetInstallerPath)) {
|
18
|
+
Write-Host "Creating folder `'$PuppetInstallerPath`'"
|
19
|
+
$null = New-Item -Path "$PuppetInstallerPath" -ItemType Directory
|
20
|
+
}
|
21
|
+
|
22
|
+
# Install each puppet version & collect facts.
|
23
|
+
foreach ($pupAgentVer in $puppetAgentVersions) {
|
24
|
+
$agentUrl = "$baseUrl/puppet-agent-$pupAgentVer-x64.msi"
|
25
|
+
$agentInstaller = Join-Path $PuppetInstallerPath "puppet-agent-$pupAgentVer-x64.msi"
|
26
|
+
|
27
|
+
write-Host "Downloading `'$agentUrl`' to `'$agentInstaller`'"
|
28
|
+
(New-Object Net.WebClient).DownloadFile("$agentUrl", "$agentInstaller")
|
29
|
+
|
30
|
+
#Install the actual agent, and
|
31
|
+
$install_args = @("/qn", "/norestart", "/i", "$agentInstaller", "PUPPET_AGENT_CERTNAME=$fqdn")
|
32
|
+
Write-Host "Installing Puppet. running msiexec.exe $install_args"
|
33
|
+
$agentProcess = Start-Process -FilePath msiexec.exe -ArgumentList $install_args -Wait -PassThru
|
34
|
+
if ($agentProcess.ExitCode -ne 0) {
|
35
|
+
Write-Host "Installer failed."
|
36
|
+
Exit 1
|
37
|
+
}
|
38
|
+
Write-Host "Puppet Agent $pupAgentVer successfully installed."
|
39
|
+
|
40
|
+
# Run facter
|
41
|
+
$facterBin = "C:\Program Files\Puppet Labs\Puppet\bin\facter.bat"
|
42
|
+
$facterVer = (&$facterBin facterversion).Substring(0,3)
|
43
|
+
|
44
|
+
$Os = (&$facterBin operatingsystem).ToLower()
|
45
|
+
$Osmaj = (&$facterBin operatingsystemmajrelease).ToLower()
|
46
|
+
$Hw = (&$facterBin hardwaremodel).ToLower()
|
47
|
+
|
48
|
+
# Supply a fqdn because vagrant windows only sets the short hostname. Without this
|
49
|
+
# the domain name will fallback to the hypervisor's domain.
|
50
|
+
$env:FACTER_fqdn = $fqdn
|
51
|
+
|
52
|
+
$facterArgs = @("-j")
|
53
|
+
$facterProcess = Start-Process -FilePath $facterBin -ArgumentList $facterArgs -Wait -PassThru -RedirectStandardOutput "C:\vagrant\$facterVer\$Os-$Osmaj-$Hw.facts"
|
54
|
+
if ($facterProcess.ExitCode -ne 0) {
|
55
|
+
Write-Host "Facter failed."
|
56
|
+
Exit 1
|
57
|
+
}
|
58
|
+
Write-Host "Facts collected for $Os-$Osmaj-$Hw with facter $facterVer"
|
59
|
+
}
|
60
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
{
|
2
|
+
"builders": [
|
3
|
+
{
|
4
|
+
"type": "virtualbox-iso",
|
5
|
+
"vboxmanage": [
|
6
|
+
[ "modifyvm", "{{.Name}}", "--natpf1", "guest_winrm,tcp,,55985,,5985" ],
|
7
|
+
[ "modifyvm", "{{.Name}}", "--memory", "4096" ],
|
8
|
+
[ "modifyvm", "{{.Name}}", "--vram", "48" ],
|
9
|
+
[ "modifyvm", "{{.Name}}", "--cpus", "2" ],
|
10
|
+
[ "modifyvm", "{{.Name}}", "--ioapic", "on" ]
|
11
|
+
],
|
12
|
+
"guest_additions_mode": "{{ user `guest_additions_mode` }}",
|
13
|
+
"guest_additions_path": "C:/users/vagrant/VBoxGuestAdditions.iso",
|
14
|
+
"guest_os_type": "Windows2012_64",
|
15
|
+
"headless": "{{ user `headless` }}",
|
16
|
+
"iso_url": "{{ user `iso_url` }}",
|
17
|
+
"iso_checksum": "{{ user `iso_checksum` }}",
|
18
|
+
"iso_checksum_type": "{{ user `iso_checksum_type` }}",
|
19
|
+
"communicator": "winrm",
|
20
|
+
"winrm_username": "vagrant",
|
21
|
+
"winrm_password": "vagrant",
|
22
|
+
"winrm_timeout": "8h",
|
23
|
+
"shutdown_command": "a:/PackerShutdown.bat",
|
24
|
+
"shutdown_timeout": "30m",
|
25
|
+
"floppy_files": [
|
26
|
+
"answer_files/2012_r2{{user `core`}}/Autounattend.xml",
|
27
|
+
"scripts/oracle.cer",
|
28
|
+
"scripts/postunattend.xml",
|
29
|
+
"scripts/boxstarter.ps1",
|
30
|
+
"scripts/PackerShutdown.bat",
|
31
|
+
"scripts/package.ps1",
|
32
|
+
"scripts/SetupComplete-2012.cmd",
|
33
|
+
"scripts/Test-Command.ps1"
|
34
|
+
]
|
35
|
+
}
|
36
|
+
],
|
37
|
+
|
38
|
+
"provisioners": [
|
39
|
+
{
|
40
|
+
"type": "powershell",
|
41
|
+
"script": "scripts/provision.ps1"
|
42
|
+
}
|
43
|
+
],
|
44
|
+
"post-processors": [
|
45
|
+
{
|
46
|
+
"type": "vagrant",
|
47
|
+
"keep_input_artifact": false,
|
48
|
+
"output": "windows2012r2core-{{.Provider}}.box",
|
49
|
+
"vagrantfile_template": "vagrant_templates/vagrantfile-windows.template"
|
50
|
+
}
|
51
|
+
],
|
52
|
+
"variables": {
|
53
|
+
"core": "core",
|
54
|
+
"guest_additions_mode": "upload",
|
55
|
+
"headless": "false",
|
56
|
+
"iso_checksum": "849734f37346385dac2c101e4aacba4626bb141c",
|
57
|
+
"iso_checksum_type": "sha1",
|
58
|
+
"iso_url": "http://care.dlservice.microsoft.com/dl/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO"
|
59
|
+
}
|
60
|
+
}
|
@@ -0,0 +1,146 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<unattend xmlns="urn:schemas-microsoft-com:unattend">
|
3
|
+
<settings pass="windowsPE">
|
4
|
+
<component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
5
|
+
<SetupUILanguage>
|
6
|
+
<UILanguage>en-US</UILanguage>
|
7
|
+
</SetupUILanguage>
|
8
|
+
<InputLocale>en-US</InputLocale>
|
9
|
+
<SystemLocale>en-US</SystemLocale>
|
10
|
+
<UILanguage>en-US</UILanguage>
|
11
|
+
<UILanguageFallback>en-US</UILanguageFallback>
|
12
|
+
<UserLocale>en-US</UserLocale>
|
13
|
+
</component>
|
14
|
+
<component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
15
|
+
<DiskConfiguration>
|
16
|
+
<Disk wcm:action="add">
|
17
|
+
<CreatePartitions>
|
18
|
+
<CreatePartition wcm:action="add">
|
19
|
+
<Type>Primary</Type>
|
20
|
+
<Order>1</Order>
|
21
|
+
<Size>350</Size>
|
22
|
+
</CreatePartition>
|
23
|
+
<CreatePartition wcm:action="add">
|
24
|
+
<Order>2</Order>
|
25
|
+
<Type>Primary</Type>
|
26
|
+
<Extend>true</Extend>
|
27
|
+
</CreatePartition>
|
28
|
+
</CreatePartitions>
|
29
|
+
<ModifyPartitions>
|
30
|
+
<ModifyPartition wcm:action="add">
|
31
|
+
<Active>true</Active>
|
32
|
+
<Format>NTFS</Format>
|
33
|
+
<Label>boot</Label>
|
34
|
+
<Order>1</Order>
|
35
|
+
<PartitionID>1</PartitionID>
|
36
|
+
</ModifyPartition>
|
37
|
+
<ModifyPartition wcm:action="add">
|
38
|
+
<Format>NTFS</Format>
|
39
|
+
<Label>Windows 2012 R2</Label>
|
40
|
+
<Letter>C</Letter>
|
41
|
+
<Order>2</Order>
|
42
|
+
<PartitionID>2</PartitionID>
|
43
|
+
</ModifyPartition>
|
44
|
+
</ModifyPartitions>
|
45
|
+
<DiskID>0</DiskID>
|
46
|
+
<WillWipeDisk>true</WillWipeDisk>
|
47
|
+
</Disk>
|
48
|
+
</DiskConfiguration>
|
49
|
+
<ImageInstall>
|
50
|
+
<OSImage>
|
51
|
+
<InstallFrom>
|
52
|
+
<MetaData wcm:action="add">
|
53
|
+
<Key>/IMAGE/NAME </Key>
|
54
|
+
<Value>Windows Server 2012 R2 SERVERSTANDARDCORE</Value>
|
55
|
+
</MetaData>
|
56
|
+
</InstallFrom>
|
57
|
+
<InstallTo>
|
58
|
+
<DiskID>0</DiskID>
|
59
|
+
<PartitionID>2</PartitionID>
|
60
|
+
</InstallTo>
|
61
|
+
</OSImage>
|
62
|
+
</ImageInstall>
|
63
|
+
<UserData>
|
64
|
+
<ProductKey>
|
65
|
+
<WillShowUI>OnError</WillShowUI>
|
66
|
+
</ProductKey>
|
67
|
+
<AcceptEula>true</AcceptEula>
|
68
|
+
<FullName>Vagrant</FullName>
|
69
|
+
<Organization>Vagrant</Organization>
|
70
|
+
</UserData>
|
71
|
+
</component>
|
72
|
+
</settings>
|
73
|
+
<settings pass="generalize">
|
74
|
+
<component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
75
|
+
<SkipRearm>1</SkipRearm>
|
76
|
+
</component>
|
77
|
+
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
78
|
+
<PersistAllDeviceInstalls>false</PersistAllDeviceInstalls>
|
79
|
+
<DoNotCleanUpNonPresentDevices>false</DoNotCleanUpNonPresentDevices>
|
80
|
+
</component>
|
81
|
+
</settings>
|
82
|
+
<settings pass="oobeSystem">
|
83
|
+
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
84
|
+
<InputLocale>en-US</InputLocale>
|
85
|
+
<SystemLocale>en-US</SystemLocale>
|
86
|
+
<UILanguage>en-US</UILanguage>
|
87
|
+
<UserLocale>en-US</UserLocale>
|
88
|
+
</component>
|
89
|
+
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
90
|
+
<OOBE>
|
91
|
+
<HideEULAPage>true</HideEULAPage>
|
92
|
+
<HideLocalAccountScreen>true</HideLocalAccountScreen>
|
93
|
+
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
|
94
|
+
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
|
95
|
+
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
96
|
+
<NetworkLocation>Home</NetworkLocation>
|
97
|
+
<ProtectYourPC>1</ProtectYourPC>
|
98
|
+
</OOBE>
|
99
|
+
<TimeZone>UTC</TimeZone>
|
100
|
+
<UserAccounts>
|
101
|
+
<AdministratorPassword>
|
102
|
+
<Value>vagrant</Value>
|
103
|
+
<PlainText>true</PlainText>
|
104
|
+
</AdministratorPassword>
|
105
|
+
<LocalAccounts>
|
106
|
+
<LocalAccount wcm:action="add">
|
107
|
+
<Password>
|
108
|
+
<Value>vagrant</Value>
|
109
|
+
<PlainText>true</PlainText>
|
110
|
+
</Password>
|
111
|
+
<Group>administrators</Group>
|
112
|
+
<DisplayName>Vagrant</DisplayName>
|
113
|
+
<Name>vagrant</Name>
|
114
|
+
<Description>Vagrant User</Description>
|
115
|
+
</LocalAccount>
|
116
|
+
</LocalAccounts>
|
117
|
+
</UserAccounts>
|
118
|
+
<AutoLogon>
|
119
|
+
<Password>
|
120
|
+
<Value>vagrant</Value>
|
121
|
+
<PlainText>true</PlainText>
|
122
|
+
</Password>
|
123
|
+
<Enabled>true</Enabled>
|
124
|
+
<Username>vagrant</Username>
|
125
|
+
</AutoLogon>
|
126
|
+
<FirstLogonCommands>
|
127
|
+
<SynchronousCommand wcm:action="add">
|
128
|
+
<CommandLine>cmd.exe /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File a:\boxstarter.ps1</CommandLine>
|
129
|
+
<Order>1</Order>
|
130
|
+
</SynchronousCommand>
|
131
|
+
</FirstLogonCommands>
|
132
|
+
</component>
|
133
|
+
</settings>
|
134
|
+
<settings pass="specialize">
|
135
|
+
<component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
136
|
+
<DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
|
137
|
+
</component>
|
138
|
+
<component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
139
|
+
<IEHardenAdmin>false</IEHardenAdmin>
|
140
|
+
<IEHardenUser>false</IEHardenUser>
|
141
|
+
</component>
|
142
|
+
<component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
143
|
+
<DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon>
|
144
|
+
</component>
|
145
|
+
</settings>
|
146
|
+
</unattend>
|
@@ -0,0 +1 @@
|
|
1
|
+
netsh advfirewall firewall set rule name="WinRM-HTTP" new action=allow
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$WinlogonPath = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon"
|
2
|
+
Remove-ItemProperty -Path $WinlogonPath -Name AutoAdminLogon
|
3
|
+
Remove-ItemProperty -Path $WinlogonPath -Name DefaultUserName
|
4
|
+
|
5
|
+
iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/mwrock/boxstarter/master/BuildScripts/bootstrapper.ps1'))
|
6
|
+
Get-Boxstarter -Force
|
7
|
+
|
8
|
+
$secpasswd = ConvertTo-SecureString "vagrant" -AsPlainText -Force
|
9
|
+
$cred = New-Object System.Management.Automation.PSCredential ("vagrant", $secpasswd)
|
10
|
+
|
11
|
+
Import-Module $env:appdata\boxstarter\boxstarter.chocolatey\boxstarter.chocolatey.psd1
|
12
|
+
Install-BoxstarterPackage -PackageName a:\package.ps1 -Credential $cred
|
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
$ErrorActionPreference = "Stop"
|
2
|
+
|
3
|
+
. a:\Test-Command.ps1
|
4
|
+
|
5
|
+
Enable-RemoteDesktop
|
6
|
+
netsh advfirewall firewall add rule name="Remote Desktop" dir=in localport=3389 protocol=TCP action=allow
|
7
|
+
|
8
|
+
Update-ExecutionPolicy -Policy Unrestricted
|
9
|
+
|
10
|
+
if (Test-Command -cmdname 'Uninstall-WindowsFeature') {
|
11
|
+
Write-BoxstarterMessage "Removing unused features..."
|
12
|
+
Remove-WindowsFeature -Name 'Powershell-ISE'
|
13
|
+
Get-WindowsFeature |
|
14
|
+
? { $_.InstallState -eq 'Available' } |
|
15
|
+
Uninstall-WindowsFeature -Remove
|
16
|
+
}
|
17
|
+
|
18
|
+
#Install-WindowsUpdate -AcceptEula
|
19
|
+
|
20
|
+
Write-BoxstarterMessage "Removing page file"
|
21
|
+
$pageFileMemoryKey = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management"
|
22
|
+
Set-ItemProperty -Path $pageFileMemoryKey -Name PagingFiles -Value ""
|
23
|
+
|
24
|
+
if(Test-PendingReboot){ Invoke-Reboot }
|
25
|
+
|
26
|
+
Write-BoxstarterMessage "Setting up winrm"
|
27
|
+
netsh advfirewall firewall add rule name="WinRM-HTTP" dir=in localport=5985 protocol=TCP action=allow
|
28
|
+
|
29
|
+
$enableArgs=@{Force=$true}
|
30
|
+
try {
|
31
|
+
$command=Get-Command Enable-PSRemoting
|
32
|
+
if($command.Parameters.Keys -contains "skipnetworkprofilecheck"){
|
33
|
+
$enableArgs.skipnetworkprofilecheck=$true
|
34
|
+
}
|
35
|
+
}
|
36
|
+
catch {
|
37
|
+
$global:error.RemoveAt(0)
|
38
|
+
}
|
39
|
+
Enable-PSRemoting @enableArgs
|
40
|
+
Enable-WSManCredSSP -Force -Role Server
|
41
|
+
winrm set winrm/config/client/auth '@{Basic="true"}'
|
42
|
+
winrm set winrm/config/service/auth '@{Basic="true"}'
|
43
|
+
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
|
44
|
+
Write-BoxstarterMessage "winrm setup complete"
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<unattend xmlns="urn:schemas-microsoft-com:unattend">
|
3
|
+
<settings pass="generalize">
|
4
|
+
<component name="Microsoft-Windows-Security-SPP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
5
|
+
<SkipRearm>1</SkipRearm>
|
6
|
+
</component>
|
7
|
+
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
8
|
+
<PersistAllDeviceInstalls>false</PersistAllDeviceInstalls>
|
9
|
+
<DoNotCleanUpNonPresentDevices>false</DoNotCleanUpNonPresentDevices>
|
10
|
+
</component>
|
11
|
+
</settings>
|
12
|
+
<settings pass="oobeSystem">
|
13
|
+
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
14
|
+
<InputLocale>en-US</InputLocale>
|
15
|
+
<SystemLocale>en-US</SystemLocale>
|
16
|
+
<UILanguage>en-US</UILanguage>
|
17
|
+
<UserLocale>en-US</UserLocale>
|
18
|
+
</component>
|
19
|
+
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
20
|
+
<OOBE>
|
21
|
+
<HideEULAPage>true</HideEULAPage>
|
22
|
+
<ProtectYourPC>1</ProtectYourPC>
|
23
|
+
<NetworkLocation>Home</NetworkLocation>
|
24
|
+
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
25
|
+
</OOBE>
|
26
|
+
<TimeZone>UTC</TimeZone>
|
27
|
+
<UserAccounts>
|
28
|
+
<AdministratorPassword>
|
29
|
+
<Value>vagrant</Value>
|
30
|
+
<PlainText>true</PlainText>
|
31
|
+
</AdministratorPassword>
|
32
|
+
<LocalAccounts>
|
33
|
+
<LocalAccount wcm:action="add">
|
34
|
+
<Password>
|
35
|
+
<Value>vagrant</Value>
|
36
|
+
<PlainText>true</PlainText>
|
37
|
+
</Password>
|
38
|
+
<Group>administrators</Group>
|
39
|
+
<DisplayName>Vagrant</DisplayName>
|
40
|
+
<Name>vagrant</Name>
|
41
|
+
<Description>Vagrant User</Description>
|
42
|
+
</LocalAccount>
|
43
|
+
</LocalAccounts>
|
44
|
+
</UserAccounts>
|
45
|
+
</component>
|
46
|
+
</settings>
|
47
|
+
<settings pass="specialize">
|
48
|
+
</settings>
|
49
|
+
</unattend>
|
@@ -0,0 +1,86 @@
|
|
1
|
+
$ErrorActionPreference = "Stop"
|
2
|
+
. a:\Test-Command.ps1
|
3
|
+
|
4
|
+
Write-Host "Enabling file sharing firewale rules"
|
5
|
+
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
|
6
|
+
|
7
|
+
if(Test-Path "C:\Users\vagrant\VBoxGuestAdditions.iso") {
|
8
|
+
Write-Host "Installing Guest Additions"
|
9
|
+
certutil -addstore -f "TrustedPublisher" A:\oracle.cer
|
10
|
+
cinst 7zip.commandline -y
|
11
|
+
Move-Item C:\Users\vagrant\VBoxGuestAdditions.iso C:\Windows\Temp
|
12
|
+
7z x C:\Windows\Temp\VBoxGuestAdditions.iso -oC:\Windows\Temp\virtualbox
|
13
|
+
|
14
|
+
Start-Process -FilePath "C:\Windows\Temp\virtualbox\VBoxWindowsAdditions.exe" -ArgumentList "/S" -WorkingDirectory "C:\Windows\Temp\virtualbox" -Wait
|
15
|
+
|
16
|
+
Remove-Item C:\Windows\Temp\virtualbox -Recurse -Force
|
17
|
+
Remove-Item C:\Windows\Temp\VBoxGuestAdditions.iso -Force
|
18
|
+
}
|
19
|
+
|
20
|
+
Write-Host "Cleaning SxS..."
|
21
|
+
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
|
22
|
+
|
23
|
+
@(
|
24
|
+
"$env:localappdata\Nuget",
|
25
|
+
"$env:localappdata\temp\*",
|
26
|
+
"$env:windir\logs",
|
27
|
+
"$env:windir\panther",
|
28
|
+
"$env:windir\temp\*",
|
29
|
+
"$env:windir\winsxs\manifestcache"
|
30
|
+
) | % {
|
31
|
+
if(Test-Path $_) {
|
32
|
+
Write-Host "Removing $_"
|
33
|
+
try {
|
34
|
+
Takeown /d Y /R /f $_
|
35
|
+
Icacls $_ /GRANT:r administrators:F /T /c /q 2>&1 | Out-Null
|
36
|
+
Remove-Item $_ -Recurse -Force | Out-Null
|
37
|
+
} catch { $global:error.RemoveAt(0) }
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
Write-Host "defragging..."
|
42
|
+
if (Test-Command -cmdname 'Optimize-Volume') {
|
43
|
+
Optimize-Volume -DriveLetter C
|
44
|
+
} else {
|
45
|
+
Defrag.exe c: /H
|
46
|
+
}
|
47
|
+
|
48
|
+
Write-Host "0ing out empty space..."
|
49
|
+
$FilePath="c:\zero.tmp"
|
50
|
+
$Volume = Get-WmiObject win32_logicaldisk -filter "DeviceID='C:'"
|
51
|
+
$ArraySize= 64kb
|
52
|
+
$SpaceToLeave= $Volume.Size * 0.05
|
53
|
+
$FileSize= $Volume.FreeSpace - $SpacetoLeave
|
54
|
+
$ZeroArray= new-object byte[]($ArraySize)
|
55
|
+
|
56
|
+
$Stream= [io.File]::OpenWrite($FilePath)
|
57
|
+
try {
|
58
|
+
$CurFileSize = 0
|
59
|
+
while($CurFileSize -lt $FileSize) {
|
60
|
+
$Stream.Write($ZeroArray,0, $ZeroArray.Length)
|
61
|
+
$CurFileSize +=$ZeroArray.Length
|
62
|
+
}
|
63
|
+
}
|
64
|
+
finally {
|
65
|
+
if($Stream) {
|
66
|
+
$Stream.Close()
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
Del $FilePath
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
Write-Host "copying auto unattend file"
|
75
|
+
mkdir C:\Windows\setup\scripts
|
76
|
+
copy-item a:\SetupComplete-2012.cmd C:\Windows\setup\scripts\SetupComplete.cmd -Force
|
77
|
+
|
78
|
+
mkdir C:\Windows\Panther\Unattend
|
79
|
+
copy-item a:\postunattend.xml C:\Windows\Panther\Unattend\unattend.xml
|
80
|
+
|
81
|
+
Write-Host "Recreate pagefile after sysprep"
|
82
|
+
$System = GWMI Win32_ComputerSystem -EnableAllPrivileges
|
83
|
+
if ($system -ne $null) {
|
84
|
+
$System.AutomaticManagedPagefile = $true
|
85
|
+
$System.Put()
|
86
|
+
}
|