Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi
Nginx Server Using Compute Engine
Starting point for building the Pulumi nginx server sample in Google Cloud Platform. This example deploys two GCP virtual machines:
- a virtual machine running nginx via a startup script
- a virtual machine running nginx via a Docker container with Google’s Container-Optimized OS
Running the App
Create a new stack:
$ pulumi stack init gcp-instance-nginx
Configure the project:
$ export GOOGLE_PROJECT=YOURPROJECTID; export GOOGLE_REGION=asia-east1; export GOOGLE_ZONE=asia-east1-a; $ export GOOGLE_CREDENTIALS=YOURGCPCREDENTIALS
Run
pulumi up
to preview and deploy changes:$ pulumi up Previewing update (dev): Type Name Plan + pulumi:pulumi:Stack gcp-instance-nginx-dev create + ├─ gcp:compute:Address poc create + ├─ gcp:compute:Network poc create + ├─ gcp:compute:Address poc-container-instance create + ├─ gcp:compute:Firewall poc create + ├─ gcp:compute:Instance poc create + └─ gcp:compute:Instance poc-container-instance create Resources: + 7 to create Do you want to perform this update? yes Updating (dev): Type Name Status + pulumi:pulumi:Stack gcp-instance-nginx-dev created + ├─ gcp:compute:Address poc created + ├─ gcp:compute:Network poc created + ├─ gcp:compute:Address poc-container-instance created + ├─ gcp:compute:Firewall poc created + ├─ gcp:compute:Instance poc created + └─ gcp:compute:Instance poc-container-instance created Outputs: container_instance_external_ip: "34.66.98.237" container_instance_name : "poc-container-instance-11dddc1" instance_external_ip : "35.192.222.243" instance_name : "poc-4897b20" Resources: + 7 created Duration: 59s
Curl the HTTP server:
$ curl $(pulumi stack output instance_external_ip) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Test Page for the Nginx HTTP Server on Fedora</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> /*<![CDATA[*/ body { background-color: #fff; color: #000; font-size: 0.9em; font-family: sans-serif,helvetica; margin: 0; padding: 0; } :link { color: #c00; } :visited { color: #c00; } a:hover { color: #f50; } h1 { text-align: center; margin: 0; padding: 0.6em 2em 0.4em; background-color: #294172; color: #fff; font-weight: normal; font-size: 1.75em; border-bottom: 2px solid #000; } h1 strong { font-weight: bold; font-size: 1.5em; } h2 { text-align: center; background-color: #3C6EB4; font-size: 1.1em; font-weight: bold; color: #fff; margin: 0; padding: 0.5em; border-bottom: 2px solid #294172; } hr { display: none; } .content { padding: 1em 5em; } .alert { border: 2px solid #000; } img { border: 2px solid #fff; padding: 2px; margin: 2px; } a:hover img { border: 2px solid #294172; } .logos { margin: 1em; text-align: center; } /*]]>*/ </style> </head> <body> <h1>Welcome to <strong>nginx</strong> on Fedora!</h1> <div class="content"> <p>This page is used to test the proper operation of the <strong>nginx</strong> HTTP server after it has been installed. If you can read this page, it means that the web server installed at this site is working properly.</p> <div class="alert"> <h2>Website Administrator</h2> <div class="content"> <p>This is the default <tt>index.html</tt> page that is distributed with <strong>nginx</strong> on Fedora. It is located in <tt>/usr/share/nginx/html</tt>.</p> <p>You should now put your content in a location of your choice and edit the <tt>root</tt> configuration directive in the <strong>nginx</strong> configuration file <tt>/etc/nginx/nginx.conf</tt>.</p> </div> </div> <div class="logos"> <a href="http://nginx.net/"><img src="nginx-logo.png" alt="[ Powered by nginx ]" width="121" height="32" /></a> <a href="http://fedoraproject.org/"><img src="poweredby.png" alt="[ Powered by Fedora ]" width="88" height="31" /></a> </div> </div> </body> </html>
Destroy the created resources:
$ pulumi destroy Previewing destroy (dev): Type Name Plan - pulumi:pulumi:Stack gcp-instance-nginx-dev delete - ├─ gcp:compute:Firewall poc delete - ├─ gcp:compute:Instance poc delete - ├─ gcp:compute:Instance poc-container-instance delete - ├─ gcp:compute:Address poc-container-instance delete - ├─ gcp:compute:Network poc delete - └─ gcp:compute:Address poc delete Outputs: - container_instance_external_ip: "34.66.98.237" - container_instance_name : "poc-container-instance-11dddc1" - instance_external_ip : "35.192.222.243" - instance_name : "poc-4897b20" Resources: - 7 to delete Do you want to perform this destroy? yes Destroying (dev): Type Name Status - pulumi:pulumi:Stack gcp-instance-nginx-dev deleted - ├─ gcp:compute:Firewall poc deleted - ├─ gcp:compute:Instance poc deleted - ├─ gcp:compute:Instance poc-container-instance deleted - ├─ gcp:compute:Network poc deleted - ├─ gcp:compute:Address poc-container-instance deleted - └─ gcp:compute:Address poc deleted Outputs: - container_instance_external_ip: "34.66.98.237" - container_instance_name : "poc-container-instance-11dddc1" - instance_external_ip : "35.192.222.243" - instance_name : "poc-4897b20" Resources: - 7 deleted Duration: 3m9s
Destroy the stack:
$ pulumi stack rm This will permanently remove the 'gcp-instance-nginx' stack! Please confirm that this is what you'd like to do by typing ("gcp-instance-nginx"): gcp-instance-nginx Stack 'gcp-instance-nginx' has been removed!