Commit b80dd41b by muhammad-ammar

tasks for pipeline celery workers

parent 06ba3fc7
...@@ -21,11 +21,15 @@ video_pipeline_gunicorn_port: 8555 ...@@ -21,11 +21,15 @@ video_pipeline_gunicorn_port: 8555
video_pipeline_user: "{{ video_pipeline_service_name }}" video_pipeline_user: "{{ video_pipeline_service_name }}"
video_pipeline_home: "{{ COMMON_APP_DIR }}/{{ video_pipeline_service_name }}" video_pipeline_home: "{{ COMMON_APP_DIR }}/{{ video_pipeline_service_name }}"
# This should be removed once instance_config.yml is moved out side of source code. # TODO! Find some better way to do the below
video_pipeline_code_dir: '{{ COMMON_APP_DIR }}/{{ video_pipeline_service_name }}/{{ video_pipeline_service_name }}' video_pipeline_service_home: "{{ COMMON_APP_DIR }}/{{ video_pipeline_service_name }}"
video_pipeline_code_dir: "{{ video_pipeline_service_home }}/{{ video_pipeline_service_name }}"
video_pipeline_environment: {} video_pipeline_environment: {}
video_pipeline_ingest_worker: "{{ video_pipeline_service_name }}_ingest"
video_pipeline_deliver_worker: "{{ video_pipeline_service_name }}_deliver"
# #
# OS packages # OS packages
# #
...@@ -37,39 +41,39 @@ video_pipeline_debian_pkgs: ...@@ -37,39 +41,39 @@ video_pipeline_debian_pkgs:
VIDEO_PIPELINE_NGINX_PORT: "1{{ video_pipeline_gunicorn_port }}" VIDEO_PIPELINE_NGINX_PORT: "1{{ video_pipeline_gunicorn_port }}"
VIDEO_PIPELINE_SSL_NGINX_PORT: "4{{ video_pipeline_gunicorn_port }}" VIDEO_PIPELINE_SSL_NGINX_PORT: "4{{ video_pipeline_gunicorn_port }}"
VIDEO_PIPELINE_DEFAULT_DB_NAME: 'pipeline' VIDEO_PIPELINE_DEFAULT_DB_NAME: "pipeline"
VIDEO_PIPELINE_MYSQL: 'localhost' VIDEO_PIPELINE_MYSQL: "localhost"
# MySQL usernames are limited to 16 characters # MySQL usernames are limited to 16 characters
VIDEO_PIPELINE_MYSQL_USER: 'pipeline001' VIDEO_PIPELINE_MYSQL_USER: "pipeline001"
VIDEO_PIPELINE_MYSQL_PASSWORD: 'password' VIDEO_PIPELINE_MYSQL_PASSWORD: "password"
VIDEO_PIPELINE_MEMCACHE: [] VIDEO_PIPELINE_MEMCACHE: []
VIDEO_PIPELINE_VERSION: "master" VIDEO_PIPELINE_VERSION: "master"
VIDEO_PIPELINE_DJANGO_SETTINGS_MODULE: "VEDA.settings" VIDEO_PIPELINE_DJANGO_SETTINGS_MODULE: "VEDA.settings"
VIDEO_PIPELINE_URL_ROOT: 'http://pipeline:{{ VIDEO_PIPELINE_NGINX_PORT }}' VIDEO_PIPELINE_URL_ROOT: "http://pipeline:{{ VIDEO_PIPELINE_NGINX_PORT }}"
VIDEO_PIPELINE_LOGOUT_URL: '{{ VIDEO_PIPELINE_URL_ROOT }}/logout/' VIDEO_PIPELINE_LOGOUT_URL: "{{ VIDEO_PIPELINE_URL_ROOT }}/logout/"
VIDEO_PIPELINE_SECRET_KEY: 'Your secret key here' VIDEO_PIPELINE_SECRET_KEY: "Your secret key here"
VIDEO_PIPELINE_LANGUAGE_CODE: 'en-us' VIDEO_PIPELINE_LANGUAGE_CODE: "en-us"
# Used to automatically configure OAuth2 Client # Used to automatically configure OAuth2 Client
VIDEO_PIPELINE_SOCIAL_AUTH_EDX_OIDC_KEY : 'pipeline-key' VIDEO_PIPELINE_SOCIAL_AUTH_EDX_OIDC_KEY : "pipeline-key"
VIDEO_PIPELINE_SOCIAL_AUTH_EDX_OIDC_SECRET : 'pipeline-secret' VIDEO_PIPELINE_SOCIAL_AUTH_EDX_OIDC_SECRET : "pipeline-secret"
VIDEO_PIPELINE_SOCIAL_AUTH_REDIRECT_IS_HTTPS: false VIDEO_PIPELINE_SOCIAL_AUTH_REDIRECT_IS_HTTPS: false
VIDEO_PIPELINE_DATA_DIR: '{{ COMMON_DATA_DIR }}/{{ video_pipeline_service_name }}' VIDEO_PIPELINE_DATA_DIR: "{{ COMMON_DATA_DIR }}/{{ video_pipeline_service_name }}"
VIDEO_PIPELINE_MEDIA_ROOT: '{{ VIDEO_PIPELINE_DATA_DIR }}/media' VIDEO_PIPELINE_MEDIA_ROOT: "{{ VIDEO_PIPELINE_DATA_DIR }}/media"
VIDEO_PIPELINE_MEDIA_URL: '/media/' VIDEO_PIPELINE_MEDIA_URL: "/media/"
VIDEO_PIPELINE_MEDIA_STORAGE_BACKEND: VIDEO_PIPELINE_MEDIA_STORAGE_BACKEND:
DEFAULT_FILE_STORAGE: 'django.core.files.storage.FileSystemStorage' DEFAULT_FILE_STORAGE: "django.core.files.storage.FileSystemStorage"
MEDIA_ROOT: '{{ VIDEO_PIPELINE_MEDIA_ROOT }}' MEDIA_ROOT: "{{ VIDEO_PIPELINE_MEDIA_ROOT }}"
MEDIA_URL: '{{ VIDEO_PIPELINE_MEDIA_URL }}' MEDIA_URL: "{{ VIDEO_PIPELINE_MEDIA_URL }}"
VIDEO_PIPELINE_STATICFILES_STORAGE: 'django.contrib.staticfiles.storage.StaticFilesStorage' VIDEO_PIPELINE_STATICFILES_STORAGE: "django.contrib.staticfiles.storage.StaticFilesStorage"
VIDEO_PIPELINE_GUNICORN_EXTRA: '' VIDEO_PIPELINE_GUNICORN_EXTRA: ""
VIDEO_PIPELINE_EXTRA_APPS: [] VIDEO_PIPELINE_EXTRA_APPS: []
...@@ -77,43 +81,53 @@ VIDEO_PIPELINE_EXTRA_APPS: [] ...@@ -77,43 +81,53 @@ VIDEO_PIPELINE_EXTRA_APPS: []
VIDEO_PIPELINE_AUTOMATED_USERS: {} VIDEO_PIPELINE_AUTOMATED_USERS: {}
# instance_config.yaml variable overrides # instance_config.yaml variable overrides
# TODO! add sane default values for below variables
VIDEO_PIPELINE_EDX_S3_INGEST_PREFIX: 'video_pipeline_edx_s3_ingest_prefix' VIDEO_PIPELINE_EDX_S3_INGEST_PREFIX: "SET-ME-PLEASE"
VIDEO_PIPELINE_EDX_S3_INGEST_BUCKET: 'video_pipeline_edx_s3_ingest_bucket' VIDEO_PIPELINE_EDX_S3_INGEST_BUCKET: "video_pipeline_edx_s3_ingest_bucket"
VIDEO_PIPELINE_EDX_S3_ENDPOINT_BUCKET: 'video_pipeline_edx_s3_endpoint_bucket' VIDEO_PIPELINE_EDX_S3_ENDPOINT_BUCKET: "video_pipeline_edx_s3_endpoint_bucket"
VIDEO_PIPELINE_EDX_CLOUDFRONT_PREFIX: 'video_pipeline_edx_cloudfront_prefix'
VIDEO_PIPELINE_AWS_VIDEO_IMAGES_BUCKET: 'video_pipeline_aws_video_images_bucket' VIDEO_PIPELINE_EDX_CLOUDFRONT_PREFIX: "video_pipeline_edx_cloudfront_prefix"
VIDEO_PIPELINE_VEDA_S3_UPLOAD_BUCKET: 'video_pipeline_veda_s3_upload_bucket' VIDEO_PIPELINE_VEDA_S3_UPLOAD_BUCKET: "video_pipeline_veda_s3_upload_bucket"
VIDEO_PIPELINE_VEDA_S3_HOTSTORE_BUCKET: 'video_pipeline_veda_s3_hotstore_bucket' VIDEO_PIPELINE_VEDA_S3_HOTSTORE_BUCKET: "video_pipeline_veda_s3_hotstore_bucket"
VIDEO_PIPELINE_VEDA_DELIVERABLE_BUCKET: 'video_pipeline_veda_deliverable_bucket' VIDEO_PIPELINE_VEDA_DELIVERABLE_BUCKET: "video_pipeline_veda_deliverable_bucket"
VIDEO_PIPELINE_VEDA_BASE_URL: 'video_pipeline_veda_base_url' VIDEO_PIPELINE_VEDA_BASE_URL: "veda.edx.org"
VIDEO_PIPELINE_AWS_VIDEO_TRANSCRIPTS_BUCKET: 'video_pipeline_aws_video_transcripts_bucket' VIDEO_PIPELINE_VEDA_SECRET_ACCESS_KEY: "video_pipeline_veda_secret_access_key"
VIDEO_PIPELINE_CIELO24_API_ENVIRONMENT: 'video_pipeline_cielo24_api_environment' VIDEO_PIPELINE_VEDA_ACCESS_KEY_ID: "video_pipeline_veda_access_key_id"
VIDEO_PIPELINE_TRANSCRIPT_PROVIDER_REQUEST_TOKEN: 'video_pipeline_transcript_provider_request_token' VIDEO_PIPELINE_VEDA_NOREPLY_EMAIL: "video_pipeline_veda_noreply_email"
VIDEO_PIPELINE_VEDA_SECRET_ACCESS_KEY: 'video_pipeline_veda_secret_access_key'
VIDEO_PIPELINE_VEDA_ACCESS_KEY_ID: 'video_pipeline_veda_access_key_id' VIDEO_PIPELINE_AWS_VIDEO_IMAGES_BUCKET: "video_pipeline_aws_video_images_bucket"
VIDEO_PIPELINE_VEDA_NOREPLY_EMAIL: 'video_pipeline_veda_noreply_email' VIDEO_PIPELINE_AWS_VIDEO_TRANSCRIPTS_BUCKET: "video_pipeline_aws_video_transcripts_bucket"
VIDEO_PIPELINE_ADMIN_EMAIL: 'video_pipeline_admin_email'
VIDEO_PIPELINE_VEDA_API_URL: 'video_pipeline_veda_api_url' VIDEO_PIPELINE_ADMIN_EMAIL: "video_pipeline_admin_email"
VIDEO_PIPELINE_VEDA_AUTH_URL: 'video_pipeline_veda_auth_url'
VIDEO_PIPELINE_VEDA_CLIENT_ID: 'video_pipeline_veda_client_id' VIDEO_PIPELINE_CIELO24_API_ENVIRONMENT: "video_pipeline_cielo24_api_environment"
VIDEO_PIPELINE_VEDA_SECRET_KEY: 'video_pipeline_veda_secret_key' VIDEO_PIPELINE_TRANSCRIPT_PROVIDER_REQUEST_TOKEN: "video_pipeline_transcript_provider_request_token"
VIDEO_PIPELINE_VEDA_TOKEN_URL: 'video_pipeline_veda_token_url'
VIDEO_PIPELINE_VAL_API_URL: 'video_pipeline_val_api_url' VIDEO_PIPELINE_VEDA_API_URL: "video_pipeline_veda_api_url"
VIDEO_PIPELINE_VAL_TOKEN_URL: 'video_pipeline_val_token_url' VIDEO_PIPELINE_VEDA_AUTH_URL: "video_pipeline_veda_auth_url"
VIDEO_PIPELINE_VAL_VIDEO_IMAGES_URL: 'video_pipeline_val_video_images_url' VIDEO_PIPELINE_VEDA_CLIENT_ID: "video_pipeline_veda_client_id"
VIDEO_PIPELINE_VAL_CLIENT_ID: 'video_pipeline_val_client_id' VIDEO_PIPELINE_VEDA_SECRET_KEY: "video_pipeline_veda_secret_key"
VIDEO_PIPELINE_VAL_SECRET_KEY: 'video_pipeline_val_secret_key' VIDEO_PIPELINE_VEDA_TOKEN_URL: "video_pipeline_veda_token_url"
VIDEO_PIPELINE_VAL_PASSWORD: 'video_pipeline_val_password'
VIDEO_PIPELINE_VAL_USERNAME: 'video_pipeline_val_username' VIDEO_PIPELINE_VAL_API_URL: "video_pipeline_val_api_url"
VIDEO_PIPELINE_VAL_TRANSCRIPT_CREATE_URL: 'video_pipeline_val_transcript_create_url' VIDEO_PIPELINE_VAL_TOKEN_URL: "video_pipeline_val_token_url"
VIDEO_PIPELINE_VAL_VIDEO_TRANSCRIPT_STATUS_URL: 'video_pipeline_val_video_transcript_status_url' VIDEO_PIPELINE_VAL_VIDEO_IMAGES_URL: "video_pipeline_val_video_images_url"
VIDEO_PIPELINE_RABBITMQ_BROKER: 'video_pipeline_rabbitmq_broker' VIDEO_PIPELINE_VAL_CLIENT_ID: "video_pipeline_val_client_id"
VIDEO_PIPELINE_RABBITMQ_PASS: 'video_pipeline_rabbitmq_pass' VIDEO_PIPELINE_VAL_SECRET_KEY: "video_pipeline_val_secret_key"
VIDEO_PIPELINE_RABBITMQ_USER: 'video_pipeline_rabbitmq_user' VIDEO_PIPELINE_VAL_PASSWORD: "video_pipeline_val_password"
VIDEO_PIPELINE_SG_SERVER_PATH: 'video_pipeline_sg_server_path' VIDEO_PIPELINE_VAL_USERNAME: "video_pipeline_val_username"
VIDEO_PIPELINE_SG_SCRIPT_NAME: 'video_pipeline_sg_script_name' VIDEO_PIPELINE_VAL_TRANSCRIPT_CREATE_URL: "video_pipeline_val_transcript_create_url"
VIDEO_PIPELINE_SG_SCRIPT_KEY: 'video_pipeline_sg_script_key' VIDEO_PIPELINE_VAL_VIDEO_TRANSCRIPT_STATUS_URL: "video_pipeline_val_video_transcript_status_url"
VIDEO_PIPELINE_THREEPLAY_FTPHOST: 'video_pipeline_threeplay_ftphost'
VIDEO_PIPELINE_XUETANG_API_URL: 'video_pipeline_xuetang_api_url' VIDEO_PIPELINE_RABBITMQ_BROKER: "localhost"
VIDEO_PIPELINE_XUETANG_API_SHARED_SECRET: 'video_pipeline_xuetang_api_shared_secret' VIDEO_PIPELINE_RABBITMQ_PASS: "veda"
VIDEO_PIPELINE_RABBITMQ_USER: "veda"
VIDEO_PIPELINE_SG_SERVER_PATH: "video_pipeline_sg_server_path"
VIDEO_PIPELINE_SG_SCRIPT_NAME: "video_pipeline_sg_script_name"
VIDEO_PIPELINE_SG_SCRIPT_KEY: "video_pipeline_sg_script_key"
VIDEO_PIPELINE_THREEPLAY_FTPHOST: "video_pipeline_threeplay_ftphost"
VIDEO_PIPELINE_XUETANG_API_URL: "video_pipeline_xuetang_api_url"
VIDEO_PIPELINE_XUETANG_API_SHARED_SECRET: "video_pipeline_xuetang_api_shared_secret"
...@@ -25,3 +25,42 @@ ...@@ -25,3 +25,42 @@
template: template:
src: "templates/instance_config.yaml.j2" src: "templates/instance_config.yaml.j2"
dest: "{{ video_pipeline_code_dir }}/instance_config.yaml" dest: "{{ video_pipeline_code_dir }}/instance_config.yaml"
- name: write out the supervisor wrapper for celery workers
template:
src: "templates/celery_worker.sh.j2"
dest: "{{ video_pipeline_service_home }}/{{ item.worker_script_wrapper_name }}.sh"
mode: 0650
owner: "{{ supervisor_user }}"
group: "{{ common_web_user }}"
vars:
worker_script: "{{ item.worker_script_src_path }}"
with_items:
- { worker_script_src_path: 'bin/ingest', worker_script_wrapper_name: "{{ video_pipeline_ingest_worker }}" }
- { worker_script_src_path: 'bin/deliver', worker_script_wrapper_name: "{{ video_pipeline_deliver_worker }}" }
- name: write supervisord config for celery workers
template:
src: "templates/supervisor.conf.j2"
dest: "{{ supervisor_available_dir }}/{{ item }}.conf"
owner: "{{ supervisor_user }}"
group: "{{ common_web_user }}"
mode: 0644
vars:
worker_script: "{{ item }}"
with_items:
- "{{ video_pipeline_ingest_worker }}"
- "{{ video_pipeline_deliver_worker }}"
- name: enable supervisor script
file:
src: "{{ supervisor_available_dir }}/{{ item }}.conf"
dest: "{{ supervisor_cfg_dir }}/{{ item }}.conf"
state: link
force: yes
with_items:
- "{{ video_pipeline_ingest_worker }}"
- "{{ video_pipeline_deliver_worker }}"
- name: update supervisor configuration
command: "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
#!/usr/bin/env bash
# {{ ansible_managed }}
source {{ video_pipeline_service_home }}/{{ video_pipeline_service_name }}_env
python {{ video_pipeline_service_home }}/{{ video_pipeline_service_name }}/{{ worker_script }}
#
# {{ ansible_managed }}
#
[program:{{ worker_script }}]
command={{ video_pipeline_service_home }}/{{ worker_script }}.sh
user={{ common_web_user }}
directory={{ video_pipeline_code_dir }}
stdout_logfile={{ supervisor_log_dir }}/%(program_name)s-stdout.log
stderr_logfile={{ supervisor_log_dir }}/%(program_name)s-stderr.log
killasgroup=true
stopasgroup=true
...@@ -2,26 +2,33 @@ ...@@ -2,26 +2,33 @@
# under /playbooks (e.g., "foo.yml"), export its name (e.g., "foo") as the value # under /playbooks (e.g., "foo.yml"), export its name (e.g., "foo") as the value
# of the environment variable VAGRANT_ANSIBLE_PLAYBOOK, and execute `vagrant up` # of the environment variable VAGRANT_ANSIBLE_PLAYBOOK, and execute `vagrant up`
# from within this directory. # from within this directory.
MEMORY = 2048 MEMORY = 1024
CPU_COUNT = 2 CPU_COUNT = 2
Vagrant.configure("2") do |config| Vagrant.configure("2") do |config|
config.vm.box = "xenial64" config.vm.box = "ubuntu_xenial"
config.vm.box_url = "http://files.vagrantup.com/xenial64.box"
config.vm.network :private_network, ip: "192.168.33.20" config.vm.network :private_network, ip: "192.168.33.20"
config.vm.network :forwarded_port, guest: 8080, host: 8080 config.vm.network :forwarded_port, guest: 8555, host: 8555
config.ssh.insert_key = true
config.vm.provider :virtualbox do |vb| config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", MEMORY.to_s] vb.customize ["modifyvm", :id, "--memory", MEMORY.to_s]
# You can adjust this to the amount of CPUs your system has available # You can adjust this to the amount of CPUs your system has available
vb.customize ["modifyvm", :id, "--cpus", CPU_COUNT.to_s] vb.customize ["modifyvm", :id, "--cpus", CPU_COUNT.to_s]
vb.customize ['modifyvm', :id, '--nictype1', 'virtio']
end end
config.ssh.forward_x11 = true
config.vm.provision :ansible do |ansible| config.vm.provision :ansible do |ansible|
ansible.playbook = "../../../playbooks/" + ENV['VAGRANT_ANSIBLE_PLAYBOOK'] + ".yml" ansible.playbook = "../../../playbooks/" + ENV['VAGRANT_ANSIBLE_PLAYBOOK'] + ".yml"
ansible.verbose = "extra" ansible.verbose = "vvvv"
ansible.extra_vars = {
edx_django_service_version: 'ammar/changes-for-config'
}
end end
end end
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