24
ANÁLISIS COMPARATIVO DE HERRAMIENTAS DE DEVOPS Presentado por: ü Carlos Escoto ü Daniel Atuesta R.

Herramientas DevOps

Embed Size (px)

Citation preview

Page 1: Herramientas DevOps

ANÁLISISCOMPARATIVODEHERRAMIENTASDEDEVOPS

Presentadopor:ü CarlosEscotoü DanielAtuestaR.

Page 2: Herramientas DevOps

2

Tabladecontenido

1. INTRODUCCIÓN...................................................................................................................3

2. HERRAMIENTASDEVOPS.....................................................................................................4

2.1. PUPPET...........................................................................................................................4

2.2 SALTSTACK......................................................................................................................5

2.3. CHEF...............................................................................................................................6

3 ANÁLISISCOMPARATIVODELASHERRAMIENTASDEVOPS.................................................7

3.1 COMPATIBILIDADCONSISTEMASOPERATIVOS...............................................................8

3.2 INTEGRACIÓNCONOTRASPLATAFORMAS/HERRAMIENTAS...........................................8

3.3 RENDIMIENTODELASHERRAMIENTAS...........................................................................9

3.4 SEGURIDADDELASHERRAMIENTAS.............................................................................10

4 DESPLIEGUEDELASHERRAMIENTASDEVOPS...................................................................11

4.1 PUPPET.........................................................................................................................11

4.2 SALTSTACK....................................................................................................................15

4.3 CHEF.............................................................................................................................16

5 CONCLUSIONES.................................................................................................................22

6 BIBLIOGRAFÍA...................................................................................................................24

Page 3: Herramientas DevOps

3

1. IntroducciónEn laactualidad, granpartede lasoperacionesde lasempresas sebasaen sistemasdesoftware,hardwareycomunicaciones,dependiendodeltipodeactividadalquesedediqueuna empresa. Teniendo en cuenta eso, los administradores de redes y sistemas debenafrontarelcrecimientodelainfraestructuratecnológicaelcualpuedeserunproblema.Enestecontextoesesencialqueelesquemadelainfraestructuratecnológicadecadaempresaseaescalableyademáspermitaaplicarestándares loscuales faciliten lagestióndeestamisma.Las empresas que están distribuidas en diferentes países y regiones delmundo, debenconsiderarestocomounfactorrelevante,considerandolasnecesidadesderendimiento,capacidad ydisponibilidadde respuesta, ademásdel crecimientode lasoperaciones sinnecesidad de realizar cambios los cuales puedan repercutir en el funcionamiento de laempresa. Una difícil tarea es implementar las herramientas apropiadas, decidir cualherramienta se debe usar teniendo en cuenta las características de la infraestructura,ademásdelaidentificacióndelproblemaenparticularquesetiene.Porlotantoenestetrabajo, se analizaran diferentes herramientas que puedan permitir a una empresareaccionarantelasfuerzasdelmercadodeformaconfiableyeficiente.

Page 4: Herramientas DevOps

4

2. HerramientasDevOpsDevOpseselacrónimoeninglésdeDevelopmentOperations(DesarrolloyOperaciones)herramientas para administrar infraestructuras, nacen a partir de la expansión de lasoperaciones de los negocios en diferentes partes del mundo, para esto se crearondiferentesherramientas lascualesofrecenapoyoa laadministraciónyconfiguracióndeinfraestructurasdeformacentralizada.Enelpresentetrabajo,analizaremostresdeellas.

2.1. PuppetEstaherramienta,fuecreadaconelfindefacilitarlasdiferentesoperacionesdetecnologíasde información, optimizando procesos de configuración de forma práctica y rápida,automatizando tareas repetitivas, contando con características como el ajuste ainfraestructurasescalables,contandoconunagestiónpormediodeinterfazgráfica(web)oterminal.Laconfiguracióndelasmaquinaspuedenserestablecidapormediodecódigo,escribiéndolasenlenguajepropiodePuppet.Graciasaestolasrelacionesentrelosrecursosylaconfiguraciónestánescritasencódigoporloquefacilitanosolosaberlaconfiguraciónensi,sinoquetambiénelporquédealgunaconfiguraciónenespecífico, locualayudaamejorarelprocesodecontinuaintegraciónconsiguiendodesarrollaryprobaraplicacionesdesplegadasconlamismaconfiguracióndelsistema.Esunaherramientaqueseintegraconherramientasdeentornosenlanubecomo,AmazonWebServicelascualesmarcanunatendencia.La arquitectura que emplea Puppet es “Cliente-Servidor”, la empresa creadora de estaherramienta (Puppet Labs.) la denominan arquitectura “Master-Agent”. Master hacereferenciaalservidorcentralelcualcontieneelnúcleodelasfuncionesdeconfiguración(Recursos).Elcliente,enestecaso“Agent”lecorrespondegestionarlosdiferentesprocesosenlosnodosremotos.Estetipodearquitecturaestacreadaparausarsecomounservicioque ejecuta en cada nodo. Esta herramienta tiene una variante la cual es denominada“PuppetApply”lacualusaunametodologíaorientadaasolucionesenlanube,estavariantetienelacaracterísticadevelocidad,yaquenorequierevalidaciónconcretadelaejecución,estosinafectarlosnivelesdeseguridad,yaqueencapsulalosrecursosqueseejecutanporlosdiferentesnodosremotos.Puppetcuentacondosversiones:

