Bladeren bron

[fifteen5] Use immortal rather than supervisor

Colin Powell 3 jaren geleden
bovenliggende
commit
4c1993007f

+ 1 - 1
ansible/playbook.yml

@@ -40,7 +40,7 @@
 - hosts: fifteenfive
   roles:
     - role: direnv
-    - role: supervisor
+    - role: immortal
     - role: syncthing
     - role: nginx
     - role: fifteen5

+ 17 - 34
ansible/roles/fifteen5/tasks/main.yml

@@ -5,9 +5,6 @@
     name: git,py38-pip,fish,direnv,jpeg-turbo,tiff,webp,lcms2,freetype2,syncthing,yarn-node14,cairo,pango,gmake,libxml2,libxslt,postgresql12-client,py38-xmlsec,py38-cairocffi,py38-sqlite3,bash,py38-libcst
     state: latest
 
-- name: Root shell is fish
-  ansible.builtin.user: name=root shell=/usr/local/bin/fish
-
 - name: Tmux config installed
   copy:
     src: tmux.conf
@@ -98,9 +95,9 @@
       - django-pdb
       - pgcli
       - ipython
-      - git+git://github.com/sureapp/sqlformatter
       - python-json-logger
-      - git+git://github.com/zensourcer/clearbit-python.git#egg=clearbit
+      - git+https://github.com/sureapp/sqlformatter#egg=sqlformatter
+      - git+https://github.com/zensourcer/clearbit-python.git#egg=clearbit
     executable: pip
   tags:
     - deploy
@@ -110,30 +107,6 @@
   tags:
     - deploy
 
-- name: 15Five BE supervisor file installed
-  copy:
-    src: fifteen5-supervisor.conf
-    dest: /usr/local/etc/supervisor/conf.d/uvicorn.conf
-    owner: root
-    mode: 0644
-  notify: Supervisor restarted
-
-- name: 15Five FE supervisor file installed
-  copy:
-    src: fifteen5-yarn-supervisor.conf
-    dest: /usr/local/etc/supervisor/conf.d/yarn.conf
-    owner: root
-    mode: 0644
-  notify: Supervisor restarted
-
-- name: 15Five celery supervisor file installed
-  copy:
-    src: celery-supervisor.conf
-    dest: /usr/local/etc/supervisor/conf.d/celery.conf
-    owner: root
-    mode: 0644
-  notify: Supervisor restarted
-
 - name: 15Five frontend files generated and copied
   command: bash -lc "direnv exec /usr/local/src/fifteen5 /usr/local/bin/yarn"
   args:
@@ -148,8 +121,18 @@
   tags:
     - deploy
 
-- name: 15Five reset database
-  command: bash -lc "RESET_DB=True direnv exec /usr/local/src/fifteen5 /usr/local/bin/python3.8 /usr/local/src/fifteen5/manage.py run_local_scripts && direnv exec /usr/local/src/fifteen5 /usr/local/bin/python3.8 /usr/local/src/fifteen5/manage.py clearsessions"
-  tags:
-    - db-refresh
-    - never
+- name: Fifteen5 uvicorn immortal file installed
+  template:
+    src: uvicorn-immortal.yml.j2
+    dest: /usr/local/etc/immortal/fifteen5-uvicorn.yml
+    owner: root
+    mode: 0644
+  notify: Immortal restarted
+
+- name: Fifteen5 celery immortal file installed
+  template:
+    src: celery-immortal.yml.j2
+    dest: /usr/local/etc/immortal/fifteen5-celery.yml
+    owner: root
+    mode: 0644
+  notify: Immortal restarted

+ 62 - 0
ansible/roles/fifteen5/templates/celery-immortal.yml.j2

