Web Server Using Compute Engine

View Code Deploy

Starting point for building the Pulumi web server sample in Google Cloud.

Running the App

  1. Create a Python virtualenv, activate it, and install dependencies:

    This installs the dependent packages needed for our Pulumi program.

    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip3 install -r requirements.txt
  2. Create a new stack:

    $ pulumi stack init dev
    
  3. Configure the project:

    $ pulumi config set gcp:project YOURGOOGLECLOUDPROJECT
    $ pulumi config set gcp:zone us-central1-a
    
  4. Run pulumi up to preview and deploy changes:

    ``` $ pulumi up -y Previewing update (dev): Type Name Plan Info

    • pulumi:pulumi:Stack gcp-py-webserver-dev create
    • ├─ gcp:compute:Address address create
    • ├─ gcp:compute:Network network create
    • ├─ gcp:compute:Firewall firewall create
    • └─ gcp:compute:Instance instance create

    Updating (dev): Type Name Status Info + pulumi:pulumi:Stack gcp-py-webserver-dev created + ├─ gcp:compute:Address address created + ├─ gcp:compute:Network network created + ├─ gcp:compute:Firewall firewall created + └─ gcp:compute:Instance instance created

    Outputs: instanceIP : “35.188.118.61” instanceName: “instance-91b70e1”

    Resources: + 5 created

    Duration: 1m51s ```

  5. Curl the HTTP server:

    $ curl $(pulumi stack output instanceIP)
    Hello, World!
    
  6. SSH into the server:

    $ gcloud compute ssh $(pulumi stack output instanceName)
    Warning: Permanently added 'compute.967481934451185713' (ECDSA) to the list of known hosts.
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    user@instance-8ad9bd8:~$
    
  7. Cleanup

    $ pulumi destroy
    $ pulumi stack rm