DevOps 잡다구리

Ansible을 이용하여 Elastic Stack 설치

WhiteGoblin 2021. 11. 3. 22:05
반응형

우연한 기회로 ansible 을 접하고 좋다고 느끼고 있었는데 해당 사항을 이용해야 하는 상황이 왔습니다. 

 

요즘은 쿠버네티스 같은 툴이 있어서 소프트웨어를 설치함에 있어서 굉장히 편리해졌지만 실제 생활에서는 여전히 베어 메탈( bare metal ) 위에 소프트웨어를 설치해야 하는 경우가 부지기수다. 

 

그러던 중 최근에 핫하게 이용되고 있는 elasticsearch 를 사용해야 하는 상황이 왔는데 elasticsearch 를 쿠버네티스 위에서 이용하는 경우 라이센스가 무척이나 비싸기에 베어 메탈에 설치하여 이용하기로 하였다.

 

우선 노드에 들어가서 하나 하나 설치하는 것은 비효율적이기에 ansible 을 이용하여서 설치하기로 한다. 

 

https://www.ansible.com/overview/how-ansible-works

 

How Ansible Works | Ansible.com

Ansible is an IT orchestration engine that automates configuration management, application deployment and many other IT needs.

www.ansible.com

위 링크에 ansible 에 대한 대략적인 설명이 되어 있다, 한국어가 아닌것은 아쉽지만 그래도 알아두면 손해 볼것이 없는 도구이다. 

정리하면 

 

" 프로그램 설치를 도와주는 좋은 친구 "

 

정도로 이해하면 될 거 같다. 

 

우선 ansible 을 사용하기 위해서 ssh-copy-id 를 통해 키를 복사해준다. 

 

ssh-copy-id {username}@{ip} -p {port}

 

위와 같이 설치하고자 하는 노드에 일일이 추가해준다. 

 

ssh-copy-id user@192.168.1.200 -p 22 
ssh-copy-id user@192.168.1.201 -p 22 
ssh-copy-id user@192.168.1.202 -p 22

 

위 코드는 예시이다.

 

이러한 것을 해주는 이유는 ansible 이 기본적으로 ssh 통신을 통해서 해당 소프트웨어를 노드에 설치하기 때문이다. \

 

이제 ansible 을 이용해서 소프트웨어를 설치하기 위해서 playbook 을 이용해야한다. 

 

https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html

 

Intro to playbooks — Ansible Documentation

A playbook runs in order from top to bottom. Within each play, tasks also run in order from top to bottom. Playbooks with multiple ‘plays’ can orchestrate multi-machine deployments, running one play on your webservers, then another play on your databas

docs.ansible.com

위 글이 공식 문서이기는 하지만 너무 길어서 시간을 날때 짬짬이 확인하는게 좋을 거 같다. 

 

https://digitalvarys.com/how-to-write-an-ansible-playbook/

 

How to Write an Ansible Playbook. - Ansible Tutorial - Digital Varys

Running ansible with Playbook is more powerful. This is the article about How to Write an Ansible Playbook with example code snippets.

digitalvarys.com

 

위 글에서 나오는 이미지를 보는게 보다 이해하기 쉬울 거 같다.

 

쉽게 정리하자면 

 

inventory 는 내가 설치하고자 하는 노드의 정보 및 그러한 노드에 접근하기 위한 정보 그리고 playbook 은 설치 과정을 하나로 모아 둔것이라고 보면 된다.

 

다시 본론으로 들어와서 elastic stack 을 설치하기 위한 playbook 을 가지고 온다. 

 

https://github.com/elastic/ansible-elasticsearch

 

GitHub - elastic/ansible-elasticsearch: Ansible playbook for Elasticsearch

Ansible playbook for Elasticsearch. Contribute to elastic/ansible-elasticsearch development by creating an account on GitHub.

github.com

 

elasticsearch 에서 공식 지원해주는 ansible playbook 이다. 글을 쓰는 현재 기점으로 최신 elasticsearch 도 지원해주고 있다. 

 

많은 영어가 있지만 간추려서 본론으로 들어가면 

 

git clone https://github.com/elastic/ansible-elasticsearch.git
cd ansible-elasticsearch

 

다운을 받아서 파일로 들어가서 설치해줄 호스트에 대해서 추가해준다.

 

touch hosts.yml

 

hosts.yml 의 내용은 

all:
  hosts:
    node:
      ansible_ssh_port: 22
      ansible_host: 192.168.1.200
      ansible_user: user
      ansible_become: yes
      ansible_sudo_pass: password

우선은 노드 한개로 설치하는 과정을 진행하겠다. 

 

설치할 호스트를 정의했으니 playbook 을 가지고 온다. 

 

playbook.yml

- name: Simple Example
  hosts: localhost
  roles:
    - role: elastic.elasticsearch
  vars:
    es_version: 7.15.1

 

이제 이 둘을 조합하는 일만 남았다. 

ansible-playbook -i hosts.yml playbook.yml

 

실제 노드에 올렸던 로그를 올리고자 하는데 아쉽게도 찍어서 올리지 못했다. 

 

이후 systemctl status elasticsearch 를 하면 해당 소프트웨어가 돌아간다는 것을 확인할 수 있다. 

 

향후 해당 멀티 노드에 설치할 때 상세하게 결과물을 보여줄 수 있도록 하겠다. 

반응형