INGENIERÍA Y SERVICIOS IT

Herramientas de Soporte de la Cultura DevOps

Usar las herramientas no es lo mismo que hacer DevOps.

Hacer DevOps sin usar herramientas es complejo si entendemos que DevOps tiene componentes de automatización. DevOps es y será un tema de cultura y no solo el conjunto de herramientas.

Veamos un ejemplo de que las herramientas no hacen cultura. Piense en una empresa que quiere que sus reuniones internas comiencen a tiempo. Si la empresa compra un software de gestión de reuniones, ¿las reuniones comenzarán a tiempo?

Si la cultura interna es iniciar reuniones tardías, primero debemos trabajar para cambiar la cultura interna. La herramienta, por buena que sea, no podrá cambiar la cultura.

Sin las herramientas adecuadas, la fusión de roles y responsabilidades de DevOps puede crear caos y resultados no deseados, que incluyen problemas relacionados con la escalabilidad, la confiabilidad y la administración de carga.

Herramientas DevOps-GIT

GIT se produjo siguiendo los requisitos de la comunidad Linux para SCM, es decir, el software Source-Control-Management que podría admitir sistemas distribuidos. Esta es la herramienta más utilizada para administrar fuentes que está disponible actualmente.

Su ventaja es que tiene características adicionales en aplicaciones de bifurcación y tracción; por lo tanto, GitHub también proporciona complementos capaces de conectar Jenkins y facilitar la integración y la implementación.

Las pruebas de velocidad que se realizan en una operación de red GIT arrojan resultados impresionantes, ya que los protocolos GIT para la transferencia de datos están altamente optimizados.

Sin embargo, con el tiempo, las implementaciones internas de GIT revelan limitaciones que pueden afectar la velocidad y la eficiencia de los canales de distribución.

Plataforma en la nube

La automatización en la nube se compone de tareas u objetos de automatización discretos que realizan tareas como la arquitectura del servidor VM, la instalación de imágenes del sistema operativo y despliegue de aplicaciones y funciones de red.

Las tareas en la automatización de la nube las realizan muchas herramientas de automatización, como scripts y herramientas de administración local para la administración de la configuración.

La automatización de DevOps utiliza funciones de automatización discretas como herramientas para la integración, compilación y gestión continuas de las configuraciones de software.

Las orquestas DevOps son la coordinación automatizada mediante procesos DevOps personalizados en la organización y las herramientas y tareas de automatización que se llevan a cabo en el proceso.

La infraestructura en la nube se ejecuta junto con las herramientas de DevOps para automatizar y orquestar las implementaciones de aplicaciones y coordina el soporte para los procesos deseados.

La orquestación va más allá de la simple tracción de la infraestructura de la nube para cubrir las tareas de automatización de DevOps en coordinación con la infraestructura para lograr la orquestación de DevOps.

Los desarrolladores que utilizan Docker crean entornos Docker en la computadora portátil para desarrollar y probar aplicaciones localmente en contenedores. En este entorno, las pruebas se realizan en pilas de servicios compuestas con varios contenedores Docker.

Varios contenedores Docker convergen como baterías de un solo servicio, como las baterías LAMP, y tardan unos segundos en crearse una instancia.

Docker

Docker brinda portabilidad a las aplicaciones a través de la tecnología de contenedores, donde las aplicaciones se pueden ejecutar en unidades independientes que se mueven entre plataformas.

Consiste en un motor Docker (un empaquetado ligero y una herramienta de tiempo de ejecución y un Docker Hub) que son servicios en la nube para el intercambio y la automatización del flujo de trabajo.

Docker ha sido una parte vital de la próxima generación de infraestructura de gestión de servicios y pruebas de Yelp.

El aislamiento dependiente y la rápida puesta en marcha del contenedor permiten un ciclo de desarrollo más corto y aumentan las velocidades de prueba en más del 400%.

Algunos entornos pueden ejecutar el host Docker dentro de otro host Docker (Docker-inDocker) en entornos de compilación.

Docker puede aumentar la velocidad de una tubería IC mediante Union-ileSystems y Copy-on-Write (COW).

Para lograr velocidades más altas para proporcionar el software Continuous Delivery (CD), se pueden utilizar muchas técnicas de Docker.

JS

JS permite la creación sencilla de aplicaciones de red rápidas y escalables. Las plataformas JS tienen bibliotecas que permiten que las aplicaciones funcionen como servidores web sin la necesidad de software como Apache-HTTP-Server o Microsoft-IIS.

Sin tener que hacer que los servidores web acorten las listas de tareas de DevOps y agilicen el flujo de código desde el desarrollo hasta la implementación. Además, JavaScript se puede utilizar tanto en el cliente como en el servidor.

