기타등등

Ansible 메모장

이잽 2022. 3. 30. 13:55

Ansible이란 요즘 주목되고 있는 IaaC(infrastructure as as Code)중 하나로 인프라 구축, 시스템 관리 측면에서 많이 사용되고 있습니다.

 

Ansible은 다른 IaaC와 다르게 controller 만 존재한다. 이게 무슨 말이냐면 host들 사이에서 서로 명령을 전달하고 정보를 받아 오기 위해서 Server - Agent 구조가 주로 사용됩니다.( controller 노드에서 Sever용 패키지, 관리를 할 노드에서 Agent용 패키지가 설치 되어야함)

 

하지만 Ansible은 agent가 필요 없고 controller 노드에만 ansible을 설치하면 사용이 가능합니다.

리눅스를 사용해봤다면 ssh를 사용하셧을 것입니다. 일반적으로 ssh 연결을 통해 원격 서버에 접속하시니까요. 그리고 서버간의 ssh연결이 되어 있다면 ssh 명령어로도 다른 서버에서 특정 서버의 상태 변경(시스템 확인, 파일 생성, config 변경)이 가능합니다.

이런식으로 말이죠. 하지만 관리해야할 서버가 여러개라면? 이렇게 일일히 지정하여 명령어를 push하는 것은 굉장히 귀찮을 일입니다. 그래서 관리할 서버들을 종류별로 나눌수 있고 한꺼번에 관리 명령어를 ssh를 통해 push 할 수 있는 것이 바로 Ansible입니다. 

 

Ansible을 설치하기 위해서는 EPEL 리파지토리가 있어야 합니다. ( 아마 대부분 없을 것이기 때문에 설치가 필요합니다)

그리고 Ansible을 설치하면 /etc 밑으로 ansible 디렉토리가 생기고 이 디렉토리에는 config파일과 관리할 host들의 정보를 입력하는 hosts 파일이 생성됩니다. 

 

이 사진은 hosts 파일에 webserver란 그룹을 지정한 후 해당 그룹에 속한 노드의 ip를 입력하고 이것의 파일 시스템 정보를 한꺼번에 보고 싶다면 이런식으로 명령어를 입력해 해당 정보를 controller 노드에서 확인 할 수 있습니다. 

(v대신에 b가 눌려서 스펠링 틀렷지만 귀찮...)

관리해야 할 서버거 많을 수록 그리고 이 것을 이용해 자동화하기가 비교적 편리하여 앞으로 시스템 관리 측면에서 많이 쓰일 것 같은 기술입니다. 

'기타등등' 카테고리의 다른 글

cs 면접 질문 - 컴퓨터 구조 / OS  (0) 2022.04.12
x86 서버란?  (0) 2022.04.10
리눅스(Ubuntu)환경에서 Bazel 설치하기  (0) 2021.02.05
인터프리터언어와 컴파일러 언어  (0) 2021.01.06