Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/tf-docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Generate terraform docs
on:
pull_request:
branches:
- main

workflow_dispatch:

jobs:
docs:
runs-on: ubuntu-latest

permissions:
contents: 'write'

steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.ref }} # Use the PR branch for checkout

- name: Render terraform docs inside the README.md and push changes back to PR branch
uses: terraform-docs/gh-actions@v1.4.1
with:
working-dir: .
output-file: README.md
output-method: inject
git-push: "true"
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ crash.*.log
# password, private keys, and other secrets. These should not be part of version
# control as they are data points which are potentially sensitive and subject
# to change depending on the environment.
*.tfvars
# *.tfvars
*.tfvars.json

# Ignore override files as they are usually used to override resources locally and so
Expand Down
24 changes: 24 additions & 0 deletions .terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 35 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,35 @@
# database-as-code
# database-as-code

<!-- BEGIN_TF_DOCS -->
## Requirements

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | ~>1.9.0 |
| <a name="requirement_postgresql"></a> [postgresql](#requirement\_postgresql) | 1.25.0 |

## Providers

No providers.

## Modules

| Name | Source | Version |
|------|--------|---------|
| <a name="module_database"></a> [database](#module\_database) | ./modules/database | n/a |

## Resources

No resources.

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_postgresql_databases"></a> [postgresql\_databases](#input\_postgresql\_databases) | A map of PostgreSQL databases to create | <pre>map(object({<br/> name = string<br/> db_owner = string<br/> }))</pre> | `{}` | no |
| <a name="input_postgresql_default_password"></a> [postgresql\_default\_password](#input\_postgresql\_default\_password) | The password for the PostgreSQL user | `string` | `""` | no |

## Outputs

No outputs.
<!-- END_TF_DOCS -->
1 change: 1 addition & 0 deletions backends/wsl.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
path = "/mnt/c/Users/gaura/OneDrive/GITHUB/iamgp21/TF_STATE/wsl2_postgresql.tfstate"
7 changes: 7 additions & 0 deletions entrypoint.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module "database" {
source = "./modules/database"
postgresql_databases = var.postgresql_databases
providers = {
postgresql.wsl = postgresql.wsl
}
}
25 changes: 25 additions & 0 deletions modules/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!-- BEGIN_TF_DOCS -->
## Requirements

No requirements.

## Providers

No providers.

## Modules

No modules.

## Resources

No resources.

## Inputs

No inputs.

## Outputs

No outputs.
<!-- END_TF_DOCS -->
31 changes: 31 additions & 0 deletions modules/database/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<!-- BEGIN_TF_DOCS -->
## Requirements

No requirements.

## Providers

| Name | Version |
|------|---------|
| <a name="provider_postgresql.wsl"></a> [postgresql.wsl](#provider\_postgresql.wsl) | n/a |

## Modules

No modules.

## Resources

| Name | Type |
|------|------|
| [postgresql_database.example_db](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/database) | resource |

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_postgresql_databases"></a> [postgresql\_databases](#input\_postgresql\_databases) | A map of PostgreSQL databases to create | <pre>map(object({<br/> name = string<br/> db_owner = string<br/> }))</pre> | `{}` | no |

## Outputs

No outputs.
<!-- END_TF_DOCS -->
6 changes: 6 additions & 0 deletions modules/database/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
resource "postgresql_database" "example_db" {
provider = postgresql.wsl
for_each = var.postgresql_databases
name = each.value.name
owner = each.value.db_owner
}
8 changes: 8 additions & 0 deletions modules/database/terraform.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
terraform {
required_providers {
postgresql = {
source = "cyrilgdn/postgresql"
configuration_aliases = [postgresql.wsl]
}
}
}
8 changes: 8 additions & 0 deletions modules/database/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
variable "postgresql_databases" {
description = "A map of PostgreSQL databases to create"
type = map(object({
name = string
db_owner = string
}))
default = {}
}
9 changes: 9 additions & 0 deletions provider.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
provider "postgresql" {
alias = "wsl"
host = "172.31.161.14"
port = 5432
database = "postgres" # This is the default database
username = "postgres" # Default PostgreSQL user(superuser)
password = var.postgresql_default_password
sslmode = "require"
}
6 changes: 6 additions & 0 deletions tfvars/wsl.tfvars
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
postgresql_databases = {
example_db = {
name = "example_db"
db_owner = "postgres"
}
}
16 changes: 16 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
variable "postgresql_default_password" {
description = "The password for the PostgreSQL user"
type = string
sensitive = true
default = ""

}

variable "postgresql_databases" {
description = "A map of PostgreSQL databases to create"
type = map(object({
name = string
db_owner = string
}))
default = {}
}
11 changes: 11 additions & 0 deletions versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
terraform {
required_version = "~>1.9.0"
required_providers {
postgresql = {
source = "cyrilgdn/postgresql"
version = "1.25.0"
}
}
backend "local" {
}
}