CoreOS.ps1
<#
#> function Get-CoreOSImage { $cache = Get-BoxPath -Path "cache" $ProgressPreference = "SilentlyContinue" ##### Get metadata Write-Host "Checking new CoreOS image ..." -NoNewline $response = Invoke-WebRequest "https://builds.coreos.fedoraproject.org/streams/stable.json" Write-Host -ForegroundColor Green " Done." $data = $response.Content | ConvertFrom-Json $virtualbox = $data.architectures.x86_64.artifacts.virtualbox #### Get cached image $imageFile = Join-Path $cache "fedora-coreos-$($virtualbox.release)-virtualbox.x86_64.ova" if (Test-Path $imageFile -PathType Leaf) { return $imageFile } #### Download new image $disk = $virtualbox.formats.ova.disk $tmpImageFile = "${imageFile}.tmp" if (Test-Path $tmpImageFile -PathType Leaf) { Remove-Item $tmpImageFile } $response = Invoke-WebRequest $disk.location -UseBasicParsing -Method Head $downloadSize = [int]$response.Headers["Content-Length"] Write-Host "Downloading new CoreOS image '$($virtualbox.release)' ($([int]($downloadSize / 1024 / 1024)) MB) ..." -NoNewline Invoke-WebRequest $disk.location -OutFile $tmpImageFile Write-Host -ForegroundColor Green " Done." $hash = (Get-FileHash $tmpImageFile -Algorithm SHA256).Hash if (-Not($hash -eq $disk.sha256)) { # Remove-Item $tmpImageFile Write-Host -ForegroundColor Red "Downloaded CoreOs image '$($virtualbox.release)' hash check failed." return } Move-Item $tmpImageFile $imageFile return $imageFile } function Get-CoreOSIgnitionConfig { param( [Parameter(mandatory = $true)] [string] $Hostname ) $config = @' { "ignition": { "version": "3.4.0" }, "passwd": { "users": [ { "name": "box", "passwordHash": "$y$j9T$BAlET20ZhfuQ.YzttOAaA.$8O8Fb/0UMSq5TPyufNVGffUrUYiazipQglTTo4VN.iB", "sshAuthorizedKeys": [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJdMddarXNcDnTCO2TFoF5uqrD3sicDofldtedxhlDdU box" ] } ] } "storage": { "files": [{ "path": "/etc/hostname", "mode": 420, "overwrite": true, "contents": { "source": "data:,${Hostname}" } }] } } '@ $config = '{"ignition": { "version": "3.4.0" }}' $config = @' {"ignition": { "version": "3.4.0" }, "storage": { "files": [{ "path": "/etc/hostname", "mode": 420, "overwrite": true, "contents": { "source": "data:,xtec" } }] }} '@ return $config } |