Skip to content

Commit

Permalink
Merge pull request #57 from ellisonbg/more-fixes
Browse files Browse the repository at this point in the history
More fixes to get everything working again
  • Loading branch information
ellisonbg committed Jan 4, 2017
2 parents 86b075c + cc05ef8 commit b368e97
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 56 deletions.
15 changes: 11 additions & 4 deletions deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,30 @@
register: default_path


- hosts: jupyterhub_hosts
tasks:
- name: Make sure we are running on Ubuntu
fail: msg="This ansible setup only work on Ubuntu"
when: ansible_distribution != 'Ubuntu'


- hosts: jupyterhub_hosts
roles:
- common
- python
- role: r
when: install_r_kernel
when: install_r_kernel is defined and install_r_kernel != ''
- role: newrelic
when: newrelic_license_key is defined and newrelic_license_key != ''
- nginx
- supervisor
- saveusers
- role: bash
when: install_bash_kernel
when: install_bash_kernel is defined and install_bash_kernel != ''
- jupyterhub
- role: cull_idle
when: use_cull_idle_servers
when: use_cull_idle_servers is defined and use_cull_idle_servers != ''
- role: nbgrader
when: use_nbgrader
when: use_nbgrader is defined and use_nbgrader != ''
environment:
PATH: "/opt/conda/bin:{{ default_path.stdout }}"
15 changes: 1 addition & 14 deletions deploy_formgrade.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,4 @@

- hosts: jupyterhub_hosts
roles:
- {
role: formgrade,
nbgrader_course_id: "course1",
nbgrader_owner: "instructor1",
nbgrader_graders: ["instructor1", "grader1"],
nbgrader_port: 5005
}
- {
role: formgrade,
nbgrader_course_id: "course2",
nbgrader_owner: "instructor2",
nbgrader_graders: ["instructor2", "grader2"],
nbgrader_port: 5006
}
- formgrade
28 changes: 20 additions & 8 deletions host_vars/hostname.example
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,6 @@ install_bash_kernel: true
# enter between quotation marks below
proxy_auth_token: ''

# The API token formgrader will use to make Hub requests
# Create using something like `openssl rand -hex 32` and
# enter between quotation marks below
formgrader_hubapi_token: ''

# Path of the Python 2.7 interpreter on the remote server
# Note: Ansible requires Python 2.7 for provisioning so the path must be set
ansible_python_interpreter: '/usr/bin/python2.7'
Expand Down Expand Up @@ -195,12 +190,29 @@ cull_every: 600
# The idle timeout (in seconds)
cull_timeout: 3600

# nbgrader (Optional default: false)
use_nbgrader: false
# The API token formgrader will use to make Hub requests
# Create using something like `openssl rand -hex 32` and
# enter between quotation marks below
formgrader_hubapi_token: ''
nbgrader_courses:
- {
nbgrader_course_id: "course2",
nbgrader_owner: "instructor2",
nbgrader_graders: ["instructor2", "grader2"],
nbgrader_port: 5006
}
- {
nbgrader_course_id: "course2",
nbgrader_owner: "instructor2",
nbgrader_graders: ["instructor2", "grader2"],
nbgrader_port: 5006
}

# Set Google Analytics Tracking ID (Optional)
ga_tracking_id: ''

# Set NewRelic license key (Optional)
newrelic_license_key: ''

# Set user-friendly codename of installed ubuntu version. (Optional - Needed when using R)
# This codename is used to setup the R apt repositories
ubuntu_codename: wily
31 changes: 18 additions & 13 deletions roles/formgrade/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,39 @@
---

- name: make sure base exists
file: path={{nbgrader_base_dir}}/ state={{item}} owner={{nbgrader_owner}} mode=0700
file: path={{nbgrader_base_dir}}/ state={{item[0]}} owner={{item[1].nbgrader_owner}} mode=0700
become: true
with_items:
- directory
- touch
- ['directory', 'touch']
- "{{nbgrader_courses}}"

- name: make sure subdirectories exist
file: path={{nbgrader_base_dir}}/{{item}}/ state=directory owner={{nbgrader_owner}} mode=0700
file: path={{nbgrader_base_dir}}/{{item[0]}}/ state=directory owner={{item[1].nbgrader_owner}} mode=0700
become: true
with_items:
- source
- release
- feedback
- autograded
- submitted
- ['source', 'release', 'feedback', 'autograded', 'submitted']
- "{{nbgrader_courses}}"

- name: install nbgrader config file
template: "src=nbgrader_config.py.j2 dest={{nbgrader_base_dir}}/nbgrader_config.py owner={{nbgrader_owner}} mode=700"
template: "src=nbgrader_config.py.j2 dest={{nbgrader_base_dir}}/nbgrader_config.py owner={{item.nbgrader_owner}} mode=700"
become: true
with_items:
- "{{nbgrader_courses}}"

- name: install supervisor config for nbgrader
template: "src=nbgrader.conf.j2 dest=/etc/supervisor/conf.d/nbgrader_{{nbgrader_course_id}}.conf owner=root group=root mode='0600' backup=yes"
template: "src=nbgrader.conf.j2 dest=/etc/supervisor/conf.d/nbgrader_{{item.nbgrader_course_id}}.conf owner=root group=root mode='0600' backup=yes"
become: true
with_items:
- "{{nbgrader_courses}}"

