Skip to content

Instantly share code, notes, and snippets.

@deepbrook
Last active October 15, 2020 14:42
Show Gist options
  • Save deepbrook/9cfe4b703322f82607724c83555cd5ca to your computer and use it in GitHub Desktop.
Save deepbrook/9cfe4b703322f82607724c83555cd5ca to your computer and use it in GitHub Desktop.
OpenEDX Devstack Setup Ansible Playbooks
# usage:
# ansible-playbook juniper-master.yml
#
# Overwrite variables set in `vars` below by using the `-e/--extra-vars` flag.
#
# Installs devstack into the playbook's directory - overwrite by passing `-e install_dir=<your_dir>`.
---
- hosts: 127.0.0.1
connection: local
become: false
vars:
target_dir: "{{ install_dir|default(playbook_dir) }}"
env_vars: &env_vars
OPENEDX_RELEASE: ironwood.master
PATH: ./venv/bin:{{ lookup('env', 'PATH') }}
tasks:
- name: Create directories
file:
path: "{{ target_dir }}/{{ dir }}"
state: directory
mode: 0755
loop:
- ironwood
- ironwood/src
loop_control:
loop_var: dir
- name: Clone devstack repository
git:
repo: https://github.com/edx/devstack
accept_hostkey: yes
version: ironwood.master
dest: "{{ target_dir }}/ironwood/devstack"
- name: Create virtualenv
command:
chdir: "{{ target_dir }}/ironwood/devstack"
cmd: virtualenv .venv -p python2.7
creates: "{ target_dir }/ironwood/devstack/.venv"
- name: Run make targets
env:
*env_vars
command:
chdir: "{{ target_dir }}/ironwood/devstack"
cmd: make {{ target }}
loop_control:
loop_var: target
loop:
- dev.clone
- dev.checkout
- pull
- requirements
- dev.provision
- dev.up
changed_when: true
- name: Create .direnv file
copy:
content: "export OPENEDX_RELEASE=ironwood.master"
path: "{{ target_dir }}/ironwood/devstack/.direnv"
mode: 0755
...
# usage:
# ansible-playbook juniper-master.yml
#
# Overwrite variables set in `vars` below by using the `-e/--extra-vars` flag.
#
# By default, uses NFS on darwin systems.
# Defaults to python 3.6.
# Installs devstack into the playbook's directory - overwrite by passing `-e install_dir=<your_dir>`.
---
- hosts: 127.0.0.1
connection: local
become: false
vars:
target_dir: "{{ install_dir|default(playbook_dir) }}"
use_nfs: "{{ ansible_os_family == 'Darwin' }}"
venv_py: python3.6
env_vars: &env_vars
# Uncomment this, if you'd like to pin the juniper release
# as opposed to using the latest commit at checkout.
# OPENEDX_RELEASE: juniper.master
PATH: ./.venv/bin:{{ lookup('env', 'PATH') }}
tasks:
- name: Create directories
file:
path: "{{ target_dir }}/{{ dir }}"
state: directory
mode: 0755
loop:
- juniper
- juniper/src
loop_control:
loop_var: dir
- name: Clone devstack repository
git:
repo: https://github.com/edx/devstack
accept_hostkey: yes
version: master
dest: "{{ target_dir }}/juniper/devstack"
- name: Create virtualenv
command:
chdir: "{{ target_dir }}/juniper/devstack"
cmd: virtualenv .venv -p {{ venv_py }}
creates: "{{ target_dir }}/juniper/devstack/.venv"
- name: Run make targets
environment:
*env_vars
command:
chdir: "{{ target_dir }}/juniper/devstack"
cmd: make {{ target }}
loop_control:
loop_var: target
loop:
- requirements
- dev.clone
- dev.checkout
changed_when: true
- name: Pull Images
environment:
*env_vars
command:
chdir: "{{ target_dir }}/juniper/devstack"
cmd: make dev.pull
changed_when: true
- name: Run NFS targets
environment:
*env_vars
block:
- name: Set up NFS (MacOS only)
command:
chdir: "{{ target_dir }}/juniper/devstack"
cmd: make dev.nfs.setup
changed_when: true
- name: Run provisioning via NFS (MacOS only)
command:
chdir: "{{ target_dir }}/juniper/devstack"
cmd: make dev.nfs.provision
changed_when: true
when: use_nfs
- name: Run provisioning (no NFS)
environment:
*env_vars
command:
chdir: "{{ target_dir }}/juniper/devstack"
cmd: make dev.provision
when: not use_nfs
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment