def sync_full_manifest(manifest): cloud = cloudseed.cloud.Cloud(__opts__) vm_ = cloud.vm_profile('master') keyname = '%s-%s' % (env.location_name(), env.env_name()) filename = os.path.join( env.current_env_path(), 'salt', '%s.pem' % keyname) manifest.add(filename, '/etc/salt/cloud.pem') # changing the path to the private_key file to work on # the bootstrapped master providers = filesystem.read_file(__opts__['providers_config']) providers_data = yaml.load(providers) alias, driver = vm_['provider'].split(':') master_provider = providers_data[alias] master_provider['private_key'] = '/etc/salt/cloud.pem' cloud_providers = yaml.safe_dump(providers_data, default_flow_style=False) manifest.remove('cloudseed/current/salt/cloud.providers') manifest.add( writers.write_stringio(cloud_providers), '/etc/salt/cloud.providers')
def sync_full_manifest(manifest): cloud = cloudseed.cloud.Cloud(__opts__) vm_ = cloud.vm_profile('master') keyname = '%s-%s' % (env.location_name(), env.env_name()) filename = os.path.join(env.current_env_path(), 'salt', '%s.pem' % keyname) manifest.add(filename, '/etc/salt/cloud.pem') # changing the path to the private_key file to work on # the bootstrapped master providers = filesystem.read_file(__opts__['providers_config']) providers_data = yaml.load(providers) alias, driver = vm_['provider'].split(':') master_provider = providers_data[alias] master_provider['private_key'] = '/etc/salt/cloud.pem' cloud_providers = yaml.safe_dump(providers_data, default_flow_style=False) manifest.remove('cloudseed/current/salt/cloud.providers') manifest.add(writers.write_stringio(cloud_providers), '/etc/salt/cloud.providers')
def marker_security_group(): cloud = cloudseed.cloud.Cloud(__opts__) vm_ = cloud.vm_profile('master') provider = cloud.provider_profile_full(vm_) # this should be an array with at LEAST our # cloudseed marker in tow if not more, assuming it was # bootstrapped through cloudseed provider_groups = provider.get('securitygroup', []) try: # len 3 # cloudseed-project-env return next(x for x in provider_groups if x.startswith('cloudseed') and len(x.split('-')) == 3) except StopIteration: return None
def parse_args(original_parse_args, self, args=None, values=None): original_parse_args(args=cloudseed_args) # redirect log output self.config['log_file'] = os.devnull # override the initial lookup path for modules. # ensure that our local clouds are searched first, if present # This works with salt.loader.Loader self.config['extension_modules'] = os.path.join( os.path.dirname(cloudseed.__file__)) if not names: cloud = cloudseed.cloud.Cloud(self.config) vm_ = cloud.vm_profile('master') alias, driver = cloud.lookup_providers(vm_['provider']) fun = '%s.list_nodes' % driver data = cloud.clouds[fun]() self.config['names'] = data.keys() #self.config['names'] = ['cloudseed-sample-foo'] else: self.config['names'] = names
def run(argv): args = docopt(__doc__, argv=argv) # TODO We can capture all this loading and error handling # in 1 function try: with open('cloudseed/current/salt/cloud.profiles') as f: profiles = yaml.load(f.read()) except IOError: print('No Cloud Profiles Found') return try: with open('cloudseed/current/salt/cloud.providers') as f: providers = yaml.load(f.read()) except IOError: print('No Cloud Providers Found') return try: with open('cloudseed/current/salt/cloudseed') as f: conf = yaml.load(f.read()) except IOError: print('Have you bootstrapped?') return profile = profiles.get('master', None) if not profile: # TODO Add Error Messaging return prefix = os.path.join(env.current_env_path(), 'salt') cloud_config = os.path.join(prefix, 'cloud') cloud_providers = os.path.join(prefix, 'cloud.providers') cloud_profiles = os.path.join(prefix, 'cloud.profiles') master_config = os.path.join(prefix, 'master') cloudseed_args = [ '--cloud-config', cloud_config, '--providers-config', cloud_providers, '--profiles', cloud_profiles, '--master-config', master_config ] cli = saltcloud.cli.SaltCloud() cli.parse_args(args=cloudseed_args) cloud = cloudseed.cloud.Cloud(cli.config) vm_ = cloud.vm_profile('master') provider = config.get_config_value('provider', vm_, cloud.opts) if not provider: # TODO Add Error Messaging return username = config.get_config_value('ssh_username', vm_, cloud.opts) identity = config.get_config_value('private_key', vm_, cloud.opts) host = conf.get('ip_address', False) if username and identity and host: identity = os.path.abspath(identity) #sys.stdout.write('Connecting to environment \'%s\'\n' % current_env) ssh.connect(host=host, username=username, identity=identity)
def run(argv): args = docopt(__doc__, argv=argv) # TODO We can capture all this loading and error handling # in 1 function try: with open('cloudseed/current/salt/cloud.profiles') as f: profiles = yaml.load(f.read()) except IOError: print('No Cloud Profiles Found') return try: with open('cloudseed/current/salt/cloud.providers') as f: providers = yaml.load(f.read()) except IOError: print('No Cloud Providers Found') return try: with open('cloudseed/current/salt/cloudseed') as f: conf = yaml.load(f.read()) except IOError: print('Have you bootstrapped?') return profile = profiles.get('master', None) if not profile: # TODO Add Error Messaging return prefix = os.path.join(env.current_env_path(), 'salt') cloud_config = os.path.join(prefix, 'cloud') cloud_providers = os.path.join(prefix, 'cloud.providers') cloud_profiles = os.path.join(prefix, 'cloud.profiles') master_config = os.path.join(prefix, 'master') cloudseed_args = [ '--cloud-config', cloud_config, '--providers-config', cloud_providers, '--profiles', cloud_profiles, '--master-config', master_config] cli = saltcloud.cli.SaltCloud() cli.parse_args(args=cloudseed_args) cloud = cloudseed.cloud.Cloud(cli.config) vm_ = cloud.vm_profile('master') provider = config.get_config_value( 'provider', vm_, cloud.opts) if not provider: # TODO Add Error Messaging return username = config.get_config_value('ssh_username', vm_, cloud.opts) identity = config.get_config_value('private_key', vm_, cloud.opts) host = conf.get('ip_address', False) if username and identity and host: identity = os.path.abspath(identity) #sys.stdout.write('Connecting to environment \'%s\'\n' % current_env) ssh.connect( host=host, username=username, identity=identity)