- Python 55.4%
- JavaScript 26.1%
- Shell 7.4%
- HTML 7%
- CSS 4.1%
| app | ||
| bin | ||
| config | ||
| repo/default | ||
| .gitignore | ||
| build.sh | ||
| CHANGELOG.md | ||
| install.sh | ||
| LICENSE | ||
| manual.md | ||
| README.md | ||
| references.md | ||
| requirements.txt | ||
| THIRD-PARTY-LICENSES.md | ||
| uninstall.sh | ||
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 라이선스를
제약하지 않으며, 고지를 함께 배포하는 것으로 요건이 충족됩니다.