Unverified Commit a02e067e authored by Stefan Scherer's avatar Stefan Scherer Committed by GitHub
Browse files

Merge pull request #64 from StefanScherer/refactor-docker-install-and-pull

Refactor docker install and pull
parents 304705dc cce0c13c
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
# MSDN ISO # MSDN ISO
packer build \ packer build \
--only=vmware-iso \ --only=vmware-iso \
--var disk_type_id=3 \
--var disk_size=30720 \
--var vhv_enable=true \ --var vhv_enable=true \
--var iso_url=~/packer_cache/msdn/en_windows_server_2016_x64_dvd_9718492.iso \ --var iso_url=~/packer_cache/msdn/en_windows_server_2016_x64_dvd_9718492.iso \
--var iso_checksum=F185197AF68FAE4F0E06510A4579FC511BA27616 \ --var iso_checksum=F185197AF68FAE4F0E06510A4579FC511BA27616 \
--var iso_checksum_type=sha1 \ --var iso_checksum_type=sha1 \
--var autounattend=./tmp/2016/Autounattend.xml \ --var autounattend=./tmp/2016_core/Autounattend.xml \
windows_2016_docker.json windows_2016_docker.json
# --var disk_type_id=3 \
# --var disk_size=30720 \
...@@ -3,5 +3,9 @@ ...@@ -3,5 +3,9 @@
for template in $(ls -1 *.json); do for template in $(ls -1 *.json); do
echo $template echo $template
packer fix $template >/tmp/$$.json packer fix $template >/tmp/$$.json
if [ $? -ne 0 ]; then
cat /tmp/$$.json
exit 1
fi
mv /tmp/$$.json $template mv /tmp/$$.json $template
done done
Set-ExecutionPolicy Bypass -scope Process
New-Item -Type Directory -Path "$($env:ProgramFiles)\docker"
Write-Host "Downloading docker ..."
wget -outfile $env:TEMP\docker.zip "https://download.docker.com/win/static/edge/x86_64/docker-17.07.0-ce.zip"
Expand-Archive -Path $env:TEMP\docker.zip -DestinationPath $env:TEMP -Force
copy $env:TEMP\docker\*.exe $env:ProgramFiles\docker
Remove-Item $env:TEMP\docker.zip
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($env:ProgramFiles)\docker", [EnvironmentVariableTarget]::Machine)
$env:Path = $env:Path + ";$($env:ProgramFiles)\docker"
Write-Host "Registering docker service ..."
. dockerd --register-service -H npipe:// -H 0.0.0.0:2375 -G docker
Start-Service Docker
Write-Host "Install-PackageProvider ..."
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Write-Host "Install-Module ..."
Install-Module -Name DockerProvider -Force
Write-Host "Install-Package ..."
Set-PSRepository -InstallationPolicy Trusted -Name PSGallery
$ErrorActionStop = 'SilentlyContinue'
Install-Package -Name docker -ProviderName DockerProvider -RequiredVersion preview -Force
Set-PSRepository -InstallationPolicy Untrusted -Name PSGallery
Start-Service docker
Write-Host "Install-PackageProvider ..."
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Write-Host "Install-Module ..."
Install-Module -Name DockerMsftProviderInsider -Force
Write-Host "Install-Package ..."
Set-PSRepository -InstallationPolicy Trusted -Name PSGallery
Install-Package -Name docker -ProviderName DockerMsftProviderInsider -Force
Set-PSRepository -InstallationPolicy Untrusted -Name PSGallery
Start-Service docker
function DockerPull {
Param ([string]$image)
Write-Host Installing $image ...
$j = Start-Job -ScriptBlock { docker pull $args[0] } -ArgumentList $image
while ( $j.JobStateInfo.state -ne "Completed" -And $j.JobStateInfo.state -ne "Failed" ) {
Write-Host $j.JobStateInfo.state
Start-Sleep 10
}
$results = Receive-Job -Job $j
$results
}
DockerPull microsoft/windowsservercore:1709
DockerPull microsoft/nanoserver:1709
function DockerPull {
Param ([string]$image)
Write-Host Installing $image ...
$j = Start-Job -ScriptBlock { docker pull $args[0] } -ArgumentList $image
while ( $j.JobStateInfo.state -ne "Completed" -And $j.JobStateInfo.state -ne "Failed" ) {
Write-Host $j.JobStateInfo.state
Start-Sleep 10
}
$results = Receive-Job -Job $j
$results
}
DockerPull microsoft/windowsservercore-insider
DockerPull microsoft/nanoserver-insider
$images = ""
if (Test-Path env:docker_images) {
$images = $env:docker_images.split()
}
function DockerPull { function DockerPull {
Param ([string]$image) Param ([string]$image)
if ($image -eq "") {
return
}
Write-Host Installing $image ... Write-Host Installing $image ...
$j = Start-Job -ScriptBlock { docker pull $args[0] } -ArgumentList $image $j = Start-Job -ScriptBlock { docker pull $args[0] } -ArgumentList $image
while ( $j.JobStateInfo.state -ne "Completed" -And $j.JobStateInfo.state -ne "Failed" ) { while ( $j.JobStateInfo.state -ne "Completed" -And $j.JobStateInfo.state -ne "Failed" ) {
Write-Host $j.JobStateInfo.state Write-Host $j.JobStateInfo.state
Start-Sleep 10 Start-Sleep 30
} }
$results = Receive-Job -Job $j $results = Receive-Job -Job $j
$results $results
} }
DockerPull microsoft/windowsservercore $images | foreach {
DockerPull microsoft/nanoserver DockerPull $_
}
$docker_provider = "ce"
$docker_version = "17.10.0"
if (Test-Path env:docker_provider) {
$docker_provider = $env:docker_provider
}
if (Test-Path env:docker_version) {
$docker_version = $env:docker_version
}
if ($docker_provider -eq "ce") {
Set-ExecutionPolicy Bypass -scope Process
New-Item -Type Directory -Path "$($env:ProgramFiles)\docker"
Write-Host "Downloading docker $docker_version ..."
wget -outfile $env:TEMP\docker.zip "https://download.docker.com/win/static/edge/x86_64/docker-{0}-ce.zip" -f $docker_version
Expand-Archive -Path $env:TEMP\docker.zip -DestinationPath $env:TEMP -Force
copy $env:TEMP\docker\*.exe $env:ProgramFiles\docker
Remove-Item $env:TEMP\docker.zip
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($env:ProgramFiles)\docker", [EnvironmentVariableTarget]::Machine)
$env:Path = $env:Path + ";$($env:ProgramFiles)\docker"
Write-Host "Registering docker service ..."
. dockerd --register-service
} else {
Write-Host "Install-PackageProvider ..."
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Write-Host "Install-Module $docker_provider ..."
Install-Module -Name $docker_provider -Force
Write-Host "Install-Package version $docker_version ..."
Set-PSRepository -InstallationPolicy Trusted -Name PSGallery
$ErrorActionStop = 'SilentlyContinue'
Install-Package -Name docker -ProviderName DockerProvider -RequiredVersion $docker_version -Force
Set-PSRepository -InstallationPolicy Untrusted -Name PSGallery
}
Write-Host "Starting docker ..."
Start-Service docker
...@@ -43,10 +43,15 @@ ...@@ -43,10 +43,15 @@
"type": "windows-restart" "type": "windows-restart"
}, },
{ {
"environment_vars": [
"docker_images={{user `docker_images`}}",
"docker_provider={{user `docker_provider`}}",
"docker_version={{user `docker_version`}}"
],
"scripts": [ "scripts": [
"./scripts/docker/add-docker-group.ps1", "./scripts/docker/add-docker-group.ps1",
"./scripts/docker/10/install-docker.ps1", "./scripts/docker/install-docker.ps1",
"./scripts/docker/docker-pull-async.ps1", "./scripts/docker/docker-pull.ps1",
"./scripts/docker/open-docker-insecure-port.ps1", "./scripts/docker/open-docker-insecure-port.ps1",
"./scripts/docker/open-docker-swarm-ports.ps1", "./scripts/docker/open-docker-swarm-ports.ps1",
"./scripts/docker/remove-docker-key-json.ps1", "./scripts/docker/remove-docker-key-json.ps1",
...@@ -64,6 +69,9 @@ ...@@ -64,6 +69,9 @@
} }
], ],
"variables": { "variables": {
"docker_images": "microsoft/windowsservercore microsoft/nanoserver",
"docker_provider": "ce",
"docker_version": "17.10.0",
"source_path": "path-to.vmx" "source_path": "path-to.vmx"
} }
} }
......
...@@ -128,7 +128,8 @@ ...@@ -128,7 +128,8 @@
}, },
{ {
"scripts": [ "scripts": [
"./scripts/debloat-windows.ps1" "./scripts/debloat-windows.ps1",
"./scripts/docker/set-winrm-automatic.ps1"
], ],
"type": "powershell" "type": "powershell"
}, },
...@@ -137,11 +138,15 @@ ...@@ -137,11 +138,15 @@
"type": "windows-restart" "type": "windows-restart"
}, },
{ {
"environment_vars": [
"docker_images={{user `docker_images`}}",
"docker_provider={{user `docker_provider`}}",
"docker_version={{user `docker_version`}}"
],
"scripts": [ "scripts": [
"./scripts/docker/add-docker-group.ps1", "./scripts/docker/add-docker-group.ps1",
"./scripts/docker/set-winrm-automatic.ps1", "./scripts/docker/install-docker.ps1",
"./scripts/docker/2016/install-docker-ee-preview.ps1", "./scripts/docker/docker-pull.ps1",
"./scripts/docker/docker-pull-async.ps1",
"./scripts/docker/open-docker-insecure-port.ps1", "./scripts/docker/open-docker-insecure-port.ps1",
"./scripts/docker/open-docker-swarm-ports.ps1", "./scripts/docker/open-docker-swarm-ports.ps1",
"./scripts/docker/remove-docker-key-json.ps1", "./scripts/docker/remove-docker-key-json.ps1",
...@@ -164,6 +169,9 @@ ...@@ -164,6 +169,9 @@
"autounattend": "./answer_files/2016_core/Autounattend.xml", "autounattend": "./answer_files/2016_core/Autounattend.xml",
"disk_size": "61440", "disk_size": "61440",
"disk_type_id": "1", "disk_type_id": "1",
"docker_images": "microsoft/windowsservercore microsoft/nanoserver",
"docker_provider": "DockerProvider",
"docker_version": "stable",
"headless": "false", "headless": "false",
"iso_checksum": "70721288BBCDFE3239D8F8C0FAE55F1F", "iso_checksum": "70721288BBCDFE3239D8F8C0FAE55F1F",
"iso_checksum_type": "md5", "iso_checksum_type": "md5",
......
...@@ -38,11 +38,16 @@ ...@@ -38,11 +38,16 @@
"type": "windows-restart" "type": "windows-restart"
}, },
{ {
"environment_vars": [
"docker_images={{user `docker_images`}}",
"docker_provider={{user `docker_provider`}}",
"docker_version={{user `docker_version`}}"
],
"scripts": [ "scripts": [
"./scripts/docker/add-docker-group.ps1", "./scripts/docker/add-docker-group.ps1",
"./scripts/docker/disable-windows-defender.ps1", "./scripts/docker/disable-windows-defender.ps1",
"./scripts/docker/2016/install-docker.ps1", "./scripts/docker/install-docker.ps1",
"./scripts/docker/docker-pull-async.ps1", "./scripts/docker/docker-pull.ps1",
"./scripts/docker/remove-docker-key-json.ps1" "./scripts/docker/remove-docker-key-json.ps1"
], ],
"type": "powershell" "type": "powershell"
...@@ -53,6 +58,9 @@ ...@@ -53,6 +58,9 @@
"azure_ad_tenant_id": "{{env `PACKER_AZURE_AD_TENANT_ID`}}", "azure_ad_tenant_id": "{{env `PACKER_AZURE_AD_TENANT_ID`}}",
"azure_subscription_id": "{{env `PACKER_AZURE_SUBSCRIPTION_ID`}}", "azure_subscription_id": "{{env `PACKER_AZURE_SUBSCRIPTION_ID`}}",
"client_secret": "{{env `PACKER_AZURE_CLIENT_SECRET`}}", "client_secret": "{{env `PACKER_AZURE_CLIENT_SECRET`}}",
"docker_images": "microsoft/windowsservercore microsoft/nanoserver",
"docker_provider": "DockerProvider",
"docker_version": "stable",
"headless": "false", "headless": "false",
"object_id": "{{env `PACKER_AZURE_OBJECT_ID`}}", "object_id": "{{env `PACKER_AZURE_OBJECT_ID`}}",
"resource_group": "{{env `PACKER_AZURE_RESOURCE_GROUP`}}", "resource_group": "{{env `PACKER_AZURE_RESOURCE_GROUP`}}",
......
...@@ -138,11 +138,16 @@ ...@@ -138,11 +138,16 @@
"type": "windows-restart" "type": "windows-restart"
}, },
{ {
"environment_vars": [
"docker_images={{user `docker_images`}}",
"docker_provider={{user `docker_provider`}}",
"docker_version={{user `docker_version`}}"
],
"scripts": [ "scripts": [
"./scripts/docker/add-docker-group.ps1", "./scripts/docker/add-docker-group.ps1",
"./scripts/docker/set-winrm-automatic.ps1", "./scripts/docker/set-winrm-automatic.ps1",
"./scripts/docker/2016/install-docker-ee-preview.ps1", "./scripts/docker/install-docker.ps1",
"./scripts/docker/docker-pull-1709-async.ps1", "./scripts/docker/docker-pull.ps1",
"./scripts/docker/open-docker-insecure-port.ps1", "./scripts/docker/open-docker-insecure-port.ps1",
"./scripts/docker/open-docker-swarm-ports.ps1", "./scripts/docker/open-docker-swarm-ports.ps1",
"./scripts/docker/remove-docker-key-json.ps1", "./scripts/docker/remove-docker-key-json.ps1",
...@@ -166,6 +171,9 @@ ...@@ -166,6 +171,9 @@
"autounattend": "./answer_files/server_1709/Autounattend.xml", "autounattend": "./answer_files/server_1709/Autounattend.xml",
"disk_size": "61440", "disk_size": "61440",
"disk_type_id": "1", "disk_type_id": "1",
"docker_images": "microsoft/windowsservercore:1709 microsoft/nanoserver:1709",
"docker_provider": "DockerProvider",
"docker_version": "preview",
"headless": "false", "headless": "false",
"iso_checksum": "ca1108d5be2c091bfb57e8f3db3be1e8baa9c32802131f7a6e43e63f7b596591", "iso_checksum": "ca1108d5be2c091bfb57e8f3db3be1e8baa9c32802131f7a6e43e63f7b596591",
"iso_checksum_type": "sha256", "iso_checksum_type": "sha256",
......
...@@ -125,10 +125,15 @@ ...@@ -125,10 +125,15 @@
"type": "windows-restart" "type": "windows-restart"
}, },
{ {
"environment_vars": [
"docker_images={{user `docker_images`}}",
"docker_provider={{user `docker_provider`}}",
"docker_version={{user `docker_version`}}"
],
"scripts": [ "scripts": [
"./scripts/docker/add-docker-group.ps1", "./scripts/docker/add-docker-group.ps1",
"./scripts/docker/2016/install-docker-ee-preview.ps1", "./scripts/docker/install-docker.ps1",
"./scripts/docker/docker-pull-insider-async.ps1", "./scripts/docker/docker-pull.ps1",
"./scripts/docker/open-docker-insecure-port.ps1", "./scripts/docker/open-docker-insecure-port.ps1",
"./scripts/docker/open-docker-swarm-ports.ps1", "./scripts/docker/open-docker-swarm-ports.ps1",
"./scripts/docker/remove-docker-key-json.ps1", "./scripts/docker/remove-docker-key-json.ps1",
...@@ -141,6 +146,9 @@ ...@@ -141,6 +146,9 @@
"autounattend": "./answer_files/server_insider/Autounattend.xml", "autounattend": "./answer_files/server_insider/Autounattend.xml",
"disk_size": "61440", "disk_size": "61440",
"disk_type_id": "1", "disk_type_id": "1",
"docker_images": "microsoft/windowsservercore-insider microsoft/nanoserver-insider",
"docker_provider": "DockerProvider",
"docker_version": "preview",
"headless": "false", "headless": "false",
"iso_checksum": "dd412bd5c7d29fa5166a10f4cb36dacf7fcb605a5b8e8a6e8fa87e13aed6851d", "iso_checksum": "dd412bd5c7d29fa5166a10f4cb36dacf7fcb605a5b8e8a6e8fa87e13aed6851d",
"iso_checksum_type": "sha256", "iso_checksum_type": "sha256",
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment