DevOps/Ansible

requirements.txt 을 활용해 Ansible에서 package 설치

xlwdn98767 2023. 6. 30. 10:23
728x90

requirements.txt


Python Project에서는 requires.txt 파일에 버전과 함께 패키지 의존성 라이브러리를 지정한다. 이를 통해 추후 python package의 버전 업그레이드로 인한 불안정한 호환 문제에서 해방되었다.

또한 이러한 의존성 관리는 virtualenv에도 영감을 주었는데, venv를 active 할 시 해당 가상환경에 포함된 패키지들만 남게됨을 알고 있을 것이다. 이를 활용해 아래와 같이 requirements.txt 파일을 생성해 공급할 수 있다.

$ source project/bin/active
$ pip freeze > requirements.txt

Use on ansible


requirements.txt를 사용해 아래와 같이 패키지를 설치할 수 있다.

- name: copy requirements.txt file
    copy: src=files/requirements.txt dest=~/requriements.txt
- name: install packages
    pip: requirements=~/requirements.txt virtualenv={{ venv_path }}

또한 아래와 같이 패키지의 이름과 버전을 지정할 수도 있다.

- name: python packages
    pip: name={{ item.name }} version={{ item.version }} virtualenv={{ venv_path }}
    with_items:
        - {name: gunicorn, version: 19.6.0 }
        - {name: django-compressor, version: 2.1 }
        - {name: python-memcached, version: 1.58 }

위 방식은 아래와 같은 방식으로 표현 가능하다.