Tl;Dr
Explicarei como utilizar o pipenv para rodar localmente o airflow sem a necessidade de instalá-lo globalmente.
Introdução
Em algumas situações precisamos desenvolver ou testar aplicativos em ambientes separados de nossas máquinas, para que não sejamos pego falando "na minha máquina funciona".
Neste artigo pretendo explicar como configurar o airflow localmente para que possamos rodá-lo em nossa máquina em um ambiente virtual.
Este artigo não tem a pretensão de explicar o que é o Airflow e nem como utilizá-lo.
Pipenv
O pipenv é um excelente administrador de pacotes no melhor estilo composer (php) ou npm/yarn (javascript) para o Python.
Segundo o seu próprio site oficial "ele automáticamente cria e administra ambientes virtuais para o seu projeto, bem como adiciona/remove pacotes no seu Pipefile quando você instala/desinstala pacotes. Ele também cria o tão importante Pipfile.lock, que é utilizado para produzir construções deterministicas." (https://docs.pipenv.org/)
Neste artigo eu utilizarei o pipenv pois além de ser um excelente administrador de pacotes, como dito acima, ele ainda permite a criação de variáveis de ambiente, o que para o airflow faz-se necessário.
Instalando o Pipenv
Para instalar o pipenv é muito simples e a sua própria documentação já existe uma explicação muito boa, mas... se você quiser saber como instalá-lo continue lendo este tópico.
Se você está utilizando o MacOS, você pode instalar o Pipenv utilizando o Homebrew:
$ brew install pipenv
Ou, se você está utilizando Fedora 28:
$ sudo dnf install pipenv
Você também pode instalar utilizando o pip, neste caso digite:
$ pip install --user pipenv
Para mais referência sobre a instalação leia a documentação oficial.
Airflow
Preparando o Ambiente
Neste artigo estarei utilizando o MacOS e o Python 3.8.3 para fazer as instalações, mas a lógica da utilização do Airflow e do Pipenv não irá diferir muito, a não ser que você esteja utilizando o Windows com Python 2.alguma coisa(sinto muito por isso).
Inicialmente vamos criar uma pasta nova:
$ mkdir airflow-example
O Pipenv pode criar para você um ambiente virtual automagicamente, contudo, eu prefiro criar uma pasta de ambiente virtual dentro da pasta onde eu estou trabalhando. O Pipenv irá identificar esta pasta e irá salvar todas as dependências nela.
Eis o comando para a criação de uma pasta de ambiente virtual no Python ˆ3
$ python -m venv .venv
Para iniciar o ambiente virtual no terminal nós precisamos digitar o comando:
$ pipenv shell
Agora todos os comando que você digitar no ambiente virtual serão referentes à este, se você quiser confirmar se está dentro do ambiente virtual digite o comando
$ which python
Ele deverá retornar o local do interpretador do seu python que deverá ser o sua pasta .venv que acabamos de criar. Algo como
/Users/Myuser/Desktop/airflow-example/.venv/bin/python
Instalando o Airflow
Com o ambiente virtual devidamente setado, vamos dar inicio à instalação do Airflow.
Caso você não tenha ainda carregado o ambiente virtual este é um excelente momento para fazê-lo:
$ pipenv shell
Inicialmente precisamos adicionar uma variável de ambiente no pipenv, para que possamos instalar o airflow em nosso ambiente virtual. Dessa forma, digite o comando abaixo:
$ echo "AIRFLOW_HOME=${PWD}/airflow" >> .env
Para instalá-lo sem quaisque dependências adicionais basta digitar o comando abaixo:
$ pipenv install apache-airflow
Rodando o Airflow
Agora vamos testar para ver se o Airflow foi devidamente instalado.
Certifique-se de que você está no ambiente virtual:
$ which python
Para rodar o airflow vamos seguir a própria documentação do Airflow
Inicialize o banco de dados:
$ airflow db init
Crie um usuário
airflow users create \
--username admin \
--firstname Peter \
--lastname Parker \
--role Admin \
--email spiderman@superhero.org
Inicialize o webserver com a porta default 8080
$ airflow webserver --port 8080
Abra um novo terminal ou rode o webserver acima com a flag -D
para seu terminal rodar a execução do webserver sem bloquear o cache do seu terminal.
Em seguida inicialize o scheduler:
$ airflow scheduler
Com os passos acima você já conseguirá visualizar a UI do Airflow no link http://localhost:8080
Top comments (0)