'2021/02'에 해당되는 글 8건

  1. 2021.02.22 [Spring] 멀티모듈 프로젝트 jar SKIPPED
  2. 2021.02.15 [JQuery] Selectors 링크
  3. 2021.02.15 [Metricbeat] Module enable/disable.
  4. 2021.02.09 [Elastic] Enterprise Search - App Search JSON Document.
  5. 2021.02.04 [Elastic] Workplace Search ...
  6. 2021.02.03 [Intellij] 가끔 Dependency Lib 빨갱이 발생
  7. 2021.02.02 [Elastic] Elasticsearch Cluster 구성하기 based on IaC 1
  8. 2021.02.01 [Docker] ARG 와 ENV 사용 예제.

[Spring] 멀티모듈 프로젝트 jar SKIPPED

ITWeb/개발일반 2021. 2. 22. 18:24

intellij community 를 사용하고 있는데 다른 사람은 다 되는게 나만 안되어서 설정을 고쳐서 해결 했습니다.

다른 사람들은 intellij ultimate 사용 하고 있습니다.

 

Multi module web 프로젝트 실행 시 submodule 만 동작해서 원인을 찾아 보고 해결했습니다.

 

원인은)

> Task :base:compileJava UP-TO-DATE
> Task :base:processResources NO-SOURCE
> Task :base:classes UP-TO-DATE
> Task :base:jar SKIPPED
> Task :custom:compileJava UP-TO-DATE
> Task :custom:processResources NO-SOURCE
> Task :custom:classes UP-TO-DATE

 

해결은)

project(":base") {
  jar{
    enabled = true
  }
}

 

근데 왜 나만 저렇게 설정을 해줘야 하는지는 못 찾았습니다.

아시는 분은 제보 좀...

:

[JQuery] Selectors 링크

ITWeb/개발일반 2021. 2. 15. 11:03

https://www.w3schools.com/jquery/jquery_ref_selectors.asp
http://gregfranko.com/jquery-best-practices/#/5

 

저는 주로 id selector 를 사용 합니다.

 

:

[Metricbeat] Module enable/disable.

Elastic/Beats 2021. 2. 15. 10:05

[Enable]
$ ./metricbeat modules enable apache mysql

 

[Disable]
$ ./metricbeat modules disable apache mysql

:

[Elastic] Enterprise Search - App Search JSON Document.

Elastic 2021. 2. 9. 11:30

App Search 에서 JSON Document 색인을 하려다 보니, 에러가 발생을 해서 기록해 둡니다.

Elasticsearch 에서는 문제가 안되는 부분 입니다.

 

Field 명 작성 시 주의 사항)

- lowercase 로 작성이 되어야 합니다.

 

처음 부터 문서 설계 시 lowercase 로 설계 하시기 바랍니다.

이미 대소문자가 섞여 있는 것들에 대한 추가 작업이 필요 한데 왜 안쓰는지 알겠네요.

:

[Elastic] Workplace Search ...

Elastic 2021. 2. 4. 11:22

업무 협업 도구들이 많이 나오면서 생산 되는 정보와 문서에 대한 검색 Needs 가 생기는 건 자연 스러운 현상이라고 생각 합니다.

개인적으로는 대부분 오픈소스를 이용해서 개발 환경을 구성하고 사용을 하고 있다 보니 비용이 발생 하는 도구를 선택 하기가 쉽지 않은 건 또 다른 현실 인것 같습니다.

 

https://www.elastic.co/guide/en/workplace-search/current/workplace-search-install.html

 

Elastic 사에서 무료로 제공 하고 있는 Workplace Search 라는 것이 있습니다.

Enterprise Search 에서 제공 하는 서비스 입니다.

 

저는 개인적으로 Slack 에 대한 사용을 해보고 싶어서 구성해서 테스트를 진행하려 했는데요.

ㅠ.ㅠ

 

Slack 하필 Content Sources 중 현재 유료 버전에 속한 것중 하나 더라구요.

그냥 이거 무료로 풀어 주시면 참 좋을 텐데 말입니다.

 

Workplace Search 에서 무료로 추가해서 사용 할 수 있으면 너무 편하겠지만 이게 안된다고 하면,

그냥 Slack API 를 이용해서 메시지를 가져와 Elasticsearch 로 직접 색인 하는 방법으로 진행 하면 되긴 합니다.

 

어차피 Enterprise Search 에서 Workplace Search 라는 게 독립적으로 동작 하는 방식이 아닌

    Slack <---> Workplace Search Slack Content Source 등록 <---> Elasticsearch

와 같이 동작 하니까 말이죠.

 

