Installation

  1. Download the dataset file indicated above and check the MD5 hash to ensure integrity.
  2. Install Splunk Enterprise and the apps/add-ons listed in the Required Software section below.
    It is important to match the specific version of each app and add-on.
  3. Unzip/untar the downloaded file into $SPLUNK_HOME/etc/apps
  4. Restart Splunk
  5. The BOTS v2 data will be available by searching:

    index=botsv2 earliest=0

    Note that because the data is distributed in a pre-indexed format,
    there are no volume-based licensing limits to be concerned with.

 

  • Splunk Windows 버전 다운로드  
  • BOTS 버전에 맞는 Required Software 에 있는 add-ons 다운로드 및 활성화
  • BOTS 버전에 맞는 Dataset 다운로드 및 압축풀기
  • Splunk Stop 시키기
  • 압축 푼 Dataset 을 apps 하위 경로로 옮기기 
  • 다시 Splunk Start 시키기 
  • index=botsv2 earliest=0 인덱스로 검색되는지 확인하기 

 

(참고) apps 경로 및 Splunk Restart 방법 

 c:\Program Files\Splunk\etc\apps 

 cd c:\program files\splunk\bin

 splunk stop
 splunk enable webserver
 splunk start

 

작업이 잘 이루어졌을때, 그로서 모든 일이 끝이 납니다. 

그러려면 실제로 작업을 수행하고, 잘 수행되었는지 검증도 해야하죠

 

파일을 배포하고 난 뒤 다음 스텝으로 

 

설치하고, 잘 설치되었는지 확인해봅시다 

 

참조할 샘플 예제는 이거입니다. sh (스트립트) 파일을 배포하고 실행해볼꺼예요.

 

sh 안에는 txt 파일을 만드는 걸 넣을꺼고, 실제로 txt 파일이 생성되었는지까지 앤서블로 확인해보죠!

 

일단 첫번째로 sh 파일을 만들어야겠죠?

 

echo have a nice day > /tmp/sample.txt

 

지난 번에 쓰인 이 명령어 기억하신다면 우려 먹겠습니다. 

자 sh(스크립트)를 이제 다 만들었습니다. 이걸 뿌려볼께요. 

 

당연히 playbook을 사용해줘야겠죠? 저희 입맛에 맛추어 소스 코드를 수정합니다.

 

자 이제 두구두구 한번 돌려봅시다. 제발 초록불!! 

 

task 이름을 보면 어떤 작업이 이루어졌는지 확인 할 수 있고, 모든 작업이 완료되었습니다. 

 

한번 sh (스크립트)가 제대로 돌았는지 확인해보죠.

 

제대로 동작했다면 txt 파일이 생기고, 파일을 확인할 수 있겠죠. 

 

 

성공적으로 스크립트가 돌았습니다. 

 

하지만 이마저도 너무 귀찮습니다. 

 

tmp에 letter가 생겼는지 확인할 방법은 없을까요?

 

 

이번엔 이걸 활용해보죠.

 

파일이 있다면 register에 등록하고, 그 값이 있는지 여부에 따라서 스크립트를 재설치 해줍니다. 

 

파일이 없을 시 번거로운 재설치 작업을 수행하게 해주는 녀석인거죠.  

 

 

자 이렇게 플레이북을 만들었다면, 검증을 위해 한번 txt 파일을 하나만 삭제해봅시다.

자 129 노드에서 깔끔하게 지워진걸 확인했습니다. 한번 동작시켜 볼까요?

자 이제 다시 129 노드로 들어가보죠 

 

이렇게 정상적으로 재설치가 동작하는 걸 확인했습니다. 

 

 

우리가 만약 1000개의 편지를 1000개의 집에 보내야한다고 생각해봅시다.

 

어떤 방법이 제일 시간을 아낄 수 있을까요?

 

배달기사는 일일히 집집마다 방문해서 우편물을 보내줍니다.

 

그냥 심플하게 배달기사를 고용하면 됩니다. 

 

우리의 배달기사는 앤서블 입니다. 

 

그리고 배달기사가 보내야할 주소는 hosts 파일에 정의가 되어있죠. 

 

또, 어떤 물건을 어떻게 전달할지는 playbook에 정의가 되있습니다. 

 

 

앤서블로... 파일 배포를 한다... 어떻게요? 찾아보면 됩니다. 

 

우리에겐 구글링이 있으니까요. 

 

echo have a nice day > /tmp/sample.txt

 

우선 편지는 이렇게 한번 작성해볼께요. 

 

그리고 어떻게 전달할지는 위에 보이는 것처럼 하되, 

 

음 저희는 좀 커스텀하게 만들어볼께요. 

 

root 는 굳이 필요가 없을거 같아요. 

그리고 대상 경로는 /tmp/ 여도 괜찮을거 같네요. 

 

 

 아주 쉽게 전송에 완료했네요. 정말 편합니다.

 

여기에서 1000대로 늘어나도 hosts 부분에 추가만하면 똑같은 작업을 반복해서 수행할 필요가 없습니다. 

 

그럼 작업이 잘 동작했는지 확인해볼까요? 

 

have a nice day라는 내용의 txt 파일이 잘 전송된 것을 확인할 수 있습니다. 

 

궁금한게 있는데요. 

 

한번 더 실행하면 어떻게 되나요? 

 

 

