Building deployment pipeline - DevOps way

41
Building deployment pipeline: DevOps way Андрей Ребров Инженерный тренер ScrumTrek

description

 

Transcript of Building deployment pipeline - DevOps way

Page 1: Building deployment pipeline - DevOps way

Building deployment pipeline: DevOps way

Андрей Ребров

Инженерный тренер ScrumTrek

Page 2: Building deployment pipeline - DevOps way
Page 3: Building deployment pipeline - DevOps way

Continuous Deployment - Ожидание

Page 4: Building deployment pipeline - DevOps way

Continuous Deployment - Реальность

Page 5: Building deployment pipeline - DevOps way

Инструменты разработки != инструменты админов

Page 6: Building deployment pipeline - DevOps way

Недоверие Ops к Dev

Page 7: Building deployment pipeline - DevOps way

«Прохладные истории» сломанных стендов

Page 8: Building deployment pipeline - DevOps way

Решение

•  Обеспечить прозрачность процесса

•  Обеспечить качество поставок

•  Свести dev и ops в одном месте

Page 9: Building deployment pipeline - DevOps way

Delivery Pipeline – наш выбор

Page 10: Building deployment pipeline - DevOps way

Это тоже delivery pipeline

Page 11: Building deployment pipeline - DevOps way
Page 12: Building deployment pipeline - DevOps way

Culture Automation

Measurement Sharing

Page 13: Building deployment pipeline - DevOps way

Culture

Page 14: Building deployment pipeline - DevOps way

Automation

•  CI Server

•  Code Analysis

•  Auto Tests

•  Configuration Management

Page 15: Building deployment pipeline - DevOps way

CI Server •  Рассмотрим на примере Jenkins

Page 16: Building deployment pipeline - DevOps way

Что нужно

1.  Ставим pipeline plugin

2.  Делаем dependency между задачами

3.  Создаем новый pipeline view

4.  ….

5.  Profit!

Page 17: Building deployment pipeline - DevOps way

Альтернативы

Page 18: Building deployment pipeline - DevOps way

Configuration Management

•  VM control

•  OS control

•  Installation control

•  …

Page 19: Building deployment pipeline - DevOps way

Как неправильно

Page 20: Building deployment pipeline - DevOps way

Например

Page 21: Building deployment pipeline - DevOps way

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

Page 22: Building deployment pipeline - DevOps way

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

Page 23: Building deployment pipeline - DevOps way

Нужно больше инструментов!

Page 24: Building deployment pipeline - DevOps way

Еще больше!

Page 25: Building deployment pipeline - DevOps way
Page 26: Building deployment pipeline - DevOps way

Что важно

•  Useful reports

•  Useful logging

•  Vizualisation – Dashboards

– Graphs

– …

Page 27: Building deployment pipeline - DevOps way

Работаем с логами

Page 28: Building deployment pipeline - DevOps way

Node  

 Node  

Logstash   Elas.cSearch  

Kibana  

Как можно все это собрать

Page 29: Building deployment pipeline - DevOps way

Запуск 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

Page 30: Building deployment pipeline - DevOps way

Конфигурируем Logstash #1

input {  

lumberjack {    

type => "apache-access"   

port => 3338

        ssl_certificate => "/etc/ssl/logstash.pub"

      ssl_key => "/etc/ssl/logstash.key" 

}

}

Page 31: Building deployment pipeline - DevOps way

Конфигурируем Logstash #2

filter { 

date {    

type => "apache-access"   

timestamp => "dd/MMM/yyyy:HH:mm:ss Z" 

}

}

Page 32: Building deployment pipeline - DevOps way

Конфигурируем Logstash #3

output {  

elasticsearch {    

embedded => false   

cluster => logs    

host => "172.28.2.2"   

index => "apache-%{+YYYY.MM}"   

type => "apache-access"   

}

}

Page 33: Building deployment pipeline - DevOps way

Запуск Logstash

/usr/bin/java -jar /opt/logstash/logstash.jar agent -f <path-to-your.conf> -l <path-to-where-you-want-the.log>

Page 34: Building deployment pipeline - DevOps way

Конфигурируем 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

Page 35: Building deployment pipeline - DevOps way

Запускаем Elasticsearch

./bin/elasticsearch –f

или в фоне

./bin/elasticsearch

Page 36: Building deployment pipeline - DevOps way

Запускаем Kibana

ruby kibana.rb

Page 37: Building deployment pipeline - DevOps way

Визуализация

Page 38: Building deployment pipeline - DevOps way

Что есть на рынке

Page 39: Building deployment pipeline - DevOps way

Graphite

output {

graphite {

host => "10.10.10.10"

port => 2003

type => "system-netstats"

metrics => [

hosts.%{@source_host}.netstats.interfaces.%{iface}.rxpck_s,

"%{rxpck_s}”]

}

}

Page 40: Building deployment pipeline - DevOps way

Что на выходе

Page 41: Building deployment pipeline - DevOps way

Twitter

@andrebrov

E-mail

[email protected]

Skype

rebrov.andrey

Вопросы?