본문 바로가기

클라우드/앤서블(Ansible)

앤서블 Ansible 이란? / Ansible 용어

# 앤서블 Ansible 이란?

 

어플리케이션, IT 인프라를 자동화 할 수 있는 IaC도구

마스터 서버가 별도로 없고, 에이전트를 사용하지 않는다 (관리 대상의 시스템에 별도의 프로그램이 설치되어 있어야 한다)

앤서블의 기본 연결 방법은 SSH이다.  SSH는 항상 존재하기 때문에 별도의 프로그램을 설치 할 필요가 없다.

SSH 전송방식을 이용해서 원격에 있는 프로그램들을 관리한다.

 

 

# 용어

 

1) 제어노드 (컨트롤 노드, 컨트롤러)

- control

- 앤서블이 설치 된 호스트를 제어 노드라고 한다 . 앤서블을 실행한다.

- ansible 명령어, ansible-playbook 명령어를 이용 해 작업한다.

- python이 설치된 모든 호스트를 제어 노드로 사용할 수 있다( ansible이 python으로 만들어져 있어서 파이썬 인터프리터가 필요하다)

- windows 시스템은 제어노드로 사용 할 수 없다.

 

2) 관리노드

- mgmt1,mgmt2

- 앤서블을 이용해 관리 대상이 되는 시스템

 

3) 인벤토리

- 관리노드의 목록을 가지고 있는 텍스트 파일 ( /etc/hosts 파일과 비슷하다)

- 앤서블은 반드시 관리노드들을 인벤초리라고 하는 형태로 관리

- 인벤토리에 없는 시스템은 앤서블이 관리하지 못한다.

 

4) 플러그인

- 앤서블의 기능 확장을 위해 여러가지 플러그인을 제공한다.

- Action, Become, Cache, Callback, Cliconf, Connection, Httpapi, Inventory, Netconf, Lookup, Shell, Strategy, Vars

 

5) 모듈

- 앤서블을 실행하는 파이썬 코드

- /usr/lib/python3/dist-packages/ansible앤서블 설치하면서 같이 설치되는 디렉토리에 수많은 모듈들이 있다

- parameter(변수)를 넣으면 해당되는 변수의 값이 모듈들에게 전송이 되어서 원격 시스템에서 실행된다

- cloud ,database(mysql db, mysql user)등 다양한 약 3300개의 모듈이 있다

- 모듈을 이용해서 모듈이 관리 노드에 복사가 돼서 작업을 실행한다

 

6) 작업

- Ad-hoc 명령을 통해 단일 작업 실행하거나, playbook을 작성해 여러작업을 실행한다

- Ad-hoc : 하나의 모듈은 하나의 작업을 실행 할 수 있다

- playbook : yaml파일, 플레이북을 작성하여 ansible-playbook 명령어를 사용하여 실행, play가 지정되어 있어야한다

- 작업이 모여서 play가 되고 play가 모여서 playbook이 된다

 

 

https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html

 

Module Index — Ansible Documentation

© Copyright 2019 Red Hat, Inc. Last updated on Jul 19, 2021.

docs.ansible.com

 

# 아키텍처

 

 

 

ANSIBLE'S AUTOMATION ENGINE : 앤서블이 설치 된 컨트롤노드 (인벤토리 , 원격 관리를 위해 rest API 제공, 모듈, 플러그인)

 

HOSTS : SSH가 연결되는 모든 시스템 (VM, 클라우드 인스턴스, 베어메탈 등)

 

NETWORK : 네트워크 장비

 

USER -> ENGINE : 사용자가 직접 ENGINE으로 가는것은 ansible 명령어 (Adhop command/단일 작업)

 

ANSIBLE PLAYBOOK : 사용자가 플레이북을 작성해서 하나이상의 작업, 멀티작업을 선언 한다

(ex. wordpress를 배포하기 위해 apt update, 패키치 설치,서비스 실행, 구성파일 변경등 절차적인 것들을 플레이북에 선언. 플레이북을 실행하게 되면 호스트나 네트워크 장비에 해당 구성이 된다)

 

CLOUD : 클라우드에 관리할 대상을 가져올 수도 있다 , 클라우드나 컨테이너 환경은 라이프 사이클이 짧아서 관리 할 대상이 자주 바뀐다, 관리할 호스트가 고정 되어 있지 않다 -> 동적 인벤토리 : 원격에서 관리할 대상을 가져오는것 ,클라우드에서 플러그인 형태로 인벤토리를 가져온다.

 

CMDB: 회사 자산의 목록을 가지 있는 데이터베이스 CMDB로부터 관리할 대상의 인벤토리 목록을 가져온다

 

 

#요구사항

컨트롤 노드 : 파이썬이 설치되어 있어야 한다

관리 노드 : 파이썬, SSH 통신이 무조건 가능해야한다, SFTP를 사용할 수 있어야한다 (SFTP를 사용할 수 없는 경우 SCP 사용 가능)

 

 

 

https://github.com/kubernetes-sigs/kubespray

 

GitHub - kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster

Deploy a Production Ready Kubernetes Cluster. Contribute to kubernetes-sigs/kubespray development by creating an account on GitHub.

github.com

 

'클라우드 > 앤서블(Ansible)' 카테고리의 다른 글

앤서블 Ansible 정적 인벤토리  (0) 2021.07.28
앤서블 Ansible 동작 원리  (0) 2021.07.27
앤서블 Ansible 설치  (0) 2021.07.27
IaC 개요  (0) 2021.07.27
su 와 sudo 차이점 / sudoers 파일  (0) 2021.07.26