def get_node_ips_from_module(module): """ Fetches the node IP's in cluster from terraform state file Args: module (str): Module name in terraform.tfstate file e.g: constants.COMPUTE_MODULE Returns: list: List of module node IP's """ terraform_state_file = os.path.join( config.ENV_DATA['cluster_path'], "terraform_data", "terraform.tfstate" ) if not os.path.isfile(terraform_state_file): raise FileNotFoundError( errno.ENOENT, os.strerror(errno.ENOENT), terraform_state_file ) ip_address = get_module_ip( terraform_state_file, module ) return ip_address
def create_inventory_for_haproxy(self): """ Creates the inventory file for haproxy Returns: str: Path to inventory file for haproxy """ inventory_data_haproxy = {} inventory_data_haproxy['ssh_key_private'] = self.ssh_key_pem inventory_data_haproxy['platform'] = config.ENV_DATA['platform'] inventory_data_haproxy['rhel_worker_nodes'] = self.rhel_worker_nodes lb_address = get_module_ip( self.terraform_state_file, constants.LOAD_BALANCER_MODULE ) control_plane_address = get_module_ip( self.terraform_state_file, constants.CONTROL_PLANE ) compute_address = get_module_ip( self.terraform_state_file, constants.COMPUTE_MODULE ) inventory_data_haproxy['lb'] = lb_address inventory_data_haproxy['masters'] = control_plane_address inventory_data_haproxy['workers'] = compute_address logger.info("Generating inventory file for haproxy") _templating = Templating() inventory_template_path_haproxy = os.path.join( "ocp-deployment", constants.INVENTORY_TEMPLATE_HAPROXY ) inventory_config_haproxy_str = _templating.render_template( inventory_template_path_haproxy, inventory_data_haproxy ) inventory_yaml_haproxy = os.path.join( self.cluster_path, constants.TERRAFORM_DATA_DIR, constants.INVENTORY_FILE_HAPROXY ) logger.debug(f"inventory contents for haproxy: {inventory_config_haproxy_str}") logger.debug(f"inventory yaml: {inventory_yaml_haproxy}") with open(inventory_yaml_haproxy, "w") as f: f.write(inventory_config_haproxy_str) return inventory_yaml_haproxy
def remove_boostrap_in_proxy(self): """ Removes bootstrap IP from haproxy.conf """ bootstrap_ip = get_module_ip(self.terraform_state_file, constants.BOOTSTRAP_MODULE)[0] # backup the conf file cmd = (f"sudo cp {constants.HAPROXY_LOCATION}" f" {constants.HAPROXY_LOCATION}_backup") self.lb.exec_cmd(cmd) # remove bootstrap IP cmd = f"sudo sed -i '/{bootstrap_ip}/d' {constants.HAPROXY_LOCATION}" self.lb.exec_cmd(cmd)
def _get_host(self): """ Fetches the Host/IP address from terraform.tfstate file Returns: str: IP Address of load balancer """ self.terraform_state_file = os.path.join( config.ENV_DATA["cluster_path"], "terraform_data", "terraform.tfstate") if not os.path.isfile(self.terraform_state_file): raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), self.terraform_state_file) ip_address = get_module_ip(self.terraform_state_file, constants.LOAD_BALANCER_MODULE) return ip_address[0]