@@ -0,0 +1,62 @@
+cmd: celery -A ff worker -B -l DEBUG -c 2 -S django -Q test1,celery
+cwd: /usr/local/src/fifteen5
+env:
+    PYTHONPATH=`pwd`
+    DJANGO_SETTINGS_MODULE=ff.settings.dev.colin
+    FF_LOCAL_DOMAIN=five.unbl.ink
+    CELERY_TASK_ALWAYS_EAGER=False
+    FF_LOG_FILE_PATH=/var/log/
+    FF_LOG_LEVEL=DEBUG
+    FF_LOG_SQL=False
+    FF_JSON_LOGGING=True
+    FF_AWS_S3=True
+    FF_AWS_ACCESS_KEY_ID=FIFTEENFIVE
+    FF_AWS_SECRET_ACCESS_KEY={{fifteenfive_s3_secret_key}}
+    FF_AWS_STORAGE_BUCKET_NAME_PUBLIC='fifteenfive'
+    FF_AWS_STORAGE_BUCKET_NAME_PRIVATE='fifteenfive'
+    FF_AWS_ENDPOINT_URL='https://s3.unbl.ink'
+    FF_DB_NAME=fifteenfive
+    FF_DB_USER=fifteenfive
+    FF_DB_PASSWORD={{fifteenfive_db_pass}}
+    FF_DB_HOST=db.service
+    FF_DB_PORT=5432
+    FF_EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
+    FF_EMAIL_HOST='mailhog.unbl.ink'
+    FF_EMAIL_PORT=1025
+    FF_SECRET_KEY={{fifteenfive_secret_key}}
+    FF_DEBUG_TOOLBAR=True
+    FF_REDIS_LOCATION=redis://:{{redis_password}}@cache.unbl.ink/
+    FF_SFTP_FORWARDER_SECRET=notasecret
+    FF_SFTP_ALLOW_DUPLICATE_FILES=True
+    FF_OKTA_LOCAL_DEV_API_KEY={{fifteenfive_okta_key}}
+    FF_OKTA_LOCAL_DEV_CERT={{fifteenfive_okta_cert}}
+    FF_OKTA_LOCAL_DEV_ID='exkvakjehhLMVGzDY4x6'
+    FF_OKTA_LOCAL_DEV_APP_NAME='unblinkdev331277_unblinksaml_1'
+    FF_OKTA_LOCAL_DEV_SUBDOMAIN='dev-331277'
+    FF_AZURE_LOCAL_DEV_ID='92956dba-b937-4f12-aaa9-18263b3de204'
+    FF_AZURE_LOCAL_DEV_CERT={{fifteenfive_azure_cert}}
+    FF_BAMBOO_HR_API_KEY={{fifteenfive_bamboohr_api_key}}
+    FF_BAMBOO_HR_OPENID_APP_KEY={{fifteenfive_bamboohr_app_key}}
+    FF_BAMBOO_HR_OPENID_CLIENT_ID='15five-bamboohr-7.17.2017'
+    FF_BAMBOO_HR_OPENID_CLIENT_SECRET={{fifteenfive_bamboohr_client_secret}}
+    FF_NAMELY_OAUTH_CLIENT_ID='mymsv4hhYE6HPeGvYRQHTsUAH2z7vwZOccELbwVUukde4JHepVQKZdfoVTIEaGFK'
+    FF_NAMELY_OAUTH_CLIENT_SECRET={{fifteenfive_namely_oauth_client_secret}}
+    FF_ZUORA_CLIENT_ID=df3f5367-974e-43d2-9fe9-49d75fa9637c
+    FF_ZUORA_CLIENT_SECRET={{fifteenfive_zuora_client_secret}}
+    FF_ZUORA_PAYMENT_PAGE_ID={{fifteenfive_zuora_payment_page_id}}
+    FF_ZUORA_PORTAL_SSO_SECRET_KEY={{fifteenfive_zuora_sso_secret_key}}
+    FF_NEXT_COMPANY_ID=130000
+    FF_ELASTICSEARCH_HOST=elastic.local
+    FF_SALESFORCE_CONSUMER_KEY=3MVG9_4NR96cWRpF2_OpG5HvuFI9Pgff1t5RE96IHWO_tHbcuQ.BNNgm08bws4BdNYMmRwGqXADLtds1CK5r6
+    FF_SALESFORCE_CONSUMER_SECRET={{fifteenfive_salesforce_consumer_secret}}
+    FF_SALESFORCE_HOST=https://15five--15fivesb.my.salesforce.com
+    FF_SLACK_OAUTH_CLIENT_ID=2743272933910.2752561950708
+    FF_SLACK_OAUTH_CLIENT_SECRET={{fifteenfive_slack_oauth_client_secret}}
+    FF_ADP_OAUTH_CLIENT_ID={{fifteenfive_adp_oauth_client_id}}
+    FF_ADP_OAUTH_CLIENT_SECRET={{fifteenfive_adp_oauth_client_secret}}
+log:
+    file: /var/log/immortal-fifteen5.log
+    age: 86400 # log 1 day
+    num: 7 # keep 7 files
+    size: 1 # size of file 1MB
+wait: 1

+ 62 - 0
ansible/roles/fifteen5/templates/uvicorn-immortal.yml.j2

