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'