Los desarrolladores encuentran una ventaja de eficiencia debido a la reutilización del código. Las aplicaciones NODE.JS se pueden ejecutar en el tiempo de ejecución NODE.JS en Microsoft Windows, OSX, Linux y FreeBSD.

Está diseñado para un funcionamiento rápido con una gran experiencia de usuario. Un modelo de E / S sin bloqueo controlado por eventos en NODE.JS permite aplicaciones ligeras que son altamente eficientes. Muchas organizaciones de pensamiento líderes utilizan NODE.JS, como SAP, Groupon, LinkedIn, PayPal y Wal-Mart.

Chef

Las herramientas de Chef DevOps proporcionan marcos para automatizar y administrar la infraestructura a través de DSL simple. El activo real es el código que da vida a los servidores y servicios. El Chef confía en sus definiciones reutilizables, llamadas libros de cocina y recetas escritas en Ruby. Este nivel de abstracción aumenta la productividad y permite a los desarrolladores crear configuraciones fácilmente personalizadas para aplicaciones. Las recetas se ejecutan de forma independiente utilizando CHEF SOLO o un servidor que tiene CHEF SERVER que actúa como hubs para los datos de configuración.

Los servidores almacenan libros de cocina o políticas aplicadas a nodos y metadatos que describen el nodo registrado administrado por el chef-cliente. Chef es una herramienta de gestión multiplataforma para Windows, Linux, Mac OS, etc., y se puede integrar con los principales proveedores de nube.

Jenkins

Este es un mecanismo de integración extensible y continua que se utiliza como una de las herramientas principales para los ingenieros de DevOps que desean monitorear las ejecuciones de trabajos repetidos. Con Jenkins, al ingeniero de DevOps le resulta más fácil integrar los cambios en los diseños y puede acceder fácilmente a los resultados cuando descubre que algo anda mal.

Las principales características son sus enlaces permanentes, la integración de RSS / correo electrónico / mensajería instantánea, etiquetado posterior al evento, su informe de pruebaJUnit / TestNG y las compilaciones distribuidas.

Puppet

Puppet le permite lidiar con la configuración y la administración de software durante cambios rápidos y repetitivos. Puppet aplica automáticamente la coherencia en todos los entornos y puede funcionar tanto en máquinas físicas como virtuales. Tiene cadenas de herramientas comunes y admite las mejores prácticas clave de DevOps que incluyen la entrega continua.

Puppet Enterprise ofrece la orquestación de centros de datos, automatizando la configuración y gestión de máquinas y software. También existen versiones de código abierto de Puppet que fueron utilizadas por la Universidad de Stanford para llenar los vacíos en el desarrollo de software para el servicio de biblioteca digital y la administración del sistema, necesarios para mantener los servicios funcionando de manera segura.

PROGRAMACIÓN

COMANDOS BÁSICOS DE GIT

git config

Uno de los comandos más usados en git es git config, que puede ser usado para establecer una configuración específica de usuario, como sería el caso del email, un algoritmo preferido para diff, nombre de usuario y tipo de formato, etc. Por ejemplo, el siguiente comando se usa para establecer un email:

git config --global user.email sam@google.com

git init

Este comando se usa para crear un nuevo repertorio GIT.

git add

Este comando puede ser usado para agregar archivos al index. Por ejemplo, el siguiente comando agrega un nombre de archivo temp.txt en el directorio local del index:

git add temp.txt

git clone

Este comando se usa con el propósito de revisar repertorios. Si el repertorio está en un servidor remoto se tiene que usar el siguiente comando:

git clone alex@93.188.160.58:/path/to/repository

Pero si estás por crear una copia local funcional del repertorio, usa el comando:

git clone /path/to/repository

git commit

El comando commit es usado para cambiar a la cabecera. Ten en cuenta que cualquier cambio comprometido no afectara al repertorio remoto. Usa el comando:

git commit –m “mensaje”

git status

Este comando muestra la lista de los archivos que se han cambiado junto con los archivos que están por ser añadidos o comprometidos.

git push

Este es uno de los comandos más básicos. Un simple push envía los cambios que se han hecho en la rama principal de los repertorios remotos que están asociados con el directorio que está trabajando. Por ejemplo:

git push  origin master

git checkout

El comando checkout se puede usar para crear ramas o cambiar entre ellas. Por ejemplo, el siguiente comando crea una nueva y se cambia a ella:

command git checkout -b <banch-name>

Para cambiar de una rama a otra solo usa:

git checkout <branch-name>

git remote

El comando git se usa para conectar a un repositorio remoto. El siguiente comando muestra los repositorios remotos que están configurados actualmente:

git remote -v

Este comando te permite conectar al usuario con el repositorio local a un servidor remoto:

git remote add origin <93.188.160.58>

git branch

Este comando se usa para listar, crear o borrar ramas. Para listar todas las ramas se usa:

git branch

para borrar la rama:

git branch -d <branch-name>

git pull

