Спикер: Дима Милых, Developer в Ivelum.
Тема: «Деплой Django-проекта с помощью Fabric».
«Поговорим, как автоматизировать настройку сервера и развертывание Django-проекта бесплатно и без СМС.»
О спикере: программист, 23 года. В свободное время изучает Python, пишет скрипты для Hubot.
Видео: https://www.youtube.com/watch?v=RkcX6ZWU56s#t=2207
__
Сайт: http://www.dataart.ru/
Facebook: https://www.facebook.com/DataArt.Enjoy
Vkontakte: http://vk.com/dataart_enjoy
Twitter: https://twitter.com/DataArt_Enjoy
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Дмитрий Милых «Деплой Django-проекта с помощью Fabric»
1. Деплой Django–проекта с
помощью Fabric
Автоматизация рутины или настройка сервера и развёртывание
Django–проекта бесплатно и без СМС
Дима Милых, Ivelum
2. Что такое fabric?
Fabric — это библиотека для Python (2.5–2.7) и инструмент командной
строки (fab) для использования SSH при развёртывании приложений или
выполнении административных задач.
Что он могёт?
• позволяет выполнять команды через SSH легко и по–питонски
• возможность передачи параметров в команды
• указание удалённого хоста или несколько хостов
• проверка результата выполнения команды
• возможность интерактивного запроса команд от пользователя
3. Как установить?
pip install fabric
Hello, World!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Dima Milyh'
from fabric.api import run, env, cd
def hello():
print 'Hello, World!'
5. Круто, но как выполнять команды?
• sudo("supervisorctl restart my_task") # выполнение команд от
суперпользователя
• run("bin/hubot -a campfire") # запускает обычную shell команду
• put("/projects/my_app/manage.py", "/home/user/app/manage.py") #
копирует локальный файл manage.py на сервер
• get("/var/log/my_log", "/home/user/logs/my_log") # копирует
файл my_log с сервера на локальный хост
• local("python manage.py test") # выполняет shell–команду на локальном
хосте
• value = prompt("Really?") # запрос ввода от пользователя
• reboot(), abort(), warn()
6. Здорово, но как мне выполнить
команды на сервере?
• Способ джуниора:
env.hosts = ['usr1@host1:22', 'usr2@host2:22']
• Способ мидла:
@hosts('user1@host1', 'host2', 'user2@host3')
• Способ тимлида:
env.roledefs.update({
'live': ['user1@host1', 'host2'],
'stage': ['user2@host3']
})
@roles('live', 'stage')
• Способ Чака Норриса:
fab -H localhost, host2 <task>