⇒ PuppetOpenSource:Estaversiónestáenfocadaydiseñadaparabrindarsolucionesa infraestructuras pequeñas las cuales no demandan grandes procesos, sonsosteniblesydebajocosto.

Page 5: Herramientas DevOps

5

⇒ Puppete Enterprise: Esta es una versión que ofrece soluciones para solucionarproblemas de integración en infraestructuras de topología compleja, además decontarconsoportedepartedelosdesarrolladores(PuppetLabs).

Debidoaqueestaesunaherramientamuycompleta,requiereunaprendizajeamplio,contiempodededicación,conocimientostécnicosenredes,programacióneinfraestructurasengeneral.

2.2 SaltStackSaltStack es una herramienta desarrollada con el objetivo de administrar sistemas deinformaciónintegradospormuchosdispositivosdeformamásfácil.Estaherramientaestábajo licenciaApacheyutilizaPythoncomo lenguajedeprogramaciónpara lagestióndeconfiguración.Las soluciones de automatización que ofrece SaltStack son para los siguientes tipos declientes:

⇒ Operadores de Tecnologías de Información: Esta herramienta se encarga de laadministracióndelasarquitecturascompuestaspormuchosdispositivos.

⇒ DevOps:SaltStackofrecesolucionesalamedida,lascualesofrecensolucionesdegestiónóptima.

⇒ Operadores de Nube (CloudOps): Esta herramienta puede adaptarse a lastendenciasqueofrecenlosproveedoresdecloud.

SlatStackcuentaconcaracterísticasprincipalescomo:

⇒ Flexibilidad: Esta herramienta puede ser adaptada a diferentes arquitecturas ymodelos de desarrollo empresarial, desde una red de topología sencilla hastasolucionesparacentrosdeprocesosdedatos.

⇒ Velocidad:SaltStackofrecesolucionesdegestióndeformafácilyeficazabajocoste.

⇒ Escalabilidad:SaltStack tiene la capacidadde soportey crecimientoenmúltiplesplataformas,paragestionarfácilmente.

Aligualquelaanteriorherramienta(Puppete),SaltStacktrabajabajoelmodelo“Cliente-Servidor”,endondeelservidorsedenomina“Master”ylosnodos“Minions”.Losnodossongestionadospormediodelíneasdecomandodondeseinterpretanygeneransolucionesdeadministracióndedispositivosremotos.

Page 6: Herramientas DevOps

6

Elservidoro“Master”comoesdenominadoenestecaso,identificalosnodos“Minions”pormediodeunaetiquetadeidentificaciónúnica,lacualestransportadapormediodeunprotocolointérpretederedseguro“SecureShell”.

2.3. ChefChefesunaherramientaqueinicialmentefuedesarrolladaconelobjetivodesolucionarlaproblemáticadegestiónenloscentrosdeprocesosdedatosdeAmazonyMicrosoft,perofueactualizadayevolucionoparaabarcardistintasplataformas.ChefgestionalosprocesosenlosnodosyenlasestacionesdetrabajousandolenguajesdeprogramaciónErlang1 yRuby2.ActualmenteChef se caracterizapor sermultiplataformaademás de ser escalable y flexible, ofrece más seguridad que otras herramientas delmercado.Lacaracterísticamásimportantedeestaherramientaesquesedesarrollóparalagestióndeentornosvirtuales,locualhacemásfácillaescalabilidadaambientescloud,ademásCheftieneunaexcelenteintegraciónconOpenStack,GoogleComputeEngine,WindowsAzureyAmazonWebService.Graciasalaexcelenteadaptaciónendiferentesescenarios,cuentaconclientesimportantescomoLinkedIn,FacebookoYoutube,entreotros.Chef está compuesto por servidor de gestión “Chef Server”, Estaciones de trabajo“Workstation”lascualesestándedicadasainteractuarcon“ChefServer”yconlosnodos,loquequieredecirqueeselintermediarioentrelosnodosyelservidorcentral.Cuando se habla de nodos se hace referencia a los elementos que componen lainfraestructuratecnológica.Loscomponentesdeestaherramientaestánestructuradosdeformajerárquica,loscualessongestionadosatravésde“ChefCookbooks”lacualesunaunidaddeconfiguracióndondesongestionadaslasestacionesdetrabajo(Workstation).ExistendiferentestiposdeChefServer:

