Example #1
0
def install_ce_ubuntu(version=None) -> bool:
    """
    Returns true if installed, false if was already installed
    """
    # https://docs.docker.com/v17.09/engine/installation/linux/docker-ce/ubuntu/
    from carnival.cmd import apt
    pkgname = "docker-ce"
    if apt.is_pkg_installed(pkgname, version):
        log(f"{pkgname} already installed")
        return False

    log(f"Installing {pkgname}...")

    cmd.cli.run("sudo apt-get remove docker docker-engine docker.io")
    cmd.cli.run("sudo apt-get update")
    cmd.cli.run(
        "sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common"
    )
    cmd.cli.run(
        "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -",
        pty=True)
    cmd.cli.run(
        'sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"'
    )

    apt.force_install(pkgname=pkgname, version=version, update=True, hide=True)
    return True
Example #2
0
def install_multiple(*pkg_names: str, update=True, hide=False) -> bool:
    if all([is_pkg_installed(x) for x in pkg_names]):
        if not hide:
            log(f"{','.join(pkg_names)} already installed")
        return False

    if update:
        cmd.cli.run("sudo apt-get update", pty=True, hide=hide)

    for pkg in pkg_names:
        install(pkg, update=False, hide=hide)
    return True
Example #3
0
def install(pkgname, version=None, update=True, hide=False) -> bool:
    """
    Install apt package if not installed
    Returns true if installed, false if was already installed
    """
    if is_pkg_installed(pkgname, version):
        if version:
            if not hide:
                log(f"{pkgname}={version} already installed")
        else:
            if not hide:
                log(f"{pkgname} already installed")
        return False
    force_install(pkgname=pkgname, version=version, update=update, hide=hide)
    return True
Example #4
0
def install(pkgname: str,
            version: Optional[str] = None,
            update: bool = True,
            hide: bool = False) -> bool:
    """
    Установить пакет если он еще не установлен в системе

    :param pkgname: название пакета
    :param version: версия
    :param update: запустить apt-get update перед установкой
    :param hide: скрыть вывод этапов
    :return: `True` если пакет был установлен, `False` если пакет уже был установлен ранее
    """
    if is_pkg_installed(pkgname, version):
        if version:
            if not hide:
                log(f"{pkgname}={version} already installed")
        else:
            if not hide:
                log(f"{pkgname} already installed")
        return False
    force_install(pkgname=pkgname, version=version, update=update, hide=hide)
    return True
Example #5
0
def install_multiple(*pkg_names: str,
                     update: bool = True,
                     hide: bool = False) -> bool:
    """
    Установить несколько пакетов, если они не установлены

    :param pkg_names: список пакетов которые нужно установить
    :param update: запустить apt-get update перед установкой
    :param hide: скрыть вывод этапов
    :return: `True` если хотя бы один пакет был установлен, `False` если все пакеты уже были установлен ранее
    """
    if all([is_pkg_installed(x) for x in pkg_names]):
        if not hide:
            log(f"{','.join(pkg_names)} already installed")
        return False

    if update:
        cmd.cli.run("DEBIAN_FRONTEND=noninteractive sudo apt-get update",
                    pty=True,
                    hide=hide)

    for pkg in pkg_names:
        install(pkg, update=False, hide=hide)
    return True
Example #6
0
def install_compose(version="1.25.1", dest="/usr/local/bin/docker-compose"):
    log(f"Installing compose...")
    download_link = f"https://github.com/docker/compose/releases/download/{version}/docker-compose-`uname -s`-`uname -m`"
    cmd.cli.run(f"sudo curl -sL {download_link} -o {dest}")
    cmd.cli.run(f"sudo chmod a+x {dest}")
Example #7
0
def test_log(capsys):
    with global_context.SetContext(Host("local")):
        utils.log("Hellotest")

        captured = capsys.readouterr()
        assert captured.out == "💃💃💃 local> Hellotest\n"