[python] python-dotenv와 Ansible의 연동 방법

Python의 python-dotenv 모듈은 .env 파일을 사용하여 환경 변수를 관리하는데 유용합니다. Ansible은 소규모부터 대규모까지 다양한 환경에서 인프라를 자동으로 구성하는 데 사용되는 강력한 도구입니다. 이번 블로그 포스트에서는 python-dotenv와 Ansible을 함께 사용하는 방법에 대해 알아보겠습니다.

1. python-dotenv 설치

우선, python-dotenv를 설치해야 합니다. 다음의 명령을 사용하여 설치하세요.

pip install python-dotenv

2. .env 파일 작성

현재 디렉토리에 .env 파일을 작성하고 환경 변수를 설정합니다. 아래는 예시입니다.

DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=myusername
DB_PASSWORD=mypassword

위의 예제에서는 DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD의 네 개의 환경 변수를 설정했습니다.

3. Ansible에서 python-dotenv 사용하기

Ansible 플레이북에서 환경 변수를 사용하기 위해 python-dotenv 모듈을 사용할 수 있습니다. 다음의 예시는 DB_HOST 환경 변수를 사용하여 PostgreSQL 데이터베이스에 연결하는 Ansible 플레이북입니다.


- hosts: all
  tasks:
    - name: Load environment variables from .env file
      dotenv:
        path: /path/to/.env

    - name: Install PostgreSQL library
      apt:
        name: python3-psycopg2
        state: present

    - name: Connect to PostgreSQL database
      psycopg2:
        user: "{{ lookup('env', 'DB_USERNAME') }}"
        password: "{{ lookup('env', 'DB_PASSWORD') }}"
        host: "{{ lookup('env', 'DB_HOST') }}"
        port: "{{ lookup('env', 'DB_PORT') }}"
        database: mydatabase
        login_host: localhost
        login_user: postgres
        login_password: postgres
        state: list

위의 예시에서 dotenv 모듈은 .env 파일을 로드하여 환경 변수를 설정합니다. 그리고 psycopg2 모듈을 사용하여 PostgreSQL 데이터베이스에 연결합니다. lookup 함수를 사용하여 DB_USERNAME, DB_PASSWORD, DB_HOST, DB_PORT와 같은 환경 변수 값을 가져옵니다.

결론

위의 방법을 사용하여 python-dotenv와 Ansible을 통합할 수 있습니다. python-dotenv를 사용하여 환경 변수를 관리하면 Ansible 플레이북에서 보안 정보를 안전하게 처리할 수 있습니다. 이를 통해 보다 효율적이고 안전한 인프라 구성을 실현할 수 있습니다.

참고 자료