⇒ OpenSourceChefServer:Estaeslaversióngratis,lacualesusadaporpequeñasempresasyaqueesdecódigoabiertoypermitegestionardiferentesmódulosdelaherramienta,claroestáqueconciertaslimitaciones.

⇒ Hosted Chef Server:Esta versión de servidor es la principal herramienta de usocomercial, gracias a que ofrece soluciones a distintos problemas de formapredeterminadahaciendousodemódulosexistentesenlosrepositorios.

1Lenguajedeprogramaciónconcurrente.2Lenguajedeprogramaciónorientadoaobjetos.

Page 7: Herramientas DevOps

7

⇒ Private Chef: Esta herramienta cuenta con la característica de ajustarse a lasnecesidadesespecíficasdelosclientes.

Ademáslosnodostambiénestánclasificados:

⇒ Nodosvirtuales:Dispositivosvirtuales.⇒ NodosinstanciasdeCloud:Componentesqueseencuentranenentornocloud.⇒ Nodos físicos: Cualquier dispositivo físico, estaciones de trabajo, tablet’s,

enrutadores,entreotros.

3 AnálisiscomparativodelasherramientasDevOps Perspectivageneraldecadaunadelasherramientas: Propiedades Puppet SaltStack ChefTipodelicencia GNUGPLyApache Apache ApacheArquitectura CloudyCliente-Servidor Cloud CloudyCliente-ServidorLenguaje Ruby Python RubyEscalable Si Si SiEncriptación Si Si SiMultiplataforma Si Si Si

Tabla1:Características.

Estasherramientasposeencaracterísticassimilares,quesondesarrolladasbajolicenciadesoftwarelibre,locualpermitemodificarydistribuirlasbajociertoscriterios,loquepermitenalusuariofinaltenerlibertaddeuso.Cadaunadelasherramientasmencionadastienesurepositoriodecódigo fuenteen líneaydeaccesopúblicoconel findeque losusuariostenganlaopcióndemodificarlasasucriterioynecesidades.SaltStack tiene arquitectura Cloud, para optimizar los tiempos de administración yejecución.PortalmotivoPuppetyChefdebieronevolucionaryaqueestasdosherramientastienearquitecturaconelmodeloCliente-Servidor.Estas herramientas poseen un conjunto de librerías denominadas módulos, los cualesgestionanla infraestructura.Cadalibreríagestionalosmódulosdedistintaformainclusointegrandomódulosdeunaherramientaenotra,teniendoencuentaqueel lenguajedeprogramaciónenelqueestádesarrolladoseaelmismo. PorejemploPuppetpuedeintegrarmódulosdeChefqueesténdesarrolladosenlenguajeRuby,tansolocondescargarelcódigofuentedelasherramientas.Funcionesprincipalesquegestionanlosmódulos:

⇒ Administracióndearchivos.⇒ Administraciónyconfiguracióndesistemas.

Page 8: Herramientas DevOps

8

⇒ Administracióndeservicios.⇒ Administraciónyconfiguracióndebackup’s.

3.1 CompatibilidadconSistemasOperativos.Hoy en dia las empresas u organizaciones, hacen uso de diferentes dispositivos comoservidores, equipos de trabajo, dispositivos móviles, entre otros, los cuales resultancomplejosdeadministrarenunaredempresarialasociadaaunatecnologíaespecífica.Portalmotivolasherramientasdebensercompatiblescontodoslossistemasoperativosquehayenelmercado.Puppet,SaltStackyChefdesarrollansusfuncionesendiferentesplataformasdesistemasoperativos.Porotroladotienenlacaracterísticadepoderadministrarlainfraestructurasinimportarelmodelodenegocioyarquitecturadereddeunaempresa.Plataformassoportadasporcadaherramienta:

SistemaOperativo Puppet SaltStack ChefLinux Si Si SiOSX Parcial Si SiWindows Si Si SiSolaris Si Si SiIBMAIX Si Si Si

Tabla2:CompatibilidadSistemasOperativos.

3.2 IntegraciónconotrasPlataformas/HerramientasApartirdelanecesidaddenegocio,lasherramientasDevOps,soncapacesdeintegrarseconotrasherramientasparaformarsistemascomplejos.Integrándoseconserviciosenlanube,paragestionaryadministrardeformaautomatizadalosprocesosqueconllevaunainstancia,detalformaquesefacilitenlastareas,comoporejemplo en un centro de proceso de datos. También administrar los procesos de unamáquina virtual, las copias de seguridad de lasmaquinas, gestionar los puertos de redvirtualquetienenlosmotoresdevirtualización,entreotros.Plataformas/Herramientas Puppet SaltStack ChefOpenStack Si Si SiVMware Si Si SiTeamFoundationServer Si Si SiAmazonWebService Si Si SiGoogleComputeEngine Si Si SiNagios Si Si Si

