Ejemplo n.º 1
0
    def get_http_details(self):
        """ 
        get http details and directories names created under /var/www/html

        """
        self.clear_screen()
        port = input('enter http port \n'
                     'default [8080]: ')
        default = 8080
        port = set_values(port, default)
        port = validate_port(port)
        ignition_dir = input('specify dir where ignition files will be placed \n'
                             'directory will be created under /var/www/html \n'
                             'default [ignition]: ')
        default = 'ignition'
        ignition_dir = set_values(ignition_dir, default)
        ocp_version = input('specify the version of ocp \n'
                            'default [4.3]: ')
        default = 4.3
        ocp_version = set_values(ocp_version, default)
        logging.info('adding http_port: {} http_ignition: {} version: {}'.format(port, ignition_dir, ocp_version))
        self.inventory_dict['csah']['vars']['http_port'] = int(port)
        self.inventory_dict['csah']['vars']['os'] = 'rhcos'
        self.inventory_dict['csah']['vars']['http_ignition'] = ignition_dir
        self.inventory_dict['csah']['vars']['version'] = ocp_version
Ejemplo n.º 2
0
    def get_ignition_details(self):
        """ 
        get details from users used for install-config.yaml file

        """
        default = 'openshift'
        install_dir = 'openshift'
        install_dir = set_values(install_dir, default)
        default = '10.128.0.0/14'
        pod_network_cidr = '10.128.0.0/14'
        pod_network_cidr = set_values(pod_network_cidr, default)
        logging.info('pod network cidr: {}'.format(pod_network_cidr))
        pod_network_cidr = validate_network_cidr(pod_network_cidr)
        default = 23
        host_prefix = 23
        host_prefix = set_values(host_prefix, default)
        host_prefix = validate_cidr(host_prefix)
        default = '172.30.0.0/16'
        service_network_cidr = '172.30.0.0/16'
        service_network_cidr = set_values(service_network_cidr, default)
        service_network_cidr = validate_network_cidr(service_network_cidr)
        logging.info('adding install_dir: {} cluster_network_cidr: {}\
                      host_prefix: {} service_network_cidr: {}'.format(install_dir,
                                                                pod_network_cidr, host_prefix, 
                                                                service_network_cidr))
        self.inventory_dict['all']['vars']['install_user'] = '******'
        self.inventory_dict['all']['vars']['install_dir'] = install_dir
        self.inventory_dict['all']['vars']['cluster_network_cidr'] = pod_network_cidr
        self.inventory_dict['all']['vars']['host_prefix'] = int(host_prefix)
        self.inventory_dict['all']['vars']['service_network_cidr'] = service_network_cidr
    def get_disk_name(self):
        """ 
        disknames used for each node type. 

        """
        self.clear_screen()
        default = 'nvme0n1'
        logging.info(
            'ensure disknames are absolutely available. Otherwise OpenShift install fails'
        )
        master_install_device = input(
            'specify the control plane device that will be installed\n'
            'default [nvme0n1]: ')
        master_install_device = set_values(master_install_device, default)
        self.inventory_dict['csah']['vars'][
            'master_install_device'] = master_install_device
        if self.cluster_install == 1:
            pass
        else:
            worker_install_device = input(
                'specify the compute node device that will be installed\n'
                'default [nvme0n1]: ')
            worker_install_device = set_values(worker_install_device, default)
            logging.info(
                'adding master_install_device: {} worker_install_device: {}'.
                format(master_install_device, worker_install_device))
            self.inventory_dict['csah']['vars'][
                'worker_install_device'] = worker_install_device
Ejemplo n.º 4
0
    def get_worker_nodes(self):
        """ 
        get details about worker node

        """
        worker_nodes_count = input('enter number of worker nodes\n'
                                   'default [2]: ')
        default = 2
        worker_nodes_count = set_values(worker_nodes_count, default, check='integer')
        worker_keys = ['name','ip','mac']
        self.inventory_dict['csah']['vars']['worker_nodes'] = []
        for num in range(worker_nodes_count):
            worker_values = []
            default = 'worker-{}'.format(num)
            worker_name = input('enter the worker {} node name\n'
                                'default [{}]: '.format(num, default))
            worker_name = set_values(worker_name, default)
            worker_ip = get_ip(node_name=worker_name, ip_type='os')
            worker_mac = get_network_device_mac(node_name=worker_name, ip_type='idrac')
            worker_values.append(worker_name)
            worker_values.append(worker_ip)
            worker_values.append(worker_mac)
            worker_node_dict_pairs = dict(zip(worker_keys, worker_values))
            logging.info('adding {} values as name: {} ip: {} mac: {}'.format(worker_name, worker_name,
                                                                              worker_ip, worker_mac)) 
            self.inventory_dict['csah']['vars']['worker_nodes'].append(worker_node_dict_pairs)
            self.clear_screen()
        self.inventory_dict['csah']['vars']['number_of_workers'] = worker_nodes_count
