aboutsummaryrefslogtreecommitdiff
path: root/alpine-ami.yaml
blob: d07a59a87d1cabcd3f4837d3a92d80f06e146ccc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
variables:
  security_group: ""
  subnet: ""

  # Treat this similar to a ABUILD pkgrel variable and increment with every
  # release. Packer will notice an exiting AMI at build start and fail unless
  # it is rmoved. To prevent a period of time where no Alpine AMI exists,
  # create a new variant. Old AMIs should be pruned at some point.
  ami_release: "1"

  # Overriding this requires validating that the installation script still
  # works as expected. It probably does but stuff changes between major
  # version.
  alpine_release: "3.7"

  # Don't override this without a good reason and if you do just make sure it
  # gets passed all the way through to the make_ami script
  volume_name: "/dev/xvdf"

builders:
  - type: "amazon-ebssurrogate"

    # Image is built inside a custom VPC so let Packer use the existing
    # resources
    security_group_id: "{{user `security_group`}}"
    subnet_id: "{{user `subnet`}}"

    # Input Instance Setting
    instance_type: "t2.micro"
    launch_block_device_mappings:
      - volume_type: "gp2"
        device_name: "{{user `volume_name`}}"
        delete_on_termination: true
        volume_size: 5

    # Output AMI Settings
    ena_support: true
    ami_name: "Alpine-{{user `alpine_release`}}-r{{user `ami_release`}}-Hardened-EC2"
    ami_description: "Alpine Linux {{user `alpine_release`}}-r{{user `ami_release`}} Release with Hardened Kernel and EC2 Optimizations"
    ami_groups:
      - "all"
    ami_virtualization_type: "hvm"
    ami_regions:
      - us-east-1
      - us-east-2
      - us-west-1
      - us-west-2
      - ca-central-1
      - eu-central-1
      - eu-west-1
      - eu-west-2
#      - eu-west-3
      - ap-northeast-1
      - ap-northeast-2
      - ap-southeast-1
      - ap-southeast-2
      - ap-south-1
      - sa-east-1
    ami_root_device:
      source_device_name: "{{user `volume_name`}}"
      device_name: "/dev/xvda"
      delete_on_termination: true
      volume_size: 5
      volume_type: "gp2"

    # Use the most recent Amazon Linux AMI as our base
    ssh_username: "ec2-user"
    source_ami_filter:
      filters:
        virtualization-type: "hvm"
        root-device-type: "ebs"
        architecture: "x86_64"
        name: "amzn-ami-hvm-*-x86_64-gp2"
      owners: 
        - "137112412989"
      most_recent: true

provisioners:
  - type: "shell"
    script: "make_ami.sh"
    execute_command: "sudo sh -c '{{ .Vars }} {{ .Path }} {{user `volume_name`}}'"