Para poder fusionar todos los cambios que se han hecho en el repositorio local trabajando.

git merge

Este comando se usa para fusionar una rama con otra rama activa:

git merge <branch-name>

git diff

Este comando se usa para hacer una lista de conflictos. Para poder ver conflictos con el archivo base usa:

git diff --base <file-name>

El siguiente comando se usa para ver los conflictos que hay entre ramas que están por ser fusionadas para poder fusionarlas sin problemas:

git diff <source-branch> <target-branch>

Para solo ver una lista de todos los conflictos presentes usa:

git diff

git tag

Etiquetar se usa para marcar commits específicos con asas simples. Por ejemplo:

git tag 1.1.0 <instert-commitID-here>

git log

Ejecutar este comando muestra una lista de commits en una rama junto con todos los detalles. Por ejemplo:

commit 15f4b6c44b3c8344caasdac9e4be13246e21sadw
Author: Alex Hunter <alexh@gmail.com>
Date:   Mon Oct 1 12:56:29 2016 -0600

git reset

Para resetear el index y el directorio que está trabajando al último estado comprometido se usa este comando:

git reset - -hard HEAD

git rm

Este comando se puede usar para remover archivos del index y del directorio que está trabajando:

git rm filename.txt

git stash

Este es uno de los comandos menos conocidos, pero ayuda a salvar cambios que no están por ser comprometidos inmediatamente, pero temporalmente.

git show

Se usa para mostrar información sobre cualquier objeto git.

git fetch

Este comando le permite al usuario buscar todos los objetos de un repositorio remoto que actualmente no reside en el directorio local que está trabajando. Por ejemplo:

git fetch origin

git ls-tree

Para ver un objeto de árbol junto con el nombre y modo de cada uno de ellos, y el valor blob´s SHA-1, se usa:

git ls-tree HEAD

git cat-file

Usando el valor SHA-1, se puede ver el tipo de objeto usando este comando. Por ejemplo:

git cat-file –p d670460b4b4aece5915caf5c68d12f560a9fe3e4

git grep

Este comando le permite al usuario buscar en los árboles de contenido cualquier frase o palabra. Por ejemplo, para buscar por http://www.tupaginaweb.com en todos los archivos se usaría:

git grep “www.tupaginaweb.com”

gitk

Este es la interfaz gráfica para un repositorio local que puede invocar.

git instaweb

Con este comando un servidor web puede correr interconectado con el repositorio local. Un navegador web también está automáticamente dirigido a el:

git instaweb –http=webrick

git gc

Para optimizar el repositorio por medio de una recolección de basura, que limpiara archivos innecesarios y los optimizara.

git archive

Este comando le permite al usuario crear archivos zip o tar que contengan los constituyentes de un solo árbol de repositorio:

git archive – -format=tar master

git prune

Con este comando los objetos que no tengan ningún puntero entrante serán eliminados.

git fsck

Para poder hacer un chequeo de integridad del sistema de archivos git, usa este comando. Cualquier objeto corrompido será detectado.

git rebase

Este comando se usa para la re aplicación de los compromisos en otra rama. Por ejemplo:

git rebase master
PROGRAMACIÓN

¿QUÉ ES GITHUB?

GitHub es una plataforma de desarrollo colaborativo de software para alojar proyectos utilizando el sistema de control de versiones Git.

github

El código se almacena de forma pública, aunque también se puede hacer de forma privada, creando una cuenta de pago.

¿Para qué sirve?

GitHub aloja un repositorio de código y  brinda herramientas muy útiles para el trabajo en equipo, dentro de un proyecto.

Además de eso, puedes contribuir a mejorar el software de los demás. Para poder alcanzar esta meta, GitHub provee de funcionalidades para hacer un fork y solicitar pulls.

Realizar un fork es simplemente clonar un repositorio ajeno (genera una copia en tu cuenta), para eliminar algún bug o modificar cosas de él. Una vez realizadas tus modificaciones puedes enviar un pull al dueño del proyecto. Éste podrá analizar los cambios que has realizado fácilmente, y si considera interesante tu contribución, adjuntarlo con el repositorio original.

¿Qué herramientas proporciona?

En la actualidad, GitHub es mucho más que un servicio de alojamiento de código. Además de éste, se ofrecen varias herramientas útiles para el trabajo en equipo. Entre ellas, cabe destacar:

  • Una wiki para el mantenimiento de las distintas versiones de las páginas.
  • Un sistema de seguimiento de problemas que permiten a los miembros de tu equipo detallar un problema con tu software o una sugerencia que deseen hacer.
  • Una herramienta de revisión de código, donde se pueden añadir anotaciones en cualquier punto de un fichero y debatir sobre determinados cambios realizados en un commit específico.
  • Un visor de ramas donde se pueden comparar los progresos realizados en las distintas ramas de nuestro repositorio.