- name: load nbgrader supervisor config
supervisorctl: name=nbgrader_{{nbgrader_course_id}} state=present
supervisorctl: name=nbgrader_{{item.nbgrader_course_id}} state=present
become: true
with_items:
- "{{nbgrader_courses}}"

- name: start nbgrader with supervisor
supervisorctl: name=nbgrader_{{nbgrader_course_id}} state=restarted
supervisorctl: name=nbgrader_{{item.nbgrader_course_id}} state=restarted
become: true
with_items:
- "{{nbgrader_courses}}"
8 changes: 4 additions & 4 deletions roles/formgrade/templates/nbgrader.conf.j2
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# {{ ansible_managed }}

[program:nbgrader_{{nbgrader_course_id}}]
[program:nbgrader_{{item.nbgrader_course_id}}]
command=/opt/conda/bin/nbgrader formgrade
redirect_stderr=true
stdout_logfile={{nbgrader_log_dir}}/nbgrader_{{nbgrader_course_id}}.log
stdout_logfile={{nbgrader_log_dir}}/nbgrader_{{item.nbgrader_course_id}}.log
autostart=true
autorestart=false
stopasgroup=true
user={{nbgrader_owner}}
user={{item.nbgrader_owner}}
directory={{nbgrader_base_dir}}/
environment=HOME="{{home_dir}}/{{nbgrader_owner}}",USER="{{nbgrader_owner}}",PATH="/opt/conda/bin:%(ENV_PATH)s"
environment=HOME="{{home_dir}}/{{item.nbgrader_owner}}",USER="{{item.nbgrader_owner}}",PATH="/opt/conda/bin:%(ENV_PATH)s"
8 changes: 4 additions & 4 deletions roles/formgrade/templates/nbgrader_config.py.j2
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
# Supervisord is responsible for logging.
c = get_config()

c.NbGrader.course_id = '{{nbgrader_course_id}}'
c.NbGrader.course_id = '{{item.nbgrader_course_id}}'

c.FormgradeApp.authenticator_class = u'nbgrader.auth.hubauth.HubAuth'
c.FormgradeApp.port = {{nbgrader_port}}
c.FormgradeApp.port = {{item.nbgrader_port}}

c.HubAuth.proxy_token = u'{{proxy_auth_token}}'
c.HubAuth.hubapi_token = u'{{formgrader_hubapi_token}}'
c.HubAuth.hub_base_url = u'https://{{inventory_hostname}}'
c.HubAuth.notebook_url_prefix = u'{{nbgrader_base_dir}}'
c.HubAuth.graders = [
{%- for grader in nbgrader_graders[:-1] -%}
{%- for grader in item.nbgrader_graders[:-1] -%}
'{{grader}}',
{%- endfor -%}
'{{-nbgrader_graders[-1]-}}']
'{{-item.nbgrader_graders[-1]-}}']
4 changes: 2 additions & 2 deletions roles/jupyterhub/tasks/supervisor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
become: true

- name: install jupyterhub launch script
action: template src=start-jupyterhub.sh.j2 dest={{jupyterhub_srv_dir}}/start-jupyterhub.sh mode=0700
template: src=start-jupyterhub.sh.j2 dest={{jupyterhub_srv_dir}}/start-jupyterhub.sh mode=0700
become: true

- name: load jupyterhub supervisor config
action: supervisorctl name=jupyterhub state=present
supervisorctl: name=jupyterhub state=present

- name: restart jupyterhub with supervisor
supervisorctl: name=jupyterhub state=restarted
10 changes: 6 additions & 4 deletions roles/jupyterhub/templates/jupyterhub_config.py.j2
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,17 @@ c.Authenticator.whitelist = set()
{% endif %}

c.JupyterHub.services = [
{% if formgrader_hubapi_token %}
{% if use_nbgrader and formgrader_hubapi_token %}
{%- for course in nbgrader_courses[:-1] -%}
{
'name': 'formgrader',
'name': 'formgrader-{{course.nbgrader_course_id}}',
'admin': True,
'api_token': '{{formgrader_hubapi_token}}',
'url': 'http://127.0.0.1:{{nbgrader_port}}',
'url': 'http://127.0.0.1:{{course.nbgrader_port}}',
},
{%- endfor -%}
{% endif %}
{% if cull_idle_servers_hubapi_token %}
{% if use_cull_idle_servers and cull_idle_servers_hubapi_token %}
{
'name': 'cull_idle_servers',
'admin': True,
Expand Down
4 changes: 2 additions & 2 deletions roles/python/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
miniconda_version: 4.1.11
miniconda_version: 4.2.12
conda_installer: Miniconda3-{{miniconda_version}}-Linux-x86_64.sh
conda_prefix: /opt/conda
conda_checksum: "md5:874dbb0d3c7ec665adf7231bbb575ab2"
conda_checksum: "md5:d0c7c71cc5659e54ab51f2005a8d96f3"
conda_config:
channels:
- conda-forge
Expand Down
2 changes: 1 addition & 1 deletion roles/r/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
apt_key: id=E084DAB9 keyserver=keyserver.ubuntu.com state=present

- name: repository | add cran-r
apt_repository: repo="deb http://cran.rstudio.com/bin/linux/ubuntu {{ubuntu_codename}}/" state=present update_cache=true
apt_repository: repo="deb http://cran.rstudio.com/bin/linux/ubuntu {{ansible_distribution_release}}/" state=present update_cache=true

- name: install r and devtools's dependencies
apt: name={{ item }} state=present
Expand Down

0 comments on commit b368e97

Please sign in to comment.