NGINX 설정을 Ansible로 동기화하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
DevOps 엔지니어, 시스템 관리자
- 중급 이상의 Ansible 및 NGINX 경험을 가진 사람에게 유용
- 자동화 및 인프라 설정을 반복적으로 수행하는 업무에 적합
핵심 요약
- Ansible 역할 초기화:
ansible-galaxy init
명령어로 역할 구조 생성 - NGINX 설정 동기화:
copy
모듈과file
모듈을 사용해 파일 복사 및 심볼릭 링크 생성 - 자동화 프로세스:
nginx-conf-sync-playbook.yml
에서roles/nginx-conf-sync
실행하여 설정 적용 및 NGINX 재로딩
섹션별 세부 요약
1. 역할 초기화 및 구조 설정
roles/nginx-conf-sync
역할 생성 후files/
폴더에 NGINX 설정 파일 (blog.dev.to
,api.dev.to
) 배치hosts.ini
에 서버 정보 정의 (IP, 사용자, SSH 키 경로)
2. NGINX 설정 동기화 구성
nginx_conf_domains
변수에 동기화할 도메인 목록 선언nginx-conf-sync-playbook.yml
에서hosts: master
지정 및 역할 실행
3. 역할 내 태스크 정의
- 디렉토리 생성:
/etc/nginx/sites-available
및/etc/nginx/sites-enabled
디렉토리 생성 - .htpasswd 파일 생성: 기본 인증을 위한
copy
모듈 사용 - 파일 복사:
{{nginx_conf_domains}}
리스트를 기반으로sites-available
에 설정 파일 복사 - 심볼릭 링크 생성:
file
모듈로sites-enabled
에 심볼릭 링크 생성
4. NGINX 재로딩
service
모듈을 사용해nginx
서비스 재로딩 (state: reloaded
)
결론
- Ansible 활용 팁: 설정 파일을
files/
폴더에 배치하고defaults/main.yml
에서 도메인 목록 선언 후 playbook 실행 - 자동화의 이점: 수동 오류 방지, 환경 간 일관성 유지, 반복 작업 효율화
- 예시 실행 명령:
ansible-playbook -i hosts.ini nginx-conf-sync-playbook.yml