인프라 DNS 자동화: Ansible을 활용한 Consul 설정
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- DevOps 엔지니어 및 인프라 자동화 담당자
- 초급~중급 수준의 Ansible 및 Consul 사용자
- HashiCorp 도구를 활용한 서비스 메시지 설정에 관심 있는 개발자
핵심 요약
- HashiCorp GPG 키 및 apt 저장소를 통해 Consul 설치 (
curl -fsSL | gpg --dearmor | sudo tee /etc/apt/keyrings/hashicorp-archive-keyring.gpg
) - 역할 기반 구성(Role-driven Configuration)으로 서버/클라이언트 구분 (
tags: master
,tags: client
) - 템플릿 기반 설정 파일 생성 (
master_consul.hcl.j2
,client_consul.hcl.j2
)
섹션별 세부 요약
1. Playbook 설정
- consul.yml
에서 호스트 그룹 및 태그 기반 역할 실행 정의
- 모든 호스트에 consul
역할 적용, master
및 client
태그로 역할 구분
- tags
필드를 통해 서버/클라이언트 설정 선택적 실행 가능
2. Consul 역할 구조
- roles/consul/
디렉토리 구조:
- defaults/main.yml
: 기본 설정
- tasks/
: 설치(install.yml
), 구성(configure.yml
), 메인 작업(main.yml
)
- templates/
: 서버/클라이언트별 설정 템플릿
- vars/main.yml
: 변수 정의
3. 설치 프로세스
- HashiCorp GPG 키 추가: curl -fsSL | gpg --dearmor | sudo tee /etc/apt/keyrings/hashicorp-archive-keyring.gpg
- apt 저장소 설정: echo "deb [signed-by=/etc/apt/keyrings/hashicorp-archive-keyring.gpg] $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
- Consul 설치: ansible.builtin.apt: name: consul state: present
4. 구성 템플릿 예시
- 서버 설정:
```hcl
node_name = "consul-{{ inventory_hostname }}-server"
server = true
bootstrap = true
datacenter = "dc1"
log_level = "INFO"
advertise_addr = "{{ internal_ip }}"
```
- 클라이언트 설정:
```hcl
node_name = "consul-{{ inventory_hostname }}-client"
server = false
retry_join = ["{{ groups['nomadclientandservers'] | map('extract', hostvars, 'internal_ip') | list | first }}"]
dns_config { enable_truncate = true }
```
5. 실행 및 관리
- 디렉토리 생성 및 권한 설정:
```yaml
- name: Create consul data directory
ansible.builtin.file:
path: /opt/consul
state: directory
owner: consul
group: consul
mode: 0755
```
- 서버/클라이언트 설정 파일 배포:
```yaml
- name: Deploy master Consul config
ansible.builtin.template:
src: master_consul.hcl.j2
dest: /etc/consul.d/consul.hcl
when: "'master' in ansible_run_tags"
```
- Consul 서비스 재시작: ansible.builtin.systemd: name: consul state: restarted
결론
- 태그 기반 설정으로 인프라 자동화의 모듈성과 재사용성을 확보
- HashiCorp 공식 저장소를 통한 보안 중심 설치 프로세스 권장
- LiveAPI 도구 활용 시 백엔드 API 문서화 시간 절감 (최대 5분 내 완료)