Skip to content

Commit c5fd92d

Browse files
committed
feat(ansible kuber): add the route and config adding to add configs to the generated project
1 parent 1bc3fe4 commit c5fd92d

12 files changed

Lines changed: 49 additions & 172 deletions

File tree

Lines changed: 0 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +0,0 @@
1-
import os
2-
3-
project_name = "app/media/MyAnsible"
4-
ansible_dir = project_name
5-
group_vars_dir = os.path.join(ansible_dir, "group_vars")
6-
host_vars_dir = os.path.join(ansible_dir, "host_vars")
7-
roles_dir = os.path.join(ansible_dir, "roles")
8-
install_docker_dir = os.path.join(roles_dir, "install_docker")
9-
tasks_dir = os.path.join(install_docker_dir, "tasks")
10-
vars_dir = os.path.join(install_docker_dir, "vars")
11-
files_dir = os.path.join(install_docker_dir, "files")
12-
handlers_dir = os.path.join(install_docker_dir, "handlers")
13-
templates_dir = os.path.join(install_docker_dir, "templates")
14-
15-
# Create project directories
16-
os.makedirs(ansible_dir, exist_ok=True)
17-
os.makedirs(group_vars_dir, exist_ok=True)
18-
os.makedirs(host_vars_dir, exist_ok=True)
19-
os.makedirs(roles_dir, exist_ok=True)
20-
os.makedirs(install_docker_dir, exist_ok=True)
21-
os.makedirs(tasks_dir, exist_ok=True)
22-
os.makedirs(vars_dir, exist_ok=True)
23-
os.makedirs(files_dir, exist_ok=True)
24-
os.makedirs(handlers_dir, exist_ok=True)
25-
os.makedirs(templates_dir, exist_ok=True)
26-
27-
# Create ansible.cfg
28-
with open(os.path.join(ansible_dir, "ansible.cfg"), "w") as cfg_file:
29-
cfg_file.write("[defaults]\n")
30-
cfg_file.write("host_key_checking=false\n")
31-
32-
# Create group_vars/docker_nodes
33-
with open(os.path.join(group_vars_dir, "docker_nodes"), "w") as gv_file:
34-
gv_file.write("ansible_port: 28\n")
35-
gv_file.write("ansible_user: root\n")
36-
37-
# Create hosts
38-
with open(os.path.join(ansible_dir, "hosts"), "w") as hosts_file:
39-
hosts_file.write("[docker_nodes]\n")
40-
hosts_file.write("www.example.com\n")
41-
42-
# Create docker_playbook.yml
43-
with open(os.path.join(ansible_dir, "docker_playbook.yml"), "w") as playbook_file:
44-
playbook_file.write("- hosts: all\n")
45-
playbook_file.write(" roles:\n")
46-
playbook_file.write(" - install_docker\n")
47-
48-
# Create tasks/main.yml
49-
with open(os.path.join(tasks_dir, "main.yml"), "w") as tasks_file:
50-
tasks_file.write("---\n")
51-
tasks_file.write("- name: Install prerequisite packages\n")
52-
tasks_file.write(" apt:\n")
53-
tasks_file.write(" name: \"{{ item }}\"\n")
54-
tasks_file.write(" state: present\n")
55-
tasks_file.write(" loop: \"{{ prerequisite_packages }}\"\n")
56-
tasks_file.write("- name: Create directory for Docker keyrings\n")
57-
tasks_file.write(" file:\n")
58-
tasks_file.write(" path: /etc/apt/keyrings\n")
59-
tasks_file.write(" state: directory\n")
60-
tasks_file.write(" mode: '0755'\n")
61-
tasks_file.write("- name: Download Docker's official GPG key\n")
62-
tasks_file.write(" get_url:\n")
63-
tasks_file.write(" url: https://download.docker.com/linux/ubuntu/gpg\n")
64-
tasks_file.write(" dest: /etc/apt/keyrings/docker.asc\n")
65-
tasks_file.write(" mode: '0644'\n")
66-
tasks_file.write("- name: Add Docker repository to apt sources\n")
67-
tasks_file.write(" copy:\n")
68-
tasks_file.write(" content: |\n")
69-
tasks_file.write(" deb [arch={{ ansible_architecture }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable\n")
70-
tasks_file.write(" dest: /etc/apt/sources.list.d/docker.list\n")
71-
tasks_file.write("- name: Update apt cache after adding Docker repo\n")
72-
tasks_file.write(" apt:\n")
73-
tasks_file.write(" update_cache: yes\n")
74-
tasks_file.write("- name: Install Docker packages\n")
75-
tasks_file.write(" apt:\n")
76-
tasks_file.write(" name: \"{{ item }}\"\n")
77-
tasks_file.write(" state: present\n")
78-
tasks_file.write(" loop: \"{{ docker_packages }}\"\n")
79-
tasks_file.write("- name: Ensure Docker and containerd services are started and enabled\n")
80-
tasks_file.write(" service:\n")
81-
tasks_file.write(" name: \"{{ item }}\"\n")
82-
tasks_file.write(" state: started\n")
83-
tasks_file.write(" enabled: yes\n")
84-
tasks_file.write(" loop: \"{{ docker_services }}\"\n")
85-
86-
# Create vars/main.yml
87-
with open(os.path.join(vars_dir, "main.yml"), "w") as vars_file:
88-
vars_file.write("prerequisite_packages:\n")
89-
vars_file.write(" - ca-certificates\n")
90-
vars_file.write(" - curl\n\n")
91-
vars_file.write("docker_services:\n")
92-
vars_file.write(" - docker\n")
93-
vars_file.write(" - containerd\n\n")
94-
vars_file.write("docker_packages:\n")
95-
vars_file.write(" - docker-ce\n")
96-
vars_file.write(" - docker-ce-cli\n")
97-
vars_file.write(" - containerd.io\n")
98-
vars_file.write(" - docker-buildx-plugin\n")
99-
vars_file.write(" - docker-compose-plugin\n")
100-
101-
# Create empty host_vars directory
102-
os.makedirs(host_vars_dir, exist_ok=True)
103-
104-
# Create empty files directory
105-
os.makedirs(files_dir, exist_ok=True)
106-
107-
# Create empty handlers directory
108-
os.makedirs(handlers_dir, exist_ok=True)
109-
110-
# Create empty templates directory
111-
os.makedirs(templates_dir, exist_ok=True)

