Metadata-Version: 2.1
Name: ansiblespawner
Version: 0.0.1
Summary: Spawn JupyterHub single user notebook servers using Ansible
Home-page: https://github.com/manics/jupyterhub-ansiblespawner
Author: Simon Li
License: BSD-3-Clause
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: jupyterhub (>=1.0.0)
Requires-Dist: ansible (>=2.9)
Requires-Dist: ansible-runner (>=1.4)

# AnsibleSpawner

![GitHub Workflow](https://github.com/manics/jupyterhub-ansiblespawner/workflows/Build/badge.svg?branch=master&event=push)
[![codecov](https://codecov.io/gh/manics/jupyterhub-ansiblespawner/branch/master/graph/badge.svg)](https://codecov.io/gh/manics/jupyterhub-ansiblespawner)

Spawn [JupyterHub](https://github.com/jupyterhub/jupyterhub) single user notebook servers using [Ansible](https://www.ansible.com/).

This spawner runs Ansible playbooks to start, manage and stop JupyterHub singleuser servers.
This means any Ansible module can be used to orchestrate your singleuser servers, including [Docker and many public/private clouds](https://docs.ansible.com/ansible/latest/modules/list_of_cloud_modules.html), and other infrastructure platforms supported by the community.
You can do things like create multiple storage volumes for each user, or provision additional services on other containers/VMs.


## Prerequisites

Python 3.6 or above and JupyterHub 1.0.0 or above are required.


## Installation


## Configuration

Example `jupyterhub_config.py` spawner configuration.
```
ansible_path = "/path/to/"
c.JupyterHub.spawner_class = "ansible"
c.AnsibleSpawner.inventory = ansible_path + "inventory.yml.j2"
c.AnsibleSpawner.create_playbook = ansible_path + "create.yml"
c.AnsibleSpawner.update_playbook = ansible_path + "update.yml"
c.AnsibleSpawner.poll_playbook = ansible_path + "poll.yml"
c.AnsibleSpawner.destroy_playbook = ansible_path + "destroy.yml"
c.AnsibleSpawner.playbook_vars = {
    "container_image": "docker.io/jupyter/base-notebook",
    "ansible_python_interpreter": "python3",
}
c.AnsibleSpawner.start_timeout = 600
c.JupyterHub.hub_connect_ip = "10.0.0.1"
```
See the example playbooks under [`./examples`](./examples)


## Development

Pytest is used to run automated tests that require [Docker](https://www.docker.com/) and [Podman](https://podman.io/).
These platforms were chosen because they are self-contained and can be installed in Travis, whereas testing with public cloud platforms requires secure access credentials.

If you only have one of these you can limit tests by specifying a marker.
For example, to disable the Docker tests:

    pytest -vs -m "not docker"

To view test coverage run pytest with `--cov=ansiblespawner --cov-report=html`, then open `htmlcov/index.html`.

[setuptools-scm](https://pypi.org/project/setuptools-scm/) is used to manage versions.
Just create a git tag.


