Skip to content

Managing AWS Resources from Django Admin using Pulumi

Notifications You must be signed in to change notification settings

mukulmantosh/Pulumi_Django

Repository files navigation

IaaC using Django & Pulumi


stack_logo

Prerequisites

Before starting up this project, make sure you have an AWS account.

Software Installation

Python Dependencies

  • Installing Python Packages
$ pip install -r requirements.txt
  • Note: For our project we are using db.sqlite3. I strongly recommend to use Postgres/MySQL when setting up in production.

Pulumi Stack

Login to Pulumi and create a new project.

Make sure to name the stack as aws-python.

step1

Update the respective YAML files & django settings in the codebase.

Pulumi.yaml

step2

settings.py

step3

Pulumi CLI

Run the below command :

  • pulumi login

step4

Migrating Tables

Run the below command :

  • python manage.py migrate

step5

Creating SuperUser

Run the below command :

  • python manage.py createsuperuser

step6

AWS Credentials

Make sure to update your AWS credentials, residing in $HOME/.aws/credentials

  • Note: For this demo, make sure the IAM User should have AdministratorAccess. This is not recommended permission you need to give. Kindly, follow the security best practices.
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxx

Loading AWS Resources

Run the below command :

  • python manage.py load_resources

This command is going to dump all the AWS resources into your database.

  • VPC
  • Subnets
  • Security Groups
  • Key Pair
  • Instance Types

step7

Logging into Django Admin

Provide the superuser credentials, which you have created recently.

step8

step9

You can now observe that all the AWS information has been dumped in our database, and it's reflected in the admin.

Instance Types

step10

Operating Systems

step11

Creating an EC2 Instance

We will provide all the necessary information for creating EC2 Instance.

  • Note: Pulumi will be invoked in the foreground, I recommend using background tasks like Celery & RabbitMQ

step12

You can see below, that the instance has been created and the Public IPv4 address has been updated.

step13

step14

Deleting an EC2 Instance

Now, we will go ahead and delete the instance information from Django Admin

step15

You can observe the django console, that Pulumi has started the process to terminate the instance.

step16

step17

References

If you are interested to know more about Pulumi.

Releases

No releases published

Packages

No packages published

Languages