@bifos/nhncloud-cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -0
- package/dist/index.js +1047 -0
- package/package.json +48 -0
- package/skills/nhncloud-cli/SKILL.md +252 -0
package/README.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# nhncloud-cli
|
|
2
|
+
|
|
3
|
+
NHN Cloud 서비스를 AWS CLI 방식으로 호출하는 통합 CLI.
|
|
4
|
+
현재 `logncrash search` (Log & Crash 로그 검색) 를 지원한다.
|
|
5
|
+
|
|
6
|
+
## 설치
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install -g @bifos/nhncloud-cli
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 초기 설정
|
|
13
|
+
|
|
14
|
+
`nhncloud configure` 를 실행하면 대화형 마법사가 자격증명을 안내한다.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
nhncloud configure
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- profile → UAK(id/secret) → logncrash appkey/secret 순으로 입력한다.
|
|
21
|
+
- 저장 전 연결 테스트를 자동으로 수행한다 (`--no-verify` 로 생략 가능).
|
|
22
|
+
- CI/자동화는 flag 로 비대화형 설정이 가능하다.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
nhncloud configure \
|
|
26
|
+
--uak-id <id> --uak-secret <secret> \
|
|
27
|
+
--logncrash-appkey <key> --logncrash-secret <secret> \
|
|
28
|
+
--no-verify
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
저장 경로: `~/.nhncloud/credentials.json` (mode 0600), `~/.nhncloud/config.json`.
|
|
32
|
+
|
|
33
|
+
profile 해석 우선순위: `--profile` 옵션 > `NHNCLOUD_PROFILE` 환경변수 > `config.defaultProfile` > `"default"`.
|
|
34
|
+
|
|
35
|
+
## 사용 예
|
|
36
|
+
|
|
37
|
+
### 배포 (Deploy)
|
|
38
|
+
|
|
39
|
+
`nhncloud configure --uak-id <id> --uak-secret <secret>` 으로 UAK 를 설정한 뒤,
|
|
40
|
+
`~/.nhncloud/config.json` 에 deploy target (배포 좌표)을 추가한다.
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"version": 1,
|
|
45
|
+
"deploy": {
|
|
46
|
+
"targets": {
|
|
47
|
+
"my-service": {
|
|
48
|
+
"appKey": "<appKey>",
|
|
49
|
+
"artifactId": "<artifactId>",
|
|
50
|
+
"serverGroupId": "<serverGroupId>",
|
|
51
|
+
"scenarioIds": "<id1,id2>"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 배포 실행 (동기 완료 대기)
|
|
60
|
+
nhncloud deploy run my-service
|
|
61
|
+
|
|
62
|
+
# 즉시 반환 (비동기)
|
|
63
|
+
nhncloud deploy run my-service --async
|
|
64
|
+
|
|
65
|
+
# 특정 호스트만 배포
|
|
66
|
+
nhncloud deploy run my-service --target-hosts host1,host2
|
|
67
|
+
|
|
68
|
+
# 아티팩트 목록 조회
|
|
69
|
+
nhncloud deploy artifacts my-service
|
|
70
|
+
|
|
71
|
+
# 서버그룹 목록 조회
|
|
72
|
+
nhncloud deploy server-groups my-service
|
|
73
|
+
|
|
74
|
+
# 배포 이력 조회
|
|
75
|
+
nhncloud deploy histories my-service
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 로그 검색
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 최근 1시간 NORMAL 로그
|
|
82
|
+
nhncloud logncrash search \
|
|
83
|
+
--query 'logType:"NORMAL"' \
|
|
84
|
+
--from 1h \
|
|
85
|
+
--to now
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
시간은 상대시간 (`1h` / `30m` / `2d` / `now`) 또는 ISO8601 (`2026-05-01T00:00:00+09:00`) 로 입력한다.
|
|
89
|
+
API 제약상 검색 시작은 최근 90일 이내, 검색 범위는 31일 이하여야 한다 (초과 시 입력 오류로 거절).
|
|
90
|
+
|
|
91
|
+
### 출력 모드
|
|
92
|
+
|
|
93
|
+
| 모드 | 옵션 | 용도 |
|
|
94
|
+
|------|------|------|
|
|
95
|
+
| 테이블 | (기본) | 사람이 읽는 고정 컬럼 출력 |
|
|
96
|
+
| JSON | `--json` | 자동화·AI 에이전트용 raw 데이터 + 페이지 메타 |
|
|
97
|
+
| quiet | `--quiet` | 행별 최소 출력 |
|
|
98
|
+
|
|
99
|
+
### 체이닝 예시
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# 검색 결과에서 logBody 만 추출
|
|
103
|
+
nhncloud logncrash search --query '*' --from 1h --to now --json | jq -r '.data[].logBody'
|
|
104
|
+
|
|
105
|
+
# 전체 건수 확인
|
|
106
|
+
nhncloud logncrash search --query '*' --from 1d --to now --json | jq '.totalItems'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 옵션
|
|
110
|
+
|
|
111
|
+
| 옵션 | 필수 | 설명 |
|
|
112
|
+
|------|:---:|------|
|
|
113
|
+
| `--query <lucene>` | 예 | Lucene 질의 문자열 |
|
|
114
|
+
| `--from <time>` | 예 | 검색 시작 (ISO8601 또는 상대시간) |
|
|
115
|
+
| `--to <time>` | 예 | 검색 끝 |
|
|
116
|
+
| `--page <n>` | 아니오 | pageNumber (기본 0) |
|
|
117
|
+
| `--size <n>` | 아니오 | pageSize (기본 10, 최대 100) |
|
|
118
|
+
| `--profile <name>` | 아니오 | 사용할 profile |
|
|
119
|
+
|
|
120
|
+
전역 옵션: `--json` / `--quiet` / `--no-color`.
|
|
121
|
+
|
|
122
|
+
## 종료 코드
|
|
123
|
+
|
|
124
|
+
| 코드 | 의미 |
|
|
125
|
+
|:---:|------|
|
|
126
|
+
| 0 | 성공 |
|
|
127
|
+
| 1 | API 오류 |
|
|
128
|
+
| 2 | 인증 실패 (401/403) |
|
|
129
|
+
| 3 | 입력 오류 (파라미터·시간 범위) |
|
|
130
|
+
| 4 | 설정 오류 (자격증명 누락) |
|
|
131
|
+
|
|
132
|
+
## 개발
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pnpm install
|
|
136
|
+
pnpm run build # tsup 단일 번들 (dist/index.js)
|
|
137
|
+
pnpm tsc --noEmit # 타입 체크
|
|
138
|
+
node dist/index.js logncrash search --help
|
|
139
|
+
```
|