Skip to content

Commit 9fc47a1

Browse files
florindragosdavejrt
authored andcommitted
Windows - remove docker on ensure absent (#318)
1 parent 275dfb0 commit 9fc47a1

File tree

4 files changed

+97
-21
lines changed

4 files changed

+97
-21
lines changed

manifests/install.pp

+29-20
Original file line numberDiff line numberDiff line change
@@ -89,28 +89,37 @@
8989
name => $docker::docker_package_name,
9090
}))
9191
} else {
92-
if $docker::package_location {
93-
exec { 'install-docker-package':
94-
command => template('docker/windows/download_docker.ps1.erb'),
95-
provider => powershell,
96-
unless => template('docker/windows/check_docker_url.ps1.erb'),
97-
logoutput => true,
98-
notify => Exec['service-restart-on-failure'],
99-
}
92+
if $ensure == 'absent' {
93+
exec { 'remove-docker-package':
94+
command => template('docker/windows/remove_docker.ps1.erb'),
95+
provider => powershell,
96+
unless => template('docker/windows/check_docker.ps1.erb'),
97+
logoutput => true,
98+
}
10099
} else {
101-
exec { 'install-docker-package':
102-
command => template('docker/windows/install_powershell_provider.ps1.erb'),
103-
provider => powershell,
104-
unless => template('docker/windows/check_powershell_provider.ps1.erb'),
105-
logoutput => true,
106-
notify => Exec['service-restart-on-failure'],
100+
if $docker::package_location {
101+
exec { 'install-docker-package':
102+
command => template('docker/windows/download_docker.ps1.erb'),
103+
provider => powershell,
104+
unless => template('docker/windows/check_docker_url.ps1.erb'),
105+
logoutput => true,
106+
notify => Exec['service-restart-on-failure'],
107+
}
108+
} else {
109+
exec { 'install-docker-package':
110+
command => template('docker/windows/install_powershell_provider.ps1.erb'),
111+
provider => powershell,
112+
unless => template('docker/windows/check_powershell_provider.ps1.erb'),
113+
logoutput => true,
114+
notify => Exec['service-restart-on-failure'],
115+
}
116+
}
117+
exec { 'service-restart-on-failure':
118+
command => 'SC.exe failure Docker reset= 432000 actions= restart/30000/restart/60000/restart/60000',
119+
refreshonly => true,
120+
logoutput => true,
121+
provider => powershell,
107122
}
108-
}
109-
exec { 'service-restart-on-failure':
110-
command => 'SC.exe failure Docker reset= 432000 actions= restart/30000/restart/60000/restart/60000',
111-
refreshonly => true,
112-
logoutput => true,
113-
provider => powershell,
114123
}
115124
}
116125
}
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# this file checks the status of the Windows Docker package using the DockerMsftProvider powershell provider
2+
$dockerProviderName="DockerMsftProvider"
3+
4+
Write-Information "Checking Docker package."
5+
$package=Get-Package <%= @docker_ee_package_name %> -ProviderName $dockerProviderName -ErrorAction Ignore
6+
if ($package -ne $null) {
7+
Exit 1
8+
}
9+
10+
$service = Get-Service "docker" -ErrorAction Ignore
11+
if ($service -ne $null) {
12+
exit 1
13+
}
14+
15+
if (Test-Path -Path "$env:ProgramFiles\docker") {
16+
exit 1
17+
}
18+
19+
exit 0

templates/windows/download_docker.ps1.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ if ($cleanInstall) {
3636

3737
# Register the Docker daemon as a service.
3838
dockerd --register-service
39-
}
39+
}
+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# this file install the Windows Docker package using the DockerMsftProvider powershell provider
2+
$dockerProviderName="DockerMsftProvider"
3+
4+
$package=Get-Package <%= @docker_ee_package_name %> -ProviderName $dockerProviderName -ErrorAction Ignore
5+
If ($package -ne $null) {
6+
Write-Information "Uninstalling Docker Package"
7+
$package=Uninstall-Package <%= @docker_ee_package_name %> -ProviderName $dockerProviderName -Force
8+
<% if @version -%>
9+
-RequiredVersion <%= @version %>
10+
<% end -%>
11+
If ($package -eq $null) {
12+
Write-Error "Failed to uninstall Docker Package"
13+
Exit 1
14+
}
15+
}
16+
17+
$provider = Get-Module -ListAvailable -Name $dockerProviderName -ErrorAction Ignore
18+
If ($provider -ne $null) {
19+
Write-Information "Uninstalling Docker Provider"
20+
Uninstall-Module $dockerProviderName -Force
21+
22+
$provider = Get-Module -ListAvailable -Name $dockerProviderName -ErrorAction Ignore
23+
If ($provider -ne $null) {
24+
Write-Error "Failed to uninstall Docker Microsoft Provider"
25+
Exit 1
26+
}
27+
}
28+
29+
$service = Get-Service "docker" -ErrorAction Ignore
30+
if ($service -ne $null) {
31+
if ( $service.Status -ne [ServiceProcess.ServiceControllerStatus]::Stopped ) {
32+
$timeSpan = New-Object Timespan 0,0,60
33+
try {
34+
$service.Stop()
35+
$service.WaitForStatus([ServiceProcess.ServiceControllerStatus]::Stopped, 60)
36+
}
37+
catch [Management.Automation.MethodInvocationException],[ServiceProcess.TimeoutException] {
38+
Write-Error "Failed to stop docker service"
39+
exit 1
40+
}
41+
}
42+
43+
sc.exe delete "docker"
44+
}
45+
46+
if (Test-Path -Path "$env:ProgramFiles\docker") {
47+
Remove-Item "$env:ProgramFiles\docker" -Recurse -Force
48+
}

0 commit comments

Comments
 (0)