Skip to main content

Steps to implement Hands-on Project - Mission 1

Creating the terraform-en-1 user using the IAM service

Access the AWS console (https://aws.amazon.com) and log in with your newly created account. In the search bar, type IAM. In the Services section, click on IAM.
Click on Users and then Add users, enter the name terraform-en-1 and click Next to create a programmatic type user.
ALT
After advancing, in Set permissions, click on the Attach existing policies directly button.
ALT
Type AmazonS3FullAccess in Search.
Select AmazonS3FullAccess
ALT
Click on Next
Review all the details
Click on Create user

Creating the Access Key for the terraform-en-1 user using the IAM service

Access the terraform-en-1 user
ALT
Click on the Security credentials tab
ALT
Navigate to the Access keys section
Click on Create access key
ALT
Select Command Line Interface (CLI) and I understand the above recommendation and want to proceed to create an access key.
ALT
Click on Next.
Click on Create access key
ALT
Click on Download .csv file
ALT
After the download finishes, click on Done.
Once the download is complete, rename the .csv file to key.csv

Steps in Google Cloud Platform (GCP)

Preparing the environment to run Terraform

Access the Google Cloud Console (console.cloud.google.com) and log in with your newly created account
Open the Cloud Shell
ALT
ALT
Download the mission1.zip file in the Google Cloud shell using the wget command
JSON
Copy
wget https://tcb-public-events.s3.amazonaws.com/icp/mission1.zip
Result
ALT
Upload the key.csv file to the Cloud Shell using the browser
Step 1
ALT
Step 2
ALT
Step 3
ALT
Verify if the mission1.zip and key.csv files are in the folder in the Cloud Shell using the command below
JSON
Copy
ls
Result
ALT
Execute the file preparation commands:
Plain Text
Copy
unzip mission1.zip
Plain Text
Copy
mv key.csv mission1/en
Plain Text
Copy
cd mission1/en
Plain Text
Copy
chmod +x *.sh
Result
ALT
Execute the commands below to prepare the AWS and GCP environment
Plain Text
Copy
mkdir -p ~/.aws/
Plain Text
Copy
touch ~/.aws/credentials_multiclouddeploy
Plain Text
Copy
./aws_set_credentials.sh key.csv
Plain Text
Copy
GOOGLE_CLOUD_PROJECT_ID=$(gcloud config get-value project)
Plain Text
Copy
gcloud config set project $GOOGLE_CLOUD_PROJECT_ID
Click on Authorize
ALT
Execute the command below to set the project in the Google Cloud Shell
Plain Text
Copy
./gcp_set_project.sh
Execute the commands to enable the Kubernetes, Container Registry, and Cloud SQL APIs
Plain Text
Copy
gcloud services enable containerregistry.googleapis.com
Plain Text
Copy
gcloud services enable container.googleapis.com
Plain Text
Copy
gcloud services enable sqladmin.googleapis.com
Plain Text
Copy
gcloud services enable cloudresourcemanager.googleapis.com
Plain Text
Copy
gcloud services enable serviceusage.googleapis.com
Plain Text
Copy
gcloud services enable compute.googleapis.com
Plain Text
Copy
gcloud services enable servicenetworking.googleapis.com --project=$GOOGLE_CLOUD_PROJECT_ID

Running Terraform to provision MultiCloud infrastructure in AWS and Google Cloud

Execute the following commands to provision infrastructure resources
Plain Text
Copy
cd ~/mission1/en/terraform/
Plain Text
Copy
terraform init
Plain Text
Copy
terraform plan
Plain Text
Copy
terraform apply
Attention: The provisioning process can take between 15 to 25 minutes to finish. Keep the CloudShell open during the process. If disconnected, click on Reconnect when the session expires (the session expires after 5 minutes of inactivity by default)

Appendix I - Destroying the environment and starting over

In case you have encountered any problem/error and want to reset the environment to start over, follow the step-by-step instructions below to remove the entire MultiCloud environment.

[Google Cloud] Delete VPC Peering

ALT

[Google Cloud] Delete remaining resources w/ Terraform - Cloud Shell

JSON
Copy
cd ~/mission1/en/terraform/
JSON
Copy
terraform destroy

Clean the Cloud Shell in AWS and Google Cloud

AWS

JSON
Copy
cd ~
JSON
Copy
rm -rf mission*

Google Cloud

JSON
Copy
cd ~
JSON
Copy
rm -rf mission*
JSON
Copy
rm -rf .ssh

Security Tips

For production environments, it's recommended to use only the Private Network for database access.
Never provide public network access (0.0.0.0/0) to production databases. ​
By reaching this point, you have completed the implementation of the first part of the Hands-on Project and have implemented resources in a MultiCloud (AWS and Google Cloud) environment using Terraform!
Congratulations!