示例#1
0
def bootstrap_with_aptget(upgrade):
    "Bootstraps installation of saltstalk on the remote machine"
    apt = find_pkgmgr()
    apt.update()

    requires_update = True
    runner.state('Add salt repository')

    if is_distro('ubuntu'):
        apt.install('python-software-properties')
        sudo('add-apt-repository ppa:saltstack/salt -y')
    elif is_distro('debian'):
        if not apt.has('salt-master'):
            runner.state("Add debian backports to repositories")
            sudo('''cat <<EOF | sudo tee /etc/apt/sources.list.d/backports.list
deb http://backports.debian.org/debian-backports squeeze-backports main
EOF''') 
        else:
            runner.state("Already has salt packages")
            requires_update = False
    else:
        raise TypeError("Unknowned OS")

    if upgrade:
        upgrade_all_packages()

    if requires_update:
        apt.update()
示例#2
0
def convert_to_bleeding():
    "Converts the master installation to bleeding edge."
    runner.action('Convert Salt to bleeding edge')
    if runner.silent('test -d /opt/saltstack', use_sudo=True):
        runner.state('Already installed.')
        return
    with runner.with_prefix(' ~> '):
        pkgmgr = find_pkgmgr()
        pkgmgr.install('python')
        pkgmgr.install('python-dev')
        pkgmgr.install('python-pip')
        sudo('yes | pip install pyzmq PyYAML pycrypto msgpack-python jinja2 psutil')
        pkgmgr.install('salt-common')
        runner.silent('pkill salt-master', use_sudo=True)
        runner.silent('pkill salt-minion', use_sudo=True)
        time.sleep(1)
        pkgmgr.remove('salt-master')
        pkgmgr.remove('salt-minion')
        pkgmgr.install('git-core')
        runner.silent('rm -rf /opt/saltstack', use_sudo=True)
        runner.silent('mkdir /opt', use_sudo=True)
        with cd('/opt'):
            sudo('git clone {0} {1}'.format(env.salt_bleeding, 'saltstack'))
        with cd('/opt/saltstack/'):
            sudo('python setup.py install')
示例#3
0
def bootstrap(upgrade=False):
    "Performs a bootstrap depending on the operating system."
    runner.action('Bootstrapping salt')
    with runner.with_prefix(' ~> '):
        pkgmgr = find_pkgmgr()
        bootstrappers = {
            'apt': bootstrap_with_aptget,
        }
        runner.silent('rm -rf /etc/salt/')
        runner.silent('rm -rf /opt/salt/')
        bootstrappers[pkgmgr.name](boolean(upgrade))
示例#4
0
def minion(master, hostname, roles=()):
    """Sets up the salt-minion on the remote server.
    Argument should be the ip address of the salt master.
    """
    runner.action('Set up minion daemon')
    with runner.with_prefix(' ~> '):
        pkgmgr = find_pkgmgr()
        pkgmgr.install('salt-minion')

        upload_minion_key(hostname)
        upload_minion_config(master, roles)
示例#5
0
def upgrade_all_packages():
    "Updates all packages"
    find_pkgmgr().upgrade()
    reboot_if_required()
示例#6
0
def master():
    "Sets up the salt-master on the remote server."
    runner.action('Set up master daemon')
    with runner.with_prefix(' ~> '):
        find_pkgmgr().install('salt-master')
        upload_master_config()