From eaf713a8022047a76272396a1601ad4cd068d1ac Mon Sep 17 00:00:00 2001 From: abolfazl1381 Date: Wed, 27 Nov 2024 17:19:28 +0330 Subject: [PATCH] feat(nginx_ansible): recreate nginx ansible model --- app/media/MyTerraform/main.tf | 17 ---- app/media/MyTerraform/modules/efs/main.tf | 82 ------------------- .../MyTerraform/modules/efs/terraform.tfvars | 28 ------- .../MyTerraform/modules/efs/variables.tf | 44 ---------- app/media/MyTerraform/modules/efs/versions.tf | 10 --- app/media/MyTerraform/terraform.tfvars | 28 ------- app/media/MyTerraform/variables.tf | 44 ---------- app/media/MyTerraform/versions.tf | 10 --- app/models/ansible_models.py | 13 ++- app/routes/ansible.py | 8 +- .../ansible/install/main.py | 5 +- 11 files changed, 18 insertions(+), 271 deletions(-) delete mode 100644 app/media/MyTerraform/main.tf delete mode 100644 app/media/MyTerraform/modules/efs/main.tf delete mode 100644 app/media/MyTerraform/modules/efs/terraform.tfvars delete mode 100644 app/media/MyTerraform/modules/efs/variables.tf delete mode 100644 app/media/MyTerraform/modules/efs/versions.tf delete mode 100644 app/media/MyTerraform/terraform.tfvars delete mode 100644 app/media/MyTerraform/variables.tf delete mode 100644 app/media/MyTerraform/versions.tf diff --git a/app/media/MyTerraform/main.tf b/app/media/MyTerraform/main.tf deleted file mode 100644 index fbe3112e..00000000 --- a/app/media/MyTerraform/main.tf +++ /dev/null @@ -1,17 +0,0 @@ -provider "aws" { - region = "us-east-1" -} - -module "efs" { - source = "./modules/efs" - - security_group_name = var.security_group_name - security_group_ingress_rules = var.security_group_ingress_rules - security_group_egress_rule = var.security_group_egress_rule - - file_system_create = var.file_system_create - efs = var.efs - - mount_target_create = var.mount_target_create - backup_policy_create = var.backup_policy_create -} diff --git a/app/media/MyTerraform/modules/efs/main.tf b/app/media/MyTerraform/modules/efs/main.tf deleted file mode 100644 index 38ff673c..00000000 --- a/app/media/MyTerraform/modules/efs/main.tf +++ /dev/null @@ -1,82 +0,0 @@ -locals { - default_efs_lifecycle_policies = { - transition_to_ia = "AFTER_14_DAYS", - transition_to_primary_storage_class = "AFTER_1_ACCESS", - } -} - -data "aws_availability_zones" "available_zones" { - state = "available" -} - -data "aws_vpc" "default_vpc" { - default = true -} - -data "aws_subnets" "subnets_ids" { - filter { - name = "vpc-id" - values = [data.aws_vpc.default_vpc.id] - } -} - -resource "aws_security_group" "security_group" { - count = var.file_system_create && var.mount_target_create ? 1 : 0 - name = var.security_group_name - description = "Security group for EFS mount targets" - vpc_id = data.aws_vpc.default_vpc.id - - dynamic "ingress" { - for_each = var.security_group_ingress_rules - content { - description = ingress.value["description"] - from_port = ingress.value["from_port"] - to_port = ingress.value["to_port"] - protocol = ingress.value["protocol"] - cidr_blocks = ingress.value["cidr_blocks"] - } - } - - egress { - from_port = var.security_group_egress_rule["from_port"] - to_port = var.security_group_egress_rule["to_port"] - protocol = var.security_group_egress_rule["protocol"] - cidr_blocks = var.security_group_egress_rule["cidr_blocks"] - } -} - -resource "aws_efs_file_system" "filesystem" { - count = var.file_system_create ? 1 : 0 - creation_token = var.efs["creation_token"] - encrypted = var.efs["encrypted"] - performance_mode = var.efs["performance_mode"] - throughput_mode = var.efs["throughput_mode"] - - lifecycle_policy { - transition_to_ia = lookup(local.default_efs_lifecycle_policies, "transition_to_ia", null) - } - - lifecycle_policy { - transition_to_primary_storage_class = lookup(local.default_efs_lifecycle_policies, "transition_to_primary_storage_class", null) - } - - tags = { - Name = "terraform-efs" - } -} - -resource "aws_efs_mount_target" "mount_target" { - count = var.file_system_create && var.mount_target_create ? length(data.aws_availability_zones.available_zones.names) : 0 - file_system_id = aws_efs_file_system.filesystem[0].id - subnet_id = data.aws_subnets.subnets_ids.ids[count.index] - security_groups = [aws_security_group.security_group[0].id] -} - -resource "aws_efs_backup_policy" "backup_policy" { - count = var.file_system_create && var.backup_policy_create ? 1 : 0 - file_system_id = aws_efs_file_system.filesystem[0].id - - backup_policy { - status = var.efs["backup_policy"] - } -} diff --git a/app/media/MyTerraform/modules/efs/terraform.tfvars b/app/media/MyTerraform/modules/efs/terraform.tfvars deleted file mode 100644 index 6fdb8932..00000000 --- a/app/media/MyTerraform/modules/efs/terraform.tfvars +++ /dev/null @@ -1,28 +0,0 @@ -security_group_name = "efs_rule" -security_group_ingress_rules = { - efs_rule = { - description = "EFS Ingress" - from_port = 2049 - to_port = 2049 - protocol = "tcp" - cidr_blocks = ["0.0.0.0/0"] - } -} -security_group_egress_rule = { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] -} - -file_system_create = true -efs = { - creation_token = "terraform" - encrypted = true - performance_mode = "generalPurpose" - throughput_mode = "elastic" - backup_policy = "ENABLED" -} - -mount_target_create = true -backup_policy_create = false diff --git a/app/media/MyTerraform/modules/efs/variables.tf b/app/media/MyTerraform/modules/efs/variables.tf deleted file mode 100644 index d20ff690..00000000 --- a/app/media/MyTerraform/modules/efs/variables.tf +++ /dev/null @@ -1,44 +0,0 @@ -variable "security_group_name" { - type = string -} - -variable "security_group_ingress_rules" { - type = map(object({ - description = string - from_port = number - to_port = number - protocol = string - cidr_blocks = list(string) - })) -} - -variable "security_group_egress_rule" { - type = object({ - from_port = number - to_port = number - protocol = string - cidr_blocks = list(string) - }) -} - -variable "file_system_create" { - type = bool -} - -variable "efs" { - type = object({ - creation_token = string - encrypted = bool - performance_mode = string - throughput_mode = string - backup_policy = string - }) -} - -variable "mount_target_create" { - type = bool -} - -variable "backup_policy_create" { - type = bool -} diff --git a/app/media/MyTerraform/modules/efs/versions.tf b/app/media/MyTerraform/modules/efs/versions.tf deleted file mode 100644 index f8fba3df..00000000 --- a/app/media/MyTerraform/modules/efs/versions.tf +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">= 1.0" - - required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 5.20" - } - } -} diff --git a/app/media/MyTerraform/terraform.tfvars b/app/media/MyTerraform/terraform.tfvars deleted file mode 100644 index 6fdb8932..00000000 --- a/app/media/MyTerraform/terraform.tfvars +++ /dev/null @@ -1,28 +0,0 @@ -security_group_name = "efs_rule" -security_group_ingress_rules = { - efs_rule = { - description = "EFS Ingress" - from_port = 2049 - to_port = 2049 - protocol = "tcp" - cidr_blocks = ["0.0.0.0/0"] - } -} -security_group_egress_rule = { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] -} - -file_system_create = true -efs = { - creation_token = "terraform" - encrypted = true - performance_mode = "generalPurpose" - throughput_mode = "elastic" - backup_policy = "ENABLED" -} - -mount_target_create = true -backup_policy_create = false diff --git a/app/media/MyTerraform/variables.tf b/app/media/MyTerraform/variables.tf deleted file mode 100644 index d20ff690..00000000 --- a/app/media/MyTerraform/variables.tf +++ /dev/null @@ -1,44 +0,0 @@ -variable "security_group_name" { - type = string -} - -variable "security_group_ingress_rules" { - type = map(object({ - description = string - from_port = number - to_port = number - protocol = string - cidr_blocks = list(string) - })) -} - -variable "security_group_egress_rule" { - type = object({ - from_port = number - to_port = number - protocol = string - cidr_blocks = list(string) - }) -} - -variable "file_system_create" { - type = bool -} - -variable "efs" { - type = object({ - creation_token = string - encrypted = bool - performance_mode = string - throughput_mode = string - backup_policy = string - }) -} - -variable "mount_target_create" { - type = bool -} - -variable "backup_policy_create" { - type = bool -} diff --git a/app/media/MyTerraform/versions.tf b/app/media/MyTerraform/versions.tf deleted file mode 100644 index f8fba3df..00000000 --- a/app/media/MyTerraform/versions.tf +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">= 1.0" - - required_providers { - aws = { - source = "hashicorp/aws" - version = ">= 5.20" - } - } -} diff --git a/app/models/ansible_models.py b/app/models/ansible_models.py index 9776b458..63adc05e 100644 --- a/app/models/ansible_models.py +++ b/app/models/ansible_models.py @@ -1,6 +1,15 @@ from typing import List, Optional from pydantic import BaseModel, validator, ValidationError -class AnsibleInstall(BaseModel): + + +class AnsibleInstallNginx(BaseModel): os: str = 'ubuntu' - tool: str = 'nginx' \ No newline at end of file + hosts:List[str] = ['www.example.com'] + version:str = 'latest' + + @validator("os") + def validator_os(cls, value): + if value not in ['ubuntu']: + raise ValueError("Size must be a valid string ending with 'Gi', 'Mi', or 'Ti'.") + return value \ No newline at end of file diff --git a/app/routes/ansible.py b/app/routes/ansible.py index 67db884d..44816fcf 100644 --- a/app/routes/ansible.py +++ b/app/routes/ansible.py @@ -1,15 +1,15 @@ from app.app_instance import app from app.gpt_services import gpt_service from app.services import (write_installation,edit_directory_generator,execute_pythonfile) -from app.models import (AnsibleInstall,Output) +from app.models import (AnsibleInstallNginx,Output) from app.template_generators.ansible.install.main import ansible_install_template import os -@app.post("/ansible-install/") -async def ansible_install_generation(request:AnsibleInstall) -> Output: +@app.post("/ansible-install/nginx/") +async def ansible_install_generation_nginx(request:AnsibleInstallNginx) -> Output: if os.environ.get("TEST"): return Output(output='output') - generated_prompt = ansible_install_template(request) + generated_prompt = ansible_install_template(request,"nginx") output = gpt_service(generated_prompt) edit_directory_generator("ansible_generator",output) execute_pythonfile("MyAnsible","ansible_generator") diff --git a/app/template_generators/ansible/install/main.py b/app/template_generators/ansible/install/main.py index b32263b8..688d966c 100644 --- a/app/template_generators/ansible/install/main.py +++ b/app/template_generators/ansible/install/main.py @@ -1,8 +1,9 @@ from .docker import ansible_docker_install from .nginx import ansible_nginx_install from fastapi import HTTPException -def ansible_install_template(input_): - match input_.tool: + +def ansible_install_template(input_, tool:str): + match tool: case 'nginx': return ansible_nginx_install(input_) case 'docker':