1+ import os
2+
3+ project_name = "app/media/MyAnsible"
4+
5+ # Define directory structure
6+ ansible_dir = project_name
7+ group_vars_dir = os .path .join (ansible_dir , "group_vars" )
8+ hosts_file = os .path .join (ansible_dir , "hosts" )
9+ host_vars_dir = os .path .join (ansible_dir , "host_vars" )
10+ nginx_playbook_file = os .path .join (ansible_dir , "nginx_playbook.yml" )
11+ roles_dir = os .path .join (ansible_dir , "roles" )
12+ install_nginx_dir = os .path .join (roles_dir , "install_nginx" )
13+ defaults_dir = os .path .join (install_nginx_dir , "defaults" )
14+ handlers_dir = os .path .join (install_nginx_dir , "handlers" )
15+ tasks_dir = os .path .join (install_nginx_dir , "tasks" )
16+ templates_dir = os .path .join (install_nginx_dir , "templates" )
17+ vars_dir = os .path .join (install_nginx_dir , "vars" )
18+
19+ # Create project directories
20+ os .makedirs (group_vars_dir , exist_ok = True )
21+ os .makedirs (host_vars_dir , exist_ok = True )
22+ os .makedirs (tasks_dir , exist_ok = True )
23+ os .makedirs (defaults_dir , exist_ok = True )
24+ os .makedirs (handlers_dir , exist_ok = True )
25+ os .makedirs (templates_dir , exist_ok = True )
26+ os .makedirs (vars_dir , exist_ok = True )
27+ os .makedirs (roles_dir , exist_ok = True )
28+ os .makedirs (install_nginx_dir , exist_ok = True )
29+
30+ # Create ansible.cfg
31+ with open (os .path .join (ansible_dir , "ansible.cfg" ), "w" ) as ansible_config :
32+ ansible_config .write ("[defaults]\n " )
33+ ansible_config .write ("host_key_checking=false\n " )
34+
35+ # Create group_vars/nginx_nodes
36+ with open (os .path .join (group_vars_dir , "nginx_nodes" ), "w" ) as nginx_nodes :
37+ nginx_nodes .write ("ansible_port: 22\n " )
38+ nginx_nodes .write ("ansible_user: root\n " )
39+
40+ # Create hosts file
41+ with open (hosts_file , "w" ) as hosts :
42+ hosts .write ("[nginx_nodes]\n " )
43+ hosts .write ("www.examppple.com\n " )
44+
45+ # Create nginx_playbook.yml
46+ with open (nginx_playbook_file , "w" ) as playbook :
47+ playbook .write ("- hosts: all\n " )
48+ playbook .write (" roles:\n " )
49+ playbook .write (" - install_nginx\n " )
50+
51+ # Create install_nginx/tasks/main.yml
52+ with open (os .path .join (tasks_dir , "main.yml" ), "w" ) as tasks :
53+ tasks .write ("---\n " )
54+ tasks .write ("- name: Install CA certificates to ensure HTTPS connections work\n " )
55+ tasks .write (" apt:\n " )
56+ tasks .write (" name: ca-certificates\n " )
57+ tasks .write (" state: present\n \n " )
58+
59+ tasks .write ("- name: Add Nginx signing key\n " )
60+ tasks .write (" apt_key:\n " )
61+ tasks .write (" url: \" { nginx_repo_key_url }\" \n " )
62+ tasks .write (" state: present\n \n " )
63+
64+ tasks .write ("- name: Add Nginx repository\n " )
65+ tasks .write (" apt_repository:\n " )
66+ tasks .write (" repo: \" deb { nginx_repo_url } { ansible_distribution_release } nginx\" \n " )
67+ tasks .write (" state: present\n " )
68+ tasks .write (" filename: nginx\n \n " )
69+
70+ tasks .write ("- name: Update apt cache\n " )
71+ tasks .write (" apt:\n " )
72+ tasks .write (" update_cache: yes\n \n " )
73+
74+ tasks .write ("- name: Install specific version of Nginx\n " )
75+ tasks .write (" apt:\n " )
76+ tasks .write (" name: \" nginx={ nginx_version }~{ ansible_distribution_release }\" \n " )
77+ tasks .write (" state: present\n \n " )
78+
79+ tasks .write ("- name: Ensure Nginx service is running and enabled\n " )
80+ tasks .write (" service:\n " )
81+ tasks .write (" name: nginx\n " )
82+ tasks .write (" state: started\n " )
83+ tasks .write (" enabled: yes\n " )
84+
85+ # Create install_nginx/vars/main.yml
86+ with open (os .path .join (vars_dir , "main.yml" ), "w" ) as vars_file :
87+ vars_file .write ("nginx_repo_key_url: \" https://nginx.org/keys/nginx_signing.key\" \n " )
88+ vars_file .write ("nginx_repo_url: \" http://nginx.org/packages/mainline/ubuntu/\" \n " )
89+ vars_file .write ("nginx_version: \" 1.23.4-1\" \n " )
0 commit comments