Example #1
0
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')
Example #2
0
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')
Example #3
0
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
Example #4
0
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 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
Example #7
0
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)
Example #8
0
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)