Tabla3:IntegraciónconotrasPlataformas/Herramientas

Page 9: Herramientas DevOps

9

Estetipodeherramientas,permitendesarrollartareasenotrasáreasinformáticas,comoporejemploenlagestiónderepositoriosdecódigo,monitorioderedes,entreotros.Soloconejecutarelmodulorespectivo,encasoqueelmoduloquerequeridonoexista,estepuedeserdesarrolladoconalgunodeloslenguajesdeprogramaciónsoportados.Estas herramientas integran en su propia arquitectura, diferentes módulos los cualespermitenadministrar ymonitorear la infraestructura.PorejemploAmazonWebService(AWS)implementamódulosenlastresherramientasparaintegrarlagestiónautomatizadade los procesos de red. Este tipo de integración permite el desarrollo de sistemas demonitoreo,loscualespuederealizarprocesosdeconfiguraciónreduciendolaintervencióndelosadministradoresdeinfraestructura.

3.3 BeneficiodelasHerramientasElbeneficiodeestasherramientasesuntemadegranrelevancia,yaquealadministrarmuchosdispositivosdeformasimultanearequiereunbuenrendimientodeejecución.Uno de los aspectos determinante en la velocidad de estas herramientas es el tipo dearquitectura,yaquesonmáseficaceslasarquitecturasbasadasenserviciosenlanubequelas arquitecturas Cliente-Servidor, esto gracias a que la arquitectura en la nube tieneejecucióndirecta,loquequieredecirquenonecesitandeunClienteparapoderejecutarlastareasdeconfiguraciónyadministraciónenlosnodos.Puppetesunadelasherramientasmáscompletasyademáscomplejayaqueofrecedosarquitecturasdistintas(NubeyCliente-Servidor)asimismotienedosmodelosdeejecución,lo cual la convierte en una herramienta con diferentes posibilidades de ejecuciónofreciendosolucionesaunmismoproblemadependiendodeloqueserequiera.Puppet es una de las herramientas DevOps optimizada más reconocida, gracias a losmódulosqueofreceparadiferentesprocesos,loscualessonejecutadosconunrendimientoquepermiteadministrardeformarápidamuchosdispositivos.Por otro lado SaltStack distribuye los procesos entre múltiples nodos, lo que permitedesplegarnodoscentralesyasítenervariasopcionespararesponderlaspeticionesqueserealizanalos“Minions”.Chef optimiza los procesos gracias a la implementación de estaciones de trabajo“Workstations”,estosprocesoscontienenrepositoriosdeChefloscualesejecutantareasyseutilizancomo“ChefServers”mejorandolosprocesosdeejecuciónyadministracióndetareasafragmentosdeunainfraestructuratecnológica.Elrendimientodelastresherramientasesparecido,yaquepuedenserdeusoespecíficoodeusogeneral,dependiendodelasnecesidadesdelusuario.Loquesedebetenerencuentaenestecasoeslaantigüedadotrayectoria,yaqueentremástrayectoriapuedentenermásmódulosafinados.

Page 10: Herramientas DevOps

10

3.4 SeguridaddelasHerramientasUnodelosaspectosmássignificativosenlaeleccióndecualquiertipodeherramientaengeneral es la seguridad. Los usuarios buscan altos estándares de seguridad los cualesgaranticenlaefectividaddelosprocesosrealizados.Puppetimplementacomplementosdeseguridad:

⇒ SeguridadActiveMQ:Tanto losdispositivos intermedioscomoelservidorcentralusanprotocolosdeseguridadparalaautenticacióndecadaunodelosnodos.

⇒ SSL:ParalageneracióndeconexionesSSH3seguras,usandocertificadospúblicosyprivados.

⇒ AES+RSAdeseguridad:Certifica laseguridadde lasestructurasPuppethaciendousodeclavespúblicasyprivadas.

ProcesodePuppetparaejecucionesyconexionesseguraspormedioderedes.

I. Conexióndelclientepormediodecredenciales.II. ConexiónconelMiddlewaredered.III. Autenticacióndered.IV. Conexiónalosnodospormediodecredenciales.V. AutorizaciónsimpleRPC4.VI. AuditoriaRPC.

Tabla4:ProcesodeautenticaciónenPuppet

