https://github.com/mukulmantosh/pulumi_django
Managing AWS Resources from Django Admin using Pulumi
https://github.com/mukulmantosh/pulumi_django
aws django iaac infrastructure-as-code pulumi pulumi-aws python3
Last synced: 14 days ago
JSON representation
Managing AWS Resources from Django Admin using Pulumi
- Host: GitHub
- URL: https://github.com/mukulmantosh/pulumi_django
- Owner: mukulmantosh
- Created: 2023-01-28T12:17:52.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-02-19T05:52:41.000Z (about 2 years ago)
- Last Synced: 2025-04-20T13:55:24.281Z (17 days ago)
- Topics: aws, django, iaac, infrastructure-as-code, pulumi, pulumi-aws, python3
- Language: Python
- Homepage:
- Size: 1.24 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# IaaC using Django & Pulumi

## Prerequisites
Before starting up this project, make sure you have an AWS account.
### Software Installation
- [x] [AWS Command Line Interface](https://aws.amazon.com/cli/) - The AWS Command Line Interface (CLI) is a unified tool to manage your AWS services.
- [x] [Pulumi](https://www.pulumi.com/) - Universal Infrastructure as Code
## Python Dependencies
- Installing Python Packages
```bash
$ 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**.

Update the respective YAML files & django settings in the codebase.
**Pulumi.yaml**

**settings.py**

## Pulumi CLI
Run the below command :
- **pulumi login**
## Migrating Tables
Run the below command :
- **python manage.py migrate**

## Creating SuperUser
Run the below command :
- **python manage.py createsuperuser**

## 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
## Logging into Django Admin
Provide the superuser credentials, which you have created recently.


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

## 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

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


## Deleting an EC2 Instance
Now, we will go ahead and delete the instance information from Django Admin

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


## References
If you are interested to know more about Pulumi.
- [How to use Pulumi YAML](https://www.pulumi.com/docs/intro/languages/yaml/)
- [Pulumi Automation API](https://www.pulumi.com/automation/)