mirror of
https://github.com/containers/podman.git
synced 2025-10-11 00:06:32 +08:00
165 lines
5.9 KiB
YAML
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'
|