Added Terraform files for GCP
This commit is contained in:
parent
7d7ea1196f
commit
36a2242b73
6 changed files with 122 additions and 0 deletions
21
terraform/google/.terraform.lock.hcl
Normal file
21
terraform/google/.terraform.lock.hcl
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/hashicorp/google" {
|
||||||
|
version = "4.14.0"
|
||||||
|
constraints = "4.14.0"
|
||||||
|
hashes = [
|
||||||
|
"h1:JzIffu+H0h1MX7SuMa1Hheh39xEKaic43fU21twbUrQ=",
|
||||||
|
"zh:05219b3539e13eeb2bbd8775bfa0644aeaf975c30d734a24e06ec2ae0fa6aea1",
|
||||||
|
"zh:0d472a9c11d4f91c1fcbe053eca42bd895c400f9e9783c049d8c67e140ed274c",
|
||||||
|
"zh:2e38c632ac3289b31a4f4868e42f3ced4c9acbb79b43376209d7a51154a94b41",
|
||||||
|
"zh:7ed048c9c18e9e92836f9a82c2c9aea956a82a178b7a3e33f94a4a94f7e20797",
|
||||||
|
"zh:8f92259b3c37c1bf161d70048cc1b23517864626f0d277189657f5158da3728c",
|
||||||
|
"zh:a815b8670808e12a82c1d9fe40f4223138df39e2b9ed70b93647190586f515f0",
|
||||||
|
"zh:adcee3a69b081cf0da555d344453b3ecbde7bb34770f026fd4ed84d936c48895",
|
||||||
|
"zh:d2da37422ce3a197fa03d9e96ef9c0dfe3ee5c247ff82c272f2958c5d6cf3396",
|
||||||
|
"zh:e28be41d19f44c9012fc7909625d4dc67a75fb00f5b69fe1295fe07cb04f1b37",
|
||||||
|
"zh:ece149ec2e5c7d1727665c1f8834bfa71e99405a60a5f6ea384dced52ace2def",
|
||||||
|
"zh:f59bac8454a97794d2378393b6bb2cbeb61983306de0f13be06956b87d22efd5",
|
||||||
|
]
|
||||||
|
}
|
4
terraform/google/output.tf
Normal file
4
terraform/google/output.tf
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
output "public_ipv4" {
|
||||||
|
value = google_compute_instance.server.network_interface.0.access_config.0.nat_ip
|
||||||
|
}
|
||||||
|
|
16
terraform/google/provider.tf
Normal file
16
terraform/google/provider.tf
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
google = {
|
||||||
|
source = "hashicorp/google"
|
||||||
|
version = "=4.14.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configure the Google Provider
|
||||||
|
provider "google" {
|
||||||
|
project = var.project
|
||||||
|
region = var.region
|
||||||
|
zone = var.zone
|
||||||
|
credentials = file("/home/noble/.config/gcloud/gcloud-terraform-key.json")
|
||||||
|
}
|
45
terraform/google/server.tf
Normal file
45
terraform/google/server.tf
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
data "google_compute_image" "image" {
|
||||||
|
family = "common-cu113-debian-10"
|
||||||
|
project = "deeplearning-platform-release"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_compute_instance" "server" {
|
||||||
|
name = "ml-server"
|
||||||
|
#machine_type = "f1-micro"
|
||||||
|
machine_type = var.machine_type
|
||||||
|
zone = var.zone
|
||||||
|
|
||||||
|
tags = ["ml", "gpu"]
|
||||||
|
|
||||||
|
guest_accelerator {
|
||||||
|
type = var.guest_accelerator
|
||||||
|
count = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_disk {
|
||||||
|
initialize_params {
|
||||||
|
image = data.google_compute_image.image.self_link
|
||||||
|
# image = "debian-cloud/debian-10"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Local SSD disk
|
||||||
|
scratch_disk {
|
||||||
|
interface = "SCSI"
|
||||||
|
}
|
||||||
|
|
||||||
|
network_interface {
|
||||||
|
network = "default"
|
||||||
|
|
||||||
|
access_config {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scheduling {
|
||||||
|
on_host_maintenance = "TERMINATE"
|
||||||
|
}
|
||||||
|
|
||||||
|
#metadata_startup_script = file("${path.module}/startup_script.sh")
|
||||||
|
metadata_startup_script = templatefile("${path.module}/startup_script.sh", var.startup_script_vars)
|
||||||
|
|
||||||
|
}
|
6
terraform/google/startup_script.sh
Normal file
6
terraform/google/startup_script.sh
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
useradd -m -G sudo -s /bin/bash noble
|
||||||
|
mkdir /home/noble/.ssh
|
||||||
|
echo "${SSH_PUBLIC_KEY}" > /home/noble/.ssh/authorized_keys
|
||||||
|
apt update -y && apt install -y tmux
|
||||||
|
bash /opt/deeplearning/install-driver.sh
|
30
terraform/google/vars.tf
Normal file
30
terraform/google/vars.tf
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# Name variable definition
|
||||||
|
variable "name" {
|
||||||
|
default = "ml"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Definition of an instance type variable depending on the choice of tariff
|
||||||
|
variable "machine_type" {
|
||||||
|
default = "custom-8-30720"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "project" {
|
||||||
|
default = "project"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Definition of the region in which the instance will be created
|
||||||
|
variable "region" {
|
||||||
|
default = "europe-west4"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "zone" {
|
||||||
|
default = "europe-west4-a"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "guest_accelerator" {
|
||||||
|
default = "nvidia-tesla-v100"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "startup_script_vars" {
|
||||||
|
type = map
|
||||||
|
}
|
Reference in a new issue