This tutorial shows how to get started with Compute Engine. Follow this tutorial by deploying a Hello World Ruby web app to Compute Engine. For help getting started with App Engine, see the App Engine standard environment.
Objectives
- Use Cloud Shell to download and deploy a Hello World sample app.
- Deploy a Hello World sample app to a single Compute Engine instance.
Costs
In this document, you use the following billable components of Cloud de Confiance by S3NS:
Before you begin
- 
    
    
      In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Cloud de Confiance project. 
- 
  
  
    
      Enable the Compute Engine API. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
In the Cloud de Confiance console, open the app in Cloud Shell. Cloud Shell provides command-line access to your cloud resources directly from the browser. 
-  If you agree to clone the repository, click Confirm to download the sample code and change into the app directory. 
- 
In Cloud Shell, configure the gcloud CLI to use
your new Cloud de Confiance project:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID 
Running the app in Cloud Shell
- In Cloud Shell, install your app dependencies using - bundle:- bundle install
- Run the Sinatra app: - bundle exec ruby app.rb -p 8080
- In Cloud Shell, click Web preview , and select Preview on port 8080. This opens a new window with your running app. 
- To stop the local web server, press Control+C. 
Deploying to a single instance
This section walks you through running a single instance of your app on Compute Engine.
From Cloud Shell, you can deploy to a single Compute Engine instance virtual machine (VM) which runs your app.
Use a startup script to initialize an instance
You need a way to instruct your instance to download and run your code. An instance can have a startup script that runs whenever the instance is started or restarted.
The startup script performs these tasks:
- Installs the Cloud Logging agent. The agent automatically collects logs from syslog. 
- Installs Ruby 2.6.5, Bundler, and their system dependencies. 
- Clones the app's source code from the Cloud Source Repositories and installs dependencies. 
- Install and configures Nginx. 
- Installs Supervisor to run the app as a daemon. 
- Configures Supervisor to run the app. Supervisor makes sure the app is restarted if it exits unexpectedly or is terminated by an admin or other process. It also sends the app's - stdoutand- stderrto syslog to be collected by the Logging agent.
Create and configure a Compute Engine instance
- Create a Compute Engine instance: - Linux/macOS- Windows- gcloud compute instances create my-app-instance ^ --image-family=debian-9 ^ --image-project=debian-cloud ^ --machine-type=g1-small ^ --scopes userinfo-email,cloud-platform ^ --metadata-from-file startup-script=gce/startup-script.sh ^ --zone us-central1-a ^ --tags http-server- Replace the zone with a development zone, for example - us-central1-a. For more information on regions and zones, see Geography and regions.- This creates a new instance, allows it to access Cloud de Confiance services, and runs your startup script. The instance name is - my-app-instance.
- Check the progress of the instance creation: - gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE - Replace - YOUR_ZONEwith the zone you deployed your instance to.- When the startup script is complete, you see the following message: - startup-script: INFO Finished running startup scripts. 
- Create a firewall rule to allow traffic to your instance: - gcloud compute firewall-rules create default-allow-http-80 \ --allow tcp:80 \ --source-ranges 0.0.0.0/0 \ --target-tags http-server \ --description "Allow port 80 access to http-server"
- Get the external IP address of your instance: - gcloud compute instances list
- To see your app running, enter this URL in your browser: - http://YOUR_INSTANCE_IP - Replace - YOUR_INSTANCE_IPwith the external IP address of your instance.
Manage and monitor an instance
You can use the Cloud de Confiance console to monitor and manage your instance.
- In the Cloud de Confiance console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
- 
  To view all of the logs generated by your Compute Engine resources, go to the Logs Explorer page. Go to Logs ExplorerCloud Logging is automatically configured to gather logs from various common services, including syslog.
Clean up
To avoid incurring charges to your Google Cloud account for the resources used in this tutorial, either delete the project that contains the resources, or keep the project and delete the individual resources.
Delete the project
- In the Cloud de Confiance console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Delete the individual resources
gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all gcloud compute firewall-rules delete default-allow-http-80