Exemple #1
0
def handle_instance_userdata():
    '''
    Since this is too long, store it in a file.
    '''
    user_data = get_instance_userdata()
    if user_data:
        file('user-data.txt', 'w').write(user_data)
        logging.info('User data script was written to user-data.txt')
Exemple #2
0
def handle_instance_userdata():
    '''
    Since this is too long, store it in a file.
    '''
    user_data = get_instance_userdata()
    if user_data:
        file('user-data.txt', 'w').write(user_data)
        logging.info('User data script was written to user-data.txt')
Exemple #3
0
    def test_user_data(self):
        self.set_normal_response(['foo'])

        userdata = get_instance_userdata()

        self.assertEqual('foo', userdata)

        boto.utils.retry_url.assert_called_with(
            'http://169.254.169.254/latest/user-data', retry_on_404=False)
Exemple #4
0
def get_instance_userdata(api_version, metadata_address):
    # Note: boto.utils.get_instance_metadata returns '' for empty string
    # so the change from non-true to '' is not specifically necessary, but
    # this way cloud-init will get consistent behavior even if boto changed
    # in the future to return a None on "no user-data provided".
    ud = boto_utils.get_instance_userdata(api_version, None, metadata_address)
    if not ud:
        ud = ''
    return ud
Exemple #5
0
    def test_user_data(self):
        self.set_normal_response(['foo'])

        userdata = get_instance_userdata()

        self.assertEqual('foo', userdata)

        boto.utils.retry_url.assert_called_with(
            'http://169.254.169.254/latest/user-data',
            retry_on_404=False)
Exemple #6
0
 def get_data(self):
     try:
         if not self.wait_for_metadata_service():
             return False
         start = time.time()
         log.info("Calling into metadata service using boto at: %s", self.metadata_address)
         self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver, None, self.metadata_address)
         self.metadata = boto_utils.get_instance_metadata(self.api_ver, self.metadata_address)
         log.debug("Crawl of metadata service took %s seconds" % (time.time() - start))
         log.debug("Received raw userdata: %s", self.userdata_raw)
         log.debug("Received metadata: %s", self.metadata)
         return True
     except Exception:
         return False
Exemple #7
0
 def write_metadata(self):
     fp = open(os.path.expanduser(BotoConfigPath), 'w')
     fp.write('[Instance]\n')
     inst_data = get_instance_metadata()
     for key in inst_data:
         fp.write('%s = %s\n' % (key, inst_data[key]))
     user_data = get_instance_userdata()
     fp.write('\n%s\n' % user_data)
     fp.write('[Pyami]\n')
     fp.write('working_dir = %s\n' % self.working_dir)
     fp.close()
     # This file has the AWS credentials, should we lock it down?
     # os.chmod(BotoConfigPath, stat.S_IREAD | stat.S_IWRITE)
     # now that we have written the file, read it into a pyami Config object
     boto.config = Config()
     boto.init_logging()
Exemple #8
0
 def write_metadata(self):
     fp = open(os.path.expanduser(BotoConfigPath), 'w')
     fp.write('[Instance]\n')
     inst_data = get_instance_metadata()
     for key in inst_data:
         fp.write('%s = %s\n' % (key, inst_data[key]))
     user_data = get_instance_userdata()
     fp.write('\n%s\n' % user_data)
     fp.write('[Pyami]\n')
     fp.write('working_dir = %s\n' % self.working_dir)
     fp.close()
     # This file has the AWS credentials, should we lock it down?
     # os.chmod(BotoConfigPath, stat.S_IREAD | stat.S_IWRITE)
     # now that we have written the file, read it into a pyami Config object
     boto.config = Config()
     boto.init_logging()
    def get_data(self):
        seedret = {}
        if util.read_optional_seed(seedret, base=self.seeddir + "/"):
            self.userdata_raw = seedret["user-data"]
            self.metadata = seedret["meta-data"]
            log.debug("using seeded ec2 data in %s" % self.seeddir)
            return True

        try:
            if not self.wait_for_metadata_service():
                return False
            start = time.time()
            self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver, None, self.metadata_address)
            self.metadata = boto_utils.get_instance_metadata(self.api_ver, self.metadata_address)
            log.debug("crawl of metadata service took %ds" % (time.time() - start))
            return True
        except Exception as e:
            print e
            return False
    def get_data(self):
        seedret = {}
        if util.read_optional_seed(seedret, base=self.seeddir + "/"):
            self.userdata_raw = seedret['user-data']
            self.metadata = seedret['meta-data']
            log.debug("using seeded cs data in %s" % self.seeddir)
            return True

        try:
            start = time.time()
            self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,
                None, self.metadata_address)
            self.metadata = boto_utils.get_instance_metadata(self.api_ver,
                self.metadata_address)
            log.debug("crawl of metadata service took %ds" %
                (time.time() - start))
            return True
        except Exception as e:
            log.exception(e)
            return False
