Merge pull request #54 from ddelnano/ddelnano/update-ubuntu-example-to-be-resilent-to-new-releases

Update the ubuntu example to be resilient to ISO releases
This commit is contained in:
Dom Del Nano 2023-02-26 20:06:18 -08:00 committed by GitHub
commit f72f00341c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 6 deletions

View File

@ -7,7 +7,8 @@ In order to see an exhaustive list of configuration options for the packer build
### Running the examples ### Running the examples
In order to run the examples you will need to perform the following steps: In order to run the examples you will need to perform the following steps:
1. Export those vars: 1. Install packer 1.8 or later (the Ubuntu example requires the `http` data source)
2. Export those vars:
``` ```
PKR_VAR_remote_host PKR_VAR_remote_host
PKR_VAR_remote_password PKR_VAR_remote_password
@ -17,9 +18,9 @@ PKR_VAR_sr_iso_name
``` ```
`PKR_VAR_remote_host` must be the resource pool primary, aka the master. `PKR_VAR_remote_host` must be the resource pool primary, aka the master.
2. Run `packer init path/to/defenition.pkr.hcl` to download the xenserver plugin 3. Run `packer init path/to/defenition.pkr.hcl` to download the xenserver plugin
2. Run `packer build path/to/defenition.pkr.hcl` 4. Run `packer build path/to/defenition.pkr.hcl`
so for example: so for example:
`packer build examples/centos/centos8-netinstall.pkr.hcl` `packer build examples/centos/centos8-netinstall.pkr.hcl`

View File

@ -7,6 +7,25 @@ packer {
} }
} }
# This local determines what Ubuntu iso URL and sha256 hash we lookup. Updating
# this will allow a new version to be pulled in.
local "ubuntu_version" {
expression = "22.04"
}
data "http" "ubuntu_sha_and_release" {
url = "https://releases.ubuntu.com/22.04/SHA256SUMS"
}
local "ubuntu_sha256" {
expression = regex("([A-Za-z0-9]+)[\\s\\*]+ubuntu-.*server", data.http.ubuntu_sha_and_release.body)
}
local "ubuntu_url_path" {
expression = regex("[A-Za-z0-9]+[\\s\\*]+ubuntu-${local.ubuntu_version}.(\\d+)-live-server-amd64.iso", data.http.ubuntu_sha_and_release.body)
}
variable "remote_host" { variable "remote_host" {
type = string type = string
description = "The ip or fqdn of your XenServer. This will be pulled from the env var 'PKR_VAR_XAPI_HOST'" description = "The ip or fqdn of your XenServer. This will be pulled from the env var 'PKR_VAR_XAPI_HOST'"
@ -48,9 +67,9 @@ locals {
source "xenserver-iso" "ubuntu-2004" { source "xenserver-iso" "ubuntu-2004" {
iso_checksum = "5035be37a7e9abbdc09f0d257f3e33416c1a0fb322ba860d42d74aa75c3468d4" iso_checksum = local.ubuntu_sha256.0
iso_checksum_type = "sha256" iso_checksum_type = "sha256"
iso_url = "http://releases.ubuntu.com/20.04/ubuntu-20.04.5-live-server-amd64.iso" iso_url = "https://releases.ubuntu.com/22.04/ubuntu-22.04.${local.ubuntu_url_path.0}-live-server-amd64.iso"
sr_iso_name = var.sr_iso_name sr_iso_name = var.sr_iso_name
sr_name = var.sr_name sr_name = var.sr_name
@ -65,7 +84,7 @@ source "xenserver-iso" "ubuntu-2004" {
vm_name = "packer-ubuntu-2004-${local.timestamp}" vm_name = "packer-ubuntu-2004-${local.timestamp}"
vm_description = "Build started: ${local.timestamp}" vm_description = "Build started: ${local.timestamp}"
vm_memory = 4096 vm_memory = 4096
disk_size = 20000 disk_size = 30720
floppy_files = [ floppy_files = [
"examples/http/ubuntu-2004/meta-data", "examples/http/ubuntu-2004/meta-data",