예제 #1
0
def ansible_deployment(
    instance_ip, username, instance_id, playbooks_dir,
    limit_playbooks=[], limit_hosts={}, extra_vars={},
    raise_exception=True):
    """
    Use service.ansible to deploy to an instance.
    """
    if not check_ansible():
        return []
    logger = create_instance_logger(
        deploy_logger,
        instance_ip,
        username,
        instance_id)
    hostname = build_host_name(instance_id, instance_ip)
    configure_ansible()
    if not limit_hosts:
        limit_hosts = {"hostname": hostname, "ip": instance_ip}
    host_file = settings.ANSIBLE_HOST_FILE
    identity = Identity.find_instance(instance_id)
    if identity:
        time_zone = identity.provider.timezone
        extra_vars.update({
            "TIMEZONE": time_zone,
        })
    extra_vars.update({
        "ATMOUSERNAME": username,
    })
    pbs = execute_playbooks(
        playbooks_dir, host_file, extra_vars, limit_hosts,
        logger=logger, limit_playbooks=limit_playbooks)
    if raise_exception:
        raise_playbook_errors(pbs, instance_ip, hostname)
    return pbs
예제 #2
0
def ansible_deployment(
    instance_ip, username, instance_id, playbooks_dir,
    limit_playbooks=[], limit_hosts={}, extra_vars={},
    raise_exception=True, debug=False, **runner_opts):
    """
    Use service.ansible to deploy to an instance.
    """
    if not check_ansible():
        return []
    # Expecting to be path-relative to the playbook path, so use basename
    if type(limit_playbooks) == str:
        limit_playbooks = limit_playbooks.split(",")
    if type(limit_playbooks) != list:
        raise Exception("Invalid 'limit_playbooks' argument (%s). Expected List" % limit_playbooks)
    limit_playbooks = [os.path.basename(filepath) for filepath in limit_playbooks]
    logger = create_instance_logger(
        deploy_logger,
        instance_ip,
        username,
        instance_id)
    hostname = build_host_name(instance_id, instance_ip)
    configure_ansible(debug=debug)
    if debug:
        runner_opts['verbosity'] = 4
    if not limit_hosts:
        if hostname:
            limit_hosts = hostname
        else:
            limit_hosts = instance_ip
    host_file = settings.ANSIBLE_HOST_FILE
    identity = Identity.find_instance(instance_id)
    if identity:
        time_zone = identity.provider.timezone
        extra_vars.update({
            "TIMEZONE": time_zone,
        })
    shared_users = list(AtmosphereUser.users_for_instance(instance_id).values_list('username', flat=True))
    if not shared_users:
        shared_users = [username]
    if username not in shared_users:
        shared_users.append(username)
    extra_vars.update({
        "SHARED_USERS": shared_users,
    })
    extra_vars.update({
        "ATMOUSERNAME": username,
    })
    pbs = execute_playbooks(
        playbooks_dir, host_file, extra_vars, limit_hosts,
        logger=logger, limit_playbooks=limit_playbooks, **runner_opts)
    if raise_exception:
        raise_playbook_errors(pbs, instance_id, instance_ip, hostname)
    return pbs
예제 #3
0
def ansible_deployment(instance_ip,
                       username,
                       instance_id,
                       playbooks_dir,
                       limit_playbooks=[],
                       limit_hosts={},
                       extra_vars={},
                       raise_exception=True,
                       **runner_opts):
    """
    Use service.ansible to deploy to an instance.
    """
    if not check_ansible():
        return []
    # Expecting to be path-relative to the playbook path, so use basename
    limit_playbooks = [
        os.path.basename(filepath) for filepath in limit_playbooks
    ]
    logger = create_instance_logger(deploy_logger, instance_ip, username,
                                    instance_id)
    hostname = build_host_name(instance_id, instance_ip)
    configure_ansible()
    if not limit_hosts:
        if hostname:
            limit_hosts = hostname
        else:
            limit_hosts = instance_ip
    host_file = settings.ANSIBLE_HOST_FILE
    identity = Identity.find_instance(instance_id)
    if identity:
        time_zone = identity.provider.timezone
        extra_vars.update({
            "TIMEZONE": time_zone,
        })
    extra_vars.update({
        "ATMOUSERNAME": username,
    })
    pbs = execute_playbooks(playbooks_dir,
                            host_file,
                            extra_vars,
                            limit_hosts,
                            logger=logger,
                            limit_playbooks=limit_playbooks,
                            **runner_opts)
    if raise_exception:
        raise_playbook_errors(pbs, instance_ip, hostname)
    return pbs
