SSL 자동화: Ansible과 Let's Encrypt로 인증서 관리 자동화

SSL 자동화: Ansible과 Let's Encrypt를 활용한 인증서 관리

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • *DevOps 엔지니어 및 인프라 자동화에 관심 있는 개발자**
  • 난이도: 중급 (Ansible 기본 지식 필요)

핵심 요약

  • geerlingguy.certbot 역할을 사용하여 Let's Encrypt 인증서 자동 생성 및 갱신 가능
  • 역할 기반의 모듈화로 인해 NGINX 구성 파일 동기화와 인증서 관리를 효율적으로 수행
  • Jinja2 템플릿을 활용한 도메인별 인증서 자동 생성 로직 포함

섹션별 세부 요약

1. Ansible 역할 기반 인프라 자동화

  • 역할(Role)은 인프라 자동화를 위한 재사용 가능한 모듈로, geerlingguy.nginxgeerlingguy.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.ymlcreate-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** 명령어로 간단한 설정으로 인증서 관리 가능.