환상적인 아이디어: Docker 이미지를 통한 임의의 자동화 스크립트

Discourse Automation은 정말 멋지고 유용하지만, 사용 가능한 자동화 기능은 다소 제한적입니다. 그중 많은 것들은 범용 도구가 아니라 특정 CDCK 고객의 구체적인 사용 사례를 해결하기 위한 일회성 해킹[1]처럼 보입니다.

사용자 정의 자동화를 생성하는 것은 가능하지만, 호스팅 고객이 이를 배포할 수 있는 방법을 제가 찾아볼 수 없습니다. 게다가 이 기능들은 꽤 위험할 수 있어 보입니다. 제가 작성한 자동화를 배포하도록 친절한 Discourse 스태프와 협력할 수는 있겠지만, 양쪽 모두에게 상당한 작업이 될 것 같습니다.

그래서, 제 아이디어는 다음과 같습니다:

  1. OCI[2] 이미지 링크(registry.example.org/imagename:tag 사용)를 제공할 수 있는 관리자 인터페이스[3].
  2. 해당 이미지와 API 키를 연결하는 방법(기존 API 키 관리자 페이지와 연결)
  3. 해당 이미지와 웹훅을 연결하는 방법(기존 웹훅 관리자 페이지와 연결)
  4. 이 기능에 주기적 일정 옵션을 추가하거나, (더 좋다고 생각합니다!) 웹훅에 일반적으로 해당 기능을 추가하는 것.

브로커/디스패처는 웹훅을 수신하고 일치하는 컨테이너로 전달하며, API 키를 시크릿으로 제공하고 페이로드를 stdin 또는 HTTP 포트를 통해 전달합니다. (이 중 많은 것이 “원샷” 방식이 될 것이라 예상합니다 — 컨테이너가 시작되어 하나의 이벤트를 처리한 후 종료되는 방식 — 하지만 영구적인 옵션(또는 N초 동안 대기한 후 종료되는 옵션)도 있을 수 있습니다.)

컨테이너는 적절한 리소스 제한과 함께 실행되며, 영구적 저장소가 없거나 동일한 저장소 풀 첨부 파일 등에 접근할 수 있어야 합니다. 호스팅 사이트의 경우, 페이지뷰, 이메일, 저장소와 함께 플랜별 제한 사항으로 자동화 CPU 시간을 추가할 수 있을 것 같습니다.

사이트 API의 위치는 환경 변수 또는 다른 시크릿으로 제공할 수 있습니다. 다른 네트워크 접근은 기본적으로 금지되지만, 특정傳出 연결을 허용할 수 있도록 해야 합니다.

물론 현재에도 "사이드"로 이러한 것을 설정할 수는 있지만, API와 웹훅 관리자 인터페이스와 통합되면 정말 멋질 것입니다(그리고 시크릿 관리 문제도 기본적으로 거의 해결됩니다). 또한, 디스패처/브로커 설정은 다소 복잡합니다.


  1. 여기서 '해킹’은 나쁜 의미로 사용한 것이 아닙니다 ↩︎

  2. “Docker” ↩︎

  3. 아마도 API 섹션에 있을 것입니다 ↩︎

2개의 좋아요

또한, 여기에는 “재배포” 버튼이 포함되며, Discourse 배포 또는 다른 트리거 시점에 새 컨테이너 버전을 자동으로 확인하는 옵션도 제공될 수 있습니다.