DEVOPSMASHUP
Ignacio Sánchez Ginés@drhelius
Ramón Román Nissen@rromannissen
GRACIAS
m4.2xlarge
m4.large
m4.large
t2.micro
EXCLUSIONES
¿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
m4.2xlarge
m4.large
m4.large
t2.micro
VAYAMOS
POR PARTES
ORQUESTACIÓN
EntryPoint
IndexerServiceBuilder
ImageBuilder
Deployer Notifier
Indexer Deployer
PLATAFORMADO DINÁMICO E
INDEXACIÓN DE DATOS
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'] %>"
}
}
}
}
}
GENERACIÓN DINÁMICA DE
SERVICIOS
ONE MORE TIME…
SAY DYNAMIC
EntryPoint
IndexerServiceBuilder
ImageBuilder
Deployer Notifier
Indexer Deployer
FeignJava API
Service Builder
Aplicar Arquetipo
Construir Proyecto
Desplegar Artefacto
CONSTRUCCIÓN DINÁMICA DE
IMÁGENES
ONE MORE TIME…
SAY DYNAMIC
EntryPoint
IndexerServiceBuilder
ImageBuilder
Deployer Notifier
Indexer Deployer
Image Builder
Generar Dockerfile
Build Dockerfile
Push Docker Image
Jenkins Slave
FROM java:8
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 -Djava.security.egd=file:/dev/./urandom
-jar /indexed-service.jar
DESPLIEGUE DINÁMICO EN
SWARM
I DARE YOU
EntryPoint
IndexerServiceBuilder
ImageBuilder
Deployer Notifier
Indexer Deployer
Deployer
Pull Docker Image
Run Docker Image
Reconfiguración NGINX
upstream indexed-service-monkey {
least_conn;
{{range service "indexed-service-monkey"}}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 /monkey/ {
proxy_pass http://indexed-service-monkey/;
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 tcp://0.0.0.0:2375 pull
10.0.0.223:9022/ indexed-service-
${option.SERVICE_ID}
docker -H tcp://0.0.0.0:2375 run -d -P
10.0.0.223:9022/indexed-service-
${option.SERVICE_ID}
¿Y KUBERNETES?
¿Y KIBANA?
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é[email protected]@atsistemas.com
Ramón Román Nissen@[email protected]