본문 바로가기
AWS/Part 4. Ch04 앤서블을 이용한 서버 형상 관리

CH04_06. 핸들러 (Handler)

by Engineer-Lee 2022. 6. 17.
반응형

이번 시간에는 앤서블 핸들러에 대해 알아보자

핸들러란 이벤트 기반으로 동작하는 task이다.

예를 들어 a라는 task가 실행될 때에만 b task를 실행하는 동작이다.

대표적으로는 nginx 같은 웹서버에서 서버 설정이 변경될 때이다.

 

https://github.com/tedilabs/fastcampus-devops/tree/main/2-ansible/05-handler

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

 

위 링크에서 플레이북을 실행하고 ec2인스턴스로 접속하면 다음과 같은 화면이 출력된다.

우선 files/html/ 디렉토리에는 세 가지 html 파일이 있다.

index.html 파일은 화면 배경색이 흰색

blue.html 파일은 화면 배경색이 파란색

red.html 파일은 화면 배경색이 빨간색으로 설정됐다.

 

default 설정 파일에서는 root를 index.html로 지정했기에 ec2 인스턴스로 접속했을 때 배경이 하얗게 출력되었다.

만약 7번 라인을 index blue.html로 파일 내용을 수정한다고 해서 서버 설정에 적용이 되지 않는다.

이 이유는 nginx가 이미 기존 nginx 설정 파일을 읽은 상태로 nginx 프로세스가 호출됐기 때문이다.

이 문제를 해결하려면 특정 task가 이벤트를 publish할 수 있어야 하는데 핸들러를 사용해서 해결할 수 있다.

 

 

example.yaml 파일을 보면 notify라는 파라미터로 핸들러를 명시한다.

Restart Nginx는 핸들러의 이름이 된다.

 

 

Restart Nginx handler는 service 모듈을 사용해서 nginx를 재시작시킨다.

 

 

이제 플레이북을 다시 실행해보면 배경화면이 파란색으로 바뀐 걸 볼 수 있다.

 

 

 

 

 

핸들러를 사용할 때 유의할 점은 다음과 같다.

  1. 플레이 내에서 같은 이벤트를 여러 번 호출하더라도 동일한 핸들러는 한 번만 실행된다.
  2. 모든 핸들러는 플레이 내에 모든 작업이 완료된 후에 실행된다.
  3. 핸들러는 이벤트 호출 순서에 따라 실행되는 것이 아니라 핸들러 정의 순서에 따라 실행된다.

 

반응형