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 )
0 commit comments