Basic Configure CloudHub
- 1 Quick start options
- 1.1 Main Option 수정
- 1.1.1 TLS 설정
- 1.1.1.1 Self-signed 인증서 사용
- 1.1.1 TLS 설정
- 1.2 Option 파일 수정
- 1.1 Main Option 수정
- 2 Start CloudHub Service
Installing Server Node 를 통해 CH Server가 설치되었다고 가정합니다.
Quick start options
익숙하지 않은 사용자를 위해, Quick Start를 하기 위한 필수 옵션들만 사용합니다.
Main Option 수정
아래 Environment
필드에서 Bind IP, Listenning Port, DB 파일 저장 위치 등을 변경할 수 있습니다.
일반적으로 8888 포트를 사용하며 다른 포트를 사용해야 하는 경우는 Nginx의 Config의 apps 포트를 같이 수정 후 Nginx를 reload해야 합니다. TLS_CERTIFICATE
옵션으로 default로 제공되는 self-signed cert파일을 Trusted Signed Cerificates으로 대체할 수 있습니다.
BOLT_PATH
는 CloudHub가 사용하는 메타데이터(User/Group/Data source 정보, Dashboard 좌표 정보 등 시계열 수집 데이터가 아닌 관리용 데이터) DB의 데이터 저장 경로입니다.
ETCD_ENDPOINTS
는 BOLT_PATH
의 클러스터 용도로 사용하기 위한 Key-value 스토어이며, 아래 예제와 같이 ','로 구분하여 나열합니다.
차후, IP가 변경될 때를 위하여, Domain(/etc/hosts
파일에 등록 등)으로 등록하기를 권장합니다.
그밖에 CANNED_PATH
, PROTOBOARDS_PATH
에 대해서는 Making a pre-created chart 를 참조합니다.
$ sudo vim /etc/systemd/system/multi-user.target.wants/cloudhub.service
[Unit]
After=network-online.target
[Service]
User=root
Group=root
Environment="HOST=0.0.0.0"
Environment="PORT=8888"
Environment="TLS_CERTIFICATE=/usr/lib/cloudhub/key/cloudhub_self_signed.pem"
#Environment="TLS_PRIVATE_KEY=my.key"
Environment="BOLT_PATH=/var/lib/cloudhub/cloudhub-v1.db"
#Environment="ETCD_ENDPOINTS={ETCD_HOSTNAME01}:2379,{ETCD_HOSTNAME02}:2379,{ETCD_HOSTNAME03}:2379"
Environment="CANNED_PATH=/usr/share/cloudhub/cloudhub-canned"
Environment="PROTOBOARDS_PATH=/usr/share/cloudhub/cloudhub-protoboards"
EnvironmentFile=-/etc/default/cloudhub
ExecStart=/usr/bin/cloudhub $CLOUDHUB_OPTS
KillMode=control-group
Restart=on-failure
[Install]
WantedBy=multi-user.target
TLS 설정
위 예제에서 TLS_CERTIFICATE
와 TLS_PRIVATE_KEY
에 공인된 인증서 및 private key 파일의 경로를 지정합니다.
TLS 인증서와 키가 모두 동일한 파일에있는 경우 TLS_CERTIFICATE
환경 변수만 사용하여 지정합니다.
Self-signed 인증서 사용
도메인이 없이 IP로만 사용할 경우는 공인된 인증서 발급이 되지 않으므로, 아래와 같이 self-signed 인증서-키 파일을 생성/사용하도록 합니다.(유효 기간 즉, -days
옵션은 사용 환경에 따라 적절한 값으로 설정하도록 하며, openssl 버전에 의존성이 있으므로 리눅스 서버 즉, CH 서버가 설치된 호스트에서 실행하는 편이 좋습니다.)
$ cd /usr/lib/cloudhub/key/
$ openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout cloudhub_self_signed.pem -out cloudhub_self_signed.pem -subj "/CN=localhost" -days 365
$ openssl rsa -in cloudhub_self_signed.pem -text > cloudhub_self_signed.key
$ openssl x509 -inform PEM -in cloudhub_self_signed.pem -out cloudhub_self_signed.crt
위 명령으로 생성된 파일을 위 TLS_CERTIFICATE
의 경로에 복사한 후, Cloudhub를 [재]실행합니다.
실행 방법은 아래 Start CloudHub Service 섹션 참고합니다.
Option 파일 수정
CloudHub는 user 인증 및 Role base access control을 위해, OAuth 2.0(RFC 6749)을 지원하는 Provider들과의 연계 및 JWT(RFC 7519) 인증 방법을 사용합니다.
아래는 구체적 예시이며, 사용 환경에 따라 적절히 변경하여야 합니다.
$sudo vim /etc/default/cloudhub
CLOUDHUB_OPTS="-l=debug \
--auth-duration=0 \
--inactivity-duration=10m \
-t=74c1e9e2450886060b5bf736b935cd0bf960837f \
-i=<client-id> \
-s=<client-secret> \
--public-url=https://localhost \
--auth0-domain=https://cloudhub.auth0.com \
--auth0-client-id=<client-id> \
--auth0-client-secret=<client-secret> \
-u=salt:http://{salt-master-ip}:8000/run \
-k=salt:<salt_token> \
-u=swan:https://{swan-IP}/api/v1/graphql \
-k=swan:<swan_token> \
-u=oncue:<port> \
-u=vsphere:on \
-u=aws:on \
-u=k8s:on \
-u=osp:on \
-u=salt-env-path:/opt/miniconda3/envs/saltenv \
--login-auth-type=basic \
--password-policy='(?=.*[0-9]{1,50})(?=.*[~`!@#$%\\^&*()-+=]{1,50})(?=.*[a-zA-Z]{2,50}).{8,50}$' \
--password-policy-message='Enter at least 8 digits using at least 1 number and at least 1 special sentence, and at least 2 English characters.' \
--mail-subject='[Notifiy] $user_id Password is reset' \
--mail-body-message='Reset OTP for $user_id is '$user_pw'.<br>Do not forget this!<br>This OTP will use just once when login into cloudhub.<br>Then you must set up the new password' \
--kapacitor-url=http://{Kapacitor_IP}:9094 \
--external-exec=/usr/bin/python \
--external-exec-args=/basic/call.py \
--influxdb-url=http://{InfluxDB_IP}:8086 \
--retry-policy=count:3 \
--retry-policy=delaytime:5 \
--retry-policy=type:delay"
옵션 설명
Option | Description |
---|---|
-l, --log-level [debug|info|error] | 생략시 info, 최초 사용 시에는 오류 검출을 위해 debug 모드 사용 권장. |
--auth-duration |
|
--inactivity-duration |
|
-t, --token-secret | Access token 발급용 JWT Signature를 생성하기 위한 secret key. 간단히, 아래와 같은 openssl 명령어로 생성할 수 있습니다. 이외에 생성 방법은 Goolge, github 등의 공식 사이트에서 토큰 발급을 지원합니다. |
--public-url | CloudHub portal의 도메인 혹은 IP로 대체합니다. |
--auth0-domain | 위 예시의 토근들을 사용하면, OAuth 2.0 인증 방식의 만일, 별도의 토큰을 발급받아 사용하고자 한다면, (혹은 다른 종류의 즉, github, google등의 인증 서비스를 사용하고자 한다면)Managing CloudHub security 를 참조합니다. 만일 어떠한 종류의 인증 관련도 설정하지 않으면, |
--auth0-client-id | |
--auth0-client-secret | |
-i, --github-client-id -s, --github-client-secret | OAuth 인증을 위한 GitHub Client ID 값입니다. OAuth 인증을 위한 GitHub Client Secret 값입니다. |
-u, --addon-url [salt|swan] | CloudHub가 지원하는 특정 기능을 위한 모듈과의 연동을 위한 API URL.
|
기타 CloudHub Server Option 으로 사용
| |
-k, --addon-tokens [salt|swan] | 위 API에 대한 Accessable Token.
|
--login-auth-type | CloucHub Portal의 Login Type을 지정합니다. (default : oauth)
|
--password-policy | 비밀번호 정규식
|
--password-policy-message | 비밀번호 정규식 메세지 |
--mail-subject | 비밀번호 Reset Mail 제목 |
--mail-body-message | 비밀번호 Reset Mail 내용 |
--kapacitor-url | 비밀번호 Reset Mail 발신 서버 (Kapacitor Alert Endpoint에 SMTP가 설정되어 있어야 합니다.) |
--external-exec --external-exec-args | 비밀번호 Reset 알림을 위한 외부 프로그램 경로 비밀번호 Reset 알림을 위한 외부 프로그램 실행 파일 경로 |
--influxdb-url | Acitivity Logging을 위한 Influxdb 서버 URL |
--retry-policy | Login 차단 정책
|
kapacitor mail과 external program 옵션 모두 설정되었을 때 처리 순서
(상호 배타적으로 실행됨)
external program(
--external-exec
,--external-exec-args
)kapacitor mail(
--kapacitor-url
)
두 옵션 중에 사용할 1개만 설정하기 바라며,
만일, 관리자에 의한 password reset만 사용 시, 위 두 개 옵션 모두 적용하지 않습니다.
Start CloudHub Service
CloudHub Service 시작
아래와 같이 정상 실행되었는지 확인할 수 있습니다.