allocatePortNo(); // allocte port for the conyainer use return 0; } public function updateProvision(): string { $public_path = FCPATH; $ansible_folder = str_replace("public/", "ANSIBLE", $public_path); $partMachineLocal = "/home/chiefsoft/MermsProvision/ANSIBLE/parts/"; if (!is_dir($ansible_folder . "/parts")) { mkdir($ansible_folder . "/parts", 0700); } $mysql = "SELECT id, uid, internal_url,product_id,status,provision_port FROM members_products WHERE provision_port = 0 "; $query = $this->db->query($mysql); // $num = $query->num_rows(); $provision_list = $query->getResult(); //$provision_list =[]; foreach ($provision_list as $pr) { $provisionPort = $pr->provision_port; $productId = $pr->product_id; $provisionUID = $pr->uid; $ContainerName = $productId . str_pad($pr->id, 10, "0", STR_PAD_LEFT); $partFolder = $ansible_folder . "/parts/" . $provisionUID; $allocatedPort = 8011; if (!is_dir($partFolder)) { mkdir($partFolder, 0700); } // THIS PROVISONING COMPOSERS $composer_template_path = $ansible_folder . "/templates/composers/" . $productId . "/docker-compose.yml"; $composer_template_path_local = $partMachineLocal . $provisionUID; $prov_name = str_replace(".", "_", $pr->internal_url) . ".yml"; $template_file = $ansible_folder . "/templates/" . $pr->product_id . ".yml"; //Get the domposer template file $composer_template_contents = file_get_contents($composer_template_path); // Do the processing $composer_template_contents = str_replace("WHAT_CONTAINER_NAME", $ContainerName, $composer_template_contents); $destinationHomeFolder = "/home/chiefsoft/SITES/" . $ContainerName; $composer_template_contents = str_replace("DESTINATION_FOLDER", $destinationHomeFolder, $composer_template_contents); $composer_template_contents = str_replace("ALLOCATED_PORT", $allocatedPort, $composer_template_contents); $composer_template_contents = str_replace("CNT_DB_NAME", $ContainerName, $composer_template_contents); $composer_template_contents = str_replace("CNT_DB_PASS", $provisionUID, $composer_template_contents); //Save to the specific path $destination_composer_path = $ansible_folder . "/parts/" . $provisionUID . "/docker-compose.yml"; $composerFile = fopen($destination_composer_path, "w") or die("Unable to open file!"); fwrite($composerFile, $composer_template_contents); fclose($composerFile); // GET THE TEMPLATE FOR THIS PROVISIONING $template_content = file_get_contents($template_file); $template_content_processed = str_replace("WHAT_HOST_IN_USE", $productId . "_SERVER", $template_content); $template_content_processed = str_replace("WHAT_PART_FOLDER", $partFolder, $template_content_processed); $template_content_processed = str_replace("DESTINATION_FOLDER", $destinationHomeFolder, $template_content_processed); $template_content_processed = str_replace("WHAT_PART_LOCAL", $composer_template_path_local, $template_content_processed); // depends on the local machine // CREATE PROVISOINING FILE $myfile = fopen($ansible_folder . "/" . $prov_name, "w") or die("Unable to open file!"); fwrite($myfile, $template_content_processed); fclose($myfile); } return view('welcome_message'); } private function allocatePortNo(){ // return; } }