ANÁLISISCOMPARATIVODEHERRAMIENTASDEDEVOPS
Presentadopor:ü CarlosEscotoü DanielAtuestaR.
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
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.
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.
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.
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.
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.
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
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.
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.
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 {
}
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
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 {
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
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
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
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
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
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
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
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]'
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.
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.
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].