예제 #4
0
def ansible_deployment(
    instance_ip, username, instance_id, playbooks_dir, limit_playbooks=[], limit_hosts={}, extra_vars={}
):
    """
    Use service.ansible to deploy to an instance.
    """
    if not check_ansible():
        return []
    logger = create_instance_logger(deploy_logger, instance_ip, username, instance_id)
    hostname = build_host_name(instance_id, instance_ip)
    configure_ansible()
    if not limit_hosts:
        limit_hosts = {"hostname": hostname, "ip": instance_ip}
    host_file = settings.ANSIBLE_HOST_FILE
    identity = Identity.find_instance(instance_id)
    if identity:
        time_zone = identity.provider.timezone
        extra_vars.update({"TIMEZONE": time_zone})
    extra_vars.update({"ATMOUSERNAME": username})
    pbs = execute_playbooks(
        playbooks_dir, host_file, extra_vars, limit_hosts, logger=logger, limit_playbooks=limit_playbooks
    )
    raise_playbook_errors(pbs, instance_ip, hostname)
    return pbs
예제 #5
0
def ansible_deployment(instance_ip,
                       username,
                       instance_id,
                       playbooks_dir,
                       limit_playbooks=[],
                       limit_hosts={},
                       extra_vars={},
                       raise_exception=True,
                       debug=False,
                       **runner_opts):
    """
    Use service.ansible to deploy to an instance.
    """
    if not check_ansible():
        return []
    # Expecting to be path-relative to the playbook path, so use basename
    if type(limit_playbooks) == str:
        limit_playbooks = limit_playbooks.split(",")
    if type(limit_playbooks) != list:
        raise Exception(
            "Invalid 'limit_playbooks' argument (%s). Expected List" %
            limit_playbooks)
    limit_playbooks = [
        os.path.basename(filepath) for filepath in limit_playbooks
    ]
    logger = create_instance_logger(deploy_logger, instance_ip, username,
                                    instance_id)
    hostname = build_host_name(instance_id, instance_ip)
    configure_ansible(debug=debug)
    if debug:
        runner_opts['verbosity'] = 4
    if not limit_hosts:
        if hostname:
            limit_hosts = hostname
        else:
            limit_hosts = instance_ip
    host_file = settings.ANSIBLE_HOST_FILE
    identity = Identity.find_instance(instance_id)
    if identity:
        time_zone = identity.provider.timezone
        extra_vars.update({
            "TIMEZONE": time_zone,
        })
    shared_users = list(
        AtmosphereUser.users_for_instance(instance_id).values_list('username',
                                                                   flat=True))
    if not shared_users:
        shared_users = [username]
    if username not in shared_users:
        shared_users.append(username)
    extra_vars.update({
        "SHARED_USERS": shared_users,
    })
    extra_vars.update({
        "ATMOUSERNAME": username,
    })
    pbs = execute_playbooks(playbooks_dir,
                            host_file,
                            extra_vars,
                            limit_hosts,
                            logger=logger,
                            limit_playbooks=limit_playbooks,
                            **runner_opts)
    if raise_exception:
        raise_playbook_errors(pbs, instance_id, instance_ip, hostname)
    return pbs