그럼에도 불구하고 Slack, Gmail 을 제외 하고 나머지는 무료 이니 필요 하신 분들은 잘 활용 하시면 업무에 도움이 되지 않을까 생각 합니다.

 

:

[Intellij] 가끔 Dependency Lib 빨갱이 발생

ITWeb/개발일반 2021. 2. 3. 10:55

Intellij 를 이용해서 개발을 진행 하다 보면 가끔 dependency lib 설정과 다운로드가 정상적으로 되어 있음에도 불구 하고 관련 클래스를 못찾거나 lib 을 못찾을 때가 있습니다.

그럴 때는 그냥 리셋 한번 하는게 맘 편할 때가 있습니다.

최근 제가 두 번이나 발생을 해서 기록해 봅니다.

 

[Gradle]
https://docs.gradle.org/current/userguide/what_is_gradle.html

.gradle 폴더 안에 들어 있는 것들 다 삭제 합니다.

 

[Maven]
https://maven.apache.org/what-is-maven.html

.m2 폴더 안에 들어 있는 것들 다 삭제 합니다.

 

:

[Elastic] Elasticsearch Cluster 구성하기 based on IaC

Elastic 2021. 2. 2. 12:04

https://github.com/HowookJeong/ecos-installer-web

배포 및 실행 가이드

Prerequisite)

  • bastion machine 은 ubuntu 를 사용 합니다.
  • bastion 및 ec2 instance 에 ssh tunnuling 을 위한 key pairs 생성을 합니다.
  • 로컬 장비에서 실행 하기 위해 계정의 access/secret key 생성을 합니다.

Step 1) Local 실행 환경 구성

$ aws configure --profile ecos 

Put region : ap-northeast-2
Put output : json
Put access key : xxxxxxxxxxxxxx
Put secret key : xxxxxxxxxxxxxx
Put key pairs file to ~/.ssh/

 

Step 2) Terraform & Ansible 환경 설정

$ vi docker-compose.yml

 environment:
 ...중략...
   - serverPort=${SERVER_PORT}
   - configWorkingPath=/tmp/home/mzc/app
   - configTerraformAwsBastionIp=${BASTION_IP}
   - configTerraformAwsSecurityGroup=sg-xxxxxxxxxxxxxxxx
   - configTerraformAwsAz=ap-northeast-2a
   - configTerraformAwsAmi=ami-061b0ee20654981ab
   - configTerraformAwsSubnet=subnet-xxxxxxxxxxxxxxxx
   - configTerraformAwsKeyName=ec2key-gw
   - configTerraformAwsPemFile=ec2key-gw.pem
   - configTerraformAwsPathElasticsearch=/tmp/home/mzc/app/terraform/_CLUSTERNAME_
   - configTerraformAwsPathKibana=/tmp/home/mzc/app/terraform/_CLUSTERNAME_/kibana
   - configTerraformAwsBackendBucket=megatoi-terraform-state
   - configTerraformAwsBackendKeyElasticsearch=_CLUSTERNAME_/terraform.tfstate
   - configTerraformAwsBackendKeyKibana=_CLUSTERNAME_/kibana/terraform.tfstate
 volumes:
 ...중략...
   - /Users/계정/.aws:/root/.aws
   - /Users/계정/.ssh:/root/.ssh

 

Step 3) 배포 된 docker image load

$ sudo docker load -i ecos-installer-web-0.0.1.tar

 

Step 4) 컨테이너 실행/중지

$ ENV=dev TAG=0.0.1 REDIRECT_HTTPS=true SERVER_PORT=8081 docker-compose up -d

$ ENV=dev TAG=0.0.1 REDIRECT_HTTPS=true SERVER_PORT=8081 docker-compose down

Local 개발 환경

  • $ cd .aws
  • $ aws configure --profile ecos
  • $ vi config

[profile ecos]

region = ap-northeast-2

output = json

  • $ vi credentials

[ecos]

aws_access_key_id = xxxxxxxxxxxxxxxxx

aws_secret_access_key = xxxxxxxxxxxxxxxxxx

Project Docker Compose 설정

...중략...
    volumes:
      - /Users/mzc02-henryjeong/.aws:/root/.aws
      - /Users/mzc02-henryjeong/.ssh:/root/.ssh
      - /Users/mzc02-henryjeong/Temp/logs:/home/mzc/logs
      - /var/run/docker.sock:/var/run/docker.sock
      - /Users/mzc02-henryjeong/Works/app/terraform:/home/mzc/backup/terraform
...중략...
  • aws 접속 및 ssh 터널링을 위해 관련 path 에 대한 mount 를 합니다.

