No description
  • Python 55.4%
  • JavaScript 26.1%
  • Shell 7.4%
  • HTML 7%
  • CSS 4.1%
Find a file
2026-08-26 14:33:02 +09:00
app fix: /repo·/custom 이 HEAD 에 405 를 돌려줘 CM 호스트 추가가 실패하던 문제 2026-08-26 14:31:00 +09:00
bin Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
config Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
repo/default Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
.gitignore Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
build.sh Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
CHANGELOG.md docs: CHANGELOG 의 미출시 항목을 v1.3.1 로 확정 2026-08-26 14:33:02 +09:00
install.sh Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
LICENSE Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
manual.md 소스 development 브랜치의 개선 반영 (#9, #10) 2026-08-26 10:15:33 +09:00
README.md 소스 development 브랜치의 개선 반영 (#9, #10) 2026-08-26 10:15:33 +09:00
references.md Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
requirements.txt Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
THIRD-PARTY-LICENSES.md Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00
uninstall.sh Cloudera Inspector v1.2.1 — 최초 공개 2026-08-24 17:02:01 +09:00

Cloudera Inspector

CDP Private Cloud Base/Data Services 설치를 위한 사전정비 도구.

등록된 노드의 시스템 설정을 검사하고, 권장값으로 자동 수정하며, PostgreSQL/CM 설치까지 하나의 웹 UI에서 처리한다.

주요 기능

  • 시스템 사전 점검 (39개 항목: 필수/수동/권장 분류)
  • 자동 설정 적용 (SELinux, THP, sysctl, NTP, ulimit 등)
  • RPM/Parcel 레포 관리 및 HTTP 배포
  • PostgreSQL 설치 (Master-Replica Streaming Replication 선택)
  • Cloudera Manager 설치 + 폐쇄망 설정 자동화
  • HAProxy 설치 (Master 노드)
  • /etc/hosts 자동 생성 및 배포
  • 설정 롤백 (백업 기반)
  • 작업 리포트 생성

인스펙터 흐름

                          ┌─────────────┐
                          │    시작     │
                          └──────┬──────┘
                                 │
                          ┌──────▼──────┐
                          │   로그인    │
                          └──────┬──────┘
                                 │
                     ┌───────────▼───────────┐
                     │  SSH 자격증명 설정     │
                     └───────────┬───────────┘
                                 │
                     ┌───────────▼───────────┐
                     │  노드 등록            │
                     │  IP + 역할(Base/DS)   │
                     └─────┬─────────┬───────┘
                           │         │
              ┌────────────▼──┐  ┌───▼──────────────┐
              │  레포 등록    │  │  사전정비         │
              │  CM/CDH/PG   │  │  검사 실행        │
              └──────┬───────┘  └───┬──────────┬────┘
                     │              │          │
                     │    ┌─────────▼───┐  ┌───▼──────────────┐
                     │    │ 수동 확인   │  │ 자동 수정 항목   │
                     │    │ OS/커널     │  │ SELinux, THP     │
                     │    │ 마운트옵션  │  │ sysctl, NTP 등   │
                     │    │ cgroup      │  └───┬──────────────┘
                     │    └──────┬──────┘      │
                     │           │         ┌───▼──────────────┐
                     │    사용자 직접 수정  │  설정 적용 실행  │
                     │           │         └───┬──────────────┘
                     │           └──────┬──────┘
                     │                  │
                     │          ┌───────▼────────┐
                     │          │  검사 결과 확인 │
                     │          │  hosts/NTP 배포 │
                     │          └────────────────┘
                     │
              ┌──────▼──────────────────────┐
              │  PostgreSQL 설치            │
              │  Master (+Replica 선택)     │
              └──────┬──────────────────────┘
                     │
              ┌──────▼──────────────────────┐
              │  Cloudera Manager 설치      │
              │  DB 연결 → Agent 배포       │
              │  Parcel 레포 자동 등록      │
              │  폐쇄망 설정 자동 적용      │
              └──────┬──────────────────────┘
                     │
              ┌──────▼──────────┐
              │ HAProxy 필요?   │
              └──┬───────────┬──┘
                 │ 예        │ 아니오
          ┌──────▼──────┐    │
          │ HAProxy     │    │
          │ 설치        │    │
          └──────┬──────┘    │
                 └─────┬─────┘
                       │
              ┌────────▼────────┐
              │  리포트 생성    │
              └────────┬────────┘
                       │
                ┌──────▼──────┐
                │    완료     │
                └─────────────┘

사용법

1. 설치

tar xzf cloudera_inspector.tar.gz
cd cloudera_inspector
sudo ./install.sh

대화형 설치: OS 감지 → 설치 경로 → 포트 → systemd 등록

2. 접속

http://<서버IP>:4091
초기 패스워드: votmdnjem

초기 패스워드는 고정값이며 공개되어 있습니다. 로그인 후 우측 상단 [패스워드 변경] 에서 반드시 변경하고, 웹 포트를 신뢰할 수 없는 네트워크에 노출하지 마세요 — 이 앱의 세션은 등록된 전 노드에 root SSH 를 실행할 수 있습니다.

3. 노드 등록

  • SSH 자격증명 설정 (키 또는 패스워드)
  • 노드 추가: 계정@호스트 입력, 역할(Base/DS) 및 타입(Master/Worker/Utility) 지정
  • 연결 테스트 자동 실행

4. 레포 등록

  • repo/default/ 에 사전 패키징된 RPM/Parcel repo 배치 (서버 시작 시 자동 인식)
  • 또는 UI에서 tarball 업로드 / .repo 텍스트 붙여넣기
  • 등록된 레포는 http://<서버IP>:4091/repo/ 로 HTTP 배포

필요 레포: CM RPM, CDH Parcel, PostgreSQL RPM, JDK RPM (선택)

5. 사전정비

검사 실행 → 결과 확인 → 설정 적용

섹션 처리
필수 — 수동 확인 OS/커널 버전, 마운트 옵션, cgroup: 가이드에 따라 직접 수정
필수 — 자동 수정 노드 선택 → 설정 적용 버튼
권장 / 정보 참고용 (디스크, FQDN, NIC 등)

6. /etc/hosts + NTP

  • hosts: 점검 항목 행 확장 → hosts 편집/배포 모달
  • NTP: chronyd 점검 항목 행 확장 → NTP 서버 설정 모달

7. PostgreSQL 설치

④설치 탭 → PostgreSQL 설치 버튼

  • 대상 노드 선택 (Master/Utility)
  • CDP 필수 DB 자동 생성 (scm, hive, ranger 등)
  • Streaming Replication 선택 시 Replica 노드 지정

8. Cloudera Manager 설치

④설치 탭 → CM 설치 버튼

  • 사전 검사 이력 확인 (pass/fail/미검사 분기)
  • CM 패키지 설치 → DB 연결 → scm_prepare_database → 서비스 시작
  • Jetty 기동 대기 → Parcel 레포 자동 등록
  • 폐쇄망 설정 자동 적용 (PHONE_HOME, TELEMETRY 등 비활성화)
  • Agent 전체 노드 배포 (선택)

9. HAProxy 설치 (선택)

④설치 탭 → HAProxy 설치 버튼

  • Master 노드에만 설치
  • 시스템 사양 기반 자동 튜닝 (nbthread, maxconn)
  • 설치 후 systemctl disable 상태 유지

10. 리포트

로그·리포트 탭 → 리포트 생성

Markdown 형식, 패스워드 마스킹 적용

변경 기록

버전별 변경 내역은 CHANGELOG.md 를 참조하세요.

디렉터리 구조

/opt/cloudera_inspector/
├── install.sh              # 대화형 설치 스크립트
├── bin/
│   ├── run.sh              # 실행 (OS 자동 감지)
│   ├── lib-el8/            # Python 라이브러리 (RHEL/Rocky 8)
│   └── lib-el9/            # Python 라이브러리 (RHEL/Rocky 9)
├── app/                    # FastAPI 어플리케이션
├── config/config.yaml      # 설정 (포트, 패스워드 등)
├── .state/                 # 런타임 데이터 (nodes, results, logs)
└── repo/                   # RPM/Parcel 레포 (HTTP 배포)
    └── default/            # 사전 패키징 레포

요구사항

  • RHEL/Rocky Linux 8.x 또는 9.x
  • el8/el9 번들 설치 파일: Python 3.9 런타임 권장
  • minimal 설치 파일: Python 3.9+ 및 fastapi, uvicorn, asyncssh, jinja2, pyyaml 사전 설치
  • 대상 노드 SSH 접속 가능 (키 또는 패스워드)

제거

sudo /opt/cloudera_inspector/uninstall.sh              # 대화형
sudo /opt/cloudera_inspector/uninstall.sh --keep-data --yes
sudo /opt/cloudera_inspector/uninstall.sh --purge --yes

서비스 중지·systemd 유닛 제거·앱 파일 삭제를 수행합니다. 검사 결과·작업 로그·레포·업로드 파일(.state, repo, custom)은 기본적으로 남깁니다. --purge 를 주면 함께 지웁니다.

제약사항

설치 프로그램은 호스트 환경을 대신 정리하지 않습니다. 아래는 관리자가 설치 전에 해결해야 합니다.

  • 포트 점유 — 지정한 포트(기본 4091)가 사용 중이면 설치를 중단하고 점유 프로세스를 알려줍니다. 우회 포트를 자동으로 고르지 않습니다.
  • 방화벽 차단 — 포트가 외부에서 닿는지는 확인하지 않습니다. (클러스터 노드의 방화벽은 별개입니다 — [②사전정비]의 방화벽 항목이 다룹니다.)
  • SELinux, 이름 해석 등 그 밖의 호스트 정책

minimal 패키지 사전 준비

minimal 은 인터프리터도 라이브러리도 담지 않습니다 — 이미 갖춰진 호스트를 위한 것입니다. 그 상태를 만드는 스크립트가 있습니다.

# 인터넷이 되는 머신에서 (폐쇄망 대상일 때)
./bin/prepare-minimal-el8.sh collect          # → bundle/deps-el8
./bin/prepare-minimal-el9.sh collect

# 대상 호스트에서 root 로
sudo ./bin/prepare-minimal-el8.sh install /경로/deps-el8
sudo ./bin/prepare-minimal-el9.sh install     # 인터넷이 되면 번들 없이도 가능

# 확인만
./bin/prepare-minimal-el8.sh verify
대상 인터프리터 비고
el8 python3.9 (AppStream python39) 기본 python3 가 3.6 이라 쓸 수 없음. RPM 도 함께 수집
el9 python3 (배포판 기본 3.9) 인터프리터는 이미 있음. pip 과 라이브러리만

번들은 대상의 glibc 를 기준으로 휠을 고르고(el8 = 2.28), 의존성 폐포를 채운 뒤 설치 후 임포트까지 확인합니다.

라이선스

MIT License — 전문은 LICENSE 참조.

상업적 이용을 포함해 자유롭게 사용·수정·재배포할 수 있으며, 조건은 저작권 고지와 라이선스 원문을 함께 유지하는 것 하나입니다.

Copyright (c) 2026 haedong (TheKnowledges.net) — wiki.theknowledges.net

배포본(.run)에 함께 포함되는 서드파티 오픈소스의 라이선스와 고지는 THIRD-PARTY-LICENSES.md 에 있습니다. 이들 중 asyncssh(EPL-2.0) 를 포함해 어느 것도 본 프로젝트의 MIT 라이선스를 제약하지 않으며, 고지를 함께 배포하는 것으로 요건이 충족됩니다.