AWX 컨테이너로 가상(venv) 환경 생성

4893 단어 Ansibleawx

소개



AWX에는 여러 버전의 Ansible을 구분할 수 있는 기능이 있습니다.

↑이런거.

AWX를 Kubernetes 클러스터에서 실행할 때 여러 버전의 Ansible을 미리 넣은 컨테이너를 만들려면 어떻게해야합니까? 라고 생각하면 공식 문서에 답이 실렸습니다.

비망을 겸해, 시도한 기록을 남겨 둡니다.

환경



k3s v1.18.9+k3s1
AWX 15.0.0

하는 방법



다음과 같은 YAML을 만듭니다.

venv_vars.yaml
---
custom_venvs:
  - name: 2.9.12
    python: python3
    python_ansible_version: 2.9.12
  - name: pip
    python_ansible_version: 2.9.13
    python_modules:
      - pyvmomi

각 항목의 내용은 다음과 같습니다.



설명
필수


이름
가상 환경의 이름(디렉토리 이름)


python_ansible_version
Ansible 버전


파이썬
Python 버전 (지정되지 않은 경우 2 계열)

python_modules
소개하려는 pip 모듈



나머지는 배포시 ansible-playbook 명령에 다음과 같이 extra-vars 옵션을 추가하기 만하면됩니다.
$ ansible-playbook -i inventory install.yml --extra-vars "@venv_vars.yaml"

배포가 완료된 후 포드가 시작될 때까지 다음과 같은 상태로 약간의 시간이 걸립니다.
$ kubectl get pod -n awx
NAME                          READY   STATUS     RESTARTS   AGE
awx-postgresql-postgresql-0   1/1     Running    0          2d19h
awx-64f65bbdc4-qcbtm          0/3     Init:0/1   0          66s

AWX의 설정



포드가 시작되면 AWX에 로그인하고 설정 -> 시스템을 엽니다.

사용자 정의 가상 환경 경로에/opt/custom-venvs<개행>을 입력하고 저장하십시오.
줄 끝에 개행을 넣어야 하는 것 같아서 잊지 말고 넣자.
※이 패스는 임의의 패스로 변경 가능합니다. 변경하려는 경우 inventory 파일의 custom_venv_dir에서 정의할 수 있습니다.

설정이 완료되면 프로젝트의 설정 화면에 "ANSIBLE 환경"이라는 목록이 표시되어 작성한 가상 환경을 선택할 수 있습니다.


Ansible 2.9.12의 환경을 지정한 후, 적당히 다음과 같은 Playbook을 만들어 실행해 보면,

show_version.yaml
---
- name: Sample
  hosts: all
  tasks:
    - name: Show Ansible Version
      debug:
        msg: "{{ ansible_version }}"

2.9.12로 실행되었습니다. (AWX 15.0.0의 기본 Ansible 버전은 2.9.13입니다)


어떤 구조?



어떻게 가상 환경을 설정하는지 궁금해서 조사해 보았습니다.
Kubernetes 용 Deployment.yml 템플릿 파일 중,
  • custom_venvs에 대한 변수 정의가 있으면 initContainers에서 CentOS7 컨테이너를 시작합니다.
  • custom_venv_dir에 정의 된 디렉토리를 EmptyDir로 마운트
  • 그 위에 virtualenv로 가상 환경을 구축
  • 같은 디렉토리를 awx-web,awx-task 컨테이너에서도 마운트

  • 라는 흐름으로 설치를 실시하고 있는 것 같습니다.
    이것이라면 Pod가 떨어져도 가상 환경은 재기동시에 만들어지므로 안심입니다.

    결론



    당초에는 컨테이너의 리빌드가 필요하다고 생각했습니다만, 비교적 간단하게 실현할 수 있는 방법이 준비되어 있어서 좋았습니다.

    또, AWX의 설정은 이하 사이트를 참고로 했습니다.
    [Ansible/AWX] AWX가 사용자 지정 가상 환경(venv) 경로를 인식하는 방법

    좋은 웹페이지 즐겨찾기