Ansible로 Consul DNS 자동화 설정
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

인프라 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 역할 적용, masterclient 태그로 역할 구분

- 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분 내 완료)