PorotroladoSaltStackusaunalibreríadeseguridad,concomplementosdecriptografíadelenguaje de programación PyCrypto (Python), este complemento realiza sus funcionesgracias al intercambio de llaves numéricas entre el cliente y el nodo principal, el cualinterpreta ordenes seguras que no requieren de agentes en los nodos cliente. Enconsecuencia su rendimiento se ve afectado ya que disminuye el rendimiento en lascomunicacionesdebidoalconsumoderecursos.ChefoperadeformasimilaraPuppet,yaqueusacertificadosdeseguridaddelacapadetransporte(SSL)5paraestablecerconexiónseguraentreelservidorChefylosnodosChef.ElclienteChefdenominado“Knife”realizalosprocesosdegeneraciónylecturadelasllavespúblicasyprivadas.Chefusamedidasdeseguridadquebrindanconfianzaen lamanipulaciónde losdatosyagregaunacapaexternadeseguridadalasarquitecturasdered.

3SSH:SecureShell,esunprotocoloelcualsirveparaaccederamaquinasremotaspormediodeunared.4RemoteProcedureCall,protocoloderedquepermiteaunprogramaejecutarcódigoenotramáquinaremota.5SSL(SecureSocketsLayer):Protocoloscriptográficosqueproporcionancomunicacionessegurasporunared.

Page 11: Herramientas DevOps

11

4 DesplieguedelasherramientasDevOpsAhoravamosaprocederarealizareldespliegueolainstalacióndelasherramientasquehemos escogido: Puppet, SaltStack y Chef. Una vez realizada la explicación de estainstalación, realizaremos una receta con cada una. Todos los despliegues los vamos arealizarenelsistemaoperativoUbuntu.

4.1 PuppetEnprimerlugar,pararealizarlainstalacióndePuppetvamosatenerquerealizarlainstalacióndepuppetmaster.Ejecutamoselsiguientecomando:

apt-get install puppetmaster

Unavezinstalado,configuramoseldirectoriodondesepondránlosficheros.Así,abrimoselficherofileserver.conf.

editor /etc/puppet/fileserver.conf

En este caso, como nuestras máquinas están en el mismo rango, las IP tendrán unaterminación0/24yelficheroquedaráasí:

[files]

path /etc/puppet/files

allow 192.168.122.0/24

[plugins]

allow 192.168.122.0/24

Ahoravamosacrearficherosparalosnodosdelasiguienteforma:

node pruebanode {

}

node 'client1.cluster' inherits pruebanode {

}

node 'client2.cluster' inherits pruebanode {

}

Page 12: Herramientas DevOps

12

Si este fichero quiere tenerse en cuenta, hay que crear el fichero/etf/puppet/manifests/site.ppeincluerelficheroquehemoscreadotambién.Elcontenidoquenosotrostenemosenesteficheroeselsiguiente:

Import “nodes”

Ahoraloreiniciamos:

service puppetmaster restart

Ahorarealizamoslainstalacióndelpaquetepuppetparaquepodamoscontrolarlodesdelamáquina:

apt-get install puppet

Revisamoselfcherodeconfiguracióndelcliente,quedeberíaserelsiguiente:

root@client1:~# cat /etc/puppet/puppet.conf

[main]

logdir=/var/log/puppet

vardir=/var/lib/puppet

ssldir=/var/lib/puppet/ssl

rundir=/var/run/puppet

factpath=$vardir/lib/facter

templatedir=$confdir/templates

[agent]

server=master.cluster

Paraquefuncionepuppetdtenemosquehabilitareldominiodelasiguienteformaeditandoelficheroetc/default/puppet:

editor /etc/default/puppet

Debeasegurarnosqueestáconfiguradocomo‘yes’.Ahoraarrancamoselservicio:

service puppet start

Page 13: Herramientas DevOps

13

Ahoravamosalmásterycomprobamosqueestánbienregistrados,ennuestrocasolosdosclientes:

root@master:~# puppet cert --list --all

client1.cluster (00:00:ssl_fingerprint:00:00)

client2.cluster (00:00:ssl_fingerprint:00:00)

+ master.cluster (00:00:ssl_fingerprint:00:00)

Yporúltimo,firmamosloscertificadosdelosclientes:

root@master:~# puppet cert --list

client2.cluster

client1.cluster

root@master:~# puppet cert --sign client1.cluster

notice: Signed certificate request for client1.cluster

notice: Removing file Puppet::SSL::CertificateRequest client1.cluster at '/var/l

ib/puppet/ssl/ca/requests/client1.cluster.pem'

root@master:~# puppet cert --sign client2.cluster

notice: Signed certificate request for client2.cluster

notice: Removing file Puppet::SSL::CertificateRequest client2.cluster at '/var/l

ib/puppet/ssl/ca/requests/client2.cluster.pem'