Ejemplo n.º 5
0
    def get_master_nodes(self):
        """ 
        get details about master node

        """
        default = 3
        master_nodes_count = input('enter number of master nodes\n'
                                   'default [3]: ')
        master_nodes_count = set_values(master_nodes_count, default, check='integer')
        master_keys = ['name','ip','mac']
        self.inventory_dict['csah']['vars']['master_nodes'] = []
        for num in range(master_nodes_count):
            master_values = []
            default = 'etcd-{}'.format(num)
            master_name = input('enter the master {} node name \n'
                                'default [{}]: '.format(num, default))
            master_name = set_values(master_name, default)
            master_ip = get_ip(node_name=master_name, ip_type='os')
            master_mac = get_network_device_mac(node_name=master_name, ip_type='idrac')
            master_values.append(master_name)
            master_values.append(master_ip)
            master_values.append(master_mac)
            master_node_dict_pairs = dict(zip(master_keys, master_values))
            logging.info('adding {} values as name: {} ip: {} mac: {}'.format(master_name, master_name,
                                                                              master_ip, master_mac)) 
            self.inventory_dict['csah']['vars']['master_nodes'].append(master_node_dict_pairs)
            self.clear_screen()
        self.inventory_dict['csah']['vars']['number_of_masters'] = master_nodes_count
Ejemplo n.º 6
0
    def get_disk_name(self):
        """ 
        disknames used for each node type. 

        """
        default = 'nvme0n1'
        logging.info('ensure disknames are available. Otherwise OpenShift install fails')
        master_install_device = self.diskname_master
        master_install_device = set_values(master_install_device, default)
        self.inventory_dict['all']['vars']['master_install_device'] = master_install_device

        worker_install_device = self.diskname_worker
        worker_install_device = set_values(worker_install_device, default)
        logging.info('adding master_install_device: {} worker_install_device: {}'.format(master_install_device,
                      worker_install_device))
        self.inventory_dict['all']['vars']['worker_install_device'] = worker_install_device
Ejemplo n.º 7
0
    def add_new_worker_nodes(self):
        """
        get new worker nodes added to inventory file

        """
        current_inventory_file = input('Enter complete path to existing inventory file: ')
        file_exists = os.path.exists('{}'.format(current_inventory_file))
        if file_exists:
            with open('{}'.format(current_inventory_file), 'r') as file:
                 self.inventory_dict = yaml.safe_load(file)
      
            try:
                self.inventory_dict['all']['vars']['compute_nodes']
            except KeyError:
                logging.error('Inventory file does not contain worker nodes info')
                self.inventory_dict['all']['vars']['cluster_install'] = '5+ node'
                self.inventory_dict['all']['vars']['compute_nodes'] = []
                default = 'nvme0n1'
                worker_install_device = input('specify the compute node device that will be installed\n'
                                              'default [nvme0n1]: ')
                worker_install_device = set_values(worker_install_device, default)
                self.inventory_dict['all']['vars']['worker_install_device'] = worker_install_device

            self.inventory_dict = get_nodes_info(node_type='new_compute_nodes', inventory=self.inventory_dict, add=True, 
                                                 idrac_user=self.id_user, idrac_pass=self.id_pass, nodes_info=self.nodes_inv)
            self.yaml_inventory(inventory_file=current_inventory_file)

            sys.exit(2)
        else:
            logging.error('incorrect file path specified')
            sys.exit(2)       
    def get_ignition_details(self):
        """ 
        get details from users used for install-config.yaml file

        """
        self.clear_screen()
        default = 'core'
        install_user = input('enter the user used to install openshift\n'
                             'DONOT CHANGE THIS VALUE\n'
                             'default [core]: ')
        install_user = set_values(install_user, default)
        default = 'openshift'
        install_dir = input('enter the directory where openshift installs\n'
                            'directory will be created under /home/core\n'
                            'default [openshift]: ')
        install_dir = set_values(install_dir, default)
        default = '10.128.0.0/14'
        pod_network_cidr = input('enter the pod network cidr\n'
                                 'default [10.128.0.0/14]: ')
        pod_network_cidr = set_values(pod_network_cidr, default)
        logging.info('pod network cidr: {}'.format(pod_network_cidr))
        pod_network_cidr = validate_network_cidr(pod_network_cidr)
        default = 23
        host_prefix = input(
            'specify cidr notation for number of ips in each node: \n'
            'cidr number should be an integer and less than 32\n'
            'default [23]: ')
        host_prefix = set_values(host_prefix, default)
        host_prefix = validate_cidr(host_prefix)
        default = '172.30.0.0/16'
        service_network_cidr = input('specify the service network cidr\n'
                                     'default [172.30.0.0/16]: ')
        service_network_cidr = set_values(service_network_cidr, default)
        service_network_cidr = validate_network_cidr(service_network_cidr)
        logging.info(
            'adding install_user: {} install_dir: {} cluster_network_cidr: {}\
                      host_prefix: {} service_network_cidr: {}'.format(
                install_user, install_dir, pod_network_cidr, host_prefix,
                service_network_cidr))
        self.inventory_dict['csah']['vars']['install_user'] = install_user
        self.inventory_dict['csah']['vars']['install_dir'] = install_dir
        self.inventory_dict['csah']['vars'][
            'cluster_network_cidr'] = pod_network_cidr
        self.inventory_dict['csah']['vars']['host_prefix'] = int(host_prefix)
        self.inventory_dict['csah']['vars'][
            'service_network_cidr'] = service_network_cidr
