SSL 자동화: Ansible과 Let's Encrypt를 활용한 인증서 관리
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- *DevOps 엔지니어 및 인프라 자동화에 관심 있는 개발자**
- 난이도: 중급 (Ansible 기본 지식 필요)
핵심 요약
geerlingguy.certbot
역할을 사용하여 Let's Encrypt 인증서 자동 생성 및 갱신 가능- 역할 기반의 모듈화로 인해 NGINX 구성 파일 동기화와 인증서 관리를 효율적으로 수행
- Jinja2 템플릿을 활용한 도메인별 인증서 자동 생성 로직 포함
섹션별 세부 요약
1. Ansible 역할 기반 인프라 자동화
- 역할(Role)은 인프라 자동화를 위한 재사용 가능한 모듈로,
geerlingguy.nginx
와geerlingguy.certbot
을 사용하여 NGINX 및 SSL 인증서 관리 가능 requirements.yml
파일에서 역할 종속성 정의 예시:
```yaml
roles:
- src: geerlingguy.nginx
- src: geerlingguy.certbot
collections:
- name: community.general
```
ansible-galaxy install -r requirements.yml
명령어로 역할 설치 가능
2. 인증서 자동 생성 및 관리
certbot-setup-playbook.yml
에서geerlingguy.certbot
역할 호출:
```yaml
include_role:
name: geerlingguy.certbot
vars:
certbot_admin_email: shrijith@hexmos.com
certbot_create_method: standalone
certbot_certs: "{{ nginx_conf_domains | ... }}"
```
certbot_certs
변수는 Jinja2 필터를 통해 동적으로 생성된 도메인 목록을 자동으로 처리certbot_auto_renew
변수를true
로 설정하여 매일 자동 갱신 가능
3. NGINX 구성 파일 동기화
ensure-sites-enabled-included.yml
와create-nginx-confs.yml
역할을 통해 NGINX 구성 파일 생성 및 테스트nginx -t
명령어로 NGINX 구성 파일 유효성 검증systemctl restart nginx
명령어로 서비스 재시작
4. 역할 변수 및 확장성
certbot_install_method
:package
,snap
,source
중 선택 가능certbot_testmode: true
설정으로 스테이징 환경 테스트 가능certbot_hsts: true
설정으로 HSTS 정책 적용 가능- 와일드카드 도메인 지원 및 인증서 생성 로직 확장성 보장
결론
- *
geerlingguy.certbot
역할을 사용하면 하나의 명령어로 HTTPS 자동화가 가능하며, 인프라 코드화(Infrastructure as Code)를 통해 안정성과 확장성을 동시에 달성할 수 있다.ansible-playbook -i hosts.ini nginx-conf-sync-playbook.yml -v
** 명령어로 간단한 설정으로 인증서 관리 가능.