Ahoa vamos a asignar losmódulos, que es donde definiremos las configuraciones y losficheros.Creamoslaestructurabásica:

mkdir -p /etc/puppet/modules/prueba/{manifests,files,templates}

Creamosunficherovacíodondepondremoslarecetadepuppet.

touch /etc/puppet/modules/prueba/manifests/init.pp

Ahoraeditamosesteficheromedianteparaquetengaesteaspect:

node pruebanode {

include prueba

}

node 'client1.cluster' inherits pruebanode {

Page 14: Herramientas DevOps

14

}

node 'client2.cluster' inherits pruebanode {

}

Ahorayatendremosunmóduloasignadoacadaunodelosclientes.Porúltimo,vamosarealizarunapruebamedianteunareceta.Colocaremosunficheroenlaruta/etc/puppet/prueba/filesllamado“ficherodeprueba”quecontienelafrase“estoesunficherodeprueba”.Nosdirigiremosa/etc/puppet/module/prueba/manifests/init.ppyponemoselsiguientecontenido:

class prueba {

file { "/root/ficherodeprueba":

owner => root,

group => root,

mode => 400,

source => "puppet:///modules/prueba/ficherodeprueba",

}

}

Ahora, comprobamos que ha funcionado y tenemos nuestro fichero ejecutando en elclientelosiguiente:

root@client1:~# puppetd -vt && ls

info: Caching catalog for client1.cluster

info: Applying configuration version '1322082679'

notice: Finished catalog run in 0.05 seconds

ficherodeprueba

Page 15: Herramientas DevOps

15

4.2 SaltStackPara realizar la instalación de SaltStack tenemos que añadir el paquete de SaltStack anuestrorepositorio:

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:saltstack/salt

Ahoratendremosqueactualizarnuestrabasededatosdeapt:

Sudo apt-get update

Una vez añadido el paquete, podremos instalar Salt Master y Salt Minion. Para elloejecutamoslosiguiente:

sudo apt-get install salt-master

sudo apt-get install salt-minion

LosiguienteseráenseñarleaSaltMinionaencontrarSaltMaster.Nosotroslotendremosenelmismo host por lo que le indicaremos en las opciones de configuración que está en“localhost”.Asíqueeditamoselfichero“minion”:

vi /etc/salt/minion

Yasí,enlalíneaquehacereferenciaalmasterleindicamoselvalor“localhost”

master: localhost

UnavezrealizadoelcambioreininciamosSaltMinion:

service salt-minion restart

PonemoslalistadelasclavesMinionqueconoceelMaster:

Salt key -L

Page 16: Herramientas DevOps

16

Sedeberíanmostrarlasclavesdelasiguienteformabajoeltexto“Unacceptedkeys”:

Accepted Keys:

Unaccepted Keys:

Carlosydani

Rejected Keys:

Por ultimo, tenemos que hacer que elMaster acepte las claves deMinion, y para ellodebemosejecutarlosiguiente:

Salt –key –a ‘Carlosydani’

Ydeberíamosverlosiguiente:

The following keys are going to be accepted:

Unaccepted Keys:

Carlosydani

Proceed [n/Y] y

Key for minion Carlosydani accepted

ConestospasosyatendremosfuncionandoenUbuntuSaltMasterySaltMinion.

4.3 ChefPararealizarlainstalacióndeChefennuestrosistemadebemostenerunservidorDNSparaque se puedan comunicar el servidor y el cliente. Si no disponemos de uno debemosañadirlomedianteelsiguientecomando:

127.0.0.1 chef-client.example.com chef-client

192.168.2.15 server.example.com server

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

Page 17: Herramientas DevOps

17

ff02::2 ip6-allrouters

Ahora comprobamos que lo hemos configurado correctamente mediante el comando“hostname-f”:

root@chef-client:~# hostname -f

chef-client.example.com

YaestátodolistoparacomenzarainstalarChef.HayvariasopcionesparainstalarChef-Server,peronosotrosusaremosunrepositoriodeOpscodeparainstalarlodesdeahí.Enprimerlugar,añadimoslosrepositorios:

root@server:~# echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | sudo tee /etc/apt/sources.list.d/opscode.list

AhoraponemoslaclaveGPDdeOpscodeparaapt:

mkdir -p /etc/apt/trusted.gpg.d

gpg --keyserver keys.gnupg.net --recv-keys 83EF826A

gpg --export [email protected] | sudo tee /etc/apt/trusted.gpg.d/opscode-keyr

ing.gpg > /dev/null

Actualizamosyacontinuacióninstalamoselpaquete“opscode-keyring”paramantenerlaclaveactualizadayejecutamoselupgrade:

apt-get update

apt-get install opscode-keyring # permanent upgradeable keyring

apt-get upgrade

