Các bước để setup Airflow trên VM
1. Cài đặt 1 số tools cơ bản
Đây là các bước cài đặt tools trên Ubuntu version 20, nếu bạn sử dụng distro khác, xin hãy tìm kiếm hướng dẫn phù hợp để cài đặt các tools này.
Docker
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
apt-cache policy docker-ce
sudo apt install -y docker-ce
sudo systemctl status docker
# start after reboot
sudo systemctl enable docker
# using docker without sudo
sudo usermod -aG docker $(whoami)
sudo chmod 666 /var/run/docker.sock
Gitlab runner
Liên hệ team Elton để lấy TOKEN
# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# Give it permissions to execute
sudo chmod +x /usr/local/bin/gitlab-runner
# Create a GitLab CI user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
# add user to docker group
sudo usermod -a -G docker gitlab-runner
# Install and run as service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# start service
sudo gitlab-runner start
# Register runner (Shell executor) - TOKEN will be provided by Elton.
sudo gitlab-runner register --url https://gitlab.com/ --registration-token TOKEN
Sau khi register thì sẽ cần config những thông như sau:
- Enter the Gitlab instance URL: Enter để bỏ qua
- Enter a name for the runner. This is stored only in the local config.toml file:
company-airflow
(abc-airflow with all lowercase and no space) - Enter an executor: shell
Sau đó config thêm như sau
# Remove /home/gitlab-runner/.bash_logout
sudo rm /home/gitlab-runner/.bash_logout
# Add permission to allow Gitlab runner to delete previous builds
# Add gitlab-runner user to sudoer file
sudo visudo
# add to the end of the file
gitlab-runner ALL=(ALL) NOPASSWD: ALL
# Add permission for Gitlab runner to run sh file
sudo vi /etc/gitlab-runner/config.toml
# Add this below [[runners]]
pre_get_sources_script = "sudo chown -R gitlab-runner:gitlab-runner ."
2. Cài đặt Database (Optional)
Nếu bạn có sẵn database thì có thể bỏ qua bước này và tạo 1 database tên là airflow
, còn không thì làm theo hướng dẫn ở dưới để cài đặt database cho Airflow.
- Tạo file environment cho database với tên là
production-postgres.env
POSTGRES_PASSWORD=123456
- Tạo file docker-compose.yaml
version: '3.0'
services:
postgres:
image: postgres:15.13
command: postgres -c max_connections=400
restart: always
ports:
- 5432:5432
env_file:
- production-postgres.env
volumes:
- ./.data/postgres_data:/var/lib/postgresql/data
networks:
- airflow
networks:
airflow:
name: airflow
2 files docker compose và production-postgres.env phải nằm chung trong cùng 1 directory
Start database
docker-compose up -d
Sau khi database đã online, access vào database và tạo 1 database tên là airflow
3. Chuẩn bị môi trường cho Airflow
- Tạo 1 directory tên airflow với path là
/home/airflow
- Tạo 3 directories khác ở trong thử mục
/home/airflow
:dags, logs, staging_data
mkdir /home/airflow
cd /home/airflow
mkdir -m 777 dags logs staging_data
- Tạo Fernet key: sử dụng để encrypt password, secret.
from cryptography.fernet import Fernet
print(Fernet.generate_key().decode())
- Tạo file có tên là
production.env
với thông tin dưới đây ở trong thư mục/home/airflow
ENVIRONMENT=production
# User for dockers
AIRFLOW_UID=0
AIRFLOW_GID=0
# task, dags config
AIRFLOW__CORE__PARALLELISM=128
AIRFLOW__CELERY__OPERATION_TIMEOUT=300
AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG=10
# Elton credential (will be provided by Elton)
DATA_TOOL_API_CLIENT_ID = '123456'
DATA_TOOL_API_CLIENT_SECRET = '123456'
### Need update
# fernet key for encrypt password, secret
AIRFLOW__CORE__FERNET_KEY=cH9XDsT7yIgeB38ddwZUzPMGurpAFSKHmpi_dFXBeUg=
# update database info
AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://postgres:123456@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql://postgres:123456@postgres/airflow
AIRFLOW__CELERY__BROKER_URL=redis://:@redis:6379/0
_AIRFLOW_WWW_USER_USERNAME=admin
_AIRFLOW_WWW_USER_PASSWORD=123456
[email protected]
4. Sau khi setup xong môi trường
Liên hệ team Elton để tiến hành các bước tiếp theo.
Nếu VM có Firewall, cần mở port 8082 hoặc whitelist IP 34.126.175.60, 178.128.89.179
để các services của Elton có thể kết nối được tới Airflow.