DevOps Mashup: Special Champion Edition - Madrid DevOps 2016

Post on 15-Feb-2017

44.867 views 0 download

Transcript of DevOps Mashup: Special Champion Edition - Madrid DevOps 2016

Ignacio Sánchez Ginés@drhelius

Ramón Román Nissen@rromannissen

GRACIAS

m4.2xlarge

m4.large (x2)

m4.large

t2.micro

Nodo 1

Registry

···

Nodo 4

Master

¿Qué es DevOps?, dices mientras clavasen mi pupila tu pupila azul.

¿Qué es DevOps? ¿Y tú me lo preguntas?

DevOps... eres tú.

Gustavo Adolfo Bécquer - Sysadmin

@petecheslock

VAYAMOS

POR PARTES

Herbert Von Karajan

Teletraan

https://github.com/pinterest/

https://github.com/pinterest/

EntryPoint

IndexerServiceBuilder

ImageBuilder

Deployer Notifier

Indexer Deployer

EntryPoint

IndexerServiceBuilder

ImageBuilder

Deployer Notifier

Indexer Deployer

DEVELOPMENT KIT

ID servicio

Hostname

Path .CSV

Tokenización

SERVER

bootstrap

ssh / scp

DEVELOPMENT KIT

SERVER

bootstrap

ssh / scp

Registro

nodo

DEVELOPMENT KIT

DEVELOPMENT KIT

runlist

SERVER

input {

file {

type => "catalogue"

path => '<%= node['codemotion-

logstash-loader']['input_path'] %>'

start_position => 'beginning'

sincedb_path => "/dev/null"

}

}

filter {

csv {

columns => ["data"]

separator => ";"

}

}

output {

elasticsearch {

host => "<%= node['codemotion-logstash-

loader']['es_host'] %>"

protocol => "http"

port => "<%= node['codemotion-logstash-

loader']['es_port'] %>"

index => "<%= node['codemotion-logstash-

loader']['es_index'] %>"

template => "/tmp/logstashloader/csv-

logstash.json"

template_name => "csv-logstash"

template_overwrite => true

flush_size => 100

}

}

{

"template" : "csv-logstash",

"settings" : { "index.refresh_interval" : "15s" },

"mappings" : {

"catalogue" : {

"_all" : { "enabled" : false },

"dynamic_templates" : [{

"string_fields" : {

"match" : "*",

"match_mapping_type" : "string",

"mapping" : { "type" : "string", "index" :

"not_analyzed" }

}

}],

"properties" : {

"data":{

"type" : "string",

"analyzer": "<%= node['codemotion-logstash-

loader']['analyzer'] %>"

}

}

}

}

}

EntryPoint

IndexerServiceBuilder

ImageBuilder

Deployer Notifier

Indexer Deployer

FeignJava API

Service Builder

Aplicar Arquetipo

Construir Proyecto

Desplegar Artefacto

EntryPoint

IndexerServiceBuilder

ImageBuilder

Deployer Notifier

Indexer Deployer

Image Builder

Parametrizar Dockerfile

Build Dockerfile

Push Docker Image

Jenkins Slave

FROM java:8

ARG SERVICE_ID

VOLUME /tmp

EXPOSE 8080

ADD

http://a1.codemotion.atsistemas.com/repository/mave

n-releases/com/atsistemas/codemotion/indexed-

service-generated-${SERVICE_ID}/1.0/indexed-

service-generated-${SERVICE_ID}-1.0.jar /indexed-

service.jar

ENV SERVICE_ID=${SERVICE_ID}

RUN bash -c 'touch /indexed-service.jar'

CMD java –Xmx32m –Xss256k -

Djava.security.egd=file:/dev/./urandom

-jar /indexed-service.jar

EntryPoint

IndexerServiceBuilder

ImageBuilder

Deployer Notifier

Indexer Deployer

Deployer

Pull Docker Image

Run Docker Image

Reconfiguración NGINX

upstream indexed-service-xxxxxx {

least_conn;

{{range service "indexed-service-xxxxxx"}}server

{{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;

{{else}}server 127.0.0.1:65535; # force a 502{{end}}

}

server {

listen 80 default_server;

location /xxxxxx/ {

proxy_pass http://indexed-service-xxxxxx/;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

}

docker -H :2375 pull 10.0.0.223:9022/ indexed-service-

xxxxxx

docker -H :2375 run -d -P –e reschedule:on-node-failure

10.0.0.223:9022/indexed-service-xxxxxx

Now witness the

firepower of this fully

ARMED and

OPERATIONAL Battle

Station!

The Emperor – Project Manager

Servicio:

Consulta:

¡GRACIAS!¿ALGUNA PREGUNTA?

Ignacio Sánchez Ginés@drheliusisanchez.gines@atsistemas.com

Ramón Román Nissen@rromannissenrroman@atsistemas.com