aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/deploy.yml37
-rw-r--r--.github/workflows/on-commit.yml50
-rw-r--r--.github/workflows/python.yml50
-rw-r--r--.github/workflows/terraform.yml37
-rw-r--r--.gitignore12
-rw-r--r--terraform/rds.tf42
-rw-r--r--terraform/vars.tf4
-rw-r--r--test.py0
8 files changed, 118 insertions, 114 deletions
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..372d0b3
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,37 @@
+name: deploy-terraform
+
+on:
+ push:
+ branches:
+ - test-ci/** # Adjust the branch based on our deployment strategy
+
+jobs:
+ deploy-terraform:
+ name: Deploy Terraform
+ runs-on: ubuntu-latest
+ environment: test-env
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Install Terraform
+ uses: hashicorp/setup-terraform@v3
+
+ - name: Configure AWS Credentials
+ uses: aws-actions/configure-aws-credentials@v4
+ with:
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ aws-region: ${{ secrets.AWS_REGION }}
+
+ - name: Terraform Init
+ working-directory: terraform
+ run: terraform init
+
+ - name: Terraform Plan
+ working-directory: terraform
+ run: terraform plan
+
+ - name: Terraform Apply
+ working-directory: terraform
+ run: terraform apply --auto-approve \ No newline at end of file
diff --git a/.github/workflows/on-commit.yml b/.github/workflows/on-commit.yml
new file mode 100644
index 0000000..fd9ffb8
--- /dev/null
+++ b/.github/workflows/on-commit.yml
@@ -0,0 +1,50 @@
+name: commit-qc-checks
+
+on:
+ push:
+ branches-ignore:
+ - 'main'
+
+jobs:
+ python-quality-checks:
+ runs-on: ubuntu-latest
+ steps:
+ - uses : actions/checkout@v4
+ - name : 'Python: Setup'
+ uses : actions/setup-python@v5
+ with:
+ python-version: 3.11
+ - name : 'Python: Install Dependencies'
+ run: |
+ python -m pip install --upgrade pip
+ pip install flake8 pylint black bandit safety
+ continue-on-error: true
+ - name : 'Python: Linting'
+ run: |
+ flake8 .
+ find . -name "*.py" | xargs pylint
+ continue-on-error: true
+ - name : 'Python: Formatting'
+ run: |
+ black --check .
+ continue-on-error: true
+ terraform-quality-checks:
+ runs-on: ubuntu-latest
+ steps:
+ - uses : actions/checkout@v4
+ - name: 'Terraform: Setup'
+ uses: hashicorp/setup-terraform@v3
+ with:
+ terraform_version: latest
+ - name: 'Terraform: Formatting'
+ working-directory: terraform
+ run: terraform fmt -check -recursive
+ continue-on-error: true
+ - name: 'Terraform: Initialise'
+ working-directory: terraform
+ run: terraform init -backend=false
+ continue-on-error: true
+ - name: 'Terraform: Validate'
+ working-directory: terraform
+ run: terraform validate
+ continue-on-error: true \ No newline at end of file
diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml
deleted file mode 100644
index 7d5b5b1..0000000
--- a/.github/workflows/python.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: python-quality-checks
-
-on:
- push:
- branches: [development]
- pull_request:
- branches: [development, staging]
-
-jobs:
-
- check-if-py-files-exist:
- runs-on: ubuntu-latest
- outputs:
- py_files_exist: ${{ steps.check.outputs.py_files_exist }}
- steps:
- - uses: actions/checkout@v2
- - id: check_files
- run: |
- if [ -n "$(find . -name '*.py')" ]; then
- echo "::set-output name=py_files_exist::true"
- else
- echo "::set-output name=py_files_exist::false"
- fi
-
- quality-checks:
- needs: check-if-py-files-exist
- if: ${{ needs.check-if-py-files-exist.outputs.py_files_exist == 'true' }}
- runs-on: ubuntu-latest
- steps:
- - uses : actions/checkout@v2
- - name : Setup
- uses : actions/setup-python@v2
- with:
- python-version: 3.11
- - name : Dependencies
- run: |
- python -m pip install --upgrade pip
- pip install flake8 pylint black bandit safety
- - name : Linting
- run: |
- flake8 .
- find . -name "*.py" | xargs pylint
- - name : Formatting
- run: |
- black --check .
- - name: Security
- run: |
- bandit -r .
- safety check
- \ No newline at end of file
diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml
deleted file mode 100644
index c349756..0000000
--- a/.github/workflows/terraform.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: terraform-quality-checks
-
-on:
- push:
- branches: [development]
- paths:
- - 'terraform/**.tf'
- - 'terraform/**.tfvars'
- pull_request:
- branches: [development, staging]
- paths:
- - 'terraform/**.tf'
- - 'terraform/**.tfvars'
-jobs:
- terraform-validation:
- runs-on: ubuntu-latest
- defaults:
- run:
- working-directory: ./terraform
- steps:
- - uses: actions/checkout@v2
- - name: Setup Terraform
- uses: hashicorp/setup-terraform@v1
- with:
- terraform_version: latest # Using the latest version, but not sure if it's the best practice
- - name: Format
- run: terraform fmt -check -recursive
- - name: Init
- run: terraform init -backend=false
- - name: Validate
- run: terraform validate
- - name: Setup TFLint
- uses: terraform-linters/setup-tflint@v2
- with:
- tflint_version: latest
- - name: Run TFLint
- run: tflint -f compact \ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 882adda..ca15434 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,16 @@
+# Terraform
*.tfstate
*.tfstate.*
*.tfvars
*.tfvars.json
.terraform.tfstate.lock.info
-*.zip
.terraform/
.terraform*
-log*
-.DS_Store
-venv
-.env
+# Output Files
+*.zip
+log*
__pycache__/
+
+# OS-Related Files
+.DS_Store
diff --git a/terraform/rds.tf b/terraform/rds.tf
index 4b25c5f..88783b7 100644
--- a/terraform/rds.tf
+++ b/terraform/rds.tf
@@ -2,9 +2,9 @@ data "aws_availability_zones" "available" {}
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
- version = "2.77.0"
+ version = "5.12.1"
- name = "${var.project_name}"
+ name = var.project_name
cidr = "10.0.0.0/16"
azs = data.aws_availability_zones.available.names
public_subnets = ["10.0.4.0/24", "10.0.5.0/24", "10.0.6.0/24"]
@@ -13,7 +13,7 @@ module "vpc" {
}
resource "aws_db_subnet_group" "Terrific-Totes-sub-gr" {
- name = "TT-db-subnet"
+ name = "tt-db-subnet"
subnet_ids = module.vpc.public_subnets
tags = {
@@ -45,7 +45,7 @@ resource "aws_security_group" "rds" {
}
resource "aws_db_parameter_group" "Terrific-Totes-param-gr" {
- name = "TT-db-param"
+ name = "tt-db-param"
family = "postgres14"
parameter {
@@ -54,25 +54,27 @@ resource "aws_db_parameter_group" "Terrific-Totes-param-gr" {
}
}
-resource "aws_db_instance" "Terrific-Totes-rds" {
- db_name = "${var.project_name}"
- instance_class = "db.t3.micro"
- allocated_storage = 5
- engine = "postgres"
- engine_version = "14.1"
- username = "user credentials for the root user" # we could use .env here
- password = "user password for the root user" # we could use .env here
+resource "aws_db_instance" "terrific-totes-rds" {
+ db_name = var.project_name
+ instance_class = "db.t3.micro"
+ allocated_storage = 5
+ engine = "postgres"
+ engine_version = "14.10"
+ username = "totes"
+ password = "totes123"
+ # username = "user credentials for the root user" # we could use .env here
+ # password = "user password for the root user" # we could use .env here
### alternatively to providing username nad password we can specify:
-# resource "aws_kms_key" "example_key" {
-# description = "Example KMS Key"
-# }
-# within the resource:
-# manage_master_user_password = true
-# master_user_secret_kms_key_id = aws_kms_key.example.key_id
-# }
+ # resource "aws_kms_key" "example_key" {
+ # description = "Example KMS Key"
+ # }
+ # within the resource:
+ # manage_master_user_password = true
+ # master_user_secret_kms_key_id = aws_kms_key.example.key_id
+ # }
db_subnet_group_name = aws_db_subnet_group.Terrific-Totes-sub-gr.name
vpc_security_group_ids = [aws_security_group.rds.id]
parameter_group_name = aws_db_parameter_group.Terrific-Totes-param-gr.name
publicly_accessible = false
skip_final_snapshot = true
-} \ No newline at end of file
+}
diff --git a/terraform/vars.tf b/terraform/vars.tf
index d5cdafb..3c88731 100644
--- a/terraform/vars.tf
+++ b/terraform/vars.tf
@@ -29,8 +29,8 @@ variable "load_lambda_name" {
}
variable "project_name" {
- type = string
- default = "Terrific-Totes"
+ type = string
+ default = "tt"
}
data "aws_caller_identity" "current" {}
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test.py
git.ajschof.me — hosted by ajschofield — powered by cgit