devlos
Devlos Archive
devlos
전체 방문자
오늘
어제
12-12 06:20

최근 글

  • 분류 전체보기 (107)
    • 프로젝트 (1)
    • MSA 설계 & 도메인주도 설계 (9)
    • 클라우드 컴퓨팅 & NoSQL (87)
      • [Cilium Study] 실리움 스터디 (8)
      • [KANS] 쿠버네티스 네트워크 심화 스터디 (12)
      • [T101] 테라폼 4기 스터디 (8)
      • [CICD] CICD 맛보기 스터디 (3)
      • [T101] 테라폼 기초 입문 스터디 (6)
      • [AEWS] Amazon EKS 워크숍 스터디 (7)
      • [PKOS] 쿠버네티스 실무 실습 스터디 (7)
      • Kubernetes (13)
      • Docker (7)
      • Redis (1)
      • Jenkins (3)
      • Terraform (1)
      • Ansible (4)
      • Kafka (1)
    • 프로그래밍 (7)
      • Spring Boot (5)
      • Broker (1)
    • 성능과 튜닝 (1)
    • ALM (0)
    • 기타 (2)

인기 글

태그

  • terraform
  • MSA
  • PKOS
  • 도커
  • 쿠버네티스 스터디
  • CloudNet@
  • kOps
  • Kubernetes
  • DevOps
  • 쿠버네티스
  • 데브옵스
  • 테라폼
  • docker
  • t101 4기
  • cilium

티스토리

최근 댓글

hELLO · Designed By 정상우.
devlos

Devlos Archive

[앤서블(Ansible)] ansible-playbook 사용법
클라우드 컴퓨팅 & NoSQL/Ansible

[앤서블(Ansible)] ansible-playbook 사용법

2021. 4. 13. 23:46
반응형

이번 포스팅의 주제는 ansible-playbook의 사용법에 대한 내용이다.

 

Ansible playbook은 반복, 재사용 가능하며 구성 관리 및 다중 머신의 설정, 배포 시스템을 제공하는 언어다. 

YAML 형식으로 되어있다.

 

이전 포스팅에서 정리했듯이 본래 앤서블로 실현하고 싶은 것은 다음의 3가지다.

  1. 환경 설정 및 구축 절차를 통일된 형식으로 기술할 수 있음
  2. 매개 변수 등 환경의 차이를 관리할 수 있음
  3. 실행 전에 변경되는 부분을 파악할 수 있음

위의 내용들을 예제를 통해 확인해보도록 한다.


1. Git 설치

$ sudo yum -y install git

 

sudo yum -y install git 실행결과


2. ansible-playbook-sample 다운로드

$ git clone https://github.com/devops-book/ansible-playbook-sample.git

 

git clone https://github.com/devops-book/ansible-playbook-sample.git 실행결과


3. paybook을 실행하여 nginx를 실행

$ cd ansible-playbook-sample # Clone 한 디렉토리로 이동
$ ansible-playbook -i development site.yml

 

 

ansible-playbook 실행결과

 

이 샘플에서는 nginx 설치와 index.html을 갱신하고 있다.

결과를 보면 ok, changed 등과같은 TASK에 대한 결과가 나온다.

TASK에 명시된 상태들에 대해서 설명하자면 다음과 같다.

 

TASK 상태

표시 의미
ok 결과가 이미 예상했던되로 된 경우를 의미함. (아무것도 할 필요가 없었기 때문에 실행하지 않음)
skipped 명시적인 조건에 의해 Task 자체가 Skip 되었음. 예를들어 Task1이 성공적으로 수행되었을 경우 Task2는 수행하지 않음
changed Task 실행에 의해 예상했던 대로 변경되었음
unreachable 원래의 실행 대상 호스트에 통신이 도달하지 않았음
failed 실행 대상 호스트에 도달했지만, 조작이 어떤 이유로 실패함

즉, 위의 결과에서 의미하는 바는 

Gathering Facts 작업, install epel 작업, install nginx 작업은 이미 조건을 만족했기 때문에 수행하지 않고 넘어간 것이고,

nginx replace 작업, nginx start 작업은 site.yml에서 명시한 내용이 반영이 된 것이다.  

 

다음으로 -i 옵션은 운영환경을 기본 설정 정보를 쓰지않고, 별도의 정보를 사용하는 옵션이다.

ansible-playbook 명령어의 호스트는 기본적으로 /etc/ansible/hosts에 정의되어있는데, 이것을 사용하지 않고 inventory file에서 지정한 그룹을 사용하기위해 -i 옵션을 사용한다.

여기서 inventory file은 호스트 정보를 관리할 수 있게 재료 보관함 역할을 하는 파일이다.

 

ansible-playbook-sample 폴더 정보

위와 같이 ansible-playbook-sample 폴더 구성요소를 살펴 보면 development라는 파일이있고, 이 파일은 아래와 같이 webservers에 localhost라는 정보를 저장하고 있다.

(webservers는 development-webservers정보를 상속 받고 있음)

 


4. index.html 을 이용하여 상태 확인

$ curl localhost

 

curl localhost 실행결과

실행결과를 살펴보면 현재 nginx가 웹사이트를 잘 동작시키고 있는것을 확인할 수 있다.


5. ansible-playbook-sample / site.yml 살펴보기

$ cat site.yml

 

cat site.yml 실행결과

hosts
webservers는 별도 정의되어 있는 Inventory File 내부에서 webservers의 Host Group에 대한 처리를 실행한다는 의미이다. Inventory File이란 서버들에 대한 접속정보를 모은 파일이다.


become

대상 호스트에 root 사용자로 작업을 수행하도록 지정

 

connection

대상 호스트가 ssh대신 local 연결을 하는 것을 의미함

 

roles

common과 nginx 처리 수행을 지정함

 

site.yml의 내용을 살펴본 결과, 과정 3에서 실행했던 ansible-playbook 명령어가 동작하며 남긴 로그와 동일한 내용이 실행된 것을 확인할 수 있다. 


다음 포스팅에서는 dry-run모드에 대해서 살펴보도록 한다.


참고자료

[1] IT 운용 체제 변화를 위한 데브옵스 | 2019 | 키와무라 세이고 ... | 링크

 
반응형

'클라우드 컴퓨팅 & NoSQL > Ansible' 카테고리의 다른 글

[앤서블(Ansible)] Serverspec 사용법  (0) 2021.04.15
[앤서블(Ansible)] ansible-playbook dry-run 모드  (0) 2021.04.15
[앤서블(Ansible)] Ansible의 기본적인 사용법 (nginx)  (0) 2021.04.13
    devlos
    devlos
    안녕하세요, Devlos 입니다. 새로 공부 중인 지식들을 공유하고, 명확히 이해하고자 블로그를 개설했습니다 :) 여러 DEVELOPER 분들과 자유롭게 지식을 공유하고 싶어요! 방문해 주셔서 감사합니다 😀 - DEVLOS -

    티스토리툴바