다른 점이 보이시나요? 이게 바로 앤서블의 유용한 점입니다. 왜 그런지는 차차 알아보도록 하죠! 

 

다음 해야 할 일은 설치 작업이겠죠?! 

 

바로 해봅시다! 

3화에서 본 그림을 생각해봅시다. 

 

음... 이거 처음 구축환경이 쉽지 않겠는데? 

 

그래도 존버는 승리합니다. 

 

일단 환경을 구축해보죠. 

첫번째로 앤서블 노드가 필요하겠네요? 

 

앤서블 서버를 만든담엔 그 대상이 될 다른 노드도 필요하게 될 겁니다. 

 

한.. 4개(앤서블 노드 1개 + 배포 대상 노드 3개)의 리눅스 노드를 만들어서 시작을 해봅시다. 

 

저는 윈도우 PC를 사용하고 있고 RAM이 꽤 넉넉합니다. 

 

그래서 여러개의 가상 PC를 제 PC에서 돌릴꺼예요. 

 

사용하는 도구로는 VMware Workstation Pro를 사용해볼께요.

 

이건 여담인데, Player를 안쓰고 

 Pro를 사용하는 이유는 여러 개의 가상환경을 복제해서 빨리 환경을 구축하기 위함입니다.

 

그냥 그렇다구요. ㅎㅎ

 

그러는 어느새 첫번째 앤서블용 노드가 만들어졌습니다. 

그리고 이렇게 야무지게 Full Clone으로 나머지 배포대상 노드 3대도 만들어 주었지요. 

 

자 이제 환경은 준비가 되었습니다. 그럼 각 환경의 IP 정보를 확인해보죠. 

 

아래 처럼 구성이 되었네요. 

 

앤서블 노드 : 192.168.70.128 

배포 노드 : 192.168.70.129 192.168.70.130 192.168.70.131

 

이런 구성을 확인하는 거 마저 귀찮았습니다. 

 

아래처럼 ifconfig 를 모두 설치해줘야 했거든요. 

 

이런식으로 3대의 노드에 깔려있는지 확인하고 안깔려있으면 설치하는 작업은 매우 귀찮을 것입니다. 

 

자 그럼 다시 앤서블 노드로 들어가서 필요한 구성을 살펴보죠. 

 

 

https://www.9tut.com/ansible-tutorial

여기 또한번 다른 그림을 가져왔습니다. Playbook에 task를 정의하는 부분을 보려고 말이죠. 

 

Playbook을 통해서 task는 말 그대로 일감이 될텐데요. 위에 예시를 보자면 ifconfig를 사용하기 위해 net-tools를 설치하는 작업 또한 하나의 task가 될 수 있겠군요. 

 

그리고 실제 Playbook의 예시를 봐보죠. 

 

지금은 감만 잡아도 괜찮습니다. 뭔가 규칙이 있어보이네요?

 

그럼 한번 3대의 대상이 잘 살아있는지 먼저 문을 두드리러 가볼까요. 

 

 

# vi /etc/ansible/hosts

 

이 명령어로 hosts 파일을 수정해줍니다. 

대상을 지정하는 작업이죠. 

 

[clients]
192.168.70.129
192.168.70.130
192.168.70.131

 

이렇게 라인에 추가해주면 대상 지정은 끝입니다. 

 

그런담에 ping 명령어로 연결이 되었는지 확인해보는 거예요! 

 

 

왜일까요? 빨간색 화면을 보니 실패인가.. fail를 보니 실패가 분명합니다. 

 

좀 더 확인해 보죠. 

 

Failed to connect to the host via ssh: ssh: connect to host 192.168.70.129 port 22: Connection refused

 

이 구문을 구글링해보면 답이 다 나옵니다. 

 

# sudo apt-get install openssh-server

 

이걸 또 대상 서버마다 다 해주어야하는군요...! 

 

흠 빠르게 앤서블 설정을 마치고 설치파일을 쫙쫙 뿌려보죠. 

 

다음 난관이네요. 또 무슨 문제일까요. 아마도 계정이 문제일거 같은데... 일단 한번 구글링을 다시 해봅시다. 

 

hosts에 username과 password를 지정해줍니다. 

 

그런데 그다음에도 에러가 뜨네요.

 

 

ping : pong 이 뜨면 연결이 된 상태입니다. 오호.. 근데 맨 위에 있는 130번 노드가 문제네요. 

 

아래와 같이 구글링한 정보를 활용해서 False 설정을 한번 해보죠. 

 

이렇게 하니까 모든 연결이 완료되었습니다~! 

 

똑같은 핑테스트를 Play book을 통해서 날려볼까요? 

 

일단 이러한 .yml 형식의 파일을 한번 만들어보죠. 

 

$ ansible-playbook -i inventory ping_test.yml

 

그담에 명령어를 날리면 실행이 됩니다. 

 

 

위 명령어를 날리려면 inventory 디렉토리가 만들어져 있는 상태여야합니다.

mkdir 명령어로 디렉토리를 만들고 이전에 사용한 hosts 파일도 옮겨줍니다. 

 

그럼 동작을 제대로 할까요?

 

자 이제 첫번째 앤서블 동작을 마쳤습니다. 

 

여기서 playbook을 조금 더 수정하면 많은 동작이 가능해지겠죠? 

 

첫번째로 그럼 일반 txt 파일을 모든 대상 노드에 뿌려볼까요?

 

 

+ Recent posts