@bifos/nhncloud-cli 0.4.0 → 0.5.1
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 +110 -2
- package/dist/index.js +513 -80
- package/package.json +1 -1
- package/skills/nhncloud-cli/SKILL.md +119 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# nhncloud-cli
|
|
2
2
|
|
|
3
3
|
NHN Cloud 서비스를 AWS CLI 방식으로 호출하는 통합 CLI.
|
|
4
|
-
현재 `configure`, `logncrash search/send` (Log & Crash 로그 검색·전송), `deploy` (배포·바이너리 조회·업로드·다운로드), `instance` (Compute 인스턴스 목록·발급·전원 제어·타입 변경·키페어 관리·이미지·가용성 영역 조회·볼륨 연결 포함), `network` (VPC·서브넷 목록 조회), `volume` (Block Storage 볼륨 목록·조회·생성) 명령을 지원한다.
|
|
4
|
+
현재 `configure`, `logncrash search/send` (Log & Crash 로그 검색·전송), `deploy` (배포·바이너리 조회·업로드·다운로드), `instance` (Compute 인스턴스 목록·발급·전원 제어·타입 변경·키페어 관리·이미지·가용성 영역 조회·볼륨 연결 포함), `network` (VPC·서브넷 목록 조회), `volume` (Block Storage 볼륨 목록·조회·생성), `ncr` (NHN Container Registry 레지스트리 목록·조회·이미지 목록·태그 목록) 명령을 지원한다.
|
|
5
5
|
|
|
6
6
|
## 설치
|
|
7
7
|
|
|
@@ -17,7 +17,7 @@ npm install -g @bifos/nhncloud-cli
|
|
|
17
17
|
nhncloud configure
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
- profile → UAK(id/secret) → logncrash appkey/secret → iaas 자격증명 순으로 입력한다.
|
|
20
|
+
- profile → UAK(id/secret) → logncrash appkey/secret → iaas 자격증명 → ncr appkey 순으로 입력한다.
|
|
21
21
|
- 저장 전 연결 테스트를 자동으로 수행한다 (`--no-verify` 로 생략 가능).
|
|
22
22
|
- CI/자동화는 flag 로 비대화형 설정이 가능하다.
|
|
23
23
|
|
|
@@ -116,10 +116,27 @@ nhncloud logncrash search \
|
|
|
116
116
|
--query 'logType:"NORMAL"' \
|
|
117
117
|
--from 1h \
|
|
118
118
|
--to now
|
|
119
|
+
|
|
120
|
+
# body 필드 키워드 검색
|
|
121
|
+
nhncloud logncrash search \
|
|
122
|
+
--query 'body:request_received' \
|
|
123
|
+
--from 1h \
|
|
124
|
+
--to now
|
|
125
|
+
|
|
126
|
+
# body 부분 문자열 검색
|
|
127
|
+
nhncloud logncrash search \
|
|
128
|
+
--query 'body:*request_received*' \
|
|
129
|
+
--from 1h \
|
|
130
|
+
--to now
|
|
119
131
|
```
|
|
120
132
|
|
|
133
|
+
`--query` 는 콘솔의 간편 검색어가 아니라 Log & Crash Search API 의 Lucene 쿼리다.
|
|
134
|
+
body 검색 의도가 명확하면 `body:<keyword>` 또는 `body:*<keyword>*` 처럼 필드를 지정한다.
|
|
135
|
+
|
|
121
136
|
시간은 상대시간 (`1h` / `30m` / `2d` / `now`) 또는 ISO8601 (`2026-05-01T00:00:00+09:00`) 로 입력한다.
|
|
122
137
|
API 제약상 검색 시작은 최근 90일 이내, 검색 범위는 31일 이하여야 한다 (초과 시 입력 오류로 거절).
|
|
138
|
+
전송 직후에는 인덱싱 지연으로 잠시 0건이 나올 수 있다.
|
|
139
|
+
반복 검색이나 넓은 wildcard 검색은 API rate limit 에 걸릴 수 있으므로 시간 범위를 좁혀 확인한다.
|
|
123
140
|
|
|
124
141
|
### 로그 대량 추출 (export)
|
|
125
142
|
|
|
@@ -179,9 +196,47 @@ nhncloud logncrash send --body "deploy 시작" --app-version 2.3.0 --source batc
|
|
|
179
196
|
| JSON | `--json` | 자동화·AI 에이전트용 raw 데이터 + 페이지 메타 |
|
|
180
197
|
| quiet | `--quiet` | 행별 최소 출력 |
|
|
181
198
|
|
|
199
|
+
`--json`은 CLI가 가공한 출력 계약이다.
|
|
200
|
+
NHN Cloud 또는 OpenStack 원본 응답의 최상위 래퍼를 그대로 보존하지 않을 수 있다.
|
|
201
|
+
|
|
202
|
+
| 명령 | `--json` 출력 shape |
|
|
203
|
+
|------|---------------------|
|
|
204
|
+
| `logncrash search` | `{ totalItems, pageNumber, pageSize, data }` 객체 |
|
|
205
|
+
| `logncrash export` | 파일 출력 전용. stdout JSON 없음 |
|
|
206
|
+
| `deploy artifacts` | Deploy API `body` 객체 |
|
|
207
|
+
| `deploy server-groups` | Deploy API `body` 객체 |
|
|
208
|
+
| `deploy histories` | Deploy API `body` 객체 |
|
|
209
|
+
| `deploy binary-groups` | `binaryGroups` 래퍼를 언랩한 배열 |
|
|
210
|
+
| `deploy binaries` | `{ totalCount, binaries }` 객체 |
|
|
211
|
+
| `deploy upload` | `{ downloadUrl, binaryKey }` 객체 |
|
|
212
|
+
| `instance list` | `servers` 래퍼를 언랩한 server 배열 |
|
|
213
|
+
| `instance get` | `server` 래퍼를 언랩한 단일 server 객체 |
|
|
214
|
+
| `instance create --wait` | `server` 래퍼를 언랩한 단일 server 객체 |
|
|
215
|
+
| `instance flavors` | `flavors` 래퍼를 언랩한 flavor 배열 |
|
|
216
|
+
| `instance images` | `images` 래퍼를 언랩한 image 배열 |
|
|
217
|
+
| `instance availability-zones` | `availabilityZoneInfo` 래퍼를 언랩한 배열 |
|
|
218
|
+
| `instance keypairs` | `keypairs[].keypair`를 flatten한 keypair 배열 |
|
|
219
|
+
| `instance volumes` | `volumeAttachments` 래퍼를 언랩한 attachment 배열 |
|
|
220
|
+
| `network list` | VPC 배열 |
|
|
221
|
+
| `network subnet list` | subnet 배열 |
|
|
222
|
+
| `volume list` | volume 배열 |
|
|
223
|
+
| `volume get` | 단일 volume 객체 |
|
|
224
|
+
| `volume create` | 단일 volume 객체 |
|
|
225
|
+
| `floatingip list` | floating IP 배열 |
|
|
226
|
+
| `floatingip create` | 단일 floating IP 객체 |
|
|
227
|
+
| `ncr list` | `registries` 래퍼를 언랩한 registry 배열 |
|
|
228
|
+
| `ncr get` | `registry` 래퍼를 언랩한 단일 registry 객체 |
|
|
229
|
+
| `ncr images` | repository 배열 |
|
|
230
|
+
| `ncr tags` | tag 배열 |
|
|
231
|
+
|
|
232
|
+
예를 들어 `instance get --json`은 `.server.status`가 아니라 `.status`를 읽는다.
|
|
233
|
+
|
|
182
234
|
### 체이닝 예시
|
|
183
235
|
|
|
184
236
|
```bash
|
|
237
|
+
# 인스턴스 상태 확인
|
|
238
|
+
nhncloud instance get <instance-id> --json | jq -r '.status'
|
|
239
|
+
|
|
185
240
|
# 검색 결과에서 logBody 만 추출
|
|
186
241
|
nhncloud logncrash search --query '*' --from 1h --to now --json | jq -r '.data[].logBody'
|
|
187
242
|
|
|
@@ -437,6 +492,58 @@ nhncloud floatingip delete <floatingip-id> --yes
|
|
|
437
492
|
> **associate**: `floatingip associate <floatingip-id> <instance-id>` 는 instance→port_id 매핑 경로 미확정으로 보류 중.
|
|
438
493
|
> 실측으로 경로가 확정되면 후속 task 에서 추가한다.
|
|
439
494
|
|
|
495
|
+
### NHN Container Registry (NCR)
|
|
496
|
+
|
|
497
|
+
NCR Management API 로 레지스트리를 조회한다.
|
|
498
|
+
인증은 공통 UAK(`X-TC-AUTHENTICATION-ID/SECRET` 정적 헤더)를 재사용하며 OAuth 토큰 교환이 없다.
|
|
499
|
+
appKey 는 NHN Cloud 콘솔 → Container Registry 서비스에서 확인한다.
|
|
500
|
+
|
|
501
|
+
```bash
|
|
502
|
+
# ncr appkey 설정 (비대화형)
|
|
503
|
+
nhncloud configure --ncr-appkey <appkey>
|
|
504
|
+
|
|
505
|
+
# 레지스트리 목록 조회
|
|
506
|
+
nhncloud ncr list --app-key <appkey>
|
|
507
|
+
|
|
508
|
+
# region 지정 (기본: kr1)
|
|
509
|
+
nhncloud ncr list --region kr2 --app-key <appkey>
|
|
510
|
+
|
|
511
|
+
# JSON 출력
|
|
512
|
+
nhncloud ncr list --app-key <appkey> --json
|
|
513
|
+
|
|
514
|
+
# 단일 레지스트리 조회 (이름 또는 ID)
|
|
515
|
+
nhncloud ncr get <registry-name> --app-key <appkey>
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
appKey 를 `nhncloud configure --ncr-appkey <appkey>` 로 저장해 두면 `--app-key` 없이도 호출할 수 있다.
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
# configure 로 저장 후 --app-key 생략
|
|
522
|
+
nhncloud configure --ncr-appkey <appkey>
|
|
523
|
+
nhncloud ncr list
|
|
524
|
+
nhncloud ncr get <registry-name>
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
이미지(repository)·태그는 레지스트리 데이터플레인 Harbor REST API 를 직접 호출한다.
|
|
528
|
+
UAK 를 Basic Auth 로 사용하며 추가 설정은 없다.
|
|
529
|
+
|
|
530
|
+
```bash
|
|
531
|
+
# 이미지(repository) 목록 조회
|
|
532
|
+
nhncloud ncr images <registry>
|
|
533
|
+
|
|
534
|
+
# region 지정
|
|
535
|
+
nhncloud ncr images <registry> --region kr2
|
|
536
|
+
|
|
537
|
+
# JSON 출력
|
|
538
|
+
nhncloud ncr images <registry> --json
|
|
539
|
+
|
|
540
|
+
# 특정 이미지의 태그 목록 조회
|
|
541
|
+
nhncloud ncr tags <registry> <repository>
|
|
542
|
+
|
|
543
|
+
# JSON 출력 (태그·push_time·size)
|
|
544
|
+
nhncloud ncr tags <registry> <repository> --json
|
|
545
|
+
```
|
|
546
|
+
|
|
440
547
|
## 개발
|
|
441
548
|
|
|
442
549
|
```bash
|
|
@@ -445,4 +552,5 @@ pnpm run build # tsup 단일 번들 (dist/index.js)
|
|
|
445
552
|
pnpm tsc --noEmit # 타입 체크
|
|
446
553
|
node dist/index.js instance --help
|
|
447
554
|
node dist/index.js logncrash search --help
|
|
555
|
+
node dist/index.js ncr --help
|
|
448
556
|
```
|