app/media/MyAnsible/ansible.cfg

Lines changed: 0 additions & 2 deletions
This file was deleted.

app/media/MyAnsible/docker_playbook.yml

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/media/MyAnsible/group_vars/docker_nodes

Lines changed: 0 additions & 2 deletions
This file was deleted.

app/media/MyAnsible/hosts

Lines changed: 0 additions & 2 deletions
This file was deleted.

app/media/MyAnsible/roles/install_docker/tasks/main.yml

Lines changed: 0 additions & 35 deletions
This file was deleted.

app/media/MyAnsible/roles/install_docker/vars/main.yml

Lines changed: 0 additions & 14 deletions
This file was deleted.

app/models/ansible_models.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,21 @@ def validator_os(cls, value):
2929
valid_oss = ['ubuntu']
3030
if value not in valid_oss:
3131
raise ValueError(f"your selected OS must be in {valid_oss}")
32-
return value
32+
return value
33+
34+
35+
36+
class AnsibleInstallKuber(AnsibleBase):
37+
os: str = 'ubuntu'
38+
k8s_worker_nodes: List[str]
39+
k8s_master_nodes: List[str]
40+
lb_nodes: List[str]
41+
42+
43+
@validator("os")
44+
def validator_os(cls, value):
45+
valid_oss = ['ubuntu']
46+
if value not in valid_oss:
47+
raise ValueError(f"your selected OS must be in {valid_oss}")
48+
return value
49+

app/routes/ansible.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from app.app_instance import app
22
from app.gpt_services import gpt_service
33
from app.services import (write_installation,edit_directory_generator,execute_pythonfile)
4-
5-
from app.models import (AnsibleInstallNginx,AnsibleInstallDocker,Output)
4+
from app.routes.utils import add_files_to_folder
5+
from app.models import (AnsibleInstallNginx,AnsibleInstallDocker,Output,AnsibleInstallKuber)
66

77
from app.models import (AnsibleInstallNginx,Output)
88

@@ -32,4 +32,18 @@ async def ansible_install_generation_docker(request:AnsibleInstallDocker) -> Out
3232
output = gpt_service(generated_prompt)
3333
edit_directory_generator("ansible_generator",output)
3434
execute_pythonfile("MyAnsible","ansible_generator")
35+
return Output(output='output')
36+
37+
38+
@app.post("/ansible-install/kuber/")
39+
async def ansible_install_generation_kuber(request:AnsibleInstallKuber) -> Output:
40+
41+
if os.environ.get("TEST"):
42+
return Output(output='output')
43+
generated_prompt = ansible_install_template(request,"kuber")
44+
45+
output = gpt_service(generated_prompt)
46+
edit_directory_generator("ansible_generator",output)
47+
execute_pythonfile("MyAnsible","ansible_generator")
48+
add_files_to_folder(files = [] , folder='app/media/MyAnsible')
3549
return Output(output='output')

app/routes/utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ def zip_folder(folder_path: str, output_zip_path: str):
1414
# Add file to the zip file
1515
zip_file.write(file_path, os.path.relpath(file_path, folder_path))
1616

17+
def add_files_to_folder(files:list,folder:str = 'MyAnsible'):
18+
folder_path = f"app/media/{folder}"
19+
os.makedirs(folder_path, exist_ok=True)
1720

21+
for filename in files:
22+
os.path.join(folder_path, filename)
1823

1924

2025
@app.get("/download-folder{folder_name}/{source}")

0 commit comments

Comments
 (0)