AhorainstalamosChef-Serverdesdelosrepositorios:

apt-get install chef chef-server

TendremosqueponercontraseñasparaChef-solryalgunasconfiguracionesmás.Nossaldráunerroralahoradeinciarperounavezfinalizadapodremosiniciarlobien:

/etc/init.d/chef-server start

Page 18: Herramientas DevOps

18

Ahoratenemosquecomprobarlospuertosparaverquelohemosinstaladotodobien:

netstat -putan

Los puertos que debemos comprobar serán el 4000 (Chef-Server), 4040 (Chef-Server-Webui),5984(CouchDB),5672(RabbitMQ)y8983(Chef-Solr).ConestohabremosfinalizadolainstalacióndeChef-Server,perodebemosdeconfigurarnuestraWorkStation.Laconfiguraremosenelmismoservidor,aunquepodríaserenotroequipoindependiente.Creamoseldirectorio“.chef”ycreamosloscertificadosnecesarios:

mkdir -p ~/.chef

sudo cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef

Ponemosnuestrousuariocomopropietario:

sudo chown -R $USER ~/.chef

Yporúltimocreamoslaapiconlossiguientescomandos:

usuario@server:~$ knife configure -i

Overwrite /home/usuario/.chef/knife.rb? (Y/N) Y

Please enter the chef server URL: [http://server.example.com:4000]

Please enter a clientname for the new client: [usuario]

Please enter the existing admin clientname: [chef-webui]

Please enter the location of the existing admin client's private key: [/etc/chef

/webui.pem] .chef/webui.pem

Please enter the validation clientname: [chef-validator]

Please enter the location of the validation key: [/etc/chef/validation.pem] .che

f/validation.pem

Please enter the path to a chef repository (or leave blank):

Creating initial API user...

Created client[usuario]

Configuration file written to /home/usuario/.chef/knife.rb

Page 19: Herramientas DevOps

19

Deestaformayapodremosaccedeanuestrainterfazwebmediantelaipyelpuerto4040(http:/ipservidor:4040).Nospediráelusuarioycontraseñaquepusimosyyaestálisto.Ahora debemos crear en el cliente el directorio ‘/etc/chef’ para guardar tanto laconfiguracióncomolaclavenecesariaparaconectarseaChef-Server.

mkdir -p /etc/chef

Acontinuación,vamosalservidorycreamoselarchivoparaconfigurarChefysuclave.

knife configure client ./

Unavezqueloshemoscreadoambos,pasaremosacopiarlosdosarchivos:

scp [email protected]:/root/client.rb /etc/chef/

scp [email protected]:/root/validation.pem /etc/chef/

LadirecciónIPtienequeserlacorrespondientealadenuestroservidor.Ahoracomprobaremosquelohemosindicadotodoadecuadamenteenelfichero‘client.rb’.

og_level :info

log_location STDOUT

chef_server_url 'http://server.example.com:4000'

validation_client_name 'chef-validator'

AhorasolotenemosquereiniciarChef-Client:

service chef-client restart

Sicomprobamos,veremosquenosaparecenuestronuevonodocreado:

root@server:~# knife node list

chef-client.example.com

server.example.com

Page 20: Herramientas DevOps

20

Asímismo,tambiénpodremoscomprobarloenlainterfazweb:

Ahora realizaremosnuestraprimera recetaenChef. Para gestionar las recetasnosotrosutilizaremosKnife.Leindicaremoslasiguientelíneaenelfichero‘knife.rb’quehayeneldirectorio.chef:

cookbook_path ['/root/chef-repo/cookbooks' ]

Ahoraya lo tenemos listopara crear la receta.Ejecutamosel siguiente comandoconelnombredenuestrareceta:

knife cookbook create recetaApache

Así,senoscrearáunnuevodirectorio“cookbooks”conelsiguientecontenido:

root@server:~# ls chef-repo/cookbooks/recetaApache/

attributes definitions libraries providers recipes templates

CHANGELOG.md files metadata.rb README.md resources

Page 21: Herramientas DevOps

21

Ahoraloqueharemosserámodificarlareceta‘default.rb’paraquecontengalosiguiente:

package "apache2" do

action :install

end

template node['nodo1']['path'] + '/index.html' do

source 'index.html.erb'

mode 0755

owner 'root'

group 'root'

end

service "apache2" do

action :restart

end

Loprimeroqueharáesinstalarelpaquete‘apache2’,lecambiaráelfichero‘index.html’porel‘nodo1’,queesunatributodefinidoenelfichero‘default.rb’delasiguienteforma:

default["nodo1"]["path"] = "/var/www"

El‘template’quetenemosenlarecetahacequesustituyaelarchivo‘index.html’porunaplantilladefinidallamada‘index.html.erb’quecontienelosiguiente:

