nifi.apache.org/docs/nifi-docs/html/toolkit-guide.html

 

Apache NiFi Toolkit Guide

In order to facilitate the secure setup of NiFi, you can use the tls-toolkit command line utility to automatically generate the required keystores, truststore, and relevant configuration files. This is especially useful for securing multiple NiFi nodes, wh

nifi.apache.org

 

 

 

NiFi 툴킷은 standalone 과 Cluster 환경에서 NiFi 를 설정하고 지원하는 여러 CLI 유틸리티를 제공해 준다.

 

만약 NiFi 가 보안(secure) 환경에 있다면, 다음 두 가지 정책을 미리 구성해야 한다고 한다. [문서 해당 부분 링크]

 

- 컨트롤러에 접근 권한

- 프록시 사용자 요청 권한

 

...읽어도 아직 이해를 못 하겠다. 링크 남겨둠.

 

 

toolkit 을 받기 위해 아래 공식 사이트에 들어간다.

nifi.apache.org/download.html

여기서 nifi-toolkit-버전-bin.tar.gz 를 받고

tar -zxvf 명령어를 이용하여 압축을 풀면 된다.

 

 

 

 

< NiFi CLI >

 

CLI 도구를 사용하여, NiFi Registry 에서 NiFi 로 flow 를 배포하거나,

프로세스 그룹, 클러스터 노드 등을 관리할 수 있고 또 자동화 할 수 있다.

 

CLI 는 명령어 하나를 실행하는 모드나, 대화형 모드로 실행 가능하다.

 

명령어를 직접 실행하도록 하려면

 

bin/cli.sh [명령어] [인자값]

 

대화형으로 실행하려면

 

bin/cli.sh

 

아래는 대화형 모드로 CLI 를 실행했을 때의 모습

 

 

 

 

toolkit CLI 에서 사용 가능한 명령어는

bin/cli.sh 뒤에 아무거나 타이핑하면 "네가 넣은 명령어는 없는 거야 자 이걸 써봐!" 하면서 주르륵 뜬다.

예를 들어 bin/cli.sh a

 

 

각종 명령어에 대한 도움말을 보려면

 

bin/cli.sh [명령어] -h

 

h 는 help 의 머릿글자인 것 같다.

 

 

 

toolkit CLI 는 NiFi 뿐 아니라, Registry 와도 연동 가능하다.

 

toolkit 에서 NiFi 와 연동하기 위해, NiFi 의 ip 와 part number 를 필요로 한다.

간단한 예를 하나 들어보자.

NiFi ip 가 11.0.0.3 이고 http 8080 port 로 열려있다고 하자.

나는 toolkit 에서 대화형 CLI 를 사용하기위해 bin/cli.sh 명령어를 실행하여 대화형 모드로 들어갔다.

NiFi 의 현재 유저들과 cluster 요약정보를 얻기 위해 다음과 같은 명령어를 입력했다.

 

#> nifi current-user -u http://11.0.0.3:8080                                                                                                          
#> nifi cluster-summary -u http://11.0.0.3:8080

 

 

이런 방식으로 NiFi 와 연동하여 관리할 수 있다.

Registry 도 같은 방식으로 연동하면 된다.

(대신 명령어는 registry 명령어를 사용해야겠지)

 

-u 옵션 뒤에 넣는 주소를 baseUrl 이라고 부른다.

 

 

CLI 를 사용 할 때마다 -u baseUrl 을 넣는것은 조금 귀찮은 일이 될 수 있다.

따라서 CLI session 에 baseUrl 을 저장해두면, 이후부터는 nifi current-user 처럼 -u 옵션 없이 사용 가능하다.

공식 문서에 나온대로 설정을 해보자.

Toolkit CLI 를 NiFi 와 연동을 하는 상황이다.

NiFi 의 nifi.properties path 가 /home/eye/nifi/conf/nifi.properties 라고 하자.

