Ansible

Ansible의 기초 이론 및 CentOS7에 설치

Joon0464 2021. 7. 11. 15:06

Ansible이란?

대표적인 DevOps 툴로 서버마다 대상 및 변수를 지정하여 서버를 구성 하기에 적합한 도구이다. 

  • 패키지 설치, 설정 변경, 파일 전송, 서비스 시작/정지 등을 원격 조작이 가능하다.
  • 서버, 네트워크, 서비스, 로드 벨런스, 방화벽 설정 및 배포를 자동화 가능(오케스트레이션)
  • 신규 시스템 구축이나 일상적인 운영 업무를 텍스트 파일화한다.

Ansible의 장점

  • 멱등성을 지원한다.
  • YAML 형식을 지원하여 특별한 코딩 스킬이 필요치 않다.
  • 높은 생산성
  • OpenSSH 와 WinRM을 지원한다.
  • 안전성과 단순한 관리
  • 대상 서버에 별도 에이전트 설치 불필요
  • 700개 이상 대다수의 서버와 네트워크 장비 지원
  • 동시에 다수의 대상 서버에서 실행
  • Bootstrap 부터 설정 변경까지 원스톱 실행
  • 완벽한 구성관리, 오케스트레이션, 배포 (작업자에게 의존하지 않는다.)

멱등성이란?

  • 여러번 적용해도 결과가 바뀌지 않는 특성

Ansible Architecture

1. Control Node

  • Ansible이 설치된 모든 장치를 의미한다.
  • Python이 설치된 모든 컴퓨터를 Control Node로 사용이 가능하다
  • 여러개의 Contol Node를 가질 수 있다.
  • 명령어나 Playbook 실행이 가능하다.

2. Managed Node

  • Ansible로 관리하는 장치를 의미한다.

3. Inventory

  • 자동화 대상(Managed Node) 목록을 작성하는 곳이다.
  • 관리 대상 서버를 호스트명 또는 IP 주소나 ssh 사용자 명으로 지정한다.

4. Playbook

  • 자동화 코드 Set을 의미한다.
  • 순서가 있는 작업 목록을 반복적으로 실행 가능하다.
  • YAML 형식으로 작성된다.

5. Module

  • 자동화 기능 내장 패키지로 하나의 완전한 단위 기능을 제공한다.

6. API

  • Ansible Python API를 사용하여 노드를 제어하고 Ansible을 확장하여 다양한 Python 이벤트에 응답하고, 다양한 플러그인을 작성할 수 있으며, 플러그를 연결 가능

7. Plugin

  • Ansible의 핵심 기능을 보강하는 코드 조각
  • Ansible은 플러그인 아키텍처를 사용하여 풍부하고 유연하며 확장 가능한 기능 세트를 활성화

Ansible 설치 및 구성

네트워크 구성도, 운영체제는 CentOS7 으로 진행한다.

# vi /etc/hosts

172.16.0.200	anm
172.16.0.201	ann1
172.16.0.202	ann2
172.16.0.203	ann3

각 서버에서 /etc/hosts 파일에 위 내용을 추가한다.

# hostnamectl set-hostname anm		(Master 서버에서 명령어 입력)
# hostnamectl set-hostname ann1		(Ann1 서버에서 명령어 입력)
# hostnamectl set-hostname ann2		(Ann2 서버에서 명령어 입력)
# hostnamectl set-hostname ann3		(Ann3 서버에서 명령어 입력)

각 서버에서 각자에게 맞는 hostname을 위의 명령어를 사용하여 설정한다.

# ping anm
# ping ann1
# ping ann2
# ping ann3

각 서버에 ping test를 진행하여 통신이 정상적인지 테스트한다.

# ssh keygen	(입력값은 모두 입력하지 않고 엔터만 입력)
# ssh copy-id root@ann1
# ssh copy-id root@ann2
# ssh copy-id root@ann3

ssh keygen 명령어로 ssh 공개키와 개인키를 생성하고 ssh copy-id 명령어로 공개키를 각 서버들에게 전달해준다.

# ssh root@ann1
# ssh root@ann2
# ssh root@ann3

ssh 접속을 ann1~3까지 시도해봤을 때 비밀번호를 요구하지 않고 접속이 가능하면 설정이 완료된 것이다.

# yum -y install epel-release
# yum -y intsall ansible

anm 서버에 yum을 사용하여 ansible을 설치해준다.