Хорошо, с GitHub Actions надеюсь стало немного понятнее. Теперь необходимо понять что именно мы хотим сделать. Давайте рассмотрим пошагово что нужно сделать чтобы успешно задеплоить код для Apache Airflow:
3.8.12
git pull
репозитория с дагамиdags_folder
Касательно 4-го пункта. В экосистеме существуют библиотеки для работы с удалённым сервером через протокол SSH, например, paramiko. Можно было бы напрямую использовать её, но я предлагаю обратить ваше внимание на не менее известную библиотеку для автоматизации процессов — fabric. У Fabric в качестве зависимости как раз есть пакет paramiko. Существует множество инструментов для автоматизации работы с удалёнными машинами. Наиболее популярными являются Ansible и SaltStack. Но чтобы о них рассказать потребуется отдельный курс или даже книга 🙂
Fabric очень простой и не требует специальных знаний декларативных или языков разметки. Весь код пишется на Python, его поймёт любой кто мало-мальски знаком с ним.
from fabric import Connection, task
ssh_key_path = os.path.join(os.path.expanduser('~'), '.ssh', 'id_rsa')
@task
def uname(context):
with Connection(
'server.com',
connect_kwargs={'key_filename': ssh_key_path},
user='user',
) as conn:
conn.run('uname -a')
В коде выше есть всего 1 команда uname
, которая выводит версию ядра на сервере server.com
. Чтобы запустить необходимо выполнить:
$ fab uname
Но не стоит забывать, что предварительно необходимо установить пакет fabric:
pip install fabric