|
| 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 |
0 commit comments