Files
podman/contrib/cirrus/packer/libpod_base_images.yml
Chris Evich e0ca4a2260 Cirrus: Support testing with F31
Signed-off-by: Chris Evich <cevich@redhat.com>
2020-02-25 12:34:24 -05:00

165 lines
5.9 KiB
YAML

---
variables:
# Complete local path to this repository (Required)
GOSRC:
# Relative path to this (packer) subdirectory (Required)
PACKER_BASE:
# Relative path to cirrus scripts subdirectory (Required)
SCRIPT_BASE:
# Unique ID for naming new base-images (required)
TIMESTAMP:
# Required for output from qemu builders
TTYDEV:
# Ubuntu releases are mearly copied to this project for control purposes
UBUNTU_BASE_IMAGE:
PRIOR_UBUNTU_BASE_IMAGE:
# Latest Fedora release
FEDORA_IMAGE_URL: "https://dl.fedoraproject.org/pub/fedora/linux/releases/31/Cloud/x86_64/images/Fedora-Cloud-Base-31-1.9.x86_64.qcow2"
FEDORA_CSUM_URL: "https://dl.fedoraproject.org/pub/fedora/linux/releases/31/Cloud/x86_64/images/Fedora-Cloud-31-1.9-x86_64-CHECKSUM"
FEDORA_BASE_IMAGE_NAME: 'fedora-cloud-base-31-1-9'
# Prior Fedora release
PRIOR_FEDORA_IMAGE_URL: "https://dl.fedoraproject.org/pub/fedora/linux/releases/30/Cloud/x86_64/images/Fedora-Cloud-Base-30-1.2.x86_64.qcow2"
PRIOR_FEDORA_CSUM_URL: "https://dl.fedoraproject.org/pub/fedora/linux/releases/30/Cloud/x86_64/images/Fedora-Cloud-30-1.2-x86_64-CHECKSUM"
PRIOR_FEDORA_BASE_IMAGE_NAME: 'fedora-cloud-base-30-1-2'
# The name of the image in GCE used for packer build libpod_images.yml
IBI_BASE_NAME: 'image-builder-image'
CIDATA_ISO: 'cidata.iso' # produced by Makefile
# Path to json file (required, likely ~/.config/gcloud/legacy_credentials/*/adc.json)
GOOGLE_APPLICATION_CREDENTIALS:
# The complete project ID (required, not the short name)
GCP_PROJECT_ID:
# Pre-existing storage bucket w/ lifecycle-enabled
XFERBUCKET: "packer-import" # pre-created, globally unique, lifecycle-enabled
# Don't leak sensitive values in error messages / output
sensitive-variables:
- 'GOOGLE_APPLICATION_CREDENTIALS'
- 'GCP_PROJECT_ID'
# What images to produce in which cloud
builders:
- &nested_virt
name: 'fedora'
type: 'qemu'
accelerator: "kvm"
iso_url: '{{user `FEDORA_IMAGE_URL`}}'
disk_image: true
format: "raw"
disk_size: 5120
iso_checksum_url: '{{user `FEDORA_CSUM_URL`}}'
iso_checksum_type: "sha256"
output_directory: '/tmp/{{build_name}}'
vm_name: "disk.raw" # actually qcow2, name required for post-processing
boot_wait: '5s'
shutdown_command: 'shutdown -h now'
headless: true
qemu_binary: "/usr/libexec/qemu-kvm"
qemuargs: # List-of-list format required to override packer-generated args
- - "-m"
- "1024"
- - "-cpu"
- "host"
- - "-device"
- "virtio-rng-pci"
- - "-chardev"
- "tty,id=pts,path={{user `TTYDEV`}}"
- - "-device"
- "isa-serial,chardev=pts"
- - "-cdrom"
- "{{user `CIDATA_ISO`}}"
- - "-netdev"
- "user,id=net0,hostfwd=tcp::{{ .SSHHostPort }}-:22"
- - "-device"
- "virtio-net,netdev=net0"
communicator: 'ssh'
ssh_private_key_file: 'cidata.ssh'
ssh_username: 'root'
- <<: *nested_virt
name: 'prior-fedora'
iso_url: '{{user `PRIOR_FEDORA_IMAGE_URL`}}'
iso_checksum_url: '{{user `PRIOR_FEDORA_CSUM_URL`}}'
- &imgcopy
name: 'ubuntu'
type: 'googlecompute'
image_name: '{{user `UBUNTU_BASE_IMAGE`}}'
image_family: '{{build_name}}-base'
source_image: '{{user `UBUNTU_BASE_IMAGE`}}'
source_image_project_id: 'ubuntu-os-cloud'
project_id: '{{user `GCP_PROJECT_ID`}}'
account_file: '{{user `GOOGLE_APPLICATION_CREDENTIALS`}}'
startup_script_file: "systemd_banish.sh"
zone: 'us-central1-a'
disk_size: 20
communicator: 'none'
- <<: *imgcopy
name: 'prior-ubuntu'
image_name: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}'
source_image: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}'
provisioners:
- type: 'shell'
only: ['fedora', 'prior-fedora']
inline:
- 'mkdir -p /tmp/libpod/{{user `SCRIPT_BASE`}}'
- 'mkdir -p /tmp/libpod/{{user `PACKER_BASE`}}'
- type: 'file'
only: ['fedora', 'prior-fedora']
source: '{{user `GOSRC`}}/.cirrus.yml'
destination: '/tmp/libpod/.cirrus.yml'
- type: 'file'
only: ['fedora', 'prior-fedora']
source: '{{user `GOSRC`}}/{{user `SCRIPT_BASE`}}/'
destination: '/tmp/libpod/{{user `SCRIPT_BASE`}}/'
- type: 'file'
only: ['fedora', 'prior-fedora']
source: '{{user `GOSRC`}}/{{user `PACKER_BASE`}}/'
destination: '/tmp/libpod/{{user `PACKER_BASE`}}/'
- &shell_script
only: ['fedora', 'prior-fedora']
type: 'shell'
inline:
- 'chmod +x /tmp/libpod/{{user `PACKER_BASE`}}/*.sh'
- '/tmp/libpod/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh'
expect_disconnect: true # Allow this to reboot the VM if needed
environment_vars:
- 'TIMESTAMP={{user `TIMESTAMP`}}'
- 'GOSRC=/tmp/libpod'
- 'SCRIPT_BASE={{user `SCRIPT_BASE`}}'
- 'PACKER_BASE={{user `PACKER_BASE`}}'
post-processors:
- - type: "compress"
only: ['fedora', 'prior-fedora']
output: '/tmp/{{build_name}}/disk.raw.tar.gz'
format: '.tar.gz'
compression_level: 9
- &gcp_import
only: ['fedora']
type: "googlecompute-import"
project_id: '{{user `GCP_PROJECT_ID`}}'
account_file: '{{user `GOOGLE_APPLICATION_CREDENTIALS`}}'
bucket: '{{user `XFERBUCKET`}}'
gcs_object_name: '{{build_name}}-{{user `TIMESTAMP`}}.tar.gz'
image_name: "{{user `FEDORA_BASE_IMAGE_NAME`}}-{{user `TIMESTAMP`}}"
image_description: 'Based on {{user `FEDORA_IMAGE_URL`}}'
image_family: '{{build_name}}-base'
- <<: *gcp_import
only: ['prior-fedora']
image_name: "{{user `PRIOR_FEDORA_BASE_IMAGE_NAME`}}-{{user `TIMESTAMP`}}"
image_description: 'Based on {{user `PRIOR_FEDORA_IMAGE_URL`}}'
image_family: '{{build_name}}-base'
- type: 'manifest'