nifi.properties 를 vi 로 열고, 다음과 같이 baseUrl 을 추가해준다.

 

 .....
 baseUrl=http://localhost:18080
 keystore=
 keystoreType=
 keystorePasswd=
 keyPasswd=
 truststore=
 .....

 

왜 하필 security properties 부분에 넣는지는 모르겠지만, 알아보기 편하라고 여기 넣는 것 같다.

공식 문서에서 하는 거니 그냥 따라해보자.

이제 CLI 의 session 에 nifi.properties 를 추가해준다.

 

bin/cli.sh session set nifi.props /home/eye/nifi/conf/nifi.properties

 

다음 명령어로 session 이 잘 추가되었는지 확인할 수 있다.

 

bin/cli.sh session show

 

이제 -u 옵션 없이 CLI 명령을 실행할 수 있다.

bin/cli.sh nifi cluster-summary

 

Registry 도 마찬가지 방법으로 CLI session 에 properties 를 추가하고 -u 옵션을 생략할 수 있다.

Registry 의 경우 nifi-registry.properties 파일을 추가해야하는데,

nifi.properties 와 마찬가지로 nifi-registry.properties 내부에 baseUrl 을 넣어줘야 한다.

session 에 추가하기 위해 다음과 같은 명령어를 사용한다.

 

bin/cli.sh session set nifi.reg.props /home/eye/nifi-registry/conf/nifi-registry.properties

 

 

 

NiFi 자체에 암호화가 걸려있는 경우, toolkit CLI 역시 암호문을 알아야 NiFI 에 접근 가능하다.

암호화 하는 방법에 대해선 여기 링크 참고

 

예를 들어, NiFi 가 /home/eye/nifi 에 설치되어 있다고 하자.

위에 링크대로 암호화를 진행하였다면, 다음 이미지처럼 nifi.properties 에서 keystore 정보와 truststore 정보를 찾을 수 있다.

참고로 이미지 가장 위에 baseUrl 은 직접 넣었다. 이게 없으면 toolkit CLI 에서 NiFi 를 찾지 못하기 때문에.

 

 

toolkit 에서는 위의 정보를 이용하여 다음과 같이 명령어를 사용한다.

 

bin/cli.sh nifi current-user \
-ks /home/eye/nifi/conf/keystore.jks \
-ksp ioLA6eYsXG3QiTfatD7uVnVlUttQMCbYtsDgBP2RuRI \
-kst jks \
-ts /home/eye/nifi/conf/truststore.jks \
-tsp /UGJ9PtAwbS1Q+1ZRxs2+NWNun5bHVBqex7fS/k6/fI \
-tst jks

 

-ks 는 keystore

-ksp 는 keystorePasswd

-kst 는 keystoreType

-ts 는 truststore

-tsp 는 truststorePasswd

-tst 는 truststoreType

을 의미한다. 각각 맞는 값을 nifi.properties 에서 복붙하면 된다.

 

(위의 옵션 해설을 bin/cli.sh nifi current-user -h 명령어로 볼 수 있다.)

 

대신 권한이 있어야 CLI 에서 접근이 가능하다. 권한이 없다면 

"Error retrieving current: Unknown user with identity 'CN=..., OU=...'. Contact the system administrator."

이런 에러가 나오기 때문에, NiFi 에서 접근 권한을 챙겨줘야 한다.

 

해보진 않았지만 암호화된 NiFi registry 에 접근하는 것 역시 비슷한 절차를 거칠 것이다.

 

 

 

참고로 NiFi toolkit 도 Docker 버전이 있음.

unofficial 이라고 써있긴 하다만 apache 이름이 붙어있고 pulls 수가 100K+ 인 것으로 보아..

사용해도 될 것 같음.

 

hub.docker.com/r/apache/nifi-toolkit

 

Docker Hub

 

hub.docker.com

 

 

아래 명령어를 통해 실행시키면 된다.

 

docker run --name toolkit -d apache/nifi-toolkit cli
docker exec -it toolkit 'bin/cli.sh'

 

 

 

 

+ Recent posts