@@ -0,0 +1,62 @@
+cmd: uvicorn --host 0.0.0.0 --port 8088 --debug ff.asgi:application --reload
+cwd: /usr/local/src/fifteen5
+env:
+    PYTHONPATH=`pwd`
+    DJANGO_SETTINGS_MODULE=ff.settings.dev.colin
+    FF_LOCAL_DOMAIN=five.unbl.ink
+    CELERY_TASK_ALWAYS_EAGER=False
+    FF_LOG_FILE_PATH=/var/log/
+    FF_LOG_LEVEL=DEBUG
+    FF_LOG_SQL=False
+    FF_JSON_LOGGING=True
+    FF_AWS_S3=True
+    FF_AWS_ACCESS_KEY_ID=FIFTEENFIVE
+    FF_AWS_SECRET_ACCESS_KEY={{fifteenfive_s3_secret_key}}
+    FF_AWS_STORAGE_BUCKET_NAME_PUBLIC='fifteenfive'
+    FF_AWS_STORAGE_BUCKET_NAME_PRIVATE='fifteenfive'
+    FF_AWS_ENDPOINT_URL='https://s3.unbl.ink'
+    FF_DB_NAME=fifteenfive
+    FF_DB_USER=fifteenfive
+    FF_DB_PASSWORD={{fifteenfive_db_pass}}
+    FF_DB_HOST=db.service
+    FF_DB_PORT=5432
+    FF_EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
+    FF_EMAIL_HOST='mailhog.unbl.ink'
+    FF_EMAIL_PORT=1025
+    FF_SECRET_KEY={{fifteenfive_secret_key}}
+    FF_DEBUG_TOOLBAR=True
+    FF_REDIS_LOCATION=redis://:{{redis_password}}@cache.unbl.ink/
+    FF_SFTP_FORWARDER_SECRET=notasecret
+    FF_SFTP_ALLOW_DUPLICATE_FILES=True
+    FF_OKTA_LOCAL_DEV_API_KEY={{fifteenfive_okta_key}}
+    FF_OKTA_LOCAL_DEV_CERT={{fifteenfive_okta_cert}}
+    FF_OKTA_LOCAL_DEV_ID='exkvakjehhLMVGzDY4x6'
+    FF_OKTA_LOCAL_DEV_APP_NAME='unblinkdev331277_unblinksaml_1'
+    FF_OKTA_LOCAL_DEV_SUBDOMAIN='dev-331277'
+    FF_AZURE_LOCAL_DEV_ID='92956dba-b937-4f12-aaa9-18263b3de204'
+    FF_AZURE_LOCAL_DEV_CERT={{fifteenfive_azure_cert}}
+    FF_BAMBOO_HR_API_KEY={{fifteenfive_bamboohr_api_key}}
+    FF_BAMBOO_HR_OPENID_APP_KEY={{fifteenfive_bamboohr_app_key}}
+    FF_BAMBOO_HR_OPENID_CLIENT_ID='15five-bamboohr-7.17.2017'
+    FF_BAMBOO_HR_OPENID_CLIENT_SECRET={{fifteenfive_bamboohr_client_secret}}
+    FF_NAMELY_OAUTH_CLIENT_ID='mymsv4hhYE6HPeGvYRQHTsUAH2z7vwZOccELbwVUukde4JHepVQKZdfoVTIEaGFK'
+    FF_NAMELY_OAUTH_CLIENT_SECRET={{fifteenfive_namely_oauth_client_secret}}
+    FF_ZUORA_CLIENT_ID=df3f5367-974e-43d2-9fe9-49d75fa9637c
+    FF_ZUORA_CLIENT_SECRET={{fifteenfive_zuora_client_secret}}
+    FF_ZUORA_PAYMENT_PAGE_ID={{fifteenfive_zuora_payment_page_id}}
+    FF_ZUORA_PORTAL_SSO_SECRET_KEY={{fifteenfive_zuora_sso_secret_key}}
+    FF_NEXT_COMPANY_ID=130000
+    FF_ELASTICSEARCH_HOST=elastic.local
+    FF_SALESFORCE_CONSUMER_KEY=3MVG9_4NR96cWRpF2_OpG5HvuFI9Pgff1t5RE96IHWO_tHbcuQ.BNNgm08bws4BdNYMmRwGqXADLtds1CK5r6
+    FF_SALESFORCE_CONSUMER_SECRET={{fifteenfive_salesforce_consumer_secret}}
+    FF_SALESFORCE_HOST=https://15five--15fivesb.my.salesforce.com
+    FF_SLACK_OAUTH_CLIENT_ID=2743272933910.2752561950708
+    FF_SLACK_OAUTH_CLIENT_SECRET={{fifteenfive_slack_oauth_client_secret}}
+    FF_ADP_OAUTH_CLIENT_ID={{fifteenfive_adp_oauth_client_id}}
+    FF_ADP_OAUTH_CLIENT_SECRET={{fifteenfive_adp_oauth_client_secret}}
+log:
+    file: /var/log/immortal-fifteen5.log
+    age: 86400 # log 1 day
+    num: 7 # keep 7 files
+    size: 1 # size of file 1MB
+wait: 1