Commit 1f0ae246 by muhammad-ammar

more video worker role changes

parent cb0ada46
...@@ -10,6 +10,20 @@ ...@@ -10,6 +10,20 @@
# Defaults for role video_worker. # Defaults for role video_worker.
# #
video_worker_service_name: 'video_worker'
video_worker_user: '{{ video_worker_service_name }}'
video_worker_home: '{{ COMMON_APP_DIR }}/{{ video_worker_service_name }}'
video_worker_code_dir: '{{ video_worker_home }}/{{ video_worker_service_name }}'
video_worker_venv: '{{ video_worker_home }}/venvs/{{ video_worker_service_name }}'
video_worker_venv_bin: '{{ video_worker_home }}/venvs/{{ video_worker_service_name }}/bin'
video_worker_log_dir: '{{ COMMON_LOG_DIR }}/{{ video_worker_service_name }}'
video_worker_environment:
PATH: '{{ video_worker_venv_bin }}:{{ ansible_env.PATH }}'
VIDEO_WORKER_CFG: "{{ COMMON_CFG_DIR }}/{{ video_worker_service_name }}.yml"
PYTHONPATH: "{{ video_worker_code_dir }}"
VIDEO_WORKER_GIT_IDENTITY: !!null VIDEO_WORKER_GIT_IDENTITY: !!null
VIDEO_WORKER_VERSION: 'master' VIDEO_WORKER_VERSION: 'master'
...@@ -26,31 +40,12 @@ VIDEO_WORKER_REPOS: ...@@ -26,31 +40,12 @@ VIDEO_WORKER_REPOS:
# a key be provided via NEWRELIC_LICENSE_KEY. # a key be provided via NEWRELIC_LICENSE_KEY.
VIDEO_WORKER_NEWRELIC_APPNAME: '{{ COMMON_ENVIRONMENT }}-{{ COMMON_DEPLOYMENT }}-{{ video_worker_service_name }}' VIDEO_WORKER_NEWRELIC_APPNAME: '{{ COMMON_ENVIRONMENT }}-{{ COMMON_DEPLOYMENT }}-{{ video_worker_service_name }}'
VIDEO_WORKER_BROKER_USERNAME: 'celery' VIDEO_WORKER_BROKER_USERNAME: 'video-worker'
VIDEO_WORKER_BROKER_PASSWORD: 'celery' VIDEO_WORKER_BROKER_PASSWORD: 'video-worker'
# Used as the default RabbitMQ IP. VIDEO_WORKER_BROKER_HOST: 'localhost'
VIDEO_WORKER_BROKER_HOST: '{{ ansible_default_ipv4.address }}'
# Used as the default RabbitMQ port.
VIDEO_WORKER_BROKER_PORT: 5672
VIDEO_WORKER_BROKER_URL: 'amqp://{{ VIDEO_WORKER_BROKER_USERNAME }}:{{ VIDEO_WORKER_BROKER_PASSWORD }}@{{ VIDEO_WORKER_BROKER_HOST }}:{{ VIDEO_WORKER_BROKER_PORT }}'
VIDEO_WORKER_CONCURRENCY: 4
video_worker_environment:
WORKER_CONFIGURATION_MODULE: 'video_worker.configuration.production'
video_worker_cfg: '{{ COMMON_CFG_DIR }}/{{ video_worker_service_name }}.yml'
video_worker_service_name: 'video_worker'
video_worker_user: '{{ video_worker_service_name }}'
video_worker_home: '{{ COMMON_APP_DIR }}/{{ video_worker_service_name }}'
video_worker_code_dir: '{{ video_worker_home }}/{{ video_worker_service_name }}'
video_worker_log_dir: '{{ COMMON_LOG_DIR }}/{{ video_worker_service_name }}'
video_worker_requirements_base: '{{ video_worker_code_dir }}/requirements' VIDEO_WORKER_CONCURRENCY: 'SET-ME-PLEASE'
video_worker_requirements: VIDEO_WORKER_QUEUES: 'SET-ME-PLEASE'
- production.txt
- optional.txt
# OS packages # OS packages
video_worker_debian_pkgs: []oe VIDEO_WORKER_DEBIAN_PKGS: ['ffmpeg']
video_worker_redhat_pkgs: []
...@@ -14,12 +14,10 @@ dependencies: ...@@ -14,12 +14,10 @@ dependencies:
- common - common
- supervisor - supervisor
- role: edx_service - role: edx_service
edx_service_name: "{{ ecommerce_worker_service_name }}" edx_service_name: "{{ video_worker_service_name }}"
edx_service_config: "{{ ECOMMERCE_WORKER_SERVICE_CONFIG }}" edx_service_config: "{{ VIDEO_WORKER_SERVICE_CONFIG }}"
edx_service_repos: "{{ ECOMMERCE_WORKER_REPOS }}" edx_service_repos: "{{ VIDEO_WORKER_REPOS }}"
edx_service_user: "{{ ecommerce_worker_user }}" edx_service_user: "{{ video_worker_user }}"
edx_service_home: "{{ ecommerce_worker_home }}" edx_service_home: "{{ video_worker_home }}"
edx_service_packages: edx_service_packages:
debian: "{{ ecommerce_worker_debian_pkgs }}" debian: "{{ video_worker_debian_pkgs }}"
redhat: "{{ ecommerce_worker_redhat_pkgs }}"
...@@ -7,24 +7,23 @@ ...@@ -7,24 +7,23 @@
# code style: https://openedx.atlassian.net/wiki/display/OpenOPS/Ansible+Code+Conventions # code style: https://openedx.atlassian.net/wiki/display/OpenOPS/Ansible+Code+Conventions
# license: https://github.com/edx/configuration/blob/master/LICENSE.TXT # license: https://github.com/edx/configuration/blob/master/LICENSE.TXT
# #
# Tasks for role ecommerce_worker. # Tasks for role video_worker.
# #
- name: install application requirements - name: install application requirements
pip: pip:
requirements: '{{ ecommerce_worker_requirements_base }}/{{ item }}' requirements: '{{ video_worker_code_dir }}/requirements.txt'
virtualenv: '{{ ecommerce_worker_home }}/venvs/{{ ecommerce_worker_service_name }}' virtualenv: '{{ video_worker_venv }}'
state: present state: present
become_user: '{{ ecommerce_worker_user }}' become_user: '{{ video_worker_user }}'
with_items: "{{ ecommerce_worker_requirements }}"
tags: tags:
- install - install
- install:app-requirements - install:app-requirements
- name: write out the supervisor wrapper - name: write out the supervisor wrapper
template: template:
src: edx/app/ecomworker/ecomworker.sh.j2 src: edx/app/video_worker/video_worker.sh.j2
dest: '{{ ecommerce_worker_home }}/{{ ecommerce_worker_service_name }}.sh' dest: '{{ video_worker_home }}/{{ video_worker_service_name }}.sh'
mode: 0650 mode: 0650
owner: '{{ supervisor_user }}' owner: '{{ supervisor_user }}'
group: '{{ common_web_user }}' group: '{{ common_web_user }}'
...@@ -32,10 +31,10 @@ ...@@ -32,10 +31,10 @@
- install - install
- install:configuration - install:configuration
- name: write supervisord config - name: write video worker supervisord config
template: template:
src: edx/app/supervisor/conf.d.available/ecomworker.conf.j2 src: edx/app/supervisor/conf.d.available/video_worker.conf.j2
dest: '{{ supervisor_available_dir }}/{{ ecommerce_worker_service_name }}.conf' dest: '{{ supervisor_available_dir }}/{{ video_worker_service_name }}.conf'
owner: '{{ supervisor_user }}' owner: '{{ supervisor_user }}'
group: '{{ common_web_user }}' group: '{{ common_web_user }}'
mode: 0644 mode: 0644
...@@ -43,12 +42,12 @@ ...@@ -43,12 +42,12 @@
- install - install
- install:configuration - install:configuration
- name: setup the ecommerce_worker env file - name: setup the video_worker env file
template: template:
src: './{{ ecommerce_worker_home }}/ecomworker_env.j2' src: "edx/app/video_worker/video_worker_env.j2"
dest: '{{ ecommerce_worker_home }}/ecomworker_env' dest: "{{ edx_django_service_home }}/{{ edx_django_service_name }}_env"
owner: '{{ ecommerce_worker_user }}' owner: "{{ edx_django_service_user }}"
group: '{{ ecommerce_worker_user }}' group: "{{ edx_django_service_user }}"
mode: 0644 mode: 0644
tags: tags:
- install - install
...@@ -56,8 +55,8 @@ ...@@ -56,8 +55,8 @@
- name: enable supervisor script - name: enable supervisor script
file: file:
src: '{{ supervisor_available_dir }}/{{ ecommerce_worker_service_name }}.conf' src: '{{ supervisor_available_dir }}/{{ video_worker_service_name }}.conf'
dest: '{{ supervisor_cfg_dir }}/{{ ecommerce_worker_service_name }}.conf' dest: '{{ supervisor_cfg_dir }}/{{ video_worker_service_name }}.conf'
state: link state: link
force: yes force: yes
when: not disable_edx_services when: not disable_edx_services
...@@ -72,11 +71,10 @@ ...@@ -72,11 +71,10 @@
- manage - manage
- manage:start - manage:start
- name: create symlinks from the venv bin dir - name: create symlinks from the venv bin dir
file: file:
src: '{{ ecommerce_worker_home }}/venvs/{{ ecommerce_worker_service_name }}/bin/{{ item }}' src: '{{ video_worker_venv_bin }}/{{ item }}'
dest: '{{ COMMON_BIN_DIR }}/{{ item }}.ecommerce_worker' dest: '{{ COMMON_BIN_DIR }}/{{ item }}.video_worker'
state: link state: link
with_items: with_items:
- python - python
...@@ -90,7 +88,7 @@ ...@@ -90,7 +88,7 @@
state: restarted state: restarted
supervisorctl_path: '{{ supervisor_ctl }}' supervisorctl_path: '{{ supervisor_ctl }}'
config: '{{ supervisor_cfg }}' config: '{{ supervisor_cfg }}'
name: '{{ ecommerce_worker_service_name }}' name: '{{ video_worker_service_name }}'
when: not disable_edx_services when: not disable_edx_services
become_user: '{{ supervisor_service_user }}' become_user: '{{ supervisor_service_user }}'
tags: tags:
......
#!/usr/bin/env bash
# {{ ansible_managed }}
{% set ecommerce_worker_venv_bin = ecommerce_worker_home + '/venvs/' + ecommerce_worker_service_name + '/bin' %}
{% if COMMON_ENABLE_NEWRELIC_APP %}
{% set executable = ecommerce_worker_venv_bin + '/newrelic-admin run-program ' + ecommerce_worker_venv_bin + '/celery' %}
{% else %}
{% set executable = ecommerce_worker_venv_bin + '/celery' %}
{% endif %}
{% if COMMON_ENABLE_NEWRELIC_APP %}
export NEW_RELIC_APP_NAME='{{ ECOMMERCE_WORKER_NEWRELIC_APPNAME }}'
export NEW_RELIC_LICENSE_KEY='{{ NEWRELIC_LICENSE_KEY }}'
{% endif -%}
source {{ ecommerce_worker_home }}/{{ ecommerce_worker_service_name }}_env
{{ executable }} -A ecommerce_worker worker --app ecommerce_worker.celery_app:app --concurrency={{ ECOMMERCE_WORKER_CONCURRENCY }} --loglevel=info --queue=fulfillment,email_marketing
# #
# {{ ansible_managed }} # {{ ansible_managed }}
# #
[program:{{ ecommerce_worker_service_name }}] [program:{{ video_worker_service_name }}]
command={{ ecommerce_worker_home }}/{{ ecommerce_worker_service_name }}.sh command={{ video_worker_home }}/{{ video_worker_service_name }}.sh
user={{ common_web_user }} user={{ common_web_user }}
directory={{ ecommerce_worker_code_dir }} directory={{ video_worker_code_dir }}
stdout_logfile={{ supervisor_log_dir }}/%(program_name)s-stdout.log stdout_logfile={{ supervisor_log_dir }}/%(program_name)s-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)s-stderr.log stderr_logfile={{ supervisor_log_dir }}/%(program_name)s-stderr.log
killasgroup=true killasgroup=true
......
#!/usr/bin/env bash
# {{ ansible_managed }}
{% if COMMON_ENABLE_NEWRELIC_APP %}
{% set executable = {{ video_worker_venv_bin }} + '/newrelic-admin run-program ' + {{ video_worker_venv_bin }} + '/celery' %}
{% else %}
{% set executable = {{ video_worker_venv_bin }} + '/celery' %}
{% endif %}
{% if COMMON_ENABLE_NEWRELIC_APP %}
export NEW_RELIC_APP_NAME='{{ VIDEO_WORKER_NEWRELIC_APPNAME }}'
export NEW_RELIC_LICENSE_KEY='{{ NEWRELIC_LICENSE_KEY }}'
{% endif -%}
source {{ video_worker_home }}/{{ video_worker_service_name }}_env
{{ executable }} --app video_worker.celeryapp:app --concurrency={{ VIDEO_WORKER_CONCURRENCY }} -Q {{ VIDEO_WORKER_QUEUES }} -n worker.%h
# {{ ansible_managed }} # {{ ansible_managed }}
{% for name,value in ecommerce_worker_environment.items() -%} {% for name,value in video_worker_environment.items() -%}
{%- if value -%} {%- if value -%}
export {{ name }}="{{ value }}" export {{ name }}="{{ value }}"
{% endif %} {% endif %}
......
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