Skip to content

Commit 90c3a70

Browse files
authored
v1.0.0, added HCP packer integration (#1)
Signed-off-by: Glen Yu <glen.yu@gmail.com>
1 parent 5b9209c commit 90c3a70

14 files changed

+156
-24
lines changed

.github/workflows/packer.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ on:
66
paths-ignore: ['**/README.md','**/CHANGELOG.md', 'terraform/*']
77

88
env:
9-
PRODUCT_VERSION: "1.9.5" # or: "latest"
9+
PRODUCT_VERSION: "1.11.2" # or: "latest"
10+
HCP_ORGANIZATION_ID: '${{ secrets.HCP_ORGANIZATION_ID }}'
11+
HCP_PROJECT_ID: '${{ secrets.HCP_PROJECT_ID }}'
12+
HCP_CLIENT_ID: '${{ secrets.HCP_CLIENT_ID }}'
13+
HCP_CLIENT_SECRET: '${{ secrets.HCP_CLIENT_SECRET }}'
1014

1115

1216
jobs:

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

77

8+
## [1.0.0] - 2024-12-13
9+
### Added
10+
- [HCP Packer integration](https://github.com/Neutrollized/packer-gcp-with-githubactions/blob/main/README.md#hcp-packer-integration)! Now image metadata is being sent and stored in HCP Packer.
11+
### Changed
12+
- Updated Packer version from `1.9.5` to `1.11.2`
13+
- Updated `source_image_family` from `debian-11` to `debian-12`
14+
- Increasing the `pause_before` time from `10s` to `30s` to ensure sufficient wait time after reboots
15+
- Updated Consul version from `1.19.2` to `1.20.1`
16+
- Updated Nomad version from `1.8.4` to `1.9.3`
17+
- Updated Vault version from `1.17.6` to `1.18.2`
18+
- fluentd [Logging agent](https://cloud.google.com/logging/docs/agent/logging) in the Nomad client image is considered legacy and has been replaced by Ops Agent
19+
### Removed
20+
- Packer variable, `google_fluentd_version`
21+
822
## [0.11.2] - 2024-09-30
923
### Changed
1024
- Updated Consul version from `1.19.1` to `1.19.2`

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ jobs:
5353
```
5454

5555

56+
## HCP Packer integration
57+
- [What is HCP Packer?](https://developer.hashicorp.com/hcp/docs/packer)
58+
- [Setup / Requirements](https://developer.hashicorp.com/packer/tutorials/hcp-get-started/hcp-push-artifact-metadata#create-hcp-packer-registry)
59+
60+
You will need to add the following secrets to GitHub:
61+
- `HCP_ORGANIZATION_ID`
62+
- `HCP_PROJECT_ID`
63+
- `HCP_CLIENT_ID`
64+
- `HCP_CLIENT_SECRET`
65+
66+
**NOTE**: You can track up to [10 buckets (images) for free](https://www.hashicorp.com/products/packer/pricing), but if you do not wish to, you can always comment out `hcp_packer_registry` block from the image build template file(s).
67+
68+
5669
## Run Locally
5770
If you wish to run this locally without using GitHub Actions, you can do the following:
5871

@@ -62,6 +75,8 @@ gcloud auth application-default login
6275
```
6376

6477
```console
78+
packer init base_docker.pkr.hcl
79+
6580
PKR_VAR_access_token='xxxxxxxxxxxxx' packer build -var 'project_id=myproject-123' -var-file=variables.pkrvars.hcl base_docker.pkr.hcl`
6681
```
6782

base-docker/base_docker.pkr.hcl

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,27 @@ source "googlecompute" "base-docker" {
3434

3535
image_family = var.image_family
3636
image_name = "docker-${var.arch}-base-${local.datestamp}"
37-
image_description = "Debian 11 image with Docker-CE installed"
37+
image_description = "Debian 12 image with Docker-CE installed"
3838

3939
tags = ["packer"]
4040
}
4141

4242
build {
43+
hcp_packer_registry {
44+
bucket_name = "gcp-gce-images-docker-base"
45+
description = "Base Debian image with Docker-CE installed"
46+
47+
bucket_labels = {
48+
"os" = "Debian",
49+
"os-version" = "Bookworm 12",
50+
}
51+
52+
build_labels = {
53+
"build-time" = timestamp()
54+
"build-source" = basename(path.cwd)
55+
}
56+
}
57+
4358
sources = ["sources.googlecompute.base-docker"]
4459

4560
# https://discuss.hashicorp.com/t/how-to-fix-debconf-unable-to-initialize-frontend-dialog-error/39201/2
@@ -69,7 +84,8 @@ build {
6984
"cd dynmotd && sudo ./install.sh",
7085
"cd ~ && rm -Rf ./dynmotd/"
7186
]
72-
pause_before = "10s"
87+
pause_before = "30s"
88+
max_retries = 1
7389
}
7490

7591
provisioner "shell" {
@@ -81,9 +97,10 @@ build {
8197
"echo '=============================================='",
8298
"sudo install -m 0755 -d /etc/apt/keyrings",
8399
"echo 'Adding Docker GPG key...'",
84-
"curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg",
100+
"sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc",
101+
"sudo chmod a+r /etc/apt/keyrings/docker.asc",
85102
"echo 'Adding Docker apt repo...'",
86-
"echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null",
103+
"echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null",
87104
"echo 'Rebooting...'",
88105
"sudo reboot"
89106
]
@@ -100,8 +117,8 @@ build {
100117
"sudo apt-get install -y --no-install-recommends docker-ce docker-ce-cli containerd.io docker-compose-plugin",
101118
"sudo systemctl disable docker"
102119
]
103-
pause_before = "10s"
104-
max_retries = 5
120+
pause_before = "30s"
121+
max_retries = 3
105122
}
106123

107124
provisioner "shell" {

base-docker/variables.pkrvars.hcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
zone = "northamerica-northeast2-c"
22
arch = "amd64"
3-
source_image_family = "debian-11"
3+
source_image_family = "debian-12"
44
image_family = "custom-docker-base"

hashistack/consul_base.pkr.hcl

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@ source "googlecompute" "consul-base" {
4545
}
4646

4747
build {
48+
hcp_packer_registry {
49+
bucket_name = "gcp-gce-images-consul-base"
50+
description = "Base Debian image with Consul installed"
51+
52+
bucket_labels = {
53+
"os" = "Debian",
54+
"os-version" = "Bookworm 12",
55+
"consul-version" = var.consul_version,
56+
}
57+
58+
build_labels = {
59+
"build-time" = timestamp()
60+
"build-source" = basename(path.cwd)
61+
}
62+
}
63+
4864
sources = ["sources.googlecompute.consul-base"]
4965

5066
# https://discuss.hashicorp.com/t/how-to-fix-debconf-unable-to-initialize-frontend-dialog-error/39201/2
@@ -74,7 +90,8 @@ build {
7490
"cd dynmotd && sudo ./install.sh",
7591
"cd ~ && rm -Rf ./dynmotd/"
7692
]
77-
pause_before = "10s"
93+
pause_before = "30s"
94+
max_retries = 1
7895
}
7996

8097
provisioner "shell" {

hashistack/consul_server.pkr.hcl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@ source "googlecompute" "consul-server" {
4545
}
4646

4747
build {
48+
hcp_packer_registry {
49+
bucket_name = "gcp-gce-images-consul-server"
50+
description = "Base Consul image with server config"
51+
52+
bucket_labels = {
53+
"os" = "Debian",
54+
"os-version" = "Bookworm 12",
55+
"consul-version" = var.consul_version,
56+
}
57+
58+
build_labels = {
59+
"build-time" = timestamp()
60+
"build-source" = basename(path.cwd)
61+
}
62+
}
63+
4864
sources = ["sources.googlecompute.consul-server"]
4965

5066
provisioner "file" {

hashistack/nomad_client.pkr.hcl

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ variable "image_family" {}
1717
variable "consul_version" {}
1818
variable "nomad_version" {}
1919
variable "java_package" {}
20-
variable "google_fluentd_version" {}
2120

2221

2322
locals {
@@ -48,6 +47,24 @@ source "googlecompute" "nomad-client" {
4847
}
4948

5049
build {
50+
hcp_packer_registry {
51+
bucket_name = "gcp-gce-images-nomad-client"
52+
description = "Base Debian (w/Docker) image with Nomad (client config), Consul, and Java installed"
53+
54+
bucket_labels = {
55+
"os" = "Debian",
56+
"os-version" = "Bookworm 12",
57+
"consul-version" = var.consul_version,
58+
"nomad-version" = var.nomad_version,
59+
"java-package" = var.java_package,
60+
}
61+
62+
build_labels = {
63+
"build-time" = timestamp()
64+
"build-source" = basename(path.cwd)
65+
}
66+
}
67+
5168
sources = ["sources.googlecompute.nomad-client"]
5269

5370
provisioner "shell" {
@@ -200,15 +217,16 @@ build {
200217
inline = [
201218
"echo '=============================================='",
202219
"echo 'INSTALL LOGGING & TETRAGON PRE-REQS'",
220+
"echo 'https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/installation#optional-tasks'",
203221
"echo '=============================================='",
204-
"curl -L -o /tmp/add-logging-agent-repo.sh \"https://dl.google.com/cloudagents/add-logging-agent-repo.sh\"",
205-
"sudo bash /tmp/add-logging-agent-repo.sh --also-install --version=${var.google_fluentd_version}",
222+
"curl -L -o /tmp/add-google-cloud-ops-agent-repo.sh \"https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh\"",
223+
"sudo bash /tmp/add-google-cloud-ops-agent-repo.sh --also-install",
206224
"sudo mkdir -p /var/log/tetragon",
207-
"echo 'export no_proxy=169.254.169.254' | sudo tee -a /etc/default/google-fluentd",
208-
"sudo systemctl disable google-fluentd.service",
209-
"sudo rm /tmp/add-logging-agent-repo.sh"
225+
"echo 'DefaultEnvironment=\"NO_PROXY=http://metadata.google.internal\" # Skip proxy for the local Metadata Server.' | sudo tee -a /etc/systemd/system.conf",
226+
"sudo systemctl disable google-cloud-ops-agent.service",
227+
"sudo rm /tmp/add-google-cloud-ops-agent-repo.sh"
210228
]
211-
max_retries = 3
229+
max_retries = 1
212230
}
213231

214232
provisioner "shell" {

hashistack/nomad_server.pkr.hcl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,22 @@ source "googlecompute" "nomad-server" {
4545
}
4646

4747
build {
48+
hcp_packer_registry {
49+
bucket_name = "gcp-gce-images-nomad-server"
50+
description = "Base Consul image with Nomad (server config) installed"
51+
52+
bucket_labels = {
53+
"os" = "Debian",
54+
"os-version" = "Bookworm 12",
55+
"nomad-version" = var.nomad_version,
56+
}
57+
58+
build_labels = {
59+
"build-time" = timestamp()
60+
"build-source" = basename(path.cwd)
61+
}
62+
}
63+
4864
sources = ["sources.googlecompute.nomad-server"]
4965

5066
provisioner "shell" {

hashistack/variables.pkrvars.hcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
zone = "northamerica-northeast2-c"
22
arch = "amd64"
33

4-
consul_version = "1.19.2"
5-
nomad_version = "1.8.4"
6-
vault_version = "1.17.6"
4+
consul_version = "1.20.1"
5+
nomad_version = "1.9.3"
6+
vault_version = "1.18.2"

0 commit comments

Comments
 (0)