Exemplo n.º 1
0
def deploy_to(instance_ip, username, instance_id):
    """
    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_ip)
    cache_bust(hostname)
    configure_ansible(logger)
    my_limit = {"hostname": hostname, "ip": instance_ip}
    deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR
    host_list = settings.ANSIBLE_HOST_FILE

    user_keys = []
    user = User.objects.get(username=username)
    if user.userprofile.use_ssh_keys:
        user_keys = [k.pub_key for k in get_user_ssh_keys(username)]

    extra_vars = {
        "ATMOUSERNAME": username,
        "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE,
        "USERSSHKEYS": user_keys
    }

    pbs = subspace.playbook.get_playbooks(deploy_playbooks,
                                          host_list=host_list,
                                          limit=my_limit,
                                          extra_vars=extra_vars)
    [pb.run() for pb in pbs]
    log_playbook_summaries(logger, pbs, hostname)
    raise_playbook_errors(pbs, hostname)
    cache_bust(hostname)
    return pbs
Exemplo n.º 2
0
def deploy_to(instance_ip, username, instance_id):
    """
    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_ip)
    cache_bust(hostname)
    configure_ansible(logger)
    my_limit = {"hostname": hostname, "ip": instance_ip}
    deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR
    host_list = settings.ANSIBLE_HOST_FILE
    extra_vars = {"ATMOUSERNAME": username,
                  "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE}
    pbs = subspace.playbook.get_playbooks(deploy_playbooks,
                                          host_list=host_list,
                                          limit=my_limit,
                                          extra_vars=extra_vars)
    [pb.run() for pb in pbs]
    log_playbook_summaries(logger, pbs, hostname)
    raise_playbook_errors(pbs, hostname)
    cache_bust(hostname)
    return pbs
Exemplo n.º 3
0
def deploy_to(instance_ip, username, instance_id, limit_playbooks=None):
    """
    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_ip)
    cache_bust(hostname)
    configure_ansible()
    my_limit = {"hostname": hostname, "ip": instance_ip}
    deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR
    host_file = settings.ANSIBLE_HOST_FILE
    user_keys = _get_user_keys(username)
    extra_vars = {
        "ATMOUSERNAME": username,
        "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE,
        "USERSSHKEYS": user_keys
    }

    pbs = execute_playbooks(
        deploy_playbooks, host_file, extra_vars, my_limit,
        logger=logger, limit_playbooks=limit_playbooks)
    log_playbook_summaries(logger, pbs, hostname)
    raise_playbook_errors(pbs, instance_ip, hostname)
    cache_bust(hostname)
    return pbs
Exemplo n.º 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_ip)
    configure_ansible()
    if not limit_hosts:
        limit_hosts = {"hostname": hostname, "ip": instance_ip}
    host_file = settings.ANSIBLE_HOST_FILE
    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
Exemplo n.º 5
0
def deploy_to(instance_ip, username, instance_id):
    """
    Use service.ansible to deploy to an instance.
    """
    if not check_ansible():
        return []
    instance = Instance.objects.get(provider_alias=instance_id)
    provider = instance.source.provider
    logger = create_instance_logger(
        deploy_logger,
        instance_ip,
        username,
        instance_id)
    hostname = build_host_name(instance_ip)
    cache_bust(hostname)
    configure_ansible(logger)
    my_limit = {"hostname": hostname, "ip": instance_ip}
    deploy_playbooks = settings.ANSIBLE_PLAYBOOKS_DIR
    host_list = settings.ANSIBLE_HOST_FILE

    user_keys = []
    user = User.objects.get(username=username)
    if user.userprofile.use_ssh_keys:
        user_keys = [ k.pub_key for k in get_user_ssh_keys(username)]

    extra_vars = {"ATMOUSERNAME": username,
                  "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE,
                  "USERSSHKEYS": user_keys
                 }

    pbs = subspace.playbook.get_playbooks(deploy_playbooks,
                                          host_list=host_list,
                                          limit=my_limit,
                                          extra_vars=extra_vars)
    [pb.run() for pb in pbs]
    log_playbook_summaries(logger, pbs, hostname)
    raise_playbook_errors(pbs, hostname)
    cache_bust(hostname)
    return pbs
Exemplo n.º 6
0
def run_utility_playbooks(instance_ip, username, instance_id, limit_playbooks=[]):
    """
    Use service.ansible to deploy utility_playbooks to an instance.
    'limit_playbooks' is a list of strings that should match the filename of the ansible
    """
    if not check_ansible():
        return []
    logger = create_instance_logger(
        deploy_logger,
        instance_ip,
        username,
        instance_id)
    hostname = build_host_name(instance_ip)
    cache_bust(hostname)
    configure_ansible(logger)
    my_limit = {"hostname": hostname, "ip": instance_ip}
    playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR
    deploy_playbooks = playbooks_dir.replace('/playbooks', '/util_playbooks')
    host_list = settings.ANSIBLE_HOST_FILE

    user_keys = []
    user = User.objects.get(username=username)
    if user.userprofile.use_ssh_keys:
        user_keys = [ k.pub_key for k in get_user_ssh_keys(username)]

    extra_vars = {"ATMOUSERNAME": username,
                  "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE,
                  "USERSSHKEYS": user_keys}

    pbs = subspace.playbook.get_playbooks(deploy_playbooks,
                                          host_list=host_list,
                                          limit=my_limit,
                                          extra_vars=extra_vars)
    pbs = [pb for pb in pbs if pb.filename.split('/')[-1] in limit_playbooks]
    [pb.run() for pb in pbs]
    log_playbook_summaries(logger, pbs, hostname)
    raise_playbook_errors(pbs, hostname, allow_failures=True)
    cache_bust(hostname)
    return pbs
Exemplo n.º 7
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
Exemplo n.º 8
0
def run_utility_playbooks(instance_ip, username, instance_id,
                          limit_playbooks=[]):
    """
    Use service.ansible to deploy utility_playbooks to an instance.
    'limit_playbooks' is a list of strings
    that should match the filename you wish to include
    (Ex: check_networking.yml)
    """
    if not check_ansible():
        return []
    logger = create_instance_logger(
        deploy_logger,
        instance_ip,
        username,
        instance_id)
    hostname = build_host_name(instance_ip)
    cache_bust(hostname)
    configure_ansible()
    playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR

    # Essential args:
    util_playbooks = playbooks_dir.replace('/playbooks', '/util_playbooks')
    my_limit = {"hostname": hostname, "ip": instance_ip}
    host_file = settings.ANSIBLE_HOST_FILE
    user_keys = _get_user_keys(username)
    extra_vars = {"ATMOUSERNAME": username,
                  "VNCLICENSE": secrets.ATMOSPHERE_VNC_LICENSE,
                  "USERSSHKEYS": user_keys}
    pbs = execute_playbooks(
        util_playbooks, host_file, extra_vars, my_limit,
        logger=logger, limit_playbooks=limit_playbooks
    )
    log_playbook_summaries(logger, pbs, hostname)
    raise_playbook_errors(pbs, instance_ip, hostname, allow_failures=True)
    cache_bust(hostname)
    return pbs