I am unable to SSH in gcloud, I am getting this error everytime I am building Packer:
googlecompute.webapp_csye6225: output will be in this color.
==> googlecompute.webapp_csye6225: Checking image does not exist...
==> googlecompute.webapp_csye6225: Creating temporary RSA SSH key for instance...
==> googlecompute.webapp_csye6225: no persistent disk to create
==> googlecompute.webapp_csye6225: Using image: centos-stream-8-v20240110
==> googlecompute.webapp_csye6225: Creating instance...
googlecompute.webapp_csye6225: Loading zone: us-central1-a
googlecompute.webapp_csye6225: Loading machine type: n1-standard-1
googlecompute.webapp_csye6225: Requesting instance creation...
googlecompute.webapp_csye6225: Waiting for creation operation to complete...
googlecompute.webapp_csye6225: Instance has been created!
==> googlecompute.webapp_csye6225: Waiting for the instance to become running...
googlecompute.webapp_csye6225: IP: 35.225.166.34
==> googlecompute.webapp_csye6225: Using SSH communicator to connect: 35.225.166.34
==> googlecompute.webapp_csye6225: Waiting for SSH to become available...
==> googlecompute.webapp_csye6225: Timeout waiting for SSH.
==> googlecompute.webapp_csye6225: Deleting instance...
googlecompute.webapp_csye6225: Instance has been deleted!
==> googlecompute.webapp_csye6225: Deleting disk...
googlecompute.webapp_csye6225: Disk has been deleted!
Build 'googlecompute.webapp_csye6225' errored after 7 minutes 3 seconds: Timeout waiting for SSH.
This is how my packer looks like:
packer {
required_plugins {
googlecompute = {
source = "github.com/hashicorp/googlecompute"
version = "~> 1"
}
}
}
variable "gcp_project_id" {
type = string
default = "dev-csye6225-406507"
}
variable "source_image" {
type = string
default = "centos-stream-8-v20240110"
}
variable "service_account_email" {
type = string
default = "[email protected]"
}
variable "zone" {
type = string
default = "us-central1-a"
}
variable "ssh_username" {
type = string
default = "csye6225"
}
variable "machine_type" {
type = string
default = "n1-standard-1"
}
# Define builders
source "googlecompute" "webapp_csye6225" {
project_id = var.gcp_project_id
source_image = var.source_image
machine_type = var.machine_type
zone = var.zone
ssh_username = var.ssh_username
service_account_email = var.service_account_email
image_name = "webappami-${formatdate("YYYYMMDDHHmmss", timestamp())}"
}
build {
sources = ["source.googlecompute.webapp_csye6225"]
provisioner "file" {
source = "./webappassignments.zip"
destination = "/home/admin/assignment2.zip"
}
provisioner "file" {
source = "./webappstart.service"
destination = "/tmp/webappstart.service"
}
provisioner "shell" {
inline = [
"#!/bin/bash",
"sudo groupadd csye6225",
"sudo useradd -g csye6225 -s /usr/sbin/nologin csye6225",
"set -x",
"sudo yum install unzip",
"sudo yum install mariadb",
"sudo yum install mariadb-server",
"sudo systemctl start mariadb",
"sudo yum install wget",
"sudo unzip webassignments.zip",
"wget https://downloads.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz",
"tar xzvf apache-maven-3.9.4-bin.tar.gz",
"export PATH=/opt/apache-maven-3.9.4/bin:$PATH",
"wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz",
"tar -xvf jdk-21_linux-x64_bin.tar.gz",
"export JAVA_HOME=/opt/jdk-21.0.2",
"export PATH=$JAVA_HOME/bin:$PATH",
"sudo systemctl daemon-reload",
"sudo systemctl start webappstart.service",
"sudo systemctl enable webappstart.service",
"sudo systemctl status webappstart.service",
]
}
}
and this is my github runner:
name: Build AMI
on:
push:
branches:
- main
jobs:
build-ami:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: 17
distribution: 'adopt'
java-package: jdk
architecture: x64
check-latest: false
server-id: github
server-username: GITHUB_ACTOR
server-password: GITHUB_TOKEN
overwrite-settings: true
job-status: success
# - name: Run mvn install
# run: |
# mvn install -DskipTests
- name: Setup Packer
uses: hashicorp/setup-packer@main
with:
version: '1.8.6'
- name: List directory contents
run: ls -lrth
- name: 'Authenticate with Google Cloud'
uses: 'google-github-actions/auth@v2'
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v2'
- name: 'Use gcloud CLI'
run: gcloud info
- name: Zip the file
run: |
zip -r webappassignments.zip ./
ls -lrth
- name: Init Packer
run: packer init packer/my-ami.pkr.hcl
- name: List directory contents
run: ls -lrth
- name: Format Packer Template
run: packer fmt packer/my-ami.pkr.hcl
- name: Validate Packer Template
run: packer validate packer/my-ami.pkr.hcl
- name: Build AMI
run: packer build packer/my-ami.pkr.hcl
I tried building the packer through github runner, after it generates temporary ssh, it is not same as the ssh i have on my local, and the temporary ssh is not stored in metadata when i check in gcp instance. Port 22 is default allowed.