Commit 7f0f76c2 by John Jarvis

updating xserver role for refactor

parent 57afc315
...@@ -14,26 +14,34 @@ XSERVER_SYSLOG_SERVER: '' ...@@ -14,26 +14,34 @@ XSERVER_SYSLOG_SERVER: ''
# source repo # source repo
XSERVER_GRADER_CHECKOUT: False XSERVER_GRADER_CHECKOUT: False
xserver_app_dir: "{{ app_dir }}/xserver"
xserver_code_dir: "{{ xserver_app_dir }}/xserver"
xserver_data_dir: "{{ data_dir }}/xserver"
xserver_venv_dir: "{{ venvs_dir }}/xserver"
xserver_venv_sandbox_dir: "{{ xserver_venv_dir }}-sandbox"
xserver_venv_bin: "{{ xserver_venv_dir }}/bin"
xserver_user: "xserver"
xserver_sandbox_user: "xserver-sandbox"
xserver_log_dir: "{{ log_dir }}/xserver"
xserver_env_config: xserver_env_config:
RUN_URL: $XSERVER_RUN_URL RUN_URL: $XSERVER_RUN_URL
GRADER_ROOT: $XSERVER_GRADER_ROOT GRADER_ROOT: $XSERVER_GRADER_ROOT
LOGGING_ENV: $XSERVER_LOGGING_ENV LOGGING_ENV: $XSERVER_LOGGING_ENV
LOG_DIR: "{{ data_dir }}/logs/xserver" LOG_DIR: "{{ xserver_log_dir }}"
SYSLOG_SERVER: $XSERVER_SYSLOG_SERVER SYSLOG_SERVER: $XSERVER_SYSLOG_SERVER
SANDBOX_PYTHON: '/opt/edx_apparmor_sandbox/bin/python' SANDBOX_PYTHON: '{{ xserver_venv_sandbox_dir }}/bin/python'
xserver_git_identity_path: "{{ secure_dir }}/files/git-identity" xserver_git_identity_path: "{{ secure_dir }}/files/git-identity"
xserver_code_dir: "{{ app_dir }}/xserver"
xserver_source_repo: "git://github.com/edx/xserver.git" xserver_source_repo: "git://github.com/edx/xserver.git"
# This should probably be overridden in the playbook or groupvars # This should probably be overridden in the playbook or groupvars
# with the default pointing to the head of master. # with the default pointing to the head of master.
xserver_version: HEAD xserver_version: HEAD
xserver_grader_dir: "{{ app_dir }}/data/content-mit-600x~2012_Fall" xserver_grader_dir: "{{ xserver_data_dir }}/data/content-mit-600x~2012_Fall"
xserver_grader_source: "git@github.com:/MITx/6.00x.git" xserver_grader_source: "git@github.com:/MITx/6.00x.git"
xserver_grader_version: HEAD xserver_grader_version: HEAD
xserver_sandbox_venv_dir: "{{ venv_dir }}_apparmor_sandbox"
xserver_requirements_file: "{{ xserver_code_dir }}/requirements.txt" xserver_requirements_file: "{{ xserver_code_dir }}/requirements.txt"
...@@ -50,3 +58,4 @@ xserver_debian_pkgs: ...@@ -50,3 +58,4 @@ xserver_debian_pkgs:
- libxml2-utils - libxml2-utils
- libxslt1-dev - libxslt1-dev
- python-dev - python-dev
- apparmor-utils
sandbox hard core 0
sandbox hard data 100000
sandbox hard fsize 10000
sandbox hard memlock 10000
sandbox hard nofile 20
sandbox hard rss 10000
sandbox hard stack 100000
sandbox hard cpu 0
sandbox hard nproc 8
sandbox hard as 32000
sandbox hard maxlogins 1
sandbox hard priority 19
sandbox hard locks 4
sandbox hard sigpending 100
sandbox hard msgqueue 100000
sandbox hard nice 19
...@@ -5,21 +5,25 @@ ...@@ -5,21 +5,25 @@
- name: xserver | checkout code - name: xserver | checkout code
git: dest={{xserver_code_dir}} repo={{xserver_source_repo}} version={{xserver_version}} git: dest={{xserver_code_dir}} repo={{xserver_source_repo}} version={{xserver_version}}
sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
- name: xserver | install requirements - name: xserver | install requirements
pip: requirements="{{xserver_requirements_file}}" virtualenv="{{venv_dir}}" state=present pip: requirements="{{xserver_requirements_file}}" virtualenv="{{ xserver_venv_dir }}" state=present
sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
- name: xserver | install sandbox requirements - name: xserver | install sandbox requirements
pip: requirements="{{xserver_requirements_file}}" virtualenv="{{xserver_sandbox_venv_dir}}" state=present pip: requirements="{{xserver_requirements_file}}" virtualenv="{{xserver_venv_sandbox_dir}}" state=present
sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
- name: xserver | create xserver application config - name: xserver | create xserver application config
template: src=xserver.env.json.j2 dest={{app_dir}}/env.json mode=640 owner=www-data group=adm template: src=xserver.env.json.j2 dest={{ xserver_app_dir }}/env.json mode=640 owner=www-data group=adm
sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
...@@ -29,10 +33,11 @@ ...@@ -29,10 +33,11 @@
- deploy - deploy
- name: xserver | checkout grader code - name: xserver | checkout grader code
git: dest={{xserver_grader_dir}} repo={{xserver_grader_source}} version={{xserver_grader_version}} git: dest={{ xserver_grader_dir }} repo={{ xserver_grader_source }} version={{ xserver_grader_version }}
environment: environment:
GIT_SSH: /tmp/git_ssh.sh GIT_SSH: /tmp/git_ssh.sh
when: XSERVER_GRADER_CHECKOUT when: XSERVER_GRADER_CHECKOUT
sudo_user: "{{ xserver_user }}"
tags: tags:
- deploy - deploy
......
...@@ -3,21 +3,33 @@ ...@@ -3,21 +3,33 @@
# access to the edX 6.00x repo which is not public # access to the edX 6.00x repo which is not public
--- ---
- name: xserver | ensure sandbox group exists - name: xserver | create application user
group: name=sandbox user: >
name="{{ xserver_user }}"
home="{{ xserver_app_dir }}"
createhome=no
shell=/bin/false
- name: xserver | ensure sandbox user exists - name: xserver | create application sandbox user
user: name=sandbox group=sandbox user: >
name="{{ xserver_sandbox_user }}"
createhome=no
shell=/bin/false
- name: xserver | create sandbox python directory
file: path={{ xserver_sandbox_venv_dir }} owner=ubuntu group=adm mode=2775 state=directory - name: xserver | create xserver app and data dir
file: >
path="{{ item }}"
state=directory
owner="{{ xserver_user }}"
group="{{ common_web_group }}"
with_items:
- "{{ xserver_app_dir }}"
- "{{ xserver_data_dir }}"
- name: xserver | create sandbox sudoers file - name: xserver | create sandbox sudoers file
template: src=99-sandbox.j2 dest=/etc/sudoers.d/99-sandbox owner=root group=root mode=0440 template: src=99-sandbox.j2 dest=/etc/sudoers.d/99-sandbox owner=root group=root mode=0440
- name: xserver | create sandbox python
command: /usr/local/bin/virtualenv {{ xserver_sandbox_venv_dir }} --distribute creates={{ xserver_sandbox_venv_dir }}/bin/activate
# Make sure this line is in the common-session file. # Make sure this line is in the common-session file.
- name: xserver | ensure pam-limits module is loaded - name: xserver | ensure pam-limits module is loaded
lineinfile: lineinfile:
...@@ -26,13 +38,14 @@ ...@@ -26,13 +38,14 @@
line="session required pam_limits.so" line="session required pam_limits.so"
- name: xserver | set sandbox limits - name: xserver | set sandbox limits
copy: src={{ item }} dest=/etc/security/limits.d/sandbox.conf template: src={{ item }} dest=/etc/security/limits.d/sandbox.conf
first_available_file: first_available_file:
- "{{ secure_dir }}/sandbox.conf" - "{{ secure_dir }}/sandbox.conf.j2"
- "sandbox.conf" - "sandbox.conf.j2"
- name: xserver | ensure apparmor package - name: xserver | install system dependencies of xserver
apt: pkg=apparmor-utils state=present apt: pkg={{ item }} state=present
with_items: xserver_debian_pkgs
- name: xserver | load python-sandbox apparmor profile - name: xserver | load python-sandbox apparmor profile
template: src={{ item }} dest=/etc/apparmor.d/edx_apparmor_sandbox template: src={{ item }} dest=/etc/apparmor.d/edx_apparmor_sandbox
...@@ -46,10 +59,6 @@ ...@@ -46,10 +59,6 @@
- name: xserver | setup upstart script - name: xserver | setup upstart script
template: src=xserver.conf.j2 dest=/etc/init/xserver.conf owner=root group=root template: src=xserver.conf.j2 dest=/etc/init/xserver.conf owner=root group=root
- name: xserver | install system dependencies of xserver
apt: pkg={{ item }} state=present
with_items: xserver_debian_pkgs
- name: xserver | upload ssh script - name: xserver | upload ssh script
copy: src=git_ssh.sh dest=/tmp/git_ssh.sh force=yes owner=root group=adm mode=750 copy: src=git_ssh.sh dest=/tmp/git_ssh.sh force=yes owner=root group=adm mode=750
......
www-data ALL=(sandbox) NOPASSWD:{{xserver_sandbox_venv_dir}}/bin/python www-data ALL=({{ xserver_sandbox_user }}) NOPASSWD:{{xserver_sandbox_venv_dir}}/bin/python
{{ xserver_sandbox_user }} hard core 0
{{ xserver_sandbox_user }} hard data 100000
{{ xserver_sandbox_user }} hard fsize 10000
{{ xserver_sandbox_user }} hard memlock 10000
{{ xserver_sandbox_user }} hard nofile 20
{{ xserver_sandbox_user }} hard rss 10000
{{ xserver_sandbox_user }} hard stack 100000
{{ xserver_sandbox_user }} hard cpu 0
{{ xserver_sandbox_user }} hard nproc 8
{{ xserver_sandbox_user }} hard as 32000
{{ xserver_sandbox_user }} hard maxlogins 1
{{ xserver_sandbox_user }} hard priority 19
{{ xserver_sandbox_user }} hard locks 4
{{ xserver_sandbox_user }} hard sigpending 100
{{ xserver_sandbox_user }} hard msgqueue 100000
{{ xserver_sandbox_user }} hard nice 19
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment