0. 개요
Airflow 사용 중 connections 정보가 배포 시에 세팅을 해줘야하는 번거로움이 있었습니다.
정보를 찾아보던 중 세팅을 자동으로 해주는 Astro CLI 라는 것을 알게되었고 설치부터 실행까지의 포스팅입니다.
1. Astro CLI 란?
Astro CLI는 Apache Airflow를 로컬 환경에서 빠르게 실행하고, DAG(Directed Acyclic Graph)를 테스트 및 디버깅하며, Astronomer 플랫폼의 리소스(워크스페이스 및 배포 등)를 관리할 수 있는 도구입니다. 오픈 소스로 제공되며, GitHub 저장소를 통해 기여와 이슈 제기가 가능합니다.
- 로컬에서 Airflow 실행: 몇 분 만에 로컬 환경에서 Airflow를 실행할 수 있습니다.
- DAG 테스트 및 디버깅: 전용 테스트 환경에서 DAG를 파싱하고 디버깅할 수 있습니다.
- 리소스 관리: 워크스페이스 및 배포 등 Astronomer 리소스를 CLI를 통해 관리할 수 있습니다.
2. 설치
MacOS 기준 설치입니다. 다른 OS 기준도 공식홈페이지에 잘 기재되어있으니 참고바랍니다.
a. astro 설치 및 Docker 설정
Homebrew 설치가 선행되어야 하니,
설치가 되어있지 않다면 먼저 설치해주시기 바랍니다.
brew install astro
설치 로그를 보면,
Podman으로 설정되어 있는걸 볼수있습니다.
그냥 추축 상, 라이선스 부분 때문에 기본 설정을 Docker 대신 Podman으로 해둔게 아닌가 싶긴합니다만...
중요한건 아니니 넘어가겠습니다.

아래 명령어로 정상 설치가 되었는지 확인합니다.
astro version
b. 컨테이너 바이너리 세팅
이제 각 환경에 맞는 컨테이너 바이너리를 세팅을 해주면 되는데,
저는 Docker 환경을 세팅해두었으므로 바이너리를 변경하도록 하겠습니다.
astro config set container.binary docker -g # docker 바이너리로 세팅
astro config set container.binary podman -g # podman 바이너리로 세팅

c. 프로젝트 생성
init 명령어를 통해 프로젝트 구성을 생성할수있습니다.
해당 명령어를 치면 명령어를 사용한 위치에 폴더가 생기기에 먼저 원하는 폴더로 이동하시면 됩니다.
# 기본 프로젝트 생성 명령어
astro dev init
# 샘플 템플릿을 가져오는 명령어
astro dev init --from-template learning-airflow
--from-template 명령어를 같이 기입해주면 샘플 중에서 골라올수있게됩니다.
뒤에 템플릿 명칭을 같이 넣어주었으니 바로 되는줄 알았는데 선택하는 항목이 나오는걸로 보니 프로젝트 이름인가봅니다.



3. 실행
구동 관련한 명령어는 아래와 같습니다.
# airflow 시작
astro dev start
# airflow 재시작
astro dev restart
# airflow 정지
astro dev stop
# airflow 로그
astro dev logs
# # airflow 삭제 (볼륨 및 데이터 모두 삭제)
astro dev kill
Astro CLI로 실행 시, 아래와 같이 컨테이너들이 생성되는데,
기본 설정이 Airflow 버전은 최신으로 받아진 것 같은데, Postgresql 은 12.6 버전으로 보입니다.


컨테이너 생성 및 실행이 완료되면 아래와 같이 Web UI가 나타나면 정상적으로 실행이 완료됩니다.

4. Connections 미리 세팅하기
위에서 언급했듯이,
Astro CLI를 처음 찾게된 이유인 Connections 미리 세팅하는 기능입니다.
Setting 파일을 작성하면 되는데 local 환경에서만 가능하다고 하니 참고 바랍니다.
root 디렉토리에 airflow_settings.yaml 파일을 작성 후,
아래와 같이 작성합니다.
airflow:
connections: ## conn_id and conn_type are required
- conn_id: my_mongo_conn
conn_type: mongo
conn_host: 123.0.0.10
conn_schema: airflow
conn_login: user
conn_password: pw
conn_port: 27017
conn_extra: { "authSource": "admin" }
# 공홈 예시
airflow:
connections: ## conn_id and conn_type are required
- conn_id: my_new_connection
conn_type: postgres
conn_host: 123.0.0.4
conn_schema: airflow
conn_login: user
conn_password: pw
conn_port: 5432
conn_extra:
pools: ## pool_name and pool_slot are required
- pool_name: my_new_pool
pool_slot: 5
pool_description:
variables: ## variable_name and variable_value are required
- variable_name: my_variable
variable_value: my_value
저는 MongDB 연동이 필요했기 때문에 테스트 값으로 MongoDB 세팅을 넣어봤습니다.
시작 또는 재시작 후 Connetctions 항목을 확인해보면,
작성한 정보가 들어간것을 볼수있지만 Connection Type 값이 'generic' 으로 되어있는데 목록에 mongodb 표기가 없는것으로 보아 별도 포멧이 존재하지는 않는것으로 보입니다.
(기본 Airflow UI 상에는 존재합니다.)

5. 마무리
이로써 Astro CLI 를 이용해서 로컬환경 설치 및 실행을 진행해보았습니다.
이외 기능으로 개별 DAG 테스트나 디버깅, AWS 연동 기능이나 다른 편의 기능도 존재하고, Astro 제공 배포 서버도 존재하는듯합니다.
Astro 용 Docker Compose 파일도 존재하기에 배포 선택지가 다양한 편인데,
무료 버전으로는 배포 관련한 자동화의 이점은 사용이 불가능하기에 '이런 툴도 존재하는구나~' 정도 알고있다면 괜찮은 선택지가 되지않을까 합니다.
6. 참고자료
Astro CLI | Astronomer Documentation
The Astro CLI is the command line interface for data orchestration. It's the easiest way to get started with Apache Airflow and can be used with all Astronomer products.
www.astronomer.io
'DEV > Airflow' 카테고리의 다른 글
| [Airflow] Airflow 설치 (with. docker compose) (0) | 2023.12.09 |
|---|---|
| [Airflow] AirFlow 란? (1) | 2023.12.09 |