PostgreSQL을 Ansible로 설치하는 간단한 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- DevOps 엔지니어 및 시스템 관리자
- Ansible을 사용해 인프라 자동화를 수행하는 분야
- 초보자 대상 (간단한 명령어와 구조 설명 포함)
핵심 요약
- Ansible 역할(
roles/db
)을 사용해 PostgreSQL 설치를 모듈화하고 재사용 가능하게 구성 ansible-galaxy init
명령어로 역할 구조 생성 (tasks, handlers, files 등)- Playbook(
install-db.yml
)을 통해 설치 프로세스 자동화 (apt 업데이트, 패키지 설치, 서비스 관리 등) - 테스트 역할(
roles/db/tests/test.yml
)을 통해 PostgreSQL 설치 확인 (psql 버전 검증)
섹션별 세부 요약
1. Ansible 프로젝트 구조 설정
ansible-galaxy init roles/db --offline
명령어로 역할 생성- 생성된 디렉토리 구조:
- tasks/main.yml
: PostgreSQL 설치 주요 작업
- handlers/
: 서비스 재시작 트리거 정의
- defaults/
: 기본 변수 정의
- files/
: 정적 파일 저장
ansible/
디렉토리 내hosts.ini
,install-db.yml
,requirements.yml
등 구성 파일 포함
2. Playbook 작성 및 실행
- Playbook(
install-db.yml
) 예시:
```yaml
- name: Install PostgreSQL
hosts: all
become: true
roles:
- db
```
- 실행 명령어:
ansible-playbook -i hosts.ini install-db.yml
hosts.ini
파일에서 대상 서버 정의 예시:
```ini
[db]
node1 ansible_host=192.168.1.10 ansible_user=ubuntu
```
3. PostgreSQL 설치 작업 분해
- APT 캐시 업데이트:
apt: update_cache: yes
- postgresql-common 설치:
apt: name: postgresql-common, state: present
- PGDG 스크립트 실행:
```yaml
command: /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
args:
creates: /etc/apt/sources.list.d/pgdg.list
```
- PostgreSQL 및 contrib 설치:
```yaml
apt:
name:
- postgresql
- postgresql-contrib
state: present
```
4. 테스트 역할 구성
roles/db/tests/test.yml
예시:
```yaml
- name: Test PostgreSQL installation
hosts: all
tasks:
- name: Check if postgres is installed
command: psql --version
register: pg_version
changed_when: false
failed_when: pg_version.rc != 0
- debug:
var: pg_version.stdout
```
- 테스트 시
psql --version
명령어로 설치 여부 확인
결론
- Ansible 역할과 Playbook을 사용해 PostgreSQL 설치 프로세스를 모듈화하고 재사용 가능하게 구성
roles/db
역할을 통해 모든 서버에서 일관된 설치 및 테스트 가능- LiveAPI를 활용해 백엔드 API 문서화 자동화 (Swagger/Postman 대체)