mirror of
https://github.com/ghndrx/linux-copy-demo.git
synced 2026-02-10 06:54:56 +00:00
init repo
This commit is contained in:
34
main.tf
Normal file
34
main.tf
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
provider "google" {
|
||||||
|
credentials = file(var.credentials_file)
|
||||||
|
project = var.project_id
|
||||||
|
region = var.region
|
||||||
|
}
|
||||||
|
|
||||||
|
module "firewall" {
|
||||||
|
source = "./modules/firewall"
|
||||||
|
network_name = var.network_name
|
||||||
|
depends_on = [
|
||||||
|
module.vpc
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
module "compute" {
|
||||||
|
source = "./modules/compute"
|
||||||
|
project_id = var.project_id
|
||||||
|
region = var.region
|
||||||
|
zone = var.zone
|
||||||
|
instance_type = var.instance_type
|
||||||
|
image_name = var.image_name
|
||||||
|
network_name = var.network_name
|
||||||
|
subnets_cidr_list = var.subnets_cidr_list
|
||||||
|
depends_on = [
|
||||||
|
module.vpc
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
module "vpc" {
|
||||||
|
source = "./modules/vpc"
|
||||||
|
network_name = var.network_name
|
||||||
|
subnets_cidr_list = var.subnets_cidr_list
|
||||||
|
region = var.region
|
||||||
|
}
|
||||||
48
modules/compute/main.tf
Normal file
48
modules/compute/main.tf
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Create the first VM in the first zone
|
||||||
|
resource "google_compute_instance" "vm1" {
|
||||||
|
name = "vm1"
|
||||||
|
machine_type = var.instance_type
|
||||||
|
zone = var.zone[0]
|
||||||
|
tags = ["allow-ssh","allow-internal"]
|
||||||
|
boot_disk {
|
||||||
|
initialize_params {
|
||||||
|
image = var.image_name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
network_interface {
|
||||||
|
network = var.network_name
|
||||||
|
subnetwork = "subnet-1"
|
||||||
|
access_config {
|
||||||
|
// Use ephemeral IP address
|
||||||
|
nat_ip = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
metadata_startup_script = "apt-get update && apt-get install -y rsync"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create the second VM in the second zone
|
||||||
|
resource "google_compute_instance" "vm2" {
|
||||||
|
name = "vm2"
|
||||||
|
machine_type = var.instance_type
|
||||||
|
zone = var.zone[1]
|
||||||
|
tags = ["allow-ssh","allow-internal"]
|
||||||
|
boot_disk {
|
||||||
|
initialize_params {
|
||||||
|
image = var.image_name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
network_interface {
|
||||||
|
network = var.network_name
|
||||||
|
subnetwork = "subnet-2"
|
||||||
|
access_config {
|
||||||
|
// Use ephemeral IP address
|
||||||
|
nat_ip = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
metadata_startup_script = "apt-get update && apt-get install -y rsync"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
7
modules/compute/outputs.tf
Normal file
7
modules/compute/outputs.tf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
output "vm1_ip" {
|
||||||
|
value = google_compute_instance.vm1.network_interface[*].access_config[*].nat_ip
|
||||||
|
}
|
||||||
|
|
||||||
|
output "vm2_ip" {
|
||||||
|
value = google_compute_instance.vm2.network_interface[*].access_config[*].nat_ip
|
||||||
|
}
|
||||||
7
modules/compute/variables.tf
Normal file
7
modules/compute/variables.tf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
variable "image_name" {}
|
||||||
|
variable "instance_type" {}
|
||||||
|
variable "zone" {}
|
||||||
|
variable "project_id" {}
|
||||||
|
variable "region" {}
|
||||||
|
variable "network_name" {}
|
||||||
|
variable "subnets_cidr_list" {}
|
||||||
31
modules/firewall/main.tf
Normal file
31
modules/firewall/main.tf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
resource "google_compute_firewall" "allow_internal" {
|
||||||
|
name = "allow-internal"
|
||||||
|
network = var.network_name
|
||||||
|
source_ranges = ["0.0.0.0/0"]
|
||||||
|
allow {
|
||||||
|
protocol = "icmp"
|
||||||
|
}
|
||||||
|
allow {
|
||||||
|
protocol = "tcp"
|
||||||
|
ports = ["0-65535"]
|
||||||
|
}
|
||||||
|
allow {
|
||||||
|
protocol = "udp"
|
||||||
|
ports = ["0-65535"]
|
||||||
|
}
|
||||||
|
target_tags = ["allow-internal"]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_compute_firewall" "allow-ssh" {
|
||||||
|
name = "allow-ssh"
|
||||||
|
network = var.network_name
|
||||||
|
source_ranges = ["0.0.0.0/0"]
|
||||||
|
allow {
|
||||||
|
protocol = "tcp"
|
||||||
|
ports = ["22"]
|
||||||
|
}
|
||||||
|
target_tags = ["allow-ssh"]
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
0
modules/firewall/outputs.tf
Normal file
0
modules/firewall/outputs.tf
Normal file
1
modules/firewall/variables.tf
Normal file
1
modules/firewall/variables.tf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
variable "network_name" {}
|
||||||
7
modules/vpc/outputs.tf
Normal file
7
modules/vpc/outputs.tf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
output "vpc_network_name" {
|
||||||
|
value = google_compute_network.vpc_network.name
|
||||||
|
}
|
||||||
|
|
||||||
|
output "vpc_subnets" {
|
||||||
|
value = google_compute_subnetwork.vpc_subnets.*.self_link
|
||||||
|
}
|
||||||
15
modules/vpc/variables.tf
Normal file
15
modules/vpc/variables.tf
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
variable "network_name" {
|
||||||
|
type = string
|
||||||
|
description = "Name of the VPC network to create"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "subnets_cidr_list" {
|
||||||
|
type = list(string)
|
||||||
|
default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24", "10.0.4.0/24"]
|
||||||
|
description = "List of CIDR blocks for the subnets to create within the VPC network"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "region" {
|
||||||
|
type = string
|
||||||
|
description = "Region where the VPC subnets will be created"
|
||||||
|
}
|
||||||
9
outputs.tf
Normal file
9
outputs.tf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
output "vpc_subnets_out" {
|
||||||
|
value = module.vpc.vpc_subnets
|
||||||
|
}
|
||||||
|
output "vm1_public_ip" {
|
||||||
|
value = module.compute.vm1_ip
|
||||||
|
}
|
||||||
|
output "vm2_public_ip" {
|
||||||
|
value = module.compute.vm2_ip
|
||||||
|
}
|
||||||
9
terraform.tfvars
Normal file
9
terraform.tfvars
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
credentials_file = "credentials.json"
|
||||||
|
project_id = "linux-copy-demo"
|
||||||
|
region = "us-central1"
|
||||||
|
zone = ["us-central1-a", "us-central1-b", "us-central1-c"]
|
||||||
|
image_name = "debian-cloud/debian-11"
|
||||||
|
instance_type = "n1-standard-1"
|
||||||
|
network_name = "my-vpc"
|
||||||
|
|
||||||
|
subnets_cidr_list= ["10.0.1.0/24","10.0.2.0/24","10.0.3.0/24","10.0.4.0/24"]
|
||||||
8
variables.tf
Normal file
8
variables.tf
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
variable "credentials_file" {}
|
||||||
|
variable "project_id" {}
|
||||||
|
variable "region" {}
|
||||||
|
variable "image_name" {}
|
||||||
|
variable "instance_type" {}
|
||||||
|
variable "zone" {type=list}
|
||||||
|
variable "network_name" {}
|
||||||
|
variable "subnets_cidr_list" { type=list}
|
||||||
Reference in New Issue
Block a user