Gcloud packer , unable to ssh into instance

33 views Asked by At

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.

0

There are 0 answers