Successfully reported this slideshow.
Your SlideShare is downloading. ×

Fabric для управления серверами

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 15 Ad
Advertisement

More Related Content

Slideshows for you (20)

More from Python Meetup (20)

Advertisement

Recently uploaded (18)

Advertisement

Fabric для управления серверами

  1. 1. Fabric для управления серверами Alex Zaitsev, Chief Cloud Architectat
  2. 2. Какая возникла проблема * человек, работающий с большим количеством серверов, не станет играть в эту игру 1
  3. 3. Что нужно? • Первоначальная настройка сервера • Деплой софта • Управление парком серверов 2
  4. 4. Тут нам помогут: Puppet Chef Fabric * лого нет, но есть картинка по запросу в гугле 3
  5. 5. Почему Fabric? • Легкий и простой • Гибкий • Не требует клиентской части 4
  6. 6. Fabric - для айтишников, которые любят порядок * В ICQ вряд ли используют fabric 5
  7. 7. Fab, fab, fab... пишем первый fabfile - упорядоченный набор методов from fabric.api import env, run env.hosts = [‘localhost’] def my_task(): run('rm -rf /*') 6
  8. 8. А если много серверов? * датацентр SUN мог бы не стать заброшенным, если бы они использовали автоматизацию на Python 7
  9. 9. А если много серверов? from fabric.api import env, run env.roledefs = { 'web': [‘server1’, ‘server2’, ‘server3’], ‘dev’: [‘server3’, ‘server4’], } @roles(‘web’) def my_task(): run('rm -rf /*') 8
  10. 10. Михалыч, запускай! from fabric.api import execute from fabfile import my_task execute(my_task) Из кода: # fab my_task Из консоли: 9
  11. 11. Не меняйте привычки # fab my_task -i /path/to/key.pem # fab my_task -H server3 -u dev -p passwd # fab my_task --hosts=server1,server5 10
  12. 12. Конфигурирование * Кадр из какого-то фильма ужасов 11
  13. 13. Конфигурирование env.user = 'dev' env.parallel = True env.linewise = True env.skip_bad_hosts = True env.connection_attempts = 3 env.key_filename = ssh_key_path env.warn_only = True 12
  14. 14. Не только запуск команд def copy_to_remote_server(): put(‘/local/path’, ‘/remote/path’) def copy_from_remote_server(): get('/remote/path', '/local/path) 13
  15. 15. Буду рад пообщаться Саша Зайцев me@azaitsev.com twitter.com/adeby 14

×