AWS web server with manual provisioning (in Python)
An example of manually configuring an AWS EC2 virtual machine
This example lives in the pulumi/examples repository. Check out just this directory to use it:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set aws-py-ec2-provisionerscd pulumi-examples/aws-py-ec2-provisionersThis demonstrates using the pulumi_command package to accomplish post-provisioning configuration steps.
Using these building blocks, one can accomplish much of the same as Terraform provisioners.
Prerequisites#
Deploying the example#
-
Create a new stack:
Terminal window pulumi stack init dev -
Generate an OpenSSH keypair for use with your server, as per the AWS requirements:
Terminal window ssh-keygen -t rsa -f rsa -b 4096 -m PEMThis will output two files,
rsaandrsa.pub, in the current directory. Be sure not to commit these files! -
Configure the stack so that the public key is used by your EC2 instance, and the private key is used for subsequent SCP and SSH steps that will configure your server after it is stood up:
Terminal window cat rsa.pub | pulumi config set publicKey --cat rsa | pulumi config set privateKey --secret --Notice that we’ve used
--secretforprivateKey. This ensures the private key is stored as an encrypted Pulumi secret. -
Set your desired AWS region:
Terminal window pulumi config set aws:region us-west-2 -
Install dependencies:
Terminal window python3 -m venv venvsource venv/bin/activatepip install -r requirements.txt -
Deploy the stack. All resources will be provisioned and configured:
Terminal window pulumi up
Cleaning up#
Once you’re finished experimenting, destroy your stack and remove it to avoid incurring any additional cost:
pulumi destroypulumi stack rm