minimal-ubuntu.json

{
  "variables": {
    "iso_url": "http://cdimage.ubuntu.com/releases/bionic/release/ubuntu-18.04.6-server-amd64.iso",
    "iso_checksum": "f5cbb8104348f0097a8e513b10173a07dbc6684595e331cb06f93f385d0aecf6",
    "iso_checksum_type": "sha256"
  },
  "provisioners": [
    {
      "type": "file",
      "source": "{{ template_dir }}/scripts/Ubuntu/custom-scripts",
      "destination": "./custom-scripts"
    },
    {
      "type": "file",
      "source": "{{ template_dir }}/scripts/Ubuntu/",
      "destination": "./"
    },
    {
      "type": "shell",
      "environment_vars": [
        "USER_NAME={{ user `install_user` }}",
        "USER_PASSWORD={{ user `install_password` }}",
        "USER_HOME={{ user `install_home` }}",
        "APPVEYOR_BUILD_AGENT_VERSION={{user `APPVEYOR_BUILD_AGENT_VERSION` }}",
        "DATEMARK={{ user `datemark` }}",
        "OPT_FEATURES={{ user `opt_features` }}"
      ],
      "execute_command": "echo '{{ user `install_password` }}' | {{.Vars}} sudo -S -E bash -eu '{{.Path}}' {{user `deploy_parts`}}",
      "scripts": [
        "{{ template_dir }}/scripts/Ubuntu/minimalconfig.sh"
      ]
    },
    {
        "type": "shell",
        "scripts":[
            "{{ template_dir }}/scripts/Ubuntu/run_custom_scripts.sh"
        ]
    },
    {
      "type": "shell",
      "inline": [
        "if [ -f pwd-{{ user `datemark` }}.log ]; then rm pwd-{{ user `datemark` }}.log; fi",
        "if [ -f .ssh/authorized_keys ]; then rm .ssh/authorized_keys; fi"
       ]
    }
  ],
  "builders": [
    {
      "type": "googlecompute",
      "account_file": "{{user `gce_account_file`}}",
      "project_id": "{{ user `gce_project` }}",
      "zone": "{{ user `gce_zone` }}",
      "source_image_family": "ubuntu-1804-lts",
      "state_timeout" : "15m",
      "scopes": [
          "https://www.googleapis.com/auth/userinfo.email",
          "https://www.googleapis.com/auth/compute",
          "https://www.googleapis.com/auth/devstorage.full_control",
          "https://www.googleapis.com/auth/devstorage.read_only",
          "https://www.googleapis.com/auth/logging.write",
          "https://www.googleapis.com/auth/monitoring.write",
          "https://www.googleapis.com/auth/servicecontrol",
          "https://www.googleapis.com/auth/service.management.readonly",
          "https://www.googleapis.com/auth/trace.append"
        ],
      "machine_type": "n1-standard-1",
      "ssh_username": "{{ user `install_user` }}",
      "instance_name": "packer-ubuntu1804-{{uuid}}",
      "image_name": "packer-ubuntu1804-{{timestamp}}",
      "image_description": "{{ user `image_description` }}",
      "disk_size": 40,
      "disk_type": "pd-ssd",
      "image_licenses": ["projects/vm-options/global/licenses/enable-vmx"]
    },
    {
      "type": "amazon-ebs",
      "access_key": "{{user `aws_access_key`}}",
      "secret_key": "{{user `aws_secret_key`}}",
      "region": "{{user `aws_region`}}",
      "source_ami_filter": {
        "filters": {
        "virtualization-type": "hvm",
        "name": "ubuntu/images/*ubuntu-bionic-18.04-amd64-server-*",
        "root-device-type": "ebs"
        },
        "owners": ["099720109477"],
        "most_recent": true
      },
      "instance_type": "{{user `aws_instance_type`}}",
      "ssh_username": "ubuntu",
      "ssh_keypair_name": "{{user `aws_ssh_keypair_name`}}",
      "ssh_private_key_file": "{{user `aws_ssh_private_key_file`}}",
      "ssh_timeout": "1000s",
      "ami_name": "Appveyor Worker Ubuntu1804 {{timestamp}}",
      "ami_description": "{{user `image_description`}}",
      "launch_block_device_mappings": [
        {
          "device_name": "/dev/sda1",
          "volume_size": 40,
          "volume_type": "gp2",
          "delete_on_termination": true
        }
      ],
      "run_tags": {
        "OS_Version": "Ubuntu1804",
        "datemark": "{{user `datemark`}}",
        "description": "{{user `image_description`}}",
        "Base_AMI_Name": "{{ .SourceAMIName }}",
        "Extra": "{{ .SourceAMITags.TagName }}"
      },
      "tags": {
        "OS_Version": "Ubuntu1804",
        "datemark": "{{user `datemark`}}",
        "description": "{{user `image_description`}}",
        "Base_AMI_Name": "{{ .SourceAMIName }}",
        "Extra": "{{ .SourceAMITags.TagName }}"
      }
    },
    {
      "type": "azure-arm",
      "subscription_id": "{{ user `azure_subscription_id` }}",
      "client_id": "{{ user `azure_client_id` }}",
      "client_secret": "{{ user `azure_client_secret` }}",
      "location": "{{ user `azure_location` }}",

      "temp_resource_group_name": "packer-RG-u18-{{uuid}}",
      "temp_compute_name": "packer-u18-{{uuid}}",

      "os_type": "Linux",
      "image_publisher": "Canonical",
      "image_offer": "UbuntuServer",
      "image_sku": "18.04-LTS",
      "vm_size": "{{user `azure_vm_size`}}",

      "capture_container_name": "appveyor-images-u18",
      "capture_name_prefix": "u18-{{user `datemark`}}",
      "resource_group_name": "{{ user `azure_resource_group_name` }}",
      "storage_account": "{{ user `azure_storage_account` }}",

      "communicator": "ssh",

      "azure_tags": {
        "automation": "packer",
        "OS": "ubuntu1804",
        "description": "{{user `image_description`}}",
        "date": "{{user `datemark`}}"
      }
    },
    {
      "type": "hyperv-iso",
      "boot_command": [
        "<esc><wait10><esc><esc><enter><wait>",
        "linux /install/vmlinuz ",
        " netcfg/disable_autoconfig=true<wait>",
        " netcfg/get_ipaddress={{ user `host_ip_addr` }}<wait>",
        " netcfg/get_netmask={{ user `host_ip_mask` }}<wait>",
        " netcfg/get_gateway={{ user `host_ip_gw` }}<wait>",
        " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed18.cfg<wait>",
        " netcfg/get_nameservers=8.8.8.8",
        " debian-installer=en_US.UTF-8 auto locale=en_US.UTF-8 kbd-chooser/method=us",
        " hostname={{.Name}} domain= ",
        " fb=false debconf/frontend=noninteractive",
        " keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA",
        " keyboard-configuration/variant=USA console-setup/ask_detect=false<enter>",
        "initrd /install/initrd.gz<enter>",
        "boot<enter>"
      ],
      "boot_wait": "10s",
      "http_directory": "{{ template_dir }}/http",
      "iso_url": "{{user `iso_url`}}",
      "iso_checksum": "{{user `iso_checksum`}}",
      "iso_checksum_type": "{{user `iso_checksum_type`}}",
      "ssh_host": "{{ user `host_ip_addr` }}",
      "ssh_username": "{{ user `install_user` }}",
      "ssh_password": "{{ user `install_password` }}",
      "ssh_timeout" : "1h",
      "shutdown_command": "echo '{{ user `install_password` }}' | sudo -S shutdown -P now",
      "output_directory": "{{user `output_directory`}}",
      "switch_name": "{{user `hyperv_switchname`}}",
      "http_port_min": "{{user `http_port_min`}}",
      "http_port_max": "{{user `http_port_max`}}",
      "cpus": "{{user `cpus`}}",
      "memory": "{{user `memory`}}",
      "disk_size": "{{user `disk_size`}}",
      "enable_secure_boot": false,
      "disk_block_size": "1",
      "generation": 2,
      "temp_path": "{{user `packer_temp_dir`}}"
    }
  ],
  "post-processors": [
    {
      "type": "manifest",
      "output": "{{user `packer_manifest`}}",
      "strip_path": true
    }
  ]
}