문서API 참조
Documentation

Sandfly 업그레이드

메일링 리스트를 구독한 경우 Sandfly의 새 버전에 대한 공지를 받게 됩니다. 또한, 새 버전 공지는 당사 웹사이트에서도 확인할 수 있습니다.

👍

TIP: 시스템을 최신 상태로 유지하세요!

우리는 지속적으로 sandfly의 조사 역량과 기능을 추가하고 있습니다. 시스템을 최신 상태로 유지하도록 하세요.

Sandfly를 업데이트하려면 아래 단계를 모두 읽고 완료하세요.

1단계: 예약된 작업 일시 중지

Sandfly User Interface(UI)에 로그인하여 Schedules 보기로 이동한 뒤, 활성화된 모든 스케줄을 비활성화하세요.

이 단계는 현재 실행 중인 Trickle 스케줄을 자동으로 취소하고, 업그레이드 중에 다른 예약 작업이 시작되지 않도록 보장하므로 중요합니다. 비활성화한 스케줄은 업그레이드가 완료되면 다시 활성화해야 하므로, 어떤 스케줄을 비활성화했는지 기록해 두세요. 자세한 내용은 스케줄 비활성화 및 삭제를 참조하세요.

2단계: 모든 작업이 완료되었는지 확인

Sandfly UI에서 Top Bar의 버튼을 클릭하거나 사이드바의 Scanning > Task Queues로 이동하여 Task Queues 페이지를 열고, 다음 사항을 모두 확인하세요:

  • Total Tasks 및 Tasks 지표의 값이 0 (zero)인 것으로 표시되는 것처럼, task queue가 비어 있어야 합니다.
  • 진행 중인 Trickle 스케줄이 없어야 합니다. "Queues" 아래에 "Trickle Schedule Progress"라는 위젯이 보이면 하나 이상이 활성 상태라는 뜻입니다. 이 경우 먼저 1단계를 완료했는지 재확인하고, 빨간 "X" 버튼을 통해 남아 있는 Trickle 스케줄을 수동으로 취소하세요(Trickle 스케줄은 수동으로도 시작될 수 있습니다).

스캔 중간에 노드를 중지하지 않는 것이 중요합니다. 중간에 중지하면 원격 호스트에 고아 파일이 남을 수 있습니다. 노드가 활성 작업을 마치도록 허용하면 모든 것이 올바르게 정리됩니다.

Empty Task Queue

빈 작업 큐

3단계: 업데이트 다운로드

다음 URL에서 최신 버전을 다운로드하세요:

Sandfly 시스템이 air-gapped 환경이라면, 인터넷에 연결된 장치에서 아카이브를 다운로드한 후, 환경에 맞게 Sandfly 호스트로 파일을 전달하세요.

아카이브가 Sandfly 호스트에 준비되면, 기존 sandfly-setup 디렉터리에 덮어쓰는 방식으로 untar 하세요:

❗️

중요: 기존 sandfly-setup 디렉터리에 아카이브를 덮어써서 추출하세요

tarball에 포함된 파일은 해당 디렉터리 아래에서 생성된 설정이나 추가된 파일을 덮어쓰지 않으므로, 일반적으로 기존 디렉터리에 새 버전을 untar해도 안전합니다. 스크립트를 커스터마이즈했거나 보다 신중을 기하고 싶다면, 추출 전에 디렉터리 전체를 백업하세요.

4단계: Docker 이미지 삭제

모든 작업이 비워지면, 서버 및 노드 인스턴스에서 모든 Docker 컨테이너를 중지하고 삭제하는 스크립트를 실행합니다.

다음 명령을 서버와 모든 노드에서 실행하세요.

서버에서:

cd ~/sandfly-setup/setup ./clean_docker.sh * Sandfly server is running on this system. Stopping... 4b24ab50f1c5 4b24ab50f1c5 * Sandfly server stopped. * Postgres is running on this system. Stopping... f23041d1b2b4 waiting for server to shut down.... f23041d1b2b4 * Postgres server stopped. * Done. 4b24ab50f1c5 f23041d1b2b4 4b24ab50f1c5 f23041d1b2b4 Untagged: quay.io/sandfly/sandfly:5.5.0 ... Untagged: postgres:14.15 ...

노드로 사용 중인 모든 호스트(노드가 서버에 있는 경우 포함)에서:

cd ~/sandfly-setup/setup ./clean_docker.sh * Stopping node container 865c0500124e 865c0500124e 865c0500124e * Stopping node container 3b9a82446aae 3b9a82446aae 3b9a82446aae * Done. ...

많은 컨테이너 해시 목록이 지나간 뒤 프롬프트로 돌아오면, 스크립트가 완료되어 Docker 컨테이너가 제거된 것입니다.

5단계: 서버와 노드에서 시작 스크립트 실행

서버와 각 노드에서 해당 시작 스크립트를 실행하세요. 최신 버전의 Sandfly 이미지를 가져와 실행합니다.

서버에서:

cd ~/sandfly-setup/start_scripts/ ./start_sandfly.sh *** Starting Postgres. ** Loading images from local archive: ** ../../docker_images/sandfly-docker-images-5.5.0.tgz ** There will be a slight delay before further output... ... Loaded image: quay.io/sandfly/sandfly:5.5.0 ... Loaded image: postgres:14.15 ... *** Starting Sandfly Server.

노드로 사용 중인 모든 호스트(노드가 서버에 있는 경우 포함)에서:

cd ~/sandfly-setup/start_scripts/ ./start_node.sh ** Loading images from local archive: ** ../../docker_images/sandfly-docker-images-5.5.0.tgz ** There will be a slight delay before further output... ... Loaded image: quay.io/sandfly/sandfly:5.5.0

노드 호스트에서는 RAM과 CPU 용량에 따라 시작 스크립트를 여러 번 실행해 추가 컨테이너를 시작할 수 있습니다.

6단계: 검증

서버와 노드에서 docker ps 명령을 실행하여 모든 것이 정상 실행 중인지 확인합니다.

서버에서:

docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4b24ab50f1c5 quay.io/sandfly/sandfly:5.5.0 "/opt/sandfly/start_…" 4 seconds ago Up 3 seconds 0.0.0.0:80->8000/tcp, :::80->8000/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp sandfly-server f23041d1b2b4 postgres:14.15 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 5432/tcp sandfly-postgres

노드로 사용 중인 모든 호스트(노드가 서버에 있는 경우 포함)에서:

docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 865c0520124e quay.io/sandfly/sandfly:5.5.0 "/opt/sandfly/start_…" 5 seconds ago Up 3 seconds boring_jang 3b9a82546aae quay.io/sandfly/sandfly:5.5.0 "/opt/sandfly/start_…" 7 seconds ago Up 5 seconds clever_burnell 92b33fe63f33 quay.io/sandfly/sandfly:5.5.0 "/opt/sandfly/start_…" 8 seconds ago Up 6 seconds goofy_blackwell

이제 UI에 다시 로그인할 수 있어야 합니다. 버전 번호 및/또는 공개 키를 확인하려면 UI에서 Settings > Settings Summary로 이동하세요. "About Sandfly" 섹션에 버전 번호와 빌드 정보가 표시됩니다.

7단계: 스케줄 재개

마지막으로, 이전에 활성화되어 있던 스케줄을 다시 활성화하면 Sandfly가 중단된 지점부터 다시 진행합니다.


이 페이지가 도움이 되었나요?