<html>

<h1>

Esta es mi primera receta

</h1>

</html>

Ahoraactualizamoslarecetaalnodoenquequeremosqueseejecute:

knife node run_list add chef-client.example.com 'recipe[recetaApache]'

Page 22: Herramientas DevOps

22

Yporúltimoactualizamos:

knife cookbook upload -a

Ejecutamoselcomandochef–clientyentramosalaIPenelnavegador:

5 ConclusionesEnlaactualidadlosnegociosvanauna“velocidad”enlaquelosmodelosempresarialesexistentessehanvistoforzadosadinamizaryacelerarcambioseinnovaciones.Las herramientas DevOps proporcionan soluciones que unifican las operaciones con eldesarrollodeunaempresa,locualcontribuyealaaceleracióneninnovaciónparasatisfacerla demanda de mercado. Gracias a este tipo de herramientas el interactivo y rápidodesarrollo de estas hace que las empresas puedan reaccionarmejor para satisfacer lasnecesidadesdelosclientes.Elusodeestetipodeherramientassecaracterizaporquetantocomolosdesarrolladorescomo los operadores deben trabajar en equipo centrándose en el crecimiento de laempresa.Las herramientas DevOps comparadas en este trabajo, son de código abierto para laautomatización, gestión e integración continua de las empresas, utilizándose comoherramientas de entrega continua, facilitado cambios claves en las organizaciones,trayendobeneficioscomo:

» Aumento en la rapidez de entrega: Este cambio consiste en conseguir mayorcapacidad de respuesta a la demanda empresarial con nuevas funcionalidades ycaracterísticas.

» Aumento de la capacidad: La eliminación de trabajos repetidos permite que unequipopuedacompletarmastrabajo.

» Mejoradeestabilidadycalidad:Laautomatizaciónyestandarizacióndisminuyelas

posibilidadesdeaparicióndeerroresmanualesenlaentregadeaplicaciones,porelcontrariolaautomatizaciónmejoralacalidaddeentregafinal.

Page 23: Herramientas DevOps

23

Porotraparte,sibienesciertoquelaarquitecturaCliente–Servidoreslaquemasusadaoinfluyenteenelmercado,laarquitecturadeCloudhatenidounabuenacogidalacualmarcatendencias gracias a sus ventajas como velocidad en tiempos de respuesta,mejorandoprocesos.��Puppet: Podemos concluir que Puppet es una herramienta de gestión de

configuración código abierto, que se encarga de gestionar la configuración deservidoreseimplementacióndeaplicaciones.Servidoresconescalabilidadyayudaaimplementar,escalarverticalmenteaplicacionesyaseaenlanubeopropias.

��Chef: Al igual que la herramienta anterior (Puppet), Chef también es unaherramientadegestióndeconfiguracióndecódigoabierto.Unadelasprincipalesdiferencias es que Chef implementa otra versión comercial, por otra parte Chefutiliza un lenguaje de secuencia de comandos en lenguaje Ruby, denominado“Recipes”(Recetas).

��SaltStack:Estaherramientadeautomatizaciónfacilitalaadministracióndesistemas

deinformaciónintegradospormuchosdispositivos.

Page 24: Herramientas DevOps

24

6 Bibliografía

• Blog de Digital Valley. “Instalar SaltStack en Ubuntu”.<http://www.digitalvalley.com/blog/instalar-salt-stack-en-ubuntu/> [Consultadoenabrilde2016].

• Chef.<https://www.chef.io>[Consultadoenmarzode2016].

• DigitalOcean. “How to create your first salt formula”.<https://www.digitalocean.com/community/tutorials/how-to-create-your-first-salt-formula>[Consultadoenabrilde2016].

• Notas de ant30. “Puppet, gestión de configuración centralizada”.<http://www.ant30.es/2011/11/puppet-gestion-de-configuracion-centralizada/>[Consultadoenabrilde2016].

• PuppetLabs.<https://puppetlabs.com>[Consultadoenmarzode2016].

• SaltStack. “Full list of builtin execution modules”.<https://docs.saltstack.com/en/latest/ref/modules/all/> [Consultadoenmarzode2016].

• SaltStack.<http://www.saltstack.com>[Consultadoenmarzode2016].

• Sysadmin.org.mx. “Administración de múltiples servidores usando Puppet”<http://www.sysadmin.org.mx/contenidos/administracion-de-multiples-servidores-usando-puppet.html>[Consultadoenmarzode2016].

• SysTerminal. “Instalación de Chef”.<http://www.systerminal.com/2014/06/24/instalacion-de-chef-client-debian-y-ubuntu/>[Consultadoenabrilde2016].

• VMware.<https://www.vmware.com>[Consultadoenmarzode2016].