Ejemplo n.º 9
0
    def get_dns_details(self):
        """ 
        get zone config file and cluster name used by DNS

        """
        self.clear_screen()
        zone_file = input('specify zone file \n'
                          'default [/var/named/ocp.zones]: ')
        default = '/var/named/ocp.zones'
        zone_file = set_values(zone_file, default)
        cluster_name = input('specify cluster name \n'
                             'default [ocp]: ')
        default = 'ocp'
        cluster_name = set_values(cluster_name, default)
        logging.info('adding zone_file: {} cluster: {}'.format(zone_file, cluster_name))
        self.inventory_dict['csah']['vars']['default_zone_file'] = zone_file
        self.inventory_dict['csah']['vars']['cluster'] = cluster_name
Ejemplo n.º 10
0
    def get_http_details(self):
        """ 
        get http details and directories names created under /var/www/html

        """
        port = 8080
        default = 8080
        port = set_values(port, default)
        port = validate_port(port)
        ignition_dir = 'ignition'
        default = 'ignition'
        ignition_dir = set_values(ignition_dir, default)
        logging.info('adding http_port: {} http_ignition: {} version: {}'.format(port, ignition_dir, self.version))
        self.inventory_dict['all']['vars']['http_port'] = int(port)
        self.inventory_dict['all']['vars']['os'] = 'rhcos'
        self.inventory_dict['all']['vars']['http_ignition'] = ignition_dir
        self.inventory_dict['all']['vars']['version'] = self.version
Ejemplo n.º 11
0
 def dhcp_lease_times(self):
     """ 
     get dhcp lease times 
     
     """
     default_lease_time = input('enter a default lease time for dhcp\n'
                                'default [800]: ')
     default = 800
     default_lease_time = set_values(default_lease_time, default, check='integer')
     max_lease_time = input('enter max lease time for dhcp\n'
                            'default [7200]: ')
     default = 7200
     max_lease_time = set_values(max_lease_time, default, check='integer')
     logging.info('adding default_lease_time: {} max_lease_time: {}'.format(default_lease_time,
                                                                            max_lease_time))
     self.inventory_dict['csah']['vars']['default_lease_time'] = default_lease_time
     self.inventory_dict['csah']['vars']['max_lease_time'] = max_lease_time
Ejemplo n.º 12
0
    def get_dns_details(self):
        """ 
        get zone config file and cluster name used by DNS

        """


        dns_forwarder = self.dns_forwarder
        self.inventory_dict['all']['vars']['dns_forwarder'] = dns_forwarder

        cluster_name = self.cluster_name
        default = self.cluster_name
        cluster_name = set_values(cluster_name, default)

        default = '/var/named/{}.zones'.format(cluster_name)
        zone_file = default
        zone_file = set_values(zone_file, default)
        logging.info('adding zone_file: {} cluster: {}'.format(zone_file, cluster_name))
        self.inventory_dict['all']['vars']['default_zone_file'] = zone_file
        self.inventory_dict['all']['vars']['cluster'] = cluster_name