Exemple #11
0
    def get_data(self):
        seedret = {}
        if util.read_optional_seed(seedret, base=self.seeddir + "/"):
            self.userdata_raw = seedret['user-data']
            self.metadata = seedret['meta-data']
            log.debug("using seeded cs data in %s" % self.seeddir)
            return True

        try:
            start = time.time()
            self.userdata_raw = boto_utils.get_instance_userdata(
                self.api_ver, None, self.metadata_address)
            self.metadata = boto_utils.get_instance_metadata(
                self.api_ver, self.metadata_address)
            log.debug("crawl of metadata service took %ds" %
                      (time.time() - start))
            return True
        except Exception as e:
            log.exception(e)
            return False
Exemple #12
0
    def get_dimension_ECSCluster(self):
        """
        Get the name of the ECS Cluster this instance is part of.

        :return: CloudWatch dimension named ECSCluster
        """

        dimension = {}

        try:
            instance_user_data = json.loads(utils.get_instance_userdata())
            ecs_cluster = instance_user_data['cloud_formation']['ecs_cluster_name']
            dimension = {'Name': 'ECSCluster',
                         'Value': ecs_cluster}

        except ValueError:
            LOG.exception("Instance User data are not in JSON format")
        except KeyError:
            LOG.exception("ECS Cluster name cannot be found in instance userdata")

        return dimension
Exemple #13
0
def get_userdata_dict():
    from json import loads
    from boto.utils import get_instance_userdata
    userdata = loads(get_instance_userdata())
    return userdata
Exemple #14
0
def get_userdata_dict():
    from json import loads
    from boto.utils import get_instance_userdata
    userdata = loads(get_instance_userdata())
    return userdata
Exemple #15
0
	except:
		currentkeys = ""
		try:
			with open('/root/.ssh/authorized_keys', 'a') as authkeyfile:
				for key in PUBLICKEYS.items():
					if  not key[1][0]  in currentkeys:
						authkeyfile.write(key[1][0])
						authkeyfile.write('\n')
						authkeyfile.close()
						os.chmod('/root/.ssh/authorized_keys',0600)
		except:
			print ('Could not open authorized_keys file for writing!')

# Collect User Meta Data
try:
	user_data = get_instance_userdata(sep='|')
except:
	print('No user data found for instance')

try:
    hostname = user_data['hostname']
except:
    hostname = gethostname()

# set hostname in /etc/hostname
try:
    with open('/etc/hostname', 'w') as hostfile:
        hostfile.write(hostname)
        hostfile.write('\n')
        hostfile.close()
except:
Exemple #16
0
 def get_metadata(self):
     data = get_instance_metadata()
     data.update(json.loads(get_instance_userdata()))
     return data
Exemple #17
0
 def get_metadata(self):
     data = get_instance_metadata()
     data.update(json.loads(get_instance_userdata()))
     return data
Exemple #18
0
def get_userdata(params):
    module_name = None
    class_name = None
    d = get_instance_userdata(sep='|')
    params.update(d)