Skip to content

Commit bd04af8

Browse files
author
unknown
committed
Terraform first commit
1 parent 218983d commit bd04af8

File tree

6 files changed

+136
-0
lines changed

6 files changed

+136
-0
lines changed

.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,11 @@ dmypy.json
127127

128128
# Pyre type checker
129129
.pyre/
130+
131+
# Local .terraform directories
132+
**/.terraform/*
133+
134+
# .tfstate files
135+
*.tfstate
136+
*.tfstate.*
137+
*.exe

task1/main.sh

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
############################################################
2+
# [1]. DEFINICION DE VARIABLES DEL SERVICE ACCOUNT DE GCP ##
3+
############################################################
4+
5+
## GCP Project Name - Ejemplo: devops-manuel
6+
GCP_PROJECT="devop-manu"
7+
8+
## GCP Private Key ID - Ejemplo: 282b19cf817f43240aw984feaca8623aa29af233
9+
GPC_PRIVATE_KEY_ID="282b19cf817f43240af984feaca86b3aa29af233"
10+
11+
## GCP Private Key - Ejemplo: -----BEGIN PRIVATE KEY-----\-----END PRIVATE KEY-----\n
12+
GPC_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8RCHSOBA2vvf9\n5n1TpPfyk5g/ksS/YsuA8efwCm0VzHKGu6Lkyt4Krz22qVYMwrkkdH2FZVC9osVH\nZ9R2Mj6FxEyGb869dPLJfifZ0q3vU3Tdo/rP8895XaZuAKlNoydEn40xZ0Tu62PM\n/aeahvQvxlPq3gbPbRw72YeinMlUnBiJHeojYL61DSKSwmMQjXvr5lspvfENwW8G\n0CnrBzc+4Pa/hTtjr38FNQLc0zcuO15BG8eY3p94yOJ6hz3bR0T9lRYBEzP8rUAd\nFs48bqSPdUVMreOehAoc76XbQmxmXAPCQAecwvuw0PzwlV0+dERNtqWGuDKIU5Kg\nUy0LzcaXAgMBAAECggEABdyXMvzk4Fd80C5ze3247JgU1vHiZ1UTof2mK46fi9y0\nOiawcTAxzqJbKQtHrxkG+7AW0mbvpx/gxZLhhhaVZMPSYCMuDC8OeiCP7BPHr5pp\nGpeG8R+Vt6EnU+h4XP7184iGNGITPt8cWd8R71lBVBV4OmlUS/QJO4HP28vG5vfx\ncETkdojsxa78yXcvyefncDQXfp/yY/j6P2r5PrIURAicORHmVSFTh72LVjUb4xTw\nFu8xTqcPij8KdwHTzt5xqQb1cI7T9j8VpXiutHO5APWcothRy++jWfWd3r+E23r1\nucfLJMsUcou+zeSUNTOWW5pyNJ+qDM7qgrdOeT97lQKBgQD6Bv2IMJZ87apIabCl\nVUbVUbFrUXwEQsiWwjJvCxYk0ARLVKtTTXhjz6FNAM99kdmySyARZtSLQGfj+Hkz\nXrY7Ve4qrqEmluH/5H3littaxNziEFiB67zQgeSkMULVCSdmsdqbbgxwGFzZadWA\nkLabhJt0oLGfdwzmcRcDpyxP6wKBgQDAw3MIAMr4n1T+HEaXJCLJ9+vU+CGuEsBc\nQ7XMOsvgzLiha7bKSVHvOjWrOf2Q0AeyH9nuzA6yYtY1pDS0pc+jaLgcgAQ1yUcH\nsdAGuWz3R2m0adFxeWOC7KiKzuW7v1Z2NEZxkPuEjdQCMxUpbLdA4Zhsa5f1zrld\ngT7l45nlBQKBgGA4Mnen4zIesIp/igiGgeT0NGgNisGFBfbms0wCozn1h8GJywka\n5jrbG8Mrja5QY8v2l1e7EA6q8ZBM/i+jwlOhZS+t1ryoEj9NKpoczv/mhO7GxZjy\nJM7FPj1l68daZ3xg87UfK9Azv/+3d/+rMWs2JDFE6jZpNWC1otq4ChiTAoGBAL7P\negmdB03uImrbwICSM6GrORX6fRRb2XA7UjUUqoYfAFBBWJKK24EsJL4WzEpRspx+\n7PJ1qcKpFZPJtKZxT8VYvo7vpbs8P4R9XgeZ+yQX26nL6Zgi6f9Klle5EC217Ddb\n7bMzKdX/srJusG7t/8RIy+He63BVrqXBb2qOzuKlAoGBAPSgitYkwV3Ly3BtdaO9\nP8jCjRNdWYnRyXypMpFlhsHH3Pq3jGpHhqCNbEmkqT8gGk0eoqz5vxH1cMM76ozQ\nOyYTNTGs4N83g8p1AeOgWY5DLMLxa8W6zXJhfSeuj54mpDA1uUaFaLMZlJO07Eik\nPDdb8sxOZUsKcVB+oe9gE/QX\n-----END PRIVATE KEY-----\n"
13+
14+
## GCP Client Email - Ejemplo: [email protected]
15+
GPC_CLIENT_MAIL="[email protected]"
16+
17+
## GCP Client ID - Ejemplo: 106512508332840639292
18+
GPC_CLIENT_ID="106512502332840639292"
19+
20+
## GCP CLIENT X509 CERT URL - Ejemplo: https://www.googleapis.com/robot/v1/metadata/x509/gcp-devops%40devop-manu.iam.gserviceaccount.com
21+
GPC_CLIENT_CERT_URL="https://www.googleapis.com/robot/v1/metadata/x509/gcp-devops%40devop-manu.iam.gserviceaccount.com"
22+
23+
################################################
24+
# [1.1]. DEFINICION DE VARIABLES DE TERRAFORM ##
25+
################################################
26+
27+
## GPC LOCATION
28+
GPC_LOCATION="us-central1-c"
29+
30+
##############################################################
31+
# [2]. REEMPLAZAR VARIABLES EN json DE CONFIGURACION DE GCP ##
32+
##############################################################
33+
34+
jq -n '{ "type": "service_account", "project_id": $gcp_project,
35+
"private_key_id": $gcp_private_key_id,
36+
"private_key": $gcp_private_key,
37+
"client_email": $gcp_client_mail,
38+
"client_id": $gcp_client_id,
39+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
40+
"token_uri": "https://oauth2.googleapis.com/token",
41+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
42+
"client_x509_cert_url": $gcp_gpc_client_cert_url } ' \
43+
--arg gcp_project $GCP_PROJECT \
44+
--arg gcp_private_key_id $GPC_PRIVATE_KEY_ID \
45+
--arg gcp_private_key "$GPC_PRIVATE_KEY" \
46+
--arg gcp_client_mail "$GPC_CLIENT_MAIL" \
47+
--arg gcp_client_id "$GPC_CLIENT_ID" \
48+
--arg gcp_gpc_client_cert_url "$GPC_CLIENT_CERT_URL" \
49+
> terraform/account.json
50+
51+
###########################################
52+
# [3]. INSTALACION DE TERRAFORM SEGUN OS ##
53+
###########################################
54+
55+
## Identificar el OS
56+
case "$OSTYPE" in solaris*) OS_TYPE=solaris;; darwin*) OS_TYPE=darwin;; linux*) OS_TYPE=linux;; bsd*) OS_TYPE=freebsd;; msys*) OS_TYPE=windows;; *) OS_TYPE=unknown;; esac
57+
58+
## Identificar la ultima versión de Terraform
59+
VERSION=($(curl -s https://api.github.com/repos/hashicorp/terraform/releases 2> /dev/null | awk '/tag_name/ {print $2}' | cut -d '"' -f 2 | cut -d 'v' -f 2))
60+
61+
## Identificar la Arquitectura del Procesador
62+
MACHINE_TYPE=($(uname -m))
63+
64+
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
65+
PROC=amd64
66+
else
67+
PROC=386
68+
fi
69+
70+
## Generar la URL de Descarga
71+
FILENAME="terraform_${VERSION}_${OS_TYPE}_${PROC}.zip"
72+
LINK="https://releases.hashicorp.com/terraform/${VERSION}/${FILENAME}"
73+
74+
## Descargar el instalador segun el OS
75+
curl -o "$FILENAME" "$LINK"
76+
77+
## Extraer el archivo zip
78+
unzip -qq "$FILENAME" || exit 1
79+
80+
## Mover el instalador a la carpeta del proyecto de terraform
81+
mv terraform.exe "terraform"
82+
83+
## Eliminar el archivo ZIP
84+
rm -rf "$FILENAME"
85+
86+
##################################################
87+
# [4]. REEMPLAZAR VARIABLES EN terraform.tfvars ##
88+
##################################################
89+
90+
jq -n '{ "project_id": $gcp_project,
91+
"location": $gcp_location } ' \
92+
--arg gcp_project $GCP_PROJECT \
93+
--arg gcp_location $GPC_LOCATION \
94+
> terraform/terraform.tfvars.json
95+
96+
########################################
97+
# [5]. EJECUTAR COMANDOS DE TERRAFORM ##
98+
########################################
99+
100+
## TERRAFORM INIT
101+
cd terraform
102+
./terraform.exe init
103+
104+
## TERRAFORM PLAN
105+
./terraform.exe plan -var-file="terraform.tfvars.json"
106+
107+
## TERRAFORM APPLY
108+
./terraform.exe apply
109+
110+
## TERRAFORM OUTPUT VARIABLES

task1/terraform/main.tf

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
provider "google" {
3+
version = "~> 3.0.0"
4+
5+
credentials = file("account.json")
6+
location = var.location
7+
project = var.project
8+
}
9+

task1/terraform/output.tf

Whitespace-only changes.

task1/terraform/terraform.tfvars.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"project_id": "devop-manu",
3+
"location": "us-central1-c"
4+
}

task1/terraform/variables.tf

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
variable "project_id" {
2+
}
3+
4+
variable "location" {
5+
}

0 commit comments

Comments
 (0)