Build Step

  • $ ./gradlew clean build bootJar -Pprofile=dev -x test
  • $ docker build --build-arg BASTION_IP=xxx.xxx.xxx.xxx --tag ecos-installer-web:0.0.1 .
  • OR $ ENV=dev TAG=0.0.1 REDIRECT_HTTPS=true SERVER_PORT=8081 docker-compose build
  • $ ENV=dev TAG=0.0.1 REDIRECT_HTTPS=true SERVER_PORT=8081 docker-compose up
  • $ ENV=dev TAG=0.0.1 REDIRECT_HTTPS=true SERVER_PORT=8081 docker-compose down
  • $ docker image ls
  • $ docker rmi -f 7f52709a6615
  • $ docker exec -it ecos-installer-web /bin/sh
  • $ sudo docker save -o ecos-installer-web-0.0.1.tar ecos-installer-web:0.0.1
  • $ sudo docker load -i ecos-installer-web-0.0.1.tar

Terraform path 와 Elasticsearch Cluster 명명 규칙

  • Terraform File Path : /tmp/home/mzc/app/terraform/${CLUSTERNAME}/${TIMESTAMP}
  • Backend Key : ${CLUSTERNAME}/${TIMESTAMP}/terraform.tfstate
  • 신규 생성 시
    • Step 1) Terraform File Path : /tmp/home/mzc/app/terraform/elasticsearch
    • Step 1) Backend Key : elasticsearch/terraform.tfstate
  • 추가 시
    • Step 1) Terraform File Path : /tmp/home/mzc/app/terraform/elasticsearch/1598860075233
    • Step 1) Backend Key : elasticsearch/1598860075233/terraform.tfstate
    • Step 2) Backend Key : elasticsearch/1598860075233/terraform.tfstate
    • 기존 클러스터에 Join 시키기 위해 master ip 정보를 구해야 함

생성 및 설정

  • aws account access/secret key 생성
  • aws configure 설정
  • bastion 서버 생성
  • vpc 내 정보 설정
    • security group
    • subnet
    • az
    • ec2 네트워크 및 보안에서 키 페어 생성 및 등록 (keyName, keyPem)
    • ami
  • terraform 정보 설정
    • terraform working path 설정
    • terraform backend 설정
  • aws cluster instance 설정
    • node topology 설정 (node 유형)
    • instance type 설정 (cpu, mem, network 성능)
    • instance size 설정 (node 규모)
    • disk volume size 설정 (elasticsearch storage)
  • elasticsearch cluster 설정
    • cluster name 설정
    • 설치를 위한 elasticsearch version 지정
    • port 설정 (http, tcp)
    • path.data/logs 설정
  • ansible 설정
    • working path 설정
    • bastion ip 설정

Service Flow

  • TerraformService

    • terraform
      • createTerraformS3Backend
      • readTerraformTemplateForElasticsearch
      • writeTerraformTemplateForElasticsearch
      • runTerraformTemplateForElasticsearch
      • backupTerraformTemplateStateForElasticsearch (if it is not s3 backend)
  • ElasticsearchService

    • docker
      • createDockerComposeConfiguration
    • ansible
      • createAnsibleInventories
      • createAnsibleRoles

runAnsiblePlaybook

:

[Docker] ARG 와 ENV 사용 예제.

Cloud&Container/IaC 2021. 2. 1. 14:55

 

https://docs.docker.com/engine/reference/builder/#arg
https://docs.docker.com/engine/reference/builder/#env
https://docs.docker.com/compose/reference/build/
https://docs.docker.com/compose/environment-variables/

 

docker build 시 --builg-arg 를 사용 할 때가 있는데요.

arg 와 env 에 대한 차이를 이해 하고 사용 하면 좋을 것 같아 기록해 봅니다.

 

제가 하고 싶었던 건 아래와 같습니다.

 

파일 구조)

ㄴ .env
ㄴ docker-compose.yml
ㄴ Dockerfile

$ docker build --build-arg BASTION_IP=xxx.xxx.xxx.xxx --tag ecos-installer-web:0.0.1 .

 

여기서 --build-arg 를 사용하지 않고 build 를 하고 싶었습니다.
그래서 .env 를 구성 하고
docker-compose 를 이용해서 build 를 하는 방식으로 변경을 했습니다.

 

.env 에 BASTION_IP 추가)

BASTION_IP=xxx.xxx.xxx.xxx

 

Dockerfile 에 ARG 추가)

ARG BASTION_IP
...중략...
ENV configTerraformAwsBastionIp $BASTION_IP

 

docker-compose.yml 에 build 추가)

build:
  context: .
    args:
      - BASTION_IP=${BASTION_IP}

 

이렇게 변경 하고 docker build 를 하지 않고 docker-compose build 로 처리 했습니다.

$ docker-compose build or docker-compose up

 

: