github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/contrib/cirrus/packer/libpod_base_images.yml (about) 1 --- 2 3 variables: 4 # Complete local path to this repository (Required) 5 GOSRC: 6 # Relative path to this (packer) subdirectory (Required) 7 PACKER_BASE: 8 # Relative path to cirrus scripts subdirectory (Required) 9 SCRIPT_BASE: 10 # Unique ID for naming new base-images (required) 11 TIMESTAMP: 12 # Required for output from qemu builders 13 TTYDEV: 14 15 # Ubuntu releases are merely copied to this project for control purposes 16 UBUNTU_BASE_IMAGE: 17 PRIOR_UBUNTU_BASE_IMAGE: 18 19 # Latest Fedora release 20 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" 21 FEDORA_CSUM_URL: "https://dl.fedoraproject.org/pub/fedora/linux/releases/31/Cloud/x86_64/images/Fedora-Cloud-31-1.9-x86_64-CHECKSUM" 22 FEDORA_BASE_IMAGE_NAME: 'fedora-cloud-base-31-1-9' 23 24 # Prior Fedora release 25 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" 26 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" 27 PRIOR_FEDORA_BASE_IMAGE_NAME: 'fedora-cloud-base-30-1-2' 28 29 # The name of the image in GCE used for packer build libpod_images.yml 30 IBI_BASE_NAME: 'image-builder-image' 31 CIDATA_ISO: 'cidata.iso' # produced by Makefile 32 33 # Path to json file (required, likely ~/.config/gcloud/legacy_credentials/*/adc.json) 34 GOOGLE_APPLICATION_CREDENTIALS: 35 # The complete project ID (required, not the short name) 36 GCP_PROJECT_ID: 37 # Pre-existing storage bucket w/ lifecycle-enabled 38 XFERBUCKET: "packer-import" # pre-created, globally unique, lifecycle-enabled 39 40 # Don't leak sensitive values in error messages / output 41 sensitive-variables: 42 - 'GOOGLE_APPLICATION_CREDENTIALS' 43 - 'GCP_PROJECT_ID' 44 45 # What images to produce in which cloud 46 builders: 47 - &nested_virt 48 name: 'fedora' 49 type: 'qemu' 50 accelerator: "kvm" 51 iso_url: '{{user `FEDORA_IMAGE_URL`}}' 52 disk_image: true 53 format: "raw" 54 disk_size: 5120 55 iso_checksum_url: '{{user `FEDORA_CSUM_URL`}}' 56 iso_checksum_type: "sha256" 57 output_directory: '/tmp/{{build_name}}' 58 vm_name: "disk.raw" # actually qcow2, name required for post-processing 59 boot_wait: '5s' 60 shutdown_command: 'shutdown -h now' 61 headless: true 62 qemu_binary: "/usr/libexec/qemu-kvm" 63 qemuargs: # List-of-list format required to override packer-generated args 64 - - "-m" 65 - "1024" 66 - - "-cpu" 67 - "host" 68 - - "-device" 69 - "virtio-rng-pci" 70 - - "-chardev" 71 - "tty,id=pts,path={{user `TTYDEV`}}" 72 - - "-device" 73 - "isa-serial,chardev=pts" 74 - - "-cdrom" 75 - "{{user `CIDATA_ISO`}}" 76 - - "-netdev" 77 - "user,id=net0,hostfwd=tcp::{{ .SSHHostPort }}-:22" 78 - - "-device" 79 - "virtio-net,netdev=net0" 80 communicator: 'ssh' 81 ssh_private_key_file: 'cidata.ssh' 82 ssh_username: 'root' 83 84 - <<: *nested_virt 85 name: 'prior-fedora' 86 iso_url: '{{user `PRIOR_FEDORA_IMAGE_URL`}}' 87 iso_checksum_url: '{{user `PRIOR_FEDORA_CSUM_URL`}}' 88 89 - &imgcopy 90 name: 'ubuntu' 91 type: 'googlecompute' 92 image_name: '{{user `UBUNTU_BASE_IMAGE`}}' 93 image_family: '{{build_name}}-base' 94 source_image: '{{user `UBUNTU_BASE_IMAGE`}}' 95 source_image_project_id: 'ubuntu-os-cloud' 96 project_id: '{{user `GCP_PROJECT_ID`}}' 97 account_file: '{{user `GOOGLE_APPLICATION_CREDENTIALS`}}' 98 startup_script_file: "systemd_banish.sh" 99 zone: 'us-central1-a' 100 disk_size: 20 101 communicator: 'none' 102 103 - <<: *imgcopy 104 name: 'prior-ubuntu' 105 image_name: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}' 106 source_image: '{{user `PRIOR_UBUNTU_BASE_IMAGE`}}' 107 108 provisioners: 109 - type: 'shell' 110 only: ['fedora', 'prior-fedora'] 111 inline: 112 - 'mkdir -p /tmp/libpod/{{user `SCRIPT_BASE`}}' 113 - 'mkdir -p /tmp/libpod/{{user `PACKER_BASE`}}' 114 115 - type: 'file' 116 only: ['fedora', 'prior-fedora'] 117 source: '{{user `GOSRC`}}/.cirrus.yml' 118 destination: '/tmp/libpod/.cirrus.yml' 119 120 - type: 'file' 121 only: ['fedora', 'prior-fedora'] 122 source: '{{user `GOSRC`}}/{{user `SCRIPT_BASE`}}/' 123 destination: '/tmp/libpod/{{user `SCRIPT_BASE`}}/' 124 125 - type: 'file' 126 only: ['fedora', 'prior-fedora'] 127 source: '{{user `GOSRC`}}/{{user `PACKER_BASE`}}/' 128 destination: '/tmp/libpod/{{user `PACKER_BASE`}}/' 129 130 - &shell_script 131 only: ['fedora', 'prior-fedora'] 132 type: 'shell' 133 inline: 134 - 'chmod +x /tmp/libpod/{{user `PACKER_BASE`}}/*.sh' 135 - '/tmp/libpod/{{user `PACKER_BASE`}}/{{build_name}}_base-setup.sh' 136 expect_disconnect: true # Allow this to reboot the VM if needed 137 environment_vars: 138 - 'TIMESTAMP={{user `TIMESTAMP`}}' 139 - 'GOSRC=/tmp/libpod' 140 - 'SCRIPT_BASE={{user `SCRIPT_BASE`}}' 141 - 'PACKER_BASE={{user `PACKER_BASE`}}' 142 143 post-processors: 144 - - type: "compress" 145 only: ['fedora', 'prior-fedora'] 146 output: '/tmp/{{build_name}}/disk.raw.tar.gz' 147 format: '.tar.gz' 148 compression_level: 9 149 - &gcp_import 150 only: ['fedora'] 151 type: "googlecompute-import" 152 project_id: '{{user `GCP_PROJECT_ID`}}' 153 account_file: '{{user `GOOGLE_APPLICATION_CREDENTIALS`}}' 154 bucket: '{{user `XFERBUCKET`}}' 155 gcs_object_name: '{{build_name}}-{{user `TIMESTAMP`}}.tar.gz' 156 image_name: "{{user `FEDORA_BASE_IMAGE_NAME`}}-{{user `TIMESTAMP`}}" 157 image_description: 'Based on {{user `FEDORA_IMAGE_URL`}}' 158 image_family: '{{build_name}}-base' 159 - <<: *gcp_import 160 only: ['prior-fedora'] 161 image_name: "{{user `PRIOR_FEDORA_BASE_IMAGE_NAME`}}-{{user `TIMESTAMP`}}" 162 image_description: 'Based on {{user `PRIOR_FEDORA_IMAGE_URL`}}' 163 image_family: '{{build_name}}-base' 164 - type: 'manifest'