Beispiel #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
Beispiel #2
0
def user_deploy(instance_ip, username, instance_id):
    """
    Use service.ansible to deploy to an instance.
    """
    playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR
    playbooks_dir = os.path.join(playbooks_dir, 'user_deploy')
    user_keys = [k.pub_key for k in get_user_ssh_keys(username)]
    extra_vars = {
        "USERSSHKEYS": user_keys
    }
    return ansible_deployment(
        instance_ip, username, instance_id, playbooks_dir,
        extra_vars=extra_vars)
Beispiel #3
0
def user_deploy(instance_ip, username, instance_id):
    """
    Use service.ansible to deploy to an instance.
    #NOTE: This method will _NOT_ work if you do not run instance deployment *FIRST*!
    # In order to add user-ssh keys to root, you will need root access to the VM that is *not* configured in this playbook.
    """
    playbooks_dir = settings.ANSIBLE_PLAYBOOKS_DIR
    playbooks_dir = os.path.join(playbooks_dir, 'user_deploy')
    user_keys = [k.pub_key for k in get_user_ssh_keys(username)]
    extra_vars = {"USERSSHKEYS": user_keys}
    return ansible_deployment(instance_ip,
                              username,
                              instance_id,
                              playbooks_dir,
                              extra_vars=extra_vars)
Beispiel #4
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
Beispiel #5
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
Beispiel #6
0
def _get_user_keys(username):
    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)]
    return user_keys
Beispiel #7
0
def _get_user_keys(username):
    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)]
    return user_keys