Advertisement
excuseem

Untitled

Jun 17th, 2025
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 14.71 KB | None | 0 0
  1. ---
  2.  
  3. - name: Deploy elasticsearch and Kibana
  4.   docker_stack:
  5.     state: present
  6.     name: cinevoy
  7.     prune: yes
  8.     resolve_image: always
  9.     with_registry_auth: yes
  10.     compose:
  11.       - version: "3.8"
  12.         services:
  13.           elasticsearch:
  14.             image: "docker.elastic.co/elasticsearch/elasticsearch:{{ ELASTICSEARCH_APP.STACK_VERSION }}"
  15.             deploy:
  16.               mode: global
  17.               update_config:
  18.                 parallelism: 1
  19.                 order: stop-first
  20.                 failure_action: rollback
  21.                 delay: 10s
  22.               placement:
  23.                 constraints:
  24.                  - node.labels.elasticsearch == node
  25.             volumes:
  26.              - "es-data:/usr/share/elasticsearch/data"
  27.             networks:
  28.              - network_1
  29.             ports:
  30.              - "{{ ELASTICSEARCH_APP.ES_PORT }}:9200"
  31.             environment:
  32.              - "discovery.type=single-node"
  33.  
  34.               #              - node.name={{ inventory_hostname }}
  35.               #              - cluster.name={{ ELASTICSEARCH_APP.CLUSTER_NAME }}
  36.               #              - cluster.initial_master_nodes=cinevoy_elasticsearch
  37.               #              - discovery.seed_hosts=cinevoy_elasticsearch
  38.               - ELASTIC_PASSWORD={{ ELASTICSEARCH_APP.ELASTIC_PASSWORD }}
  39.               - bootstrap.memory_lock=true
  40.               - xpack.security.enabled=false
  41.               - xpack.security.http.ssl.enabled=false
  42.               - xpack.security.transport.ssl.enabled=false
  43.               - xpack.license.self_generated.type={{ ELASTICSEARCH_APP.LICENSE }}
  44.               - http.cors.enabled=true
  45.               - http.cors.allow-origin=http://localhost:8080
  46.             ulimits:
  47.               memlock:
  48.                 soft: -1
  49.                 hard: -1
  50.             healthcheck:
  51.               test:
  52.                [
  53.                   "CMD-SHELL",
  54.                   "curl http://localhost:9200 | grep -q 'You Know, for Search'",
  55.                 ]
  56.               interval: 10s
  57.               timeout: 10s
  58.               retries: 120
  59.  
  60.           kibana:
  61.             depends_on:
  62.              - elasticsearch
  63.             image: "docker.elastic.co/kibana/kibana:{{ ELASTICSEARCH_APP.STACK_VERSION }}"
  64.             deploy:
  65.               mode: global
  66.               update_config:
  67.                 order: start-first
  68.                 failure_action: rollback
  69.                 delay: 10s
  70.               placement:
  71.                 constraints:
  72.                  - node.labels.kibana == node
  73.             volumes:
  74.              - kibana-data:/usr/share/kibana/data
  75.             networks:
  76.              - network_1
  77.             ports:
  78.              - "{{ ELASTICSEARCH_APP.KIBANA_PORT }}:5601"
  79.             environment:
  80.              - "SERVERNAME=kibana"
  81.               - "ELASTICSEARCH_HOSTS=http://cinevoy_elasticsearch:9200"
  82.               - "ELASTICSEARCH_USERNAME=kibana_system"
  83.               - "ELASTICSEARCH_PASSWORD={{ ELASTICSEARCH_APP.KIBANA_PASSWORD }}"
  84.             healthcheck:
  85.               test:
  86.                [
  87.                   "CMD-SHELL",
  88.                   "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
  89.                 ]
  90.               interval: 10s
  91.               timeout: 10s
  92.               retries: 120
  93.  
  94.           elasticvue:
  95.             image: "cars10/elasticvue"
  96.             deploy:
  97.               mode: replicated
  98.               replicas: 1
  99.               update_config:
  100.                 parallelism: 1
  101.                 order: start-first
  102.                 failure_action: rollback
  103.                 delay: 10s
  104.             ports:
  105.              - "8080:8080"
  106.             healthcheck:
  107.               test:
  108.                [
  109.                   "CMD-SHELL",
  110.                   "curl -f -s http://localhost:8080 || exit 1",
  111.                 ]
  112.               start_period: 10s
  113.               interval: 10s
  114.               timeout: 10s
  115.               retries: 20
  116.  
  117.           redis:
  118.             image: redis:6.2.13-alpine3.18
  119.             deploy:
  120.               mode: global
  121.               resources:
  122.                 limits:
  123.                   memory: 6G
  124.               update_config:
  125.                 parallelism: 1
  126.                 order: stop-first
  127.                 failure_action: rollback
  128.                 delay: 10s
  129.               placement:
  130.                 constraints:
  131.                  - node.labels.redis == node
  132.             command: redis-server --maxmemory 5gb --maxmemory-policy volatile-lru
  133.             volumes:
  134.              - redis-data:/data
  135.             networks:
  136.              - network_1
  137.             ports:
  138.              - "6379:6379"
  139.             healthcheck:
  140.               test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
  141.               interval: 2s
  142.               timeout: 2s
  143.               retries: 60
  144.  
  145.           fastapi:
  146.             depends_on:
  147.              - elasticsearch
  148.             image: "{{ CINEVOY_IMAGE }}"
  149.             deploy:
  150.               mode: replicated
  151.               replicas: 4
  152.               update_config:
  153.                 parallelism: 2
  154.                 order: start-first
  155.                 failure_action: rollback
  156.                 delay: 10s
  157.               placement:
  158.                 constraints:
  159.                  - node.labels.fastapi == node
  160.             networks:
  161.              - network_1
  162.             ports:
  163.              - "8000:8000"
  164.             environment:
  165.              - "CSB_REDIS_URL=redis://redis:6379/"
  166.               - "CSB_ELASTIC_HOST=http://cinevoy_elasticsearch:9200"
  167.               - "CSB_ELASTIC_USER=elastic"
  168.               - "CSB_ELASTIC_PASSWORD={{ ELASTICSEARCH_APP.ELASTIC_PASSWORD }}"
  169.               - "CSB_OPENROUTER_API_KEY={{ ELASTICSEARCH_APP.OPENROUTER_API_KEY }}"
  170.               - "CSB_AUTH_ENABLE=False"
  171.               - "CSB_AUTH_USERNAME={{ AUTH_USERNAME }}"
  172.               - "CSB_AUTH_PASSWORD={{ AUTH_PASSWORD }}"
  173.               - "CSB_STAMEDIA_TSV_FILE=/app/stamedia.tsv"
  174.               - "CSB_SENTRY_IS_ENABLE=true"
  175.               - "CSB_SENTRY_DSN={{ SENTRY_DSN }}"
  176.               - "CSB_JWT_SECRET_KEY={{ JWT_SECRET_KEY }}"
  177.             healthcheck:
  178.               test:
  179.                [
  180.                   "CMD-SHELL",
  181.                   "curl -u {{ AUTH_USERNAME }}:{{AUTH_PASSWORD }} -f -s http://localhost:8000/health/ || exit 1",
  182.                 ]
  183.               interval: 10s
  184.               timeout: 10s
  185.               retries: 5
  186.  
  187. #          celery_worker:
  188. #            image: "{{ CINEVOY_IMAGE }}"
  189. #            deploy:
  190. #              mode: replicated
  191. #              replicas: 1
  192. #              update_config:
  193. #                parallelism: 1
  194. #                order: stop-first
  195. #                failure_action: rollback
  196. #                delay: 10s
  197. #              placement:
  198. #                constraints:
  199. #                  - node.labels.fastapi == node
  200. #            command: celery -A searchbox.worker.app worker -Q default --loglevel=INFO --concurrency=1
  201. #            depends_on:
  202. #              - redis
  203. #            networks:
  204. #              - network_1
  205. #            environment:
  206. #              - "CSB_REDIS_URL=redis://redis:6379/"
  207. #              - "CSB_ELASTIC_HOST=http://cinevoy_elasticsearch:9200"
  208. #              - "CSB_ELASTIC_USER=elastic"
  209. #              - "CSB_ELASTIC_PASSWORD={{ ELASTICSEARCH_APP.ELASTIC_PASSWORD }}"
  210. #              - "CSB_KP_DEV_API_KEY={{ ELASTICSEARCH_APP.KP_DEV_API_KEY }}"
  211. #              - "CSB_OPENROUTER_API_KEY={{ ELASTICSEARCH_APP.OPENROUTER_API_KEY }}"
  212. #              - "CSB_MYSQL_HOST={{ MYSQL_HOST }}"
  213. #              - "CSB_MYSQL_DB={{ MYSQL_DB }}"
  214. #              - "CSB_MYSQL_USER={{ MYSQL_USER }}"
  215. #              - "CSB_MYSQL_PASSWORD={{ MYSQL_PASSWORD }}"
  216. #              - "CSB_STAMEDIA_TSV_FILE=/app/stamedia.tsv"
  217. #              - "CSB_SENTRY_IS_ENABLE=true"
  218. #              - "CSB_SENTRY_DSN={{ SENTRY_DSN }}"
  219. #            healthcheck:
  220. #              test:
  221. #                [
  222. #                  "CMD-SHELL",
  223. #                  "celery -A searchbox.worker.app inspect ping --destination celery@$$HOSTNAME",
  224. #                ]
  225. #              start_period: 10s
  226. #              interval: 10s
  227. #              timeout: 10s
  228. #              retries: 20
  229. #
  230. #          celery_worker_multithread:
  231. #            image: "{{ CINEVOY_IMAGE }}"
  232. #            deploy:
  233. #              mode: replicated
  234. #              replicas: 4
  235. #              update_config:
  236. #                parallelism: 2
  237. #                order: start-first
  238. #                failure_action: rollback
  239. #                delay: 10s
  240. #              placement:
  241. #                constraints:
  242. #                  - node.labels.fastapi == node
  243. #            command: celery -A searchbox.worker.app worker -Q multithread --loglevel=INFO --concurrency=1
  244. #            depends_on:
  245. #              - redis
  246. #            networks:
  247. #              - network_1
  248. #            environment:
  249. #              - "CSB_REDIS_URL=redis://redis:6379/"
  250. #              - "CSB_ELASTIC_HOST=http://cinevoy_elasticsearch:9200"
  251. #              - "CSB_ELASTIC_USER=elastic"
  252. #              - "CSB_ELASTIC_PASSWORD={{ ELASTICSEARCH_APP.ELASTIC_PASSWORD }}"
  253. #              - "CSB_KP_DEV_API_KEY={{ ELASTICSEARCH_APP.KP_DEV_API_KEY }}"
  254. #              - "CSB_OPENROUTER_API_KEY={{ ELASTICSEARCH_APP.OPENROUTER_API_KEY }}"
  255. #              - "CSB_MYSQL_HOST={{ MYSQL_HOST }}"
  256. #              - "CSB_MYSQL_DB={{ MYSQL_DB }}"
  257. #              - "CSB_MYSQL_USER={{ MYSQL_USER }}"
  258. #              - "CSB_MYSQL_PASSWORD={{ MYSQL_PASSWORD }}"
  259. #              - "CSB_STAMEDIA_TSV_FILE=/app/stamedia.tsv"
  260. #              - "CSB_SENTRY_IS_ENABLE=true"
  261. #              - "CSB_SENTRY_DSN={{ SENTRY_DSN }}"
  262. #            healthcheck:
  263. #              test:
  264. #                [
  265. #                  "CMD-SHELL",
  266. #                  "celery -A searchbox.worker.app inspect ping --destination celery@$$HOSTNAME",
  267. #                ]
  268. #              start_period: 10s
  269. #              interval: 10s
  270. #              timeout: 10s
  271. #              retries: 20
  272.  
  273.           celery_flower:
  274.             image: "{{ CINEVOY_IMAGE }}"
  275.             deploy:
  276.               mode: replicated
  277.               replicas: 1
  278.               update_config:
  279.                 parallelism: 1
  280.                 order: start-first
  281.                 failure_action: rollback
  282.                 delay: 10s
  283.               placement:
  284.                 constraints:
  285.                  - node.labels.fastapi == node
  286.             command: celery -A searchbox.worker.app flower --loglevel=DEBUG
  287.             depends_on:
  288.              - redis
  289.               - celery_worker
  290.             networks:
  291.              - network_1
  292.             ports:
  293.              - "5555:5555"
  294.             environment:
  295.              - "CSB_REDIS_URL=redis://redis:6379/"
  296.               - "CSB_ELASTIC_HOST=http://cinevoy_elasticsearch:9200"
  297.               - "CSB_ELASTIC_USER=elastic"
  298.               - "CSB_ELASTIC_PASSWORD={{ ELASTICSEARCH_APP.ELASTIC_PASSWORD }}"
  299.               - "CSB_STAMEDIA_TSV_FILE=/app/stamedia.tsv"
  300.               - "CSB_SENTRY_IS_ENABLE=true"
  301.               - "CSB_SENTRY_DSN={{ SENTRY_DSN }}"
  302.             healthcheck:
  303.               test:
  304.                [
  305.                   "CMD-SHELL",
  306.                   "curl -f -s http://localhost:5555/ || exit 1",
  307.                 ]
  308.               interval: 10s
  309.               timeout: 10s
  310.               retries: 5
  311.  
  312.  
  313. #          cron_scheduler:
  314. #            image: "{{ CINEVOY_IMAGE }}"
  315. #            deploy:
  316. #              mode: replicated
  317. #              replicas: 1
  318. #              update_config:
  319. #                parallelism: 1
  320. #                order: stop-first
  321. #                failure_action: pause
  322. #                delay: 10s
  323. #              placement:
  324. #                constraints:
  325. #                  - node.labels.fastapi == node
  326. #            command: python searchbox/cron_scheduler/main.py
  327. #            depends_on:
  328. #              - redis
  329. #            networks:
  330. #              - network_1
  331. #            environment:
  332. #              - "CSB_REDIS_URL=redis://redis:6379/"
  333. #              - "CSB_ELASTIC_HOST=http://cinevoy_elasticsearch:9200"
  334. #              - "CSB_ELASTIC_USER=elastic"
  335. #              - "CSB_ELASTIC_PASSWORD={{ ELASTICSEARCH_APP.ELASTIC_PASSWORD }}"
  336. #              - "CSB_KP_DEV_API_KEY={{ ELASTICSEARCH_APP.KP_DEV_API_KEY }}"
  337. #              - "CSB_OPENROUTER_API_KEY={{ ELASTICSEARCH_APP.OPENROUTER_API_KEY }}"
  338. #              - "CSB_MYSQL_HOST={{ MYSQL_HOST }}"
  339. #              - "CSB_MYSQL_DB={{ MYSQL_DB }}"
  340. #              - "CSB_MYSQL_USER={{ MYSQL_USER }}"
  341. #              - "CSB_MYSQL_PASSWORD={{ MYSQL_PASSWORD }}"
  342. #              - "CSB_STAMEDIA_TSV_FILE=/app/stamedia.tsv"
  343. #              - "CSB_SENTRY_IS_ENABLE=true"
  344. #              - "CSB_SENTRY_DSN={{ SENTRY_DSN }}"
  345. #            healthcheck:
  346. #              test:
  347. #                [
  348. #                  "CMD-SHELL",
  349. #                  "sh searchbox/cron_scheduler/check_socket_health.sh",
  350. #                ]
  351. #              start_period: 10s
  352. #              interval: 10s
  353. #              timeout: 10s
  354. #              retries: 20
  355.  
  356.           web:
  357.             image: "{{ CINEVOY_WEB_IMAGE }}"
  358.             deploy:
  359.               mode: replicated
  360.               replicas: 1
  361.               update_config:
  362.                 parallelism: 1
  363.                 order: start-first
  364.                 failure_action: rollback
  365.                 delay: 10s
  366.               placement:
  367.                 constraints:
  368.                  - node.labels.fastapi == node
  369.             ports:
  370.              - "8001:80"
  371.             healthcheck:
  372.               test:
  373.                [
  374.                   "CMD-SHELL",
  375.                   "curl -f -s -u {{ DEMO_USER }}:{{ DEMO_PASSWORD }} http://localhost:80/ || exit 1",
  376.                 ]
  377.               interval: 10s
  378.               timeout: 10s
  379.               retries: 5
  380.  
  381.           webplayer:
  382.             image: "{{ CINEVOY_WEBPLAYER_IMAGE }}"
  383.             deploy:
  384.               mode: replicated
  385.               replicas: 1
  386. #              update_config:
  387. #                parallelism: 1
  388. #                order: start-first
  389. #                failure_action: rollback
  390. #                delay: 10s
  391.               placement:
  392.                 constraints:
  393.                  - node.labels.fastapi == node
  394.             ports:
  395.              - "8002:3000"
  396. #            healthcheck:
  397. #              test:
  398. #                [
  399. #                  "CMD-SHELL",
  400. #                  "curl -f -s http://localhost:3000/ || exit 1",
  401. #                ]
  402. #              interval: 10s
  403. #              timeout: 10s
  404. #              retries: 5
  405.  
  406.         networks:
  407.           network_1:
  408.             driver: overlay
  409.             attachable: true
  410.  
  411.         volumes:
  412.           es-data:
  413.             driver: local
  414.           kibana-data:
  415.             driver: local
  416.           redis-data:
  417.             driver: local
  418.  
  419.   when: inventory_hostname in groups['eks'][0]
  420.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement