Building deployment pipeline - DevOps way

825 views
697 views

Published on

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
825
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Building deployment pipeline - DevOps way

  1. 1. Building deployment pipeline: DevOps way Андрей Ребров Инженерный тренер ScrumTrek
  2. 2. Continuous Deployment - Ожидание
  3. 3. Continuous Deployment - Реальность
  4. 4. Инструменты разработки != инструменты админов
  5. 5. Недоверие Ops к Dev
  6. 6. «Прохладные истории» сломанных стендов
  7. 7. Решение •  Обеспечить прозрачность процесса •  Обеспечить качество поставок •  Свести dev и ops в одном месте
  8. 8. Delivery Pipeline – наш выбор
  9. 9. Это тоже delivery pipeline
  10. 10. Culture Automation Measurement Sharing
  11. 11. Culture
  12. 12. Automation •  CI Server •  Code Analysis •  Auto Tests •  Configuration Management
  13. 13. CI Server •  Рассмотрим на примере Jenkins
  14. 14. Что нужно 1.  Ставим pipeline plugin 2.  Делаем dependency между задачами 3.  Создаем новый pipeline view 4.  …. 5.  Profit!
  15. 15. Альтернативы
  16. 16. Configuration Management •  VM control •  OS control •  Installation control •  …
  17. 17. Как неправильно
  18. 18. Например
  19. 19. Vagrant Vagrant::Config.run do |config|     config.vm.box = "precise32"     config.vm.box_url = http://files.vagrantup.com/precise32.box     config.vm.network :hostonly, "192.168.33.10”     config.vm.share_folder("v-web", "/vagrant/www", "./www", :nfs => true)     config.vm.share_folder("v-db", "/vagrant/db", "./db", :nfs => true)     config.vm.forward_port 80, 8080     config.vm.provision :shell, :inline => "apt-get update --fix- missing”  end
  20. 20. Docker from ubuntu:12.10 run apt-get update run DEBIAN_FRONTEND=noninteractive apt-get install -q -y python run DEBIAN_FRONTEND=noninteractive apt-get install -q -y python-pip run pip install django run DEBIAN_FRONTEND=noninteractive apt-get install -q -y curl run curl -L https://github.com/shykes/helloflask/archive/ master.tar.gz | tar -xzv run cd helloflask-master && pip install -r requirements.txt
  21. 21. Нужно больше инструментов!
  22. 22. Еще больше!
  23. 23. Что важно •  Useful reports •  Useful logging •  Vizualisation – Dashboards – Graphs – …
  24. 24. Работаем с логами
  25. 25. Node    Node   Logstash   Elas.cSearch   Kibana   Как можно все это собрать
  26. 26. Запуск Lumberjack /opt/lumberjack/bin/lumberjack -- host your.logstash.host -- port port-for- these-logs --ssl-ca-path /etc/ssl/ logstash.pub Для генерации ключей на logstash сервере: openssl req -x509 -newkey rsa:2048 -keyout /etc/ ssl/ logstash.key -out /etc/ssl/logstash.pub - nodes -days 365
  27. 27. Конфигурируем Logstash #1 input {   lumberjack {     type => "apache-access"    port => 3338         ssl_certificate => "/etc/ssl/logstash.pub"       ssl_key => "/etc/ssl/logstash.key"  } }
  28. 28. Конфигурируем Logstash #2 filter {  date {     type => "apache-access"    timestamp => "dd/MMM/yyyy:HH:mm:ss Z"  } }
  29. 29. Конфигурируем Logstash #3 output {   elasticsearch {     embedded => false    cluster => logs     host => "172.28.2.2"    index => "apache-%{+YYYY.MM}"    type => "apache-access"    } }
  30. 30. Запуск Logstash /usr/bin/java -jar /opt/logstash/logstash.jar agent -f <path-to- your.conf> -l <path-to-where-you-want-the.log>
  31. 31. Конфигурируем Elasticsearch cluster.name: logs index.number_of_replicas: 0 path.data: /elasticsearch/data path.work: /elasticsearch/work path.logs: /elasticsearch/logs bootstrap.mlockall: true discovery.zen.ping.multicast.enabled: false
  32. 32. Запускаем Elasticsearch ./bin/elasticsearch –f или в фоне ./bin/elasticsearch
  33. 33. Запускаем Kibana ruby kibana.rb
  34. 34. Визуализация
  35. 35. Что есть на рынке
  36. 36. Graphite output { graphite { host => "10.10.10.10" port => 2003 type => "system-netstats" metrics => [ hosts.%{@source_host}.netstats.interfaces.%{iface}.rxpck_s, "%{rxpck_s}”] } }
  37. 37. Что на выходе
  38. 38. Twitter @andrebrov E-mail arebrov@scrumtrek.ru Skype rebrov.andrey Вопросы?

×