Ejemplo n.º 13
0
    def set_bond_network_details(self):
        """ 
        get bond details and user interfaces used for bond

        """
        self.clear_screen()
        default = 'bond0'
        name = input('enter bond name\n'
                     'default [bond0]: ')
        name = set_values(name, default)
        interfaces = input('enter bond interfaces seperated by \',\'\n'
                           'default [ens2f0,ens2f1]: ')
        default = 'ens2f0,ens2f1'
        interfaces = set_values(interfaces, default)
        default = 'mode=active-backup,miimon=100,primary=ens2f0'
        options = input('enter bond options \n'
                        'default [mode=active-backup,miimon=100,primary=ens2f0]: ')
        options = set_values(options, default)
        logging.info('adding bond_name: {} interfaces: {} bond_options: {}'.format(name, interfaces, options))
        self.inventory_dict['csah']['vars']['bond_name'] = name
        self.inventory_dict['csah']['vars']['bond_interfaces'] = interfaces
        self.inventory_dict['csah']['vars']['bond_options'] = options
Ejemplo n.º 14
0
    def get_disk_name(self):
        """ 
        disknames used for each node type. 

        """
        self.clear_screen()
        default = 'nvme0n1'
        logging.info('ensure disknames are absolutely available. Otherwise OpenShift install fails')
        master_install_device = input('specify the master device that will be installed\n'
                                      'default [nvme0n1]: ')
        master_install_device = set_values(master_install_device, default)
        bootstrap_install_device = input('specify the bootstrap device that will be installed\n'
                                         'default [nvme0n1]: ')
        bootstrap_install_device = set_values(bootstrap_install_device, default)
        worker_install_device = input('specify the worker device that will be installed\n'
                                      'default [nvme0n1]: ')
        worker_install_device = set_values(worker_install_device, default)
        logging.info('adding master_install_device: {} bootstrap_install_device: {}\
                      worker_install_device: {}'.format(master_install_device, bootstrap_install_device,
                                                        worker_install_device))
        self.inventory_dict['csah']['vars']['master_install_device'] = master_install_device
        self.inventory_dict['csah']['vars']['bootstrap_install_device'] = bootstrap_install_device
        self.inventory_dict['csah']['vars']['worker_install_device'] = worker_install_device
Ejemplo n.º 15
0
    def get_software_download_dir(self):
        """ 
        get software download directory to download OCP software bits
  
        """
        default = '/home/ansible/files'
        self.software_dir = '/home/ansible/files'
        self.software_dir = set_values(self.software_dir, default)
        dest_path_exist = check_path(self.software_dir, isdir=True)
        if dest_path_exist:
            logging.info('directory {} already exists'.format(self.software_dir))
        else:
            logging.info('Creating directory {}'.format(self.software_dir))
            create_dir(self.software_dir)

        self.inventory_dict['all']['vars']['software_src'] = self.software_dir
Ejemplo n.º 16
0
    def get_software_download_dir(self):
        """ 
        get software download directory to download OCP 4.3 software bits
  
        """
        self.clear_screen()
        default = '/home/ansible/files'
        self.software_dir = input('provide complete path of directory to download OCP 4.3 software bits\n'
                                  'default [/home/ansible/files]: ')
        self.software_dir = set_values(self.software_dir, default)
        dest_path_exist = check_path(self.software_dir, isdir=True)
        if dest_path_exist:
            logging.info('directory {} already exists'.format(self.software_dir))
        else:
            logging.info('Creating directory {}'.format(self.software_dir))
            create_dir(self.software_dir)

        self.inventory_dict['csah']['vars']['software_src'] = self.software_dir
Ejemplo n.º 17
0
    def get_bootstrap_node(self):
        """ 
        get details about bootstrap node

        """
        self.clear_screen()
        default = 'bootstrap'
        bootstrap_name = input('enter the bootstrap node name\n'
                               'default [bootstrap]: ')
        bootstrap_name = set_values(bootstrap_name, default)
        bootstrap_ip = get_ip(node_name=bootstrap_name, ip_type='os')
        bootstrap_ip = validate_ip(bootstrap_ip)
        bootstrap_mac = get_network_device_mac(node_name=bootstrap_name, ip_type='idrac')
        logging.info('adding bootstrap_node values as name: {} ip: {} mac: {}'.format(bootstrap_name, bootstrap_ip,
                                                                                      bootstrap_mac)) 
        self.inventory_dict['csah']['vars']['bootstrap_node'] = [{'name': '{}'.format(bootstrap_name),
                                                                  'ip': '{}'.format(bootstrap_ip),
                                                                  'mac': '{}'.format(bootstrap_mac)}]