Example #1
0
def bootstrap(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    with settings(hide('warnings', 'stdout', 'stderr'), warn_only=True):
        result = sudo_dry("command -v chef-solo", args, logger=logger)

    if not result.failed:
        logger.info("-> Chef already boostrapped.")
        return

    logger.info("-> Installing Prerequisite Packages...")
    sudo_dry("apt-get update", args, logger=logger)
    sudo_dry("apt-get upgrade -y", args, logger=logger)
    sudo_dry("apt-get update", args, logger=logger)
    sudo_dry("apt-get install -y {0}".format(' '.join([
        'autoconf',
        'binutils-doc',
        'bison',
        'build-essential',
        'curl',
        'flex',
        'gcc',
        'git-core',
        'libreadline-dev',
        'libssl-dev',
        'libtool',
        'libxml2-dev',
        'libxslt-dev',
        'zlib1g-dev',
    ])), args, logger=logger)

    ruby(args, config, logger=logger)

    gem(args, config, logger=logger)
Example #2
0
def chef(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    install_url = 'curl -sSL https://www.opscode.com/chef/install.sh'
    install_command = '{0} | sudo bash -s -- -v {1}'.format(
        install_url, args['chef_version'])
    uninstall_command = 'gem uninstall -a chef ohai'

    logger.info("-> Installing Chef ...")
    response = sudo_dry(uninstall_command, args, logger=logger)
    if response:
        return sudo_dry(install_command, args, logger=logger)
    return response
Example #3
0
def gem(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    logger.info("-> Installing Chef ...")
    gem_install_command = 'gem install -v {0} {1} --no-rdoc --no-ri'
    sudo_dry(gem_install_command.format(
        args['ohai_version'],
        'ohai'
    ), args, logger=logger)
    return sudo_dry(gem_install_command.format(
        args['chef_version'],
        'chef'
    ), args, logger=logger)
Example #4
0
def chef(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    install_url = 'curl -sSL https://www.opscode.com/chef/install.sh'
    install_command = '{0} | sudo bash -s -- -v {1}'.format(
        install_url, args['chef_version']
    )
    uninstall_command = 'gem uninstall -a chef ohai'

    logger.info("-> Installing Chef ...")
    response = sudo_dry(uninstall_command, args, logger=logger)
    if response:
        return sudo_dry(install_command, args, logger=logger)
    return response
Example #5
0
def clean(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    return sudo_dry('rm -rf {0}'.format(
        args['chef_file_dest']
    ), args, logger=logger)
Example #6
0
def clean(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    return sudo_dry('rm -rf {0}'.format(args['chef_file_dest']),
                    args,
                    logger=logger)
Example #7
0
def default(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    sync(args, config, logger=logger)
    command = ' && '.join([
        "cd {0}", "source /etc/profile",
        "`which chef-solo` -c {0}/{1} -j {0}/dna/{2} -l {3}"
    ])
    return sudo_dry(command.format(args['chef_file_dest'], args['config_path'],
                                   'default.json', args['loglevel']),
                    args,
                    logger=logger)
Example #8
0
def ruby(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    logger.info("-> Installing Ruby 1.9.2")
    return sudo_dry("apt-get install -y {0}".format(' '.join([
        'ruby1.9.1',
        'ruby1.9.1-dev',
        'rubygems1.9.1',
        'irb1.9.1',
        'ri1.9.1',
        'rdoc1.9.1',
        'libopenssl-ruby1.9.1',
    ])), args, logger=logger)
Example #9
0
def default(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    sync(args, config, logger=logger)
    command = ' && '.join([
        "cd {0}",
        "source /etc/profile",
        "`which chef-solo` -c {0}/{1} -j {0}/dna/{2} -l {3}"
    ])
    return sudo_dry(command.format(
        args['chef_file_dest'],
        args['config_path'],
        'default.json',
        args['loglevel']
    ), args, logger=logger)
Example #10
0
def update(args, config, delete_files=False, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    sync(args, config, logger=logger)

    command = ' && '.join([
        "cd {0}", "source /etc/profile",
        "`which chef-solo` -c {0}/{1} -j {0}/{2} -l {3}"
    ])
    if delete_files:
        command += ' && rm -rf {0}'.format(args['chef_file_dest'])

    return sudo_dry(command.format(args['chef_file_dest'], args['config_path'],
                                   config.get('dna_path'), args['loglevel']),
                    args,
                    logger=logger)
Example #11
0
def update(args, config, delete_files=False, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    sync(args, config, logger=logger)

    command = ' && '.join([
        "cd {0}",
        "source /etc/profile",
        "`which chef-solo` -c {0}/{1} -j {0}/{2} -l {3}"
    ])
    if delete_files:
        command += ' && rm -rf {0}'.format(args['chef_file_dest'])

    return sudo_dry(command.format(
        args['chef_file_dest'],
        args['config_path'],
        config.get('dna_path'),
        args['loglevel']
    ), args, logger=logger)
Example #12
0
def sync(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    if args['sync'] == "git":
        # TODO: Allow this to be any host
        add_line_if_not_present_dry(args, '~/.ssh/known_hosts', "github.com,207.97.227.239 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==", logger=logger)  # noqa
        run_dry(' ; '.join([
            'if [ -d {1}/.git ]',
            'then cd {1} && git pull origin master',
            'else rm -rf {1} && git clone {0} {1}',
            'fi'
        ]).format(
            args['repository'],
            args['chef_file_dest']
        ), args, logger=logger)
    else:
        with settings(hide('stdout'), warn_only=True):
            rsync_exclusions = list(args['rsync_exclusions'])
            if not rsync_exclusions:
                rsync_exclusions = []
            rsync_exclusions.append('.git')

            rsync_project_dry(
                args,
                logger=logger,
                extra_opts="-Caz",
                delete=True,
                exclude=rsync_exclusions,
                local_dir="./",
                remote_dir=args['chef_file_dest'],
                capture=True
            )

    return sudo_dry("chmod -R a+w {0}".format(
        args['chef_file_dest']
    ), args, logger=logger)
Example #13
0
def test(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    return sudo_dry("hostname", args, logger=logger)
Example #14
0
def sudo_command(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    return sudo_dry(args['cmd'], args, logger=logger)
Example #15
0
def sudo_command(args, config, logger=None):
    if logger is None:
        logger = setup_custom_logger('chef-solo-cup', args)

    return sudo_dry(args['cmd'], args, logger=logger)