예제 #1
0
 def acquire_linode_ips(self):
     linodeutils.log_info('Getting info for Linodes from display group: ' + self.node_display_group)
     deis_grp = self.request('linode.list')
     deis_linodeids = [l.get('LINODEID','') for l in deis_grp if l.get('LPM_DISPLAYGROUP', '') == self.node_display_group]
     deis_grp_ips = self.request('linode.ip.list')
     self.deis_privateips = [ip.get('IPADDRESS','') for ip in deis_grp_ips if (ip.get('LINODEID','') in deis_linodeids) and (ip.get('ISPUBLIC', 1) == 0)]
     self.deis_publicips = [ip.get('IPADDRESS','') for ip in deis_grp_ips if (ip.get('LINODEID','') in deis_linodeids) and (ip.get('ISPUBLIC', 0) == 1)]
예제 #2
0
 def get_discovery_url_from_user_data(self):
     name = 'linode-user-data.yaml'
     linodeutils.log_info('Loading discovery url from ' + name)
     try:
         user_data_file = linodeutils.get_file(name)
         user_data_yaml = yaml.safe_load(user_data_file)
         return user_data_yaml['coreos']['etcd2']['discovery']
     except:
         raise IOError('Could not load discovery url from ' + name)
예제 #3
0
 def get_discovery_url_from_user_data(self):
     name = 'linode-user-data.yaml'
     linodeutils.log_info('Loading discovery url from ' + name)
     try:
         user_data_file = linodeutils.get_file(name)
         user_data_yaml = yaml.safe_load(user_data_file)
         return user_data_yaml['coreos']['etcd2']['discovery']
     except:
         raise IOError('Could not load discovery url from ' + name)
예제 #4
0
 def acquire_linode_ips(self):
     linodeutils.log_info('Getting info for Linodes from display group: ' +
                          self.node_display_group)
     deis_grp = self.request('linode.list')
     deis_linodeids = [
         l.get('LINODEID', '') for l in deis_grp
         if l.get('LPM_DISPLAYGROUP', '') == self.node_display_group
     ]
     deis_grp_ips = self.request('linode.ip.list')
     self.deis_privateips = [
         ip.get('IPADDRESS', '') for ip in deis_grp_ips
         if (ip.get('LINODEID', '') in deis_linodeids) and (
             ip.get('ISPUBLIC', 1) == 0)
     ]
     self.deis_publicips = [
         ip.get('IPADDRESS', '') for ip in deis_grp_ips
         if (ip.get('LINODEID', '') in deis_linodeids) and (
             ip.get('ISPUBLIC', 0) == 1)
     ]
예제 #5
0
    def run(self):
        #NOTE: defaults to using display group, then manual input (via nodes/hosts), then discovery_url
        if self.node_display_group:
            self.acquire_linode_ips()
            nodes = self.deis_privateips
            hosts = self.deis_publicips
        else:
            nodes = self.nodes if self.nodes is not None else self.get_nodes_from_args(
            )
            hosts = self.hosts if self.hosts is not None else nodes

        node_ips = []
        for ip in nodes:
            if self.validate_ip_address(ip):
                node_ips.append(ip)
            else:
                linodeutils.log_warning(
                    'Invalid IP will not be added to security group: ' + ip)

        if not len(node_ips) > 0:
            raise ValueError('No valid IP addresses in security group.')

        host_ips = []
        for ip in hosts:
            if self.validate_ip_address(ip):
                host_ips.append(ip)
            else:
                linodeutils.log_warning('Host has invalid IP address: ' + ip)

        if not len(host_ips) > 0:
            raise ValueError('No valid host addresses.')

        linodeutils.log_info('Generating iptables rules...')
        rules = self.get_firewall_contents(node_ips)
        linodeutils.log_success('Generated rules:')
        linodeutils.log_debug(rules)

        linodeutils.log_info('Applying rules...')
        self.apply_rules_to_all(host_ips, rules)
        linodeutils.log_success('Done!')
예제 #6
0
    def run(self):
        #NOTE: defaults to using display group, then manual input (via nodes/hosts), then discovery_url
        if self.node_display_group:
            self.acquire_linode_ips()
            nodes = self.deis_privateips
            hosts = self.deis_publicips
        else:
            nodes = self.nodes if self.nodes is not None else self.get_nodes_from_args()
            hosts = self.hosts if self.hosts is not None else nodes

        node_ips = []
        for ip in nodes:
            if self.validate_ip_address(ip):
                node_ips.append(ip)
            else:
                linodeutils.log_warning('Invalid IP will not be added to security group: ' + ip)

        if not len(node_ips) > 0:
            raise ValueError('No valid IP addresses in security group.')

        host_ips = []
        for ip in hosts:
            if self.validate_ip_address(ip):
                host_ips.append(ip)
            else:
                linodeutils.log_warning('Host has invalid IP address: ' + ip)

        if not len(host_ips) > 0:
            raise ValueError('No valid host addresses.')

        linodeutils.log_info('Generating iptables rules...')
        rules = self.get_firewall_contents(node_ips)
        linodeutils.log_success('Generated rules:')
        linodeutils.log_debug(rules)
        
        linodeutils.log_info('Applying rules...')
        self.apply_rules_to_all(host_ips, rules)
        linodeutils.log_success('Done!')
예제 #7
0
def generate_etcd_token():
    linodeutils.log_info("Generating new Etcd token...")
    data = requests.get("https://discovery.etcd.io/new").text
    token = data.replace("https://discovery.etcd.io/", "")
    linodeutils.log_success("Generated new token: " + token)
    return token
예제 #8
0
def generate_etcd_token():
    linodeutils.log_info('Generating new Etcd token...')
    data = requests.get('https://discovery.etcd.io/new').text
    token = data.replace('https://discovery.etcd.io/', '')
    linodeutils.log_success('Generated new token: ' + token)
    return token