?????????????? ??? ??????? ?????
?????????????? ??? ??????? ?????
CAPÍTULO 1
Linux de un vistazo
¿De dónde vino Linux? ¿Hacia dónde va Linux? ¿Por qué no deberías tener miedo de
usar Linux?
Estas son preguntas importantes para cualquier persona nueva en Linux o
para cualquiera que desee comprender más acerca de este increíble sistema operativo.
Linux ha cambiado y sigue cambiando el mundo; las oportunidades que Linux ya ha
brindado son asombrosas, pero lo que todavía tiene para ofrecer es lo que realmente
me emociona. Junto con las comunidades de código abierto, Linux continuará
evolucionando, creciendo y fomentando la innovación de millones de desarrolladores
que crean nuevos proyectos en todo el mundo. Con la naturaleza colaborativa abierta
del mundo del código abierto, seremos capaces de cualquier cosa. Ningún problema
puede ser demasiado grande.
Durante este primer capítulo, echamos un vistazo a las diferencias entre
Distribuciones de Linux comunitarias y empresariales. Discutiremos por qué
algunos prefieren Enterprise Linux y por qué otros prefieren las distribuciones
comunitarias. Veremos los diferentes enfoques que han adoptado algunas
distribuciones sobre cómo se debe administrar el sistema operativo y comprenderemos
por qué se han generado variaciones de distribuciones. Finalmente, espero ayudarlo a
comprender las posibles razones por las que alguien usaría distribuciones de Linux
comunitarias o empresariales.
Multics, un sistema operativo de tiempo compartido creado por unas pocas organizaciones,
a saber, GE, MIT, AT&T y Bell, no fue el éxito que todos esperaban. Ken Thompson, Dennis
hoy conocemos como el sistema operativo Unix. Durante la década de 1970, se realizaron varios
cambios y mejoras que finalmente llevaron a que Unix se tomara más en serio. Se agregaron
nuevos compiladores como C, que por cierto se convirtió en el catalizador para que se escribieran
Un gran punto de conflicto para los primeros Unix fue en torno a las restricciones legales. Campana
Lamentablemente, Labs no pudo vender Unix como producto. Esto, sin embargo, no impidió
que el código fuente de Unix saliera milagrosamente al mundo abierto. Se rumoreaba que Ken
Thompson, que tenía muchas solicitudes del código del sistema operativo, finalmente renunció y
envió medios con el código Unix a quien lo solicitó, a menudo con una nota "Amo a Ken". Este
enfoque "abierto", por supuesto, se popularizaría en años posteriores, pero más de eso en un
momento.
Al igual que con cualquier nuevo desarrollo de software en un nuevo proyecto, siempre
habrá diferentes desarrolladores con diferentes ideas sobre cómo se deben hacer las cosas.
El desarrollo de Unix no fue diferente, por lo que, naturalmente, los estándares no existían. Las
diferentes ideas y direcciones de desarrollo en las diversas plataformas de Unix prevalecieron
más durante la década de 1980, cuando surgieron las tres variaciones principales de Unix. Eran
System V, BSD y Xenix. En la década de 1990, finalmente prevaleció el sentido común y se formó
COSE (Common Open Software Environment) para establecer los estándares del sistema operativo
Unix. Con estos nuevos estándares implementados, el sistema operativo Unix fue viento en popa.
4
Machine Translated by Google
Fuente abierta
Código abierto no significa "gratis". El hecho de que el software no tenga costo no
significa que el software no tenga valor; significa que el código fuente está abierto y
no está encerrado en una bóveda propietaria en alguna parte.
Si el software no tiene costo, ¿cuál es el punto, verdad? como puedo
alguien gana dinero con eso?
Aquí es donde empresas como SUSE, Canonical y Red Hat hacen su
dinero. Venden suscripciones para respaldar sus distribuciones, pero en realidad
no venden el software. Puede usar Red Hat Enterprise Linux, por ejemplo, sin una
suscripción, y puede actualizar el sistema operativo desde los repositorios de la
comunidad sin problemas. Sin embargo, no puede pedirle a Red Hat que lo apoye.
Para eso, tienes que pagar.
1 Sólo por diversión es el nombre del libro escrito por Linus Torvalds
2Fundación de Software Libre
5
Machine Translated by Google
o los terminales de quiosco en los que compramos nuestras entradas de cine en el cine, tienen
una cosa en común: todos usan Linux. Bueno, casi todo. Todavía veo el extraño "BSOD" de
Windows cuando camino por el metro de Londres. Mi punto es que usamos Linux o lo vemos casi
Linux se usa a menudo en estaciones de tren y aeropuertos para paneles publicitarios, pero ¿se
dio cuenta de que los sistemas de entretenimiento que se usan en sus vuelos a menudo también
funcionan con Linux? Tal vez no sea el mejor ejemplo si pasó un vuelo de ocho horas sin
entretenimiento.
Los sistemas Linux como estos son más fáciles de desarrollar y mejorar, y dado que
Los proveedores de hardware también están empezando a entender por qué abrir
número sigue siendo alrededor del 72%. Ese sigue siendo un porcentaje
extraordinariamente grande del mercado mundial de teléfonos inteligentes. Más de cinco mil
millones de personas usan teléfonos inteligentes. Es decir, cerca de dos tercios de la población
del planeta utiliza un dispositivo móvil. El 72% de esos dispositivos usan Android. Esto significa que casi
ser excluido tampoco. El software de código abierto ha permitido que estas plataformas y
dispositivos se vuelvan cada vez más populares. Empresas como Google, Amazon y Philips
son algunas de las que han lanzado productos realmente buenos para
6
Machine Translated by Google
domótica sencilla. Las personas que son menos técnicas hoy en día ahora tienen la capacidad de
configurar su hogar para permitir que las luces se enciendan según el horario.
o movimiento.
Todavía parece algo de una película de ciencia ficción cuando veo que una tetera
se puede configurar para hervir agua por la mañana incluso antes de levantarse de la cama.
Si eso no le interesa, imagine un dispositivo inteligente con un brazo robótico controlado por
un chef virtual al que se le puede ordenar que cocine su cena desde un menú.
que va a cambiar el mundo lo que me emociona. Hace poco vi nuevas herramientas de automatización
para gestionar un huerto. El software utilizado puede detectar y comandar un sistema robótico para
demostrado que la colaboración supera con creces los esfuerzos de desarrollo de cualquier
Estos ejemplos que mencioné ahora son a pequeña escala, pero imagínense en su totalidad
escala; imagine cientos de acres de tierras de cultivo que se automatizan para cultivar alimentos
o restaurantes automatizados con chefs robóticos que pueden cocinar cualquier cosa que pueda
seleccionar de un menú. Sí, siempre existe el factor humano que podría enfrentar la peor parte de
esta innovación, y también hay una respuesta para eso. Al automatizarnos e innovarnos a nosotros
mismos fuera de los trabajos, estamos construyendo sistemas y plataformas para alimentarnos y
vestirnos. Al igual que nuestra tecnología está evolucionando, nosotros también debemos hacerlo.
Donde el agricultor trabajaba arduamente en el campo, ahora puede dedicar el tiempo a mejorar el
aprendizaje automático que impulsa la automatización. El agricultor ahora puede pasar más tiempo
expandirse y alimentar a más personas. Construir proyectos comunitarios y compartir con el planeta
Son estas innovaciones las que hacen brillante el futuro y abren nuevas puertas.
7
Machine Translated by Google
Estas ideas nos permiten abordar problemas mundiales difíciles y hacer lo que
deberíamos hacer como seres sensibles inteligentes. Mejorar el mundo en que vivimos,
no destruirlo.
Comunidad
La “comunidad” es un nombre que generalmente se le da a un colectivo de
personas que no trabajan para una sola organización para desarrollar un producto.
Bueno, supongo que eso no es del todo cierto. Algunas organizaciones, como Red Hat,
patrocinan comunidades para desarrollar y trabajar en productos comunitarios que actúen
como sus variantes ascendentes. Estas comunidades prefieren centrarse más en el
término "proyecto" que en "producto".
Río arriba
Otra palabra que se usa en el mundo del código abierto es "aguas arriba".
“Upstream” es un término que se utiliza para describir en qué se basa un producto
empresarial. Esto tampoco significa que el producto empresarial sea una copia
directa del producto original. El upstream se considera más como el "vanguardia" o
el caldo de cultivo de la innovación, que generalmente se usa para probar y probar
las características de los nuevos productos antes de introducirlos en los productos
empresariales.
8
Machine Translated by Google
Si a un patrocinador de un producto, como Red Hat, le gusta una de las características originales,
Vale la pena mencionar que los productos empresariales a menudo tienen diferentes
nombres que sus equivalentes "aguas arriba". Tome el ejemplo de Fedora Linux.
Fedora se considera upstream para Red Hat Enterprise Linux o RHEL.
Colaboradores de la comunidad
9
Machine Translated by Google
Distribuciones Comunes
En el momento de escribir este artículo, había alrededor de 600 distribuciones de Linux disponibles, más o
menos algunas. Muchas son bifurcaciones de distribuciones más conocidas, y algunas son bifurcaciones de
bifurcaciones de bifurcaciones.
y tener código disponible para que cualquiera lo use. Es por eso que cualquiera puede crear una nueva
Una cosa que todas las distribuciones tienen en común es el kernel de Linux. Así que todo sigue
se reduce a lo que Linus está lanzando. Le invitamos a intentar crear su propio kernel; Estoy seguro de
que muchos lo han intentado, pero a veces es mejor no intentar reinventar la rueda, especialmente si todavía
funciona lo suficientemente bien. Puede llegar un momento en que el núcleo deba ser rediseñado, pero hasta
entonces
confiaremos en Linus.
sistemas de gestión de paquetes. Las distribuciones de Linux como Red Hat Enterprise Linux, Fedora y CentOS/
Rocky utilizan el sistema de administración de paquetes basado en RPM. Las distribuciones como Debian y
Otro sistema de empaque menos conocido que parece estar ganando un poco de tracción es Pacman.
Pacman está siendo utilizado actualmente por la distribución de juegos SteamOS y Manjaro.
Con todas las distribuciones disponibles, es importante saber de dónde proviene cada distribución y
para qué se creó. Como se mencionó anteriormente, Fedora se considera como el “ascendente” de Red Hat
Enterprise Linux, pero esto no es para lo que se pretendía inicialmente. Fedora fue lanzado por primera vez en
2002 por Warren Togami como un proyecto de pregrado. El objetivo del proyecto era que Fedora actuara como
depósito para que los productos de terceros se desarrollaran y probaran en una plataforma que no fuera de
Red Hat.
10
Machine Translated by Google
Otras distribuciones se han creado únicamente para la seguridad, como Kali Linux construido y
configurado para pruebas de penetración. Una distribución como Puppy Linux fue creada para ser una
distribución recortada para permitir a los usuarios ejecutar un Linux "más ligero" en versiones anteriores.
hardware más lento.
Como una pequeña muestra de ese mapa mental de todas las distribuciones de Linux disponibles, el
a continuación se muestra una pequeña parte del árbol genealógico de distribuciones basadas en RPM.
Esta tabla no tiene en cuenta las horquillas de horquillas de horquillas que tienen
pasó de estos.
remezclar
Trustix
podría ser una tarea desalentadora y puede terminar asustando al nuevo usuario potencial.
11
Machine Translated by Google
Para tomar la decisión sobre qué distribución es mejor para usted, debe hacerse las
preguntas correctas.
una distribución Estoy seguro de que hay muchos más buenos, pero estos creo que son un
buen comienzo:
Antes de comprometerse
El mejor enfoque para cualquier usuario nuevo que se cambie a Linux, que puede no
estar familiarizado con Linux o las herramientas de código abierto, es realizar un enfoque
actual. Cambie a usar un navegador Firefox o use Thunderbird para el correo electrónico.
Encuentre alternativas de código abierto a los productos que usa actualmente y familiarícese
con ellas. Una vez que esté familiarizado con las nuevas herramientas, cambiar a Linux parecerá
menos un choque cultural.
Sugerencia Haga una lista de todas las herramientas que usa y busque en
Internet alternativas de código abierto, luego cambie una por una. Pruebe diferentes
productos si algunos no son adecuados para usted o active una máquina virtual
con una distribución que crea que funciona para usted y pruebe sus herramientas
alternativas allí.
12
Machine Translated by Google
• Las opciones "casi listas para usar" que tienen casi todo lo que necesita
pero requieren algunos ajustes
Fácil de entender
Para los nuevos usuarios de Linux, querrá ver algo que sea simple de instalar y fácil de
entender, algo que simplemente funcione bien "listo para usar". Las distribuciones como
Ubuntu, Zorin OS y Elementary OS son fáciles de usar. En algunos aspectos, todos tienen
similitudes con Windows, lo que podría hacer que el cambio sea un poco más fácil para
los usuarios con antecedentes predominantemente de Windows.
13
Machine Translated by Google
se requiere reinstalar. Ningún usuario nuevo querrá instalar algo demasiado complicado que
implique pasos de configuración detallados. Una instalación simple, siguiente, siguiente y final servirá.
Prueba Ubuntu
Ubuntu, por ejemplo, es una buena opción para alguien nuevo en Linux. La instalación es simple,
los métodos para crear medios de instalación no son demasiado complejos y hay suficientes
búsquedas en Google de un minuto para encontrar respuestas sobre cómo crear medios de
arranque. La instalación en sí no
requieren mucho pensamiento; los valores predeterminados funcionan bastante bien y dejarán al usuario
con una instalación adecuada.
La configuración de Ubuntu podría implicar una pequeña curva de aprendizaje para el nuevo
usuario. Sin embargo, Ubuntu tiene una buena "tienda de aplicaciones" para encontrar casi
cualquier cosa.
Aplicaciones como Wine y Lutris funcionan bastante bien en Ubuntu, lo que significa que es
posible jugar con menos frustración. Lutris en sí mismo es una herramienta muy útil ya que envuelve
bastante bien la configuración requerida para que los juegos se ejecuten en Linux. Los scripts se
Mi consejo para cualquier usuario nuevo es comenzar con Ubuntu o algo muy similar.
tarjetas gráficas. Pase tiempo en los foros de discusión aprendiendo cómo resolver las cosas por sí
mismo.
14
Machine Translated by Google
usuario que ha estado usando Linux durante un tiempo y que desee comenzar a experimentar con
una configuración más compleja, posiblemente para intentar incorporar elementos de trabajo y
comprender nuevas funciones para productos empresariales, y tal vez incluso para mover su
puede considerar Fedora, openSUSE o Debian. Todas son buenas opciones a tener en cuenta. Todos
requieren "ajustes" para que sean adecuados para usted, pero si no le molesta demasiado, puede usarlos
me ayuda para mi trabajo diario, y es lo que he estado usando durante los últimos diez años. En
cuanto al escritorio predeterminado, realmente no me gusta Gnome o KDE, así que instalé Cinnamon.
productos Los controladores para tarjetas gráficas no son brillantes y, a veces, puede ser
un desafío instalarlos. No es imposible, pero parece un poco más laborioso que Ubuntu, por ejemplo.
ya veces necesitan ser "masajeados" para trabajar. Las instrucciones en línea no siempre son
claras, lo que significa que debe pensar un poco más acerca de cuál es el problema. En la mayoría de
15
Machine Translated by Google
Si todavía está interesado en el desafío, entonces las distribuciones como Arch Linux y
Gentoo son las que debe considerar. Se sabe que son más difíciles de instalar y tienen
una curva de aprendizaje pronunciada.
desean proponerse un desafío, así que no los tome a la ligera si está predispuesto a la
frustración.
17
Machine Translated by Google
sombrero rojo
Red Hat tiene una gran cartera de productos empresariales desde Red Hat
Enterprise Linux hasta la plataforma de contenedores OpenShift que utilizan como su
solución de nube híbrida.
Red Hat ha estado desarrollando soluciones desde su inicio en 1993 y
no ha dejado de intentar lanzar el próximo mejor producto empresarial. Red Hat
marca constantemente la tendencia en soluciones empresariales de código abierto; si
Red Hat no ha estado desarrollando activamente nuevos productos, ha estado
adquiriendo empresas que sí lo han hecho. Un ejemplo de esto es la reciente
adquisición de StackRox.
Red Hat construye su negocio en torno a tres categorías principales de productos
que impulsan su negocio y la adopción de los clientes.
18
Machine Translated by Google
RHEL es el barco que puso en marcha a Red Hat en su viaje a través del mar turbulento de la
migración de las cargas de trabajo de los clientes a Linux. Es lo que mantiene a la empresa por
delante de la competencia y continúa siendo lo que convirtió a Red Hat en uno de los grandes
nombres del mundo Linux. A lo largo de los años, Red Hat se ha convertido en algo más que un
proveedor de Linux y ahora cuenta con una amplia cartera de productos, desde productos de
infraestructura hasta soluciones en la nube. Red Hat ha recorrido un largo camino desde que
vendía CD para RHEL.
Automatización
Con la adquisición de Ansible en octubre de 2015, Red Hat fortaleció su oferta al mercado
con uno de los mejores productos de automatización hasta el momento. Red Hat no solo
hizo que Ansible fuera de nivel empresarial, sino que también tomó la plataforma Ansible
(Ansible Tower) previamente patentada y la convirtió en código abierto. La versión comunitaria
de Ansible Platform se llama AWX.
Ansible continúa creciendo en popularidad y continúa siendo uno de los productos de
automatización desarrollados más activamente en la comunidad. Hay nuevos módulos que se
desarrollan constantemente para mejorar el producto casi a diario.
Nube híbrida
La nube es algo que todos conocemos ahora. No es nada nuevo; la mayoría de las
organizaciones están buscando activamente opciones en la nube si aún no se han mudado o
están planeando el cambio para futuras hojas de ruta. Red Hat no es diferente.
A lo largo de los años, Red Hat se ha vuelto muy bueno para encontrar el próximo gran
cosa. Este fue el caso de la adquisición de Makara en 2010. Lo que hizo que Makara
fuera tan especial fue la solución PaaS (plataforma como servicio) que estaban desarrollando.
En mayo de 2011, se anunció OpenShift a partir de esta adquisición y, en 2012, OpenShift
pasó a ser de código abierto.
19
Machine Translated by Google
OpenShift es uno de los productos clave a los que IBM se dirigió para su
solución Open Hybrid Cloud cuando adquirió Red Hat.
Canónico
Canonical fue fundada en el Reino Unido por Mark Shuttleworth en 2004. Canonical es
más conocida por su distribución comunitaria de Linux llamada Ubuntu. Al igual que Red
Hat, Canonical ofrece suscripciones de soporte pagas para sus productos. Sin embargo,
Ubuntu no es como Red Hat Enterprise Linux y Fedora. Solo existe el producto Ubuntu
de la comunidad. Canonical ofrece soporte y reparación/reparación donde puede, pero
en realidad no tiene su propia distribución como lo hace Red Hat.
Canonical como Red Hat tiene una cartera que consta de más que solo
Soporte Linux. Canonical ofrece productos en las siguientes categorías.
Soporte Linux
La primera y obvia parte del negocio de Canonical es su soporte para Ubuntu. Como
se discutió anteriormente, Ubuntu solo es desarrollado por la comunidad y Canonical lo
admite por un precio.
Nube
Canonical ofrece soporte para Kubernetes, que es un producto de
orquestación de contenedores similar a OpenShift. Para su solución de nube
privada, Canonical admite y ayuda a instalar OpenStack. Ambos productos brindan
capacidades de nube para Canonical.
20
Machine Translated by Google
compatibilidad con dispositivos IoT y Ubuntu integrado. Cada vez más empresas
buscan una distribución de Linux para sus dispositivos y dispositivos "inteligentes".
Canonical tiene una ventaja en este mercado como una de las únicas empresas
empresariales de Linux que brinda este nivel de soporte.
SUSE
SUSE, la tercera y de ninguna manera la última empresa de Linux empresarial, actualmente
tiene una cartera un poco más amplia que Canonical, pero no tanto como la de su competidor
más cercano, Red Hat. SUSE, como Red Hat, tiene su propia distribución empresarial de
Linux. La versión comunitaria de SUSE Enterprise Linux se llama openSUSE. La versión
empresarial de SUSE tiene suscripciones de soporte desde SUSE Linux Enterprise Desktop
hasta SUSE Enterprise Linux para
Poder de IBM.
SUSE, como se mencionó, tiene una cartera un poco más amplia que Canonical.
Actualmente, SUSE tiene dos categorías de productos que impulsan su negocio, lo que
puede ser una simplificación excesiva e injusta de sus productos.
Servidor y Escritorio
SUSE sigue siendo un fuerte competidor de Red Hat Enterprise Linux en el mercado
de sistemas operativos para servidores. No es raro encontrar centros de datos con SUSE
y RHEL.
21
Machine Translated by Google
Además de sus ofertas empresariales de Linux, SUSE tiene algunos otros productos para los que
vende suscripciones. SUSE tiene su propia solución de almacenamiento empresarial basada en Ceph;
esto es lo mismo que hace Red Hat para su solución de almacenamiento empresarial. Ceph también
se usa en OpenStack y OpenShift, lo que significa que los clientes pueden tener un clúster de SUSE
SUSE, Red Hat y Canonical proporcionan OpenStack para capacidades de nube privada. Todas
las empresas admiten la plataforma y brindan servicios profesionales para implementar y configurar
OpenStack.
Administrador de SUSE. SUSE Manager está basado en Spacewalk y SaltStack, muy similar
al primer producto Red Hat Satellite que también estaba basado en Spacewalk y Puppet.
Comunidad vs Empresa
¿Cuáles son las razones para usar un producto de la comunidad frente a un producto compatible?
¿Por qué utilizar una solución de pago cuando puede obtener la misma o una similar de forma gratuita?
comprendió las diferencias entre empresa y comunidad. Usar ejemplos siempre me aclara las
cosas personalmente, así que tomemos un banco, por ejemplo, en particular, un banco que
procesa transacciones con tarjetas de crédito/débito. Existe una gran posibilidad de que este tipo
de bancos se rijan por requisitos normativos y de cumplimiento de tipo PCI DSS, que a menudo
en los sistemas donde se almacenarán los datos de la tarjeta. uno muy importante
22
Machine Translated by Google
El requisito de cumplimiento de PCI DSS es que la plataforma del cliente utilice software que
por empresas acreditadas que hayan sido aprobadas por varios auditores de cumplimiento y hayan
Por esta razón principal muy importante, siempre encontrará bancos que utilizan productos
Un banco es un buen caso de uso para Enterprise Linux, pero ¿qué pasa con
alguien que no necesita cumplimiento normativo? ¿Qué pasa con una organización benéfica como otro
Las organizaciones benéficas también tienden a tener huellas de TI bastante pequeñas, ya que en
su mayoría trabajan en plataformas en la nube o tienen un hardware físico limitado en las instalaciones.
Todos estos puntos hacen de las organizaciones benéficas una perspectiva ideal para los productos comunitarios.
La organización benéfica necesitaría empleados que sepan cómo encontrar respuestas y resolver
problemas bastante simples. Tal vez alguien leyendo este libro, por ejemplo. Como los productos
comunitarios no tienen números de soporte para llamar o mesas de soporte para plantear casos,
estas organizaciones benéficas necesitarían que sus empleados hicieran el trabajo duro. Recuerde
que esto sería solo por problemas imprevistos y sería relativamente raro. Las plataformas
Otro caso de uso para los productos comunitarios son las personas técnicas como nosotros.
No todos tenemos la suerte de tener acceso a cuentas corporativas con suscripciones ilimitadas y
necesitamos tener alternativas para nuestros propios proyectos personales. Construir nuestros
laboratorios domésticos o servidores web personales podría ser ideal para productos comunitarios.
Estamos más que felices de resolver las cosas, y si las cosas empeoraran, podríamos reconstruir y
restaurar desde la copia de seguridad. Está bien, deja de reírte. Algunos de nosotros hacemos una copia
el producto sobre la empresa es saber que usted debe resolver la inevitable vulnerabilidad.
Empresas como Red Hat, Canonical y SUSE están preparadas para vulnerabilidades de seguridad.
23
Machine Translated by Google
vulnerabilidades y corregirlas antes de que se hagan públicas. Las comunidades tienden a ser
reactivas y siempre están detrás de la curva cuando lanzan parches de seguridad. Algo que las
grandes organizaciones como los bancos prefieren no tener. Tú y yo podemos apagar nuestros
Verificación de conocimientos
Para el mejor uso de este libro, se espera que conozca los conceptos básicos de la administración
Si no está familiarizado con estas cosas, es recomendable leer un poco más antes de
Sin embargo, esperamos que este libro esté escrito de manera que aún se beneficie de
Resumen
En este capítulo se introdujeron los siguientes temas:
los desarrolla
24
Machine Translated by Google
25
Machine Translated by Google
CAPITULO 2
Experiencia
Ahora que se cubrieron los conceptos básicos en el Capítulo 1, podemos comenzar
a buscar nuevas formas de mejorar lo que está haciendo actualmente. Este capítulo
se centrará en cómo debe trabajar usted como administrador del sistema Linux, qué
herramientas debe considerar usar y cómo estas herramientas pueden mejorar su
eficiencia.
Este capítulo comenzará examinando la gestión de tareas, cómo crear
tareas en segundo plano y cómo trabajar de manera que pueda dejar las
tareas ejecutándose cuando necesite salir por el día. Luego, comenzaremos a
analizar los conceptos básicos de Ansible. Con Ansible, solo discutiremos los
conceptos básicos para que pueda comenzar. Más adelante en el libro,
profundizaremos más en la automatización. Para este capítulo, solo es importante
ponerlo al día con los inicios de Ansible si nunca lo ha usado antes. Luego, para
terminar el capítulo, veremos qué consolas se pueden usar para facilitar la
configuración de Linux.
Al final de este capítulo, no solo sabrá cómo administrar las tareas un poco mejor,
sino que también tendrá algunos conocimientos básicos de Ansible para comenzar a
automatizar. También se le habrán mostrado métodos alternativos para configurar
Linux además de las opciones tradicionales de la línea de comandos.
Administración de tareas
El sistema operativo Linux es, en esencia, una serie de archivos y procesos que
trabajan juntos para ayudar al usuario a completar solicitudes computacionales.
Estos procesos necesitan ser manejados ocasionalmente. Como usuario de Linux, se
recomienda comprender cómo se pueden iniciar, detener y, cuando sea necesario,
cancelar los procesos, a veces a la fuerza.
Inicio de un proceso
Iniciar un proceso se puede hacer de varias maneras; el más común que usará se realiza
iniciando un servicio. Iniciar un servicio web de apache, por ejemplo, generalmente
implica iniciar el servicio httpd. Este servicio genera algunos procesos httpd según su
configuración. Sin embargo, un servicio no es más que un script o un conjunto de
comandos que llaman a un binario seguido de parámetros. Al mirar su proceso, los
parámetros a menudo se enumeran después.
# ps-ef | grephttpd
30
Machine Translated by Google
Ver qué procesos se están ejecutando es importante para comprender qué está
haciendo su sistema o qué está causando que su sistema actúe. Los procesos de
visualización se pueden realizar de varias maneras. Puede usar las utilidades
instaladas de forma predeterminada, o puede usar el comando ps y buscar su proceso.
En Fedora, no tuve ningún problema al instalar ninguno de los paquetes mencionados
a continuación.
Cima
# cima
arriba - 21:51:30 hasta 35 días, 22:34, 1 usuario, promedio de carga: 4.80, 5.38, 3.13
% CPU (s): 8,8 us, 6,9 sy, 0,0 ni, 81,9 id, 0,0 wa, 1,8 hola, 0,6 si, 0,0 st
31
Machine Translated by Google
32
Machine Translated by Google
Alternativas a Top
Hay algunas alternativas a "superior" si desea probar algo diferente (Tabla 2-1).
Personalmente, probé y usé algunos, pero siempre de forma predeterminada en la parte
superior, principalmente porque los sistemas en los que trabajo no son los míos. Si no
ha probado antes las alternativas a la parte superior de la Tabla 2-1, le recomiendo que
las instale y vea por sí mismo si agregan algún beneficio a su forma de trabajar.
encima Herramienta interactiva para mostrar la carga y otra información útil sobre
tu sistema
arriba Muy similar a la parte superior, excepto que puede usar el mouse para
bpytop Muy buena utilidad personalizada con una buena interfaz basada
en texto. Esta utilidad requerirá que descargue la fuente y compile
33
Machine Translated by Google
mon
nmon es otra herramienta muy útil para ayudar a diagnosticar problemas en su sistema. Por lo
plataformas. nmon tiene un método muy claro para mostrar la CPU, la memoria, el disco y el kernel,
Procesos de matanza
Ocasionalmente, puede existir la necesidad de eliminar un proceso; esto podría ser para
cualquier cosa, desde un hilo colgado hasta un proceso con una pérdida de memoria. Antes de
eliminar este proceso, pregúntese siempre si eliminar el proceso es la mejor manera de terminarlo.
Entiendo que a veces no hay otra opción, y la tarea debe ser eliminada. Sin embargo, nunca
comience matando a la fuerza un proceso. Comience siempre tratando de usar comandos de servicio
como systemctl o similar. Algunas aplicaciones o utilidades tienen sus propias herramientas
personalizadas que también se pueden usar. Lea la documentación oficial o las páginas man para
las implicaciones de matar un proceso. Una vez trabajé con un administrador de sistemas que pensó
que era una buena idea eliminar por la fuerza un proceso de base de datos de PostgreSQL como su
método principal para detener el servicio de la base de datos. Esto no solo me asustó, sino que
también me mostró que el administrador del sistema realmente no entendía el efecto en cadena que
podría infligirse a sí mismo si persistía con este comportamiento. Como consultor que trabajaba con
él en ese momento, le expliqué por qué era una idea horrible y luego lo guié a través del procedimiento
adecuado.
Si alguna vez tiene que eliminar un proceso, siempre intente seguir los
siguientes pasos:
34
Machine Translated by Google
Existen muchas otras opciones de señal para el comando de matar, cada una
utilizada para diferentes situaciones. El comando "kill -l" le dará una lista de todas las
señales que se pueden usar.
Procesos zombis
Primero comprendamos qué es un proceso zombie. Un proceso zombi es cuando un
proceso ha sido eliminado y su descriptor de memoria EXIT_ZOMBIE no ha sido
borrado por su proceso padre. Esto normalmente se hace cuando el proceso principal
ejecuta la llamada al sistema wait() para leer el estado de salida de los procesos
inactivos y cualquier otra información. Una vez finalizada la espera(), se borra el
descriptor de memoria EXIT_ZOMBIE. Cuando esto no se hace, generalmente se
debe a que el proceso principal se está comportando mal o a una mala codificación.
Una vez escuché una explicación muy simplista para matar un proceso zombie.
“No se puede matar algo que ya está muerto”.
35
Machine Translated by Google
el descriptor de la memoria en la memoria y bórrelo usted mismo, que todos sabemos, nadie se
va a molestar en hacerlo. Desafortunadamente, borrar el proceso zombie implicará un reinicio.
Las utilidades como "top" tienen un área dedicada para mostrar procesos zombie. Si ve
que aparecen procesos zombis, hay un problema mayor con su sistema que debe resolverse.
capitulo 11, discutiremos cómo hace para diagnosticar problemas y encontrar soluciones.
Cuando se inician los servicios, se crean tareas que se ejecutan en segundo plano, en gran
parte porque ningún administrador del sistema quiere tener una sesión activa ejecutándose todo
el tiempo y el hecho de que sería simplemente una tontería hacerlo.
Las tareas en segundo plano se pueden ver mirando herramientas como top o
ejecutando el comando ps, pero ¿qué debe hacer para enviar una tarea al segundo plano?
¿Qué sucede cuando inicia un proceso de ejecución prolongada y necesita realizar otras
tareas? Puede abrir una nueva ventana o consola y ejecutar la tarea allí. Sin embargo, un mejor
enfoque sería enviar la tarea actual a un segundo plano. Los siguientes son los pasos básicos
para enviar una tarea en ejecución actual al fondo:
36
Machine Translated by Google
Pantalla
Una herramienta multitarea muy popular utilizada por muchos es la "pantalla". La mayoría de
los administradores de sistemas Linux habrán usado o al menos conocerán la "pantalla" y
probablemente ya conozcan los conceptos básicos, pero para los nuevos en Linux, la
"pantalla" es una herramienta que permite al usuario crear sesiones que se ejecutan como
procesos de fondo. El usuario puede desconectarse y volver a conectarse a una sesión cuando
lo desee, lo que significa que un script o proceso de ejecución prolongada puede dejarse en
ejecución en una sesión de pantalla mientras el usuario se desconecta y se va a casa. En el
pasado, la tarea o el proceso se vinculaba a la sesión del usuario y, una vez que el usuario se
desconectaba, las tareas se eliminaban.
Screen se encuentra en la mayoría de las distribuciones y se puede instalar de forma muy sencilla
37
Machine Translated by Google
Para usar la pantalla de una manera muy básica, todo lo que necesita saber son los
comandos enumerados en la Tabla 2-2.
Dominio Descripción
tmux
Con menos disponibilidad de "pantalla", una nueva herramienta que se utiliza es "tmux". "tmux" como
"pantalla" permite que un usuario se desconecte y vuelva a conectarse a una sesión, excepto que "tmux"
tiene un conjunto bastante rico de características. Personalmente, ahora uso "tmux" en todas mis
plataformas Linux. Los comandos se han convertido en memoria muscular y, a menudo, me siento perdido
cuando trabajo en un sistema sin "tmux". Suena extraño decir eso, pero como administrador del sistema
Linux, a menudo se nos pide que solucionemos problemas, y esto implica poder realizar múltiples tareas.
Es posible que necesitemos una ventana que ejecute un comando de vigilancia con otra ventana siguiendo
un registro. Pasar de una ventana a otra puede ser caótico cuando tienes muchas aplicaciones ejecutándose.
38
Machine Translated by Google
para crear una pantalla dividida y nuevas ventanas dentro de tmux. Puedo alternar entre
sesiones y, lo mejor de todo, no tengo que dejar la comodidad del
línea de comando.
Al igual que "pantalla", hay algunos comandos básicos que necesita saber para
comenzar a usar "tmux". A partir de ahí, puede ampliar su comprensión leyendo las
páginas man o la ayuda.
La Tabla 2-3 enumera algunos de los comandos comunes que usará en sus actividades
diarias.
ctrl + b + w Muestra una ventana en tmux con todas las sesiones de tmux
Introducción a Ansible
El rol de la administración de un sistema Linux ha evolucionado durante la última década hacia
un rol más de ingeniero de automatización. Más administradores de sistemas están escribiendo
código de automatización que nunca. El rol tradicional de administración del sistema Linux se
está volviendo poco a poco menos importante de lo que solía ser.
Es posible que esté leyendo este libro porque está tratando de aprender lo que debe hacer
para mantenerse relevante en el mundo de rápido movimiento de Linux o porque es nuevo en
Linux y quiere aprender cómo comenzar.
39
Machine Translated by Google
Ansible. Las tareas estándar, como la aplicación de parches o la configuración del sistema, están
todas automatizadas en estos días y requieren menos intervención manual. Los administradores
de sistemas Linux no solo necesitan saber cómo configurar Linux, sino que ahora también
ella. Hay un capítulo dedicado a la automatización un poco más adelante en este libro donde
Instalación de Ansible
Afortunadamente, la instalación de Ansible no es demasiado compleja en comparación con otras
herramientas que puede usar para la automatización. Esto realmente tiene sentido ya que uno de
los factores que impulsan el uso de Ansible es la curva de aprendizaje más fácil para usarlo.
Gestión de paquetes
La primera y más sencilla forma de instalar Ansible es a través de su sistema de
repositorios estándar. Sin embargo, las distribuciones empresariales como Red Hat
esas distribuciones, asegúrese de seguir su documentación oficial sobre cómo habilitar los
repositorios requeridos.
40
Machine Translated by Google
Pepita
Configuración de Ansible
El corazón de Ansible es el YAML que escribes que ejecuta una tarea. Para esto,
es muy poco lo que necesitas configurar. Si instaló Ansible a través de un sistema
de administración de paquetes como dnf o apt, tendrá archivos de configuración
creados para usted. Si instaló a través de pip o descargó archivos binarios, deberá
crear los archivos de configuración usted mismo.
El archivo de configuración de Ansible se llama ansible.cfg y se puede usar
para personalizar Ansible dentro de sus límites. Como ejemplo, puede configurar
dónde se almacenan los complementos o los archivos de inventario si desea
configurar un entorno no estándar.
41
Machine Translated by Google
También es en este orden que Ansible leerá los archivos de configuración. Si no encuentra
el primero, pasará al siguiente. Si Ansible no encuentra archivos de configuración, asumirá los
valores predeterminados.
trabajando.
• Cree /etc/ansible/ansible.cfg.
Inventario de Ansible
Antes de usar Ansible, debe saber cómo dirigirse a los sistemas en los que Ansible ejecutará
comandos o tareas. En Ansible, hacemos esto con la ayuda de un archivo de inventario. Si
predeterminado creado es /etc/ansible/hosts. Este archivo se puede usar tal cual, o puede editar
su ansible.cfg para decirle a Ansible dónde se puede ubicar el archivo de inventario. Otro método
común para especificar dónde Ansible puede encontrar un archivo de inventario se realiza al
ejecutar los comandos "ansible" o "ansible-playbook" con el parámetro "-i", seguido de la ruta al
archivo de inventario.
42
Machine Translated by Google
[Servidor web]
servir
servidorb
[base de datos]
servidorc
Ejecutando Ansible
Las herramientas de línea de comandos de Ansible se componen de algunos archivos
binarios. Los dos más utilizados son "ansible" y "ansible-playbook". El comando "ansible"
se puede usar para ejecutar comandos ad hoc únicos directamente en un host, mientras
que el comando "ansible-playbook" se usa para ejecutar libros de jugadas que pueden
contener muchas tareas de Ansible. Un ejemplo de un comando ad hoc de Ansible utilizado
para hacer ping a todos los hosts en su archivo de inventario se puede hacer de la siguiente
manera:
43
Machine Translated by Google
Libros de jugadas
Una vez que se haya graduado de la ejecución de comandos ad hoc de Ansible, querrá
avanzar en la creación de libros de jugadas. En pocas palabras, un libro de jugadas es
una forma de ejecutar varias tareas de Ansible una tras otra. El libro de jugadas de
Ansible debe comenzar especificando un host o grupo en el que se ejecutarán las tareas.
También se puede agregar un archivo de variables o una lista de variables, pero para un
---
nombre: "httpd"
estado: presente
roles
Los libros de jugadas pueden volverse bastante complejos y, a menudo, hay momentos
en los que querrá reutilizar el código. Aquí es donde los roles de Ansible se vuelven útiles.
Un rol de Ansible es una forma de usar Ansible para realizar un trabajo específico. Esto
podría ser tan simple como instalar un paquete o tan complejo como implementar una
plataforma de nube completa. Por lo general, un rol de Ansible bien escrito debería
ejecutarse sin problemas, listo para usar. Se debe configurar una variable predeterminada,
por lo que si el usuario no configura nada, el rol aún se ejecutará. Un buen Ansible
rol también debe incluir un archivo README.md con instrucciones sobre cómo
usar el rol. El rol también debe incluir metadatos que Ansible Galaxy pueda usar.
44
Machine Translated by Google
Una estructura de directorio de roles debe ser similar a la siguiente, pero también se
puede simplificar a solo el directorio de tareas como mínimo. La estructura completa
incluye directorios adicionales que no siempre son necesarios, como el directorio vars o
el directorio de plantillas:
[Nombre de rol]
-> [tareas]
--> principal.yaml
-> [predeterminado]
--> principal.yaml
-> [manejadores]
--> principal.yaml
-> [meta]
--> principal.yaml
-> [variantes]
--> principal.yaml
Tenga en cuenta que los nombres de roles de Ansible generalmente deben comenzar con
Otro binario que se instala como parte de Ansible es el binario "ansible-galaxy". Este
binario se puede usar para administrar roles y colecciones de Ansible.
Esto incluye la capacidad de generar un esqueleto de roles de Ansible. Para crear una
estructura de roles básica para comenzar su viaje de desarrollo de roles de Ansible,
ejecute el siguiente comando:
45
Machine Translated by Google
Módulos
Los módulos de Ansible son otro aspecto importante de Ansible que no mucha gente
entiende. Si un rol de Ansible se puede ver como una caja de herramientas, los módulos de Ansible
se pueden considerar los elementos básicos.
jugadas. En el ejemplo, utilicé el módulo "yum" para instalar el paquete "httpd". Este módulo
adicional. El módulo "yum" en este ejemplo le dice al sistema en el que se está ejecutando el juego
("servidores web") que use el binario "yum" para instalar el paquete "httpd".
Algunos módulos son mucho más complejos que el módulo "yum" y pueden ser más
una buena explicación de todos los parámetros y opciones que generalmente tiene un módulo.
Para ver la documentación, puede realizar una búsqueda rápida en Internet o utilizar la ayuda de
la línea de comandos de Ansible. Un ejemplo puede ser mirar la ayuda del módulo yum:
# ansible-doc ñam
se pueden desarrollar con cualquier lenguaje de desarrollo, siempre que el lenguaje utilizado
sea capaz de generar JSON. Los módulos deben realizar una sola tarea y deben devolver el
resultado de la tarea. También es muy importante que el módulo esté escrito para ser
idempotente.
Compartir su Ansible
Compartir el conocimiento y el código de Ansible es lo que ha hecho de Ansible probablemente
comunidad en el desarrollo de módulos de Ansible han sido asombrosos con los proveedores.
46
Machine Translated by Google
desde todos los rincones contribuyendo con código para promover la adopción de Ansible. No son
solo los proveedores, sino también los usuarios de sistemas como nosotros, quienes también han
estado creando módulos de Ansible para casi cualquier cosa que se le ocurra.
galaxia ansible
Ansible Galaxy es una excelente manera de compartir su Ansible con el mundo.
Esto no solo hace que su nombre sea reconocido por otros, sino que también se suma a la biblioteca
Siempre comience buscando en Ansible Galaxy cualquier cosa que pueda usar o al menos comenzar.
Consolas web
La administración del sistema Linux ha consistido tradicionalmente en iniciar sesión en un sistema
a través de ssh y ejecutar varios comandos de línea de comandos para configurar la plataforma según
sea necesario. Esto todavía se puede hacer hoy, pero con el crecimiento de Linux. La configuración del
sistema siempre iba a evolucionar para incluir métodos más fáciles de usar para acomodar a los usuarios
Cabina
Cualquiera que haya construido y configurado servidores Linux sabrá muy bien que los escritorios
tienden a no usarse mucho en plataformas de servidor. La mayoría de las veces, todo lo que se
47
Machine Translated by Google
servidor para realizar su función. Por esta razón, era necesario que hubiera una
alternativa a un escritorio para una configuración de la interfaz gráfica de usuario más
rápida y sencilla.
Aquí es donde Cockpit se ha vuelto útil. Cockpit permite un servidor Linux
para ser accedido por una consola web. En la consola web, el usuario tiene la capacidad
de configurar el almacenamiento, la red y otras configuraciones. El usuario también puede abrir
una sesión de terminal en el sistema y ejecutar comandos de línea de comandos.
Instalación
Al igual que la mayoría de las instalaciones de software en Linux, se recomienda instalar
"cockpit" utilizando su sistema de administración de paquetes. En Red Hat Enterprise Linux,
sería yum o dnf, y con Ubuntu usaría apt. La siguiente es la instalación para RHEL o Fedora:
Configuración
Una vez instalado, asegúrese de que el servicio "cabina" ha sido habilitado y
comenzó:
# cortafuegos-cmd --listar-todos
48
Machine Translated by Google
Uso de la cabina
Una vez instalado y configurado, debería poder abrir un navegador web e ingresar el
nombre de host o la dirección IP de su sistema Linux con el puerto 9090:
https://<nombre de host o IP>:9090
La consola web ahora debería abrirse y solicitar credenciales. El nombre de
usuario y la contraseña pueden ser cualquier usuario local y, si conoce la contraseña
raíz, también puede usarla.
Dentro de "cabina", puede configurar sus interfaces de red, agregar
almacenamiento a través de NFS o iSCSI y ver registros. Hay algunas
características interesantes, como la capacidad de unirse a dominios desde la
consola web y ver qué aplicaciones están instaladas en su sistema. La mayor parte de la
configuración se explica por sí misma y es lo suficientemente simple de entender.
Limitaciones
Una de las principales limitaciones de Cockpit es que es una consola web del
servidor Linux en ejecución, lo que simplemente significa que el servidor debe estar
ejecutándose y el servicio de "cabina" debe estar funcionando. No puede usar "cabina"
para resolver problemas de arranque y no puede usar "cabina" para instalar máquinas
virtuales.
Alternativas a Cockpit
Donde hay un proyecto en el mundo de código abierto, puede estar seguro de que
habrá muchos más similares a él. Esto es exactamente lo mismo con la administración
de la consola web de Linux. Si bien Cockpit es la opción común de usar y proporciona
características bastante agradables, valdría la pena mencionar algunas alternativas que
se pueden usar.
49
Machine Translated by Google
Webmin
Al igual que Cockpit, puede configurar varias opciones de configuración, como agregar
nuevos usuarios o iniciar y detener servicios. La desventaja de Webmin es el ciclo de
lanzamiento de actualizaciones de productos más lento. Donde Cockpit tiene como
objetivo lanzar versiones cada dos semanas, Webmin puede pasar largos períodos sin
actualizaciones. Sin embargo, esto también puede verse como algo bueno.
El mejor consejo sería comparar estos productos por sí mismo y ver qué funciona mejor
para usted.
Agente
Otra alternativa de consola web realmente agradable a Cockpit es Ajenti. Al igual que Webmin
y Cockpit, Ajenti proporciona una consola web limpia y fácil de usar que permite al usuario
configurar la plataforma Linux en la que está instalada. Las mismas limitaciones están
presentes en todas estas consolas web y solo proporcionarán la configuración para el sistema
en el que está instalada.
Consolas de texto
Si las consolas web no son para usted, entonces las herramientas de interfaz de usuario de
texto pueden ser algo más para usted. Las consolas de texto o herramientas “tui” brindan
opciones de configuración rápida para el usuario cuando no está familiarizado con todos los
parámetros de la línea de comandos. Un buen ejemplo es configurar la autenticación en
RHEL en el pasado. En los primeros días de la configuración de RHEL, tendría que buscar
50
Machine Translated by Google
consulte la ayuda y resuelva todos los diversos parámetros que necesitaría para
que su comando tenga éxito. La ejecución de una interfaz de usuario de texto para
la autenticación ahora le brinda todas las opciones que se pueden seleccionar o
deseleccionar. No necesita recordar ningún parámetro que no sean los detalles de
conexión. La configuración es más rápida y sencilla, con menos margen de error.
Algo que aconsejaría cuando esté bajo presión.
Instalando
No hay un solo paquete para instalar para todas las consolas tui. Cada aplicación
necesitaría proporcionar su propio "tui" si los paquetes "tui" estándar no están disponibles.
instalado.
Utilizando
Las consolas de texto son lo suficientemente simples de usar y generalmente se explican por sí mismas.
51
Machine Translated by Google
Resumen
En este capítulo, se le presentó lo siguiente:
52
Machine Translated by Google
CAPÍTULO 3
Administración de inmuebles
El último capítulo discutió nuevas herramientas o formas de trabajar, y este capítulo
continuará en la misma línea. Sin embargo, analizará el panorama general de su
patrimonio: qué cosas debería estar haciendo y qué cosas debería evitar.
Durante este capítulo, no solo veremos cómo las personas administraron las
propiedades de Linux en el pasado y cómo se puede mejorar, sino que también
profundizaremos en la construcción del sistema, la aplicación de parches al sistema y las
herramientas que debería usar o debería considerar usar. Con esto, analizaremos
brevemente el software de gestión que se puede utilizar hoy en día. La idea principal de este
capítulo es presentarle cómo puede cambiar su forma de trabajar para hacer su vida más
fácil al administrar estas grandes propiedades.
No solo discutiremos los aspectos técnicos de la gestión del patrimonio de Linux
pero también buscará formas de llevar a cabo una planificación adecuada y cómo evitar
esos terribles ciclos de parcheo de medianoche que requieren que los ingenieros trabajen
fuera de horario. Este capítulo explorará ideas para agilizar la mayor parte del trabajo manual
que solía requerir la administración tradicional del sistema Linux. Discutiremos cómo puede
iniciar un cambio cultural dentro de su organización y cómo puede comenzar a impulsar
conversaciones para promover la innovación y dedicar menos tiempo a apagar incendios.
Hacia el final de este capítulo, discutiremos las malas prácticas comunes que a veces
hacen los administradores de sistemas Linux. Luego, terminaremos el capítulo con algunas
buenas prácticas recomendadas que los administradores de sistemas Linux deberían
comenzar a hacer si aún no lo han hecho.
Entonces, con esto en mente, aquí hay algunos ejemplos de lo que quiero decir cuando
decir "formas obsoletas de trabajar".
Habilidades obsoletas
54
Machine Translated by Google
podría no tener acceso a. Por alguna razón, las habilidades de los administradores
de sistemas de Linux se vuelven obsoletas y los dejan varados con la organización
que se niega a apoyarlos.
sobre ingeniería
Esto me lleva a algo de lo que creo que todos hemos sido culpables alguna vez:
hacer que un proyecto sea demasiado complejo para el requisito simple para el que
fue requerido. Si tuviera un centavo por cada vez que veo algo que está
completamente diseñado en exceso para tareas simples, sería un hombre rico. Solo
dé un paso atrás y pregúntese, ¿realmente necesito agregar toda esta complejidad a
este guión oa este trabajo? Si la respuesta es no, elimine el exceso y mantenga la
tarea simple. Use el acrónimo "KISS" si ha sido culpable de sobreingeniería en el
pasado. “Mantenlo simple, tonto”.
55
Machine Translated by Google
Todos hemos escrito una buena cantidad de scripts de shell y, sí, a veces no se puede
evitar, y para esas situaciones solo tienes que sonreír y soportarlo. Sin embargo, cuando
sea posible, intente utilizar herramientas de automatización más nuevas para administrar sus
puede aprovechar para administrar sistemas sin el uso de scripts de shell. Cambiar su enfoque
una administración de patrimonio más grande desde una ubicación central. Sin mencionar, menos
lo que hace su script; simplemente puede redirigirlos para que lean la documentación oficial sobre
Hoy en día, hay cada vez menos buenas razones para escribir scripts de shell que no sean
que scripts de envoltura rápida o scripts rápidos para probar algo. Los scripts no deben
Cada copo de nieve que cae a la tierra es único; al menos esto es lo que me han dicho y
leído. Así es como han evolucionado las propiedades de Linux.
Los administradores de sistemas Linux han creado sistemas en los que cada uno se ha
convertido en su propio copo de nieve único. Cada sistema Linux en el estado se vuelve
tan diferente con su propia configuración única, sin mencionar que es demasiado complejo
que se vuelve tan malo que nadie en la organización sabe qué hace el sistema o cómo
reconstruirlo. Estos sistemas me asustan más que nada. Requieren mucho esfuerzo para
resolver lo que se requiere cuando necesitan ser reconstruidos y se convierten en una carga
si las plataformas necesitan ser conmutadas por error a un sitio de recuperación ante desastres.
56
Machine Translated by Google
Reinventando la rueda
Lo mejor para el final, escribir un script o una pieza de software para hacer algo que ya existe dentro del
sistema operativo es un acto imperdonable. A menos que haya una muy buena razón, esto debe evitarse.
Incluso cuando escriba Ansible, siempre vea si algo no existe ya. Ahorra tiempo y el dinero de su empresa.
Simplemente no lo hagas.
Proceso de construcción
El proceso de compilación de Linux normalmente es algo en lo que piensa o en lo que dedica bastante
tiempo cuando está construyendo o administrando una propiedad mediana o grande. Para el aficionado
doméstico o el usuario individual, tiende a no molestarse demasiado con este proceso y tiende a
construir su sistema manualmente. En fincas más grandes, no es raro que se pida construir diez o cien
sistemas por diferentes razones. Construir estos sistemas manualmente ya no es una buena opción con
la evolución de la industria.
Los días de los sistemas de construcción que no pueden ser reemplazados han terminado. Sistemas
ahora se tratan más como instancias en la nube. Si se rompe, suéltelo y vuelva a implementarlo. Este
proceso tiene sentido ya que ahorra tiempo y energía. No es necesario intentar solucionar el problema
en el acto o incluso solucionar la causa raíz en ese mismo momento. Simplemente suelte el sistema y
vuelva a implementarlo. La mayoría de los sistemas envían registros de forma externa, por lo que la
resolución de problemas y el análisis de la causa raíz pueden continuar más tarde cuando la producción
está en funcionamiento.
57
Machine Translated by Google
Hace veinte años, esta forma de pensar le habría dado algunas miradas
interesantes y, si la gerencia se hubiera enterado, podría haberlo escoltado fuera del
edificio. Afortunadamente los tiempos han cambiado y hoy se fomenta esta forma de
pensar.
Para entender cómo mejorar, necesitamos entender qué estamos haciendo mal.
Para esto, analicemos diferentes métodos de implementación de sistemas Linux, qué
hace que valga la pena hacerlo y qué los hace algo que se debe evitar.
58
Machine Translated by Google
Instalación de red
Plantillas
Aunque hay formas de generar imágenes de máquinas físicas, no será algo
que haga muy a menudo. Las máquinas virtuales, sin embargo, son otra historia en
conjunto. Mientras lee esto como administrador de sistemas de Linux, asumo que
ya comprende el proceso de creación de una máquina virtual a partir de una plantilla
y lo más probable es que haya realizado algunos clones en el pasado. Si no, el
proceso es bastante sencillo. Un sistema Linux generalmente se crea e instala
manualmente en la plataforma de virtualización. Una vez creada y configurada, la
máquina virtual se convierte en una imagen o dispositivo de máquina virtual, según
la plataforma de virtualización que esté utilizando. Esta imagen se puede bloquear
o convertir en una plantilla para evitar
59
Machine Translated by Google
Si no desea crear su propia imagen de Linux, otra opción sería descargar una
imagen del proveedor que elija usar para su patrimonio empresarial de Linux. Empresas
como Red Hat tienen imágenes prediseñadas disponibles para descargar para cada
versión de su sistema operativo lanzado. Estas imágenes se pueden importar y convertir
en plantillas; a partir de ahí, puede construir sistemas. Todo el proceso se puede
automatizar para agilizarlo aún más.
comunitario, por lo que si no puede usar Red Hat Satellite o SUSE Manager,
60
Machine Translated by Google
Servidor PXE
Para que los sistemas Linux se construyan desde una red, deberá tener un sistema que
escuche las solicitudes de compilación. Esto se conoce como servidor de arranque PXE. Este
sistema permite efectivamente que un sistema "nuevo" se inicie desde su adaptador de red y
solicite al usuario que seleccione lo que desea implementar, es decir, si tiene varias
compilaciones que usa. Las opciones predeterminadas también se pueden configurar para que
un sistema se construya automáticamente sin la intervención del usuario.
Por lo general, el servidor de inicio de red sería algo así como un servidor Satélite
Red Hat o un servidor Foreman. Si elige usar su propio servidor DHCP, estos sistemas
requieren que el sistema DHCP redirija la opción "Siguiente servidor" a estos sistemas una
vez que se haya asignado una dirección de red. Personalmente, recomendaría usar los
servidores DHCP que vienen con Satellite o Foreman. Hace que la vida sea un poco más
fácil de administrar y evita tener que configurar los sistemas DHCP centrales. También
puede reducir la complejidad con la configuración del cortafuegos si el tráfico necesita
atravesar los cortafuegos.
Satellite y Foreman también se pueden configurar para escuchar en diferentes interfaces de red,
lo que permite la segregación de DHCP y DNS si le preocupa el impacto no deseado de DHCP
o DNS en su red.
61
Machine Translated by Google
Puntapié inicial
Una vez que un sistema se ha iniciado en la instalación de la red, el servidor PXE deberá
configurarse para entregar las instrucciones de instalación. Esto se conoce como el archivo
kickstart. Los archivos Kickstart son básicamente archivos de respuesta para el
Instalador de Linux. Estos archivos se pueden utilizar para instalaciones de red y para
Instalaciones de dispositivos ISO o USB.
Se debe configurar un buen archivo kickstart para implementar una instalación básica
de la distribución de Linux que está utilizando. Con el enfoque principal en el diseño del
disco y la instalación básica del paquete, mantener un archivo kickstart simple le permitirá
usar el mismo archivo kickstart para una variedad de tipos de sistemas diferentes.
Este método es principalmente para construir máquinas virtuales. Sin embargo, es posible
que se construyan máquinas físicas a partir de imágenes con tecnologías similares a
PlateSpin. Para eso, necesitaría averiguar el proceso antes de continuar aquí.
API de hipervisor
62
Machine Translated by Google
Para hablar con un hipervisor para el aprovisionamiento del sistema, hay algunas
opciones disponibles:
• Módulos de Ansible
• Marioneta o similar
Ejemplos de Ansible
dos años es una llamada "ansible-role-cornerstone". Esta función de Ansible ayuda al usuario a
crear máquinas virtuales en VMware y Libvirt y también le permite
https://github.com/kenhitchcock
63
Machine Translated by Google
Uso de imágenes
imagen dorada
El modelo de "imagen dorada" implica una imagen o plantilla creada como punto de partida
base para todos los sistemas. Esta imagen sería la fuente central de verdad con la que se
puede construir todo. Echemos un vistazo a algunas razones para usar este enfoque frente
a no usarlo.
úsalo
• Una imagen para administrar y mantener.
no lo uses
• Si su imagen no es 100 % correcta, puede terminar con un
conjunto de sistemas Linux que necesitará reconstruir.
64
Machine Translated by Google
Catálogo de imágenes
Este catálogo puede ser plantillas de máquinas virtuales, imágenes o archivos kickstart. Todos tendrán
mantenga un registro de para qué se usan las imágenes y cómo se pueden usar para las variaciones.
• [Imagen MySQL]
• [Imagen Postgresql]
Este método de administrar su proceso de compilación parece una buena idea en la superficie,
pero es importante comprender el trabajo adicional que puede generar. Analicemos esto en algunas ventajas
sesenta y cinco
Machine Translated by Google
Ventajas
• Catálogo de imágenes prediseñadas o archivos kickstart que se pueden usar
la implementación.
Desventajas
• Si usa plantillas para la clonación de máquinas virtuales, las
Una vez que tenemos un buen desglose del flujo, podemos ver dónde se pueden automatizar las
Agregue el proceso de aprobación antes de que se realice la solicitud y tenga en cuenta las
comprobaciones de los recursos disponibles, y tendrá un flujo básico para construir un nuevo sistema
Linux.
66
Machine Translated by Google
Realmente no hace falta decirlo, automatice cada cosa manual posible que haga en su
proceso de compilación. Esto incluye tareas fuera de la instalación o implementación. La
asignación de direccionamiento de red, la configuración de dns son vitales cuando se
intenta automatizar un sistema completo de extremo a extremo. Absolutamente todo lo que
normalmente haría manualmente debe ser automatizado.
Al usar un portal de solicitud de usuario de algún tipo, elimina la necesidad de que a sus
ingenieros se les asignen trabajos de construcción básicos. No solo se debe automatizar la
creación de sistemas como se mencionó anteriormente, sino que también se debe simplificar
el proceso para solicitar sistemas.
67
Machine Translated by Google
El portal de usuario debe poder integrarse con sistemas como plataformas de gestión de
cambios, donde las solicitudes de compilación se pueden enviar automáticamente para su aprobación.
Una vez que se ha aprobado un trabajo, el portal debe tener la capacidad de hablar con una plataforma
de automatización para iniciar los trabajos de construcción. Una vez que se completan los trabajos, se
El uso de "tallas de camiseta" para la construcción del sistema dentro del portal del usuario reducirá
la complejidad para los usuarios finales. Todavía habrá un requisito para determinar qué requisitos de
recursos serían necesarios para la compilación del usuario, pero esto se puede hacer con documentación
que el proceso sea un poco más fácil, a menudo brindando orientación y consejos a lo largo del camino.
pueden ser utilizadas por el usuario como un portal de solicitudes para iniciar compilaciones
aprobadas. Se requeriría cierta personalización y control de acceso del usuario, pero podría ser
posible hasta cierto punto. Se pueden usar versiones comunitarias de Red Hat Automation Platform,
pero recuerde que habrá diferencias. Un ejemplo sería la falta de integración de servicios de
directorio.
Las ideas y los sistemas alternativos podrían incluir cualquier cosa, desde un Pipeline de Jenkins
hasta scripts o aplicaciones de clientes. También hay productos de pago de gama alta que se pueden
68
Machine Translated by Google
Para las plataformas de desarrollo o que no son de producción que solo se usan para
trabajos o pruebas pequeños, introduzca métodos para retirarlos automáticamente. Ofrezca
al usuario la opción de extender si lo desea, pero asegúrese de que los sistemas no utilizados
caduquen y se eliminen. Esto no siempre es posible, pero debe tenerse en cuenta cuando
permita a los usuarios solicitar nuevos sistemas. Sin algo como esto, puede alcanzar
rápidamente los límites del hardware o, peor aún, si está utilizando plataformas en la nube,
podría incurrir en costos masivos.
La aplicación de parches al sistema es una de las tareas más importantes que debe realizar un administrador de
sistemas. La mayoría de las empresas u organizaciones que requieren acreditación pueden ser multadas o algo
Por esta razón, la mayoría de las organizaciones planifican y ejecutan parches regularmente. Esto a menudo
significa que la aplicación de parches o las actualizaciones deben realizarse fuera del horario laboral y dentro de
ciertas ventanas de mantenimiento, una tarea dolorosa para el pobre administrador de sistemas asignado al
Primero comprendamos cuáles son los diferentes tipos de actualización y luego comprendamos cómo
se pueden administrar los parches y las actualizaciones de manera optimizada para reducir potencialmente el
Tipos de actualización
Las actualizaciones de Linux para distribuciones empresariales están disponibles para los clientes que pagan
suscripciones. Anteriormente, hemos repasado antes, pero para reiterar, estas suscripciones son lo que divide a la
empresa de la comunidad.
Las empresas de Enterprise Linux como Red Hat y SUSE publicarán actualizaciones constantemente.
Actualizaciones de paquetes
Las actualizaciones de paquetes constituyen la mayor parte de la mayoría de los ciclos de aplicación de
parches del sistema. Las actualizaciones suelen ser nuevas características o nuevas versiones del paquete instalado.
del paquete harían copias de seguridad de cualquier archivo de configuración que pueda estar
70
Machine Translated by Google
impactado Sin embargo, nunca dé por sentado que esto se hará. Una vez me encontré
con un problema en el que se actualizaba un producto y se sobrescribían las
personalizaciones realizadas en el archivo de configuración. Mi consejo sería asegurarse
siempre de tener copias de seguridad antes de ejecutar cualquier ciclo de actualización.
Fe de erratas
Otro tipo de actualización que se encuentra comúnmente con las actualizaciones de Linux es la
actualización de erratas. Las erratas son las correcciones de errores y las actualizaciones de
seguridad. Estos constituyen probablemente el tipo de actualización más importante que necesitará instalar.
todos los correos electrónicos de alerta con publicaciones de erratas. Ser informado tan
pronto como se publique una nueva errata lo ayudará a planificar el ciclo de aplicación de
Puesta en escena
71
Machine Translated by Google
Satellite 6, por ejemplo, tiene la capacidad de agrupar los paquetes y las erratas que se
descargan. Estos grupos de paquetes y erratas luego se controlan por versión y se envían a
entornos específicos. Estos grupos de actualizaciones se pueden migrar entre los diversos
entornos, lo que le permite a usted, el administrador del sistema, decidir qué entorno recibe qué
actualizaciones. Algo muy útil si tiene usuarios que "disparan felices" constantemente tratando
de ejecutar
72
Machine Translated by Google
"actualización de yum" en los sistemas que utilizan. Con suerte, este nunca será el caso, pero a veces pueden
ocurrir errores, y es útil poder evitar tiempos de inactividad innecesarios al no tener actualizaciones disponibles
en primer lugar.
La Tabla 3-1 enumera algunos de los sistemas de administración de parches comúnmente utilizados en la
actualidad.
Satélite Red Hat Se utiliza para sistemas RHEL 6 y superiores. Se puede usar para
Administrador de SUSE Se utiliza para los sistemas SUSE y se puede utilizar para la aplicación de
Planificación
La planificación de parches suena como algo que harías mientras duermes, y como la mayoría de las
organizaciones hacen sus parches fuera de horario, esto es probablemente lo que sucede cuando se actualizan
los sistemas.
Tener un plan sólido para aplicar parches al sistema es casi tan importante como la aplicación de parches
en sí. Este plan permitiría parchear todos los sistemas de manera oportuna y evitaría el riesgo de que los sistemas
no se actualicen a tiempo y estén expuestos a las vulnerabilidades para las que fueron diseñados.
73
Machine Translated by Google
Un buen plan de aplicación de parches debe incluir cómo se aplican los parches, de
dónde provienen (sistema de administración de parches), cómo verificar que se instalaron los
parches y, lo que es más importante, cómo retirar el parche en caso de problemas del sistema.
Retroceder
Cuando ocurre la rara ocurrencia de que un parche del sistema cause más daño de lo que
repara, necesitará saber cómo revertir el sistema a un estado de funcionamiento. Esto se puede
Antes de realizar cambios en un sistema, es una buena práctica hacer una copia de seguridad
del sistema. Esto implicaría hacer una copia de seguridad de los archivos y directorios del sistema
de archivos más importantes para su sistema. Restaurar a partir de estas copias de seguridad le
permitirá volver al estado en el que se encontraba antes de las actualizaciones, pero debe entenderse
que este proceso puede llevar bastante tiempo y que parchear fuera del horario laboral podría ser
Restaurar instantánea
Las máquinas virtuales se pueden tomar instantáneas y, por lo general, es un proceso rápido.
La restauración a partir de una instantánea a veces puede llevar más tiempo si la instantánea se
ha estado ejecutando durante más tiempo, pero normalmente este proceso tarda unos segundos.
74
Machine Translated by Google
Reinstalación de Paquetes
Hacer una copia de seguridad de sus sistemas Linux es algo que normalmente haría si crea
sistemas que no se pueden volver a implementar fácilmente. La idea de volver a implementar un
sistema desde el código es mucho más atractiva para las organizaciones hoy en día que
restaurar desde una copia de seguridad. Sin embargo, puede haber sistemas que no se puedan
volver a implementar tan fácilmente en caso de desastre. Para esos sistemas, usted
75
Machine Translated by Google
necesita saber qué directorios y archivos son importantes para respaldar. Deberá comprender
cómo restaurar desde estas copias de seguridad y, finalmente, cuáles son las mejores opciones
para una recuperación más rápida.
/etc
/casa
/raíz
/usr
/optar
/svr
/var (asegúrese de excluir registros o cualquier elemento grande que no sea necesario)
almacenamiento que desee; solo recuerde que algunas ubicaciones de copia de seguridad en
una red pueden tardar más que otras. Si necesita que las copias de seguridad se completen
instantáneas de máquinas virtuales. Sin embargo, las instantáneas no son copias de seguridad.
Las instantáneas están ahí para que las use para una recuperación rápida mientras trabaja en el sistema.
Las instantáneas pueden crecer bastante ya que realizan un seguimiento de todo lo que cambia
el sistema; si esos cambios no se mantienen bajo control, pueden causarle un pequeño problema
cuando necesite volver a consolidar los cambios más adelante.
76
Machine Translated by Google
Existen algunos métodos para realizar copias de seguridad de máquinas virtuales, pero la mayoría
básicamente copian la imagen de disco de la máquina virtual. Algún software de terceros puede
administrar esto por usted para que pueda realizar una copia de seguridad de las máquinas virtuales
en vivo, pero tienen un precio superior. Las copias de seguridad de máquinas virtuales estándar
en caso de que no se realicen copias de seguridad, asegúrese de que al menos toma instantáneas cuando
Recuperación de desastres
Como organización, es vital que las plataformas de producción permanezcan activas tanto como
sea posible. Esto podría involucrar muchas soluciones diferentes y debería implicar redundancia en todos
los niveles. Cuando esos planes fallan en el escenario completamente desprevenido, debe haber un plan
El objetivo de la recuperación ante desastres no es garantizar que se cubran todos los puntos únicos de
Exploremos algunas opciones de recuperación ante desastres y analicemos cuáles podrían adaptarse a
su organización.
Por mucho que quedarse sin varios centros de datos sea una buena idea, a veces también puede no
ser suficiente para evitar un desastre. Donde múltiples centros de datos pueden trabajar y permitir una
verdadera recuperación ante desastres sería si ambos centros de datos fueran espejos entre sí. Los
datos tendrían que replicarse constantemente y los sistemas tendrían que ser idénticos en ambos lados,
o al menos lo más cerca posible. Esta solución significa efectivamente duplicar todos los costos y
77
Machine Translated by Google
Clústeres extendidos
el evento del desastre, que en sí mismo necesitaría un libro completo escrito sobre el tema
para abordar todas las complejidades involucradas en la creación de la solución perfecta.
Nube
Al igual que tener otro centro de datos, el uso de plataformas en la nube como AWS o Azure
puede proporcionar una plataforma excelente para la recuperación ante desastres. Tener
toda una plataforma en la nube automatizada para construir una réplica de nuestro local
78
Machine Translated by Google
los sistemas podrían proporcionar una conmutación por error rápida ideal. Idealmente, esta
plataforma, si no se usa para la producción, podría apagarse para ahorrar costos. Luego, en caso
de desastre, el entorno de la nube podría activarse y redirigir el tráfico mientras se resuelven los
problemas en las instalaciones. Esta solución requeriría una inversión masiva de su parte para
garantizar que la configuración se replique desde los sistemas locales, y aún necesitaría averiguar
cómo se pueden replicar los datos para garantizar que no se pierdan datos. De todas las opciones
de recuperación ante desastres, esta podría ser una de las opciones más económicas, ya que una
vez que se construye la plataforma, se puede apagar. Teniendo en cuenta solo los costos de datos
y el costo de reservar direcciones IP, la plataforma en la nube podría permanecer inactiva hasta
que se requiera.
Linux. Esto en sí mismo no es una mala práctica, pero el descuido en el mantenimiento de las
plantillas puede serlo. El uso de una sola plantilla y no parchearla o resolver vulnerabilidades puede
cumplimiento.
programación regular en su plan de trabajo que no se pueda omitir para que alguien verifique
79
Machine Translated by Google
Cortafuegos deshabilitado
80
Machine Translated by Google
81
Machine Translated by Google
Iniciar sesión en un sistema como root no es algo que nadie deba hacer en un entorno de
producción. La producción tampoco siempre significa sistemas orientados al cliente. Los
entornos de desarrollo con desarrolladores que trabajan activamente también pueden
considerarse producción. Iniciar sesión directamente como root elimina cualquier pista de
auditoría y otorga permisos completos para que alguien cause un problema accidentalmente.
Inicie sesión siempre con sus propias credenciales y use su para root si es necesario. Esta
práctica debe ser seguida por todos y no solo por los usuarios estándar.
Buenas practicas
Las siguientes son algunas de mis opiniones personales sobre lo que constituyen buenas
prácticas de administración de patrimonio.
Cualquier sistema que construya debe construirse de tal manera que sea posible
eliminarlo y volver a implementarlo. Sí, algunos sistemas tardarán en volver a
implementarse, pero si se construyen de una manera repetible estándar de una fuente
confiable, debe tener la confianza para desechar cualquier sistema y volver a implementarlo.
Cambiar la cultura personal y de su organización a un modelo de trabajo
orientado a la nube ayudará e impulsará la innovación. Se debe reducir la extinción de
incendios y la resolución de problemas, lo que le permite dedicar más tiempo a las cosas
que le interesan más.
82
Machine Translated by Google
83
Machine Translated by Google
Fuente de control
a menudo puede ser cegado por los errores que cometemos. Un segundo par de ojos a
veces puede marcar la diferencia.
Resumen
En este capítulo, se le presentaron los siguientes temas y puntos de discusión:
84
Machine Translated by Google
85
Machine Translated by Google
CAPÍTULO 4
Administración de inmuebles
Instrumentos
Administrar propiedades Linux más grandes puede ser un desafío si no se hace correctamente.
Tratar de administrar miles de sistemas Linux siguiendo técnicas y herramientas de hace 20 años
causarle palpitaciones a cualquier persona de seguridad, sino que también lo dejará con una cantidad
de gestión. Incluso con una cantidad modesta de sistemas Linux para administrar, las plataformas
de administración solo harán la vida más fácil. Las tareas diarias se pueden automatizar, el proceso
para saber también qué opciones comunitarias están disponibles. Al igual que discutimos en los
capítulos anteriores, haremos una comparación similar. La idea detrás de este capítulo es
familiarizarlo con las plataformas de administración, para qué se utilizan y cómo pueden facilitarle la
Sistemas de gestión
Hay dos tipos de sistemas de gestión que veremos en este capítulo: los sistemas de gestión
de la plataforma Linux y las plataformas de automatización. Para cada tipo de sistema de
gestión, explicaré qué hace el sistema y los conceptos básicos de la herramienta. Para ser
muy claro desde el principio, este libro no es una guía oficial sobre cómo usar estas
plataformas. Todo lo que trato de hacer es familiarizarlo con lo que hacen las herramientas y
cómo podrían beneficiarlo.
La primera y más importante herramienta de administración que debe usar si aún no está
usando una es la herramienta de administración de la plataforma Linux. Esta herramienta es
el centro de su patrimonio y controla una gran parte de lo que deberían hacer los
administradores de sistemas de Linux. Esta herramienta debe tener algunas, si no todas, de
las siguientes funciones:
88
Machine Translated by Google
Obviamente, no siempre necesita toda la funcionalidad anterior, pero es útil tener las funciones
disponibles en caso de que comience a evolucionar sus formas de trabajar. Un ejemplo de esto podría
ser la decisión de su organización de comenzar a utilizar más instalaciones en la nube. Tener una
herramienta con capacidades de aprovisionamiento en la nube le evitará tener que usar otra plataforma
La Tabla 4-1 proporciona una lista de algunas de las herramientas de la plataforma Linux más comunes
Producto Descripción
construcción del sistema Linux. Foreman es upstream para Red Hat Satellite 6
para Foreman. Katello es otro producto utilizado por Red Hat Satellite 6 como
su equivalente ascendente
(continuado)
89
Machine Translated by Google
Producto Descripción
Paseo espacial Spacewalk se ha utilizado en el pasado como upstream para Red Hat Satellite
Con la mayoría de las cosas en el mundo del código abierto, existen productos empresariales y
posible que tenga opciones limitadas. Para comprender cómo tomar la decisión correcta sobre qué
90
Machine Translated by Google
La decisión
El producto que utilice dependerá en gran medida de las necesidades de su organización.
A menudo, el cumplimiento normativo dictará si utiliza productos empresariales o comunitarios.
La característica que debe tener el producto tiende a ser dictada por los tomadores de decisiones
por encima de usted que no entienden lo que usted como administrador de sistemas Linux hace
o lo que hacen los productos, dejándolo potencialmente con un producto que será más un
obstáculo que una ayuda.
Mi consejo con lo anterior es construir un caso para el producto que considere correcto
no solo para usted sino también para su organización. Para eso, deberá ser decisivo en su
decisión y mostrar una buena razón o razones claras de por qué el producto que prefiere
usar es el mejor para el trabajo. Si el producto es un producto empresarial, también deberá
justificar los costos y demostrar que es mejor que sus competidores. Dependiendo de la forma
de trabajar de su empresa, una presentación con ventajas y desventajas debería ser un
ejercicio útil, posiblemente con una comparación de características entre diferentes productos.
91
Machine Translated by Google
92
Machine Translated by Google
Servidor Satélite
El primero y probablemente el que la mayoría de la gente conocerá es el sistema de
gestión insignia de Red Hat: el servidor Satélite de Red Hat. Lanzado originalmente en 2002,
Satellite se basó en el proyecto comunitario Upstream Spacewalk hasta que se lanzó Satellite
6.x en 2014. Desde entonces, Satellite 6 se ha basado en una serie de productos upstream,
todos combinados para proporcionar el último sistema de gestión de plataforma de Red Hat. .
Satélite 5
Red Hat Satellite 5.x funcionó bastante bien como un sistema general de
administración de propiedades de Linux. Satellite proporcionó administración de
parches, implementación de sistemas, escaneo de cumplimiento, administración de
configuración y funcionalidad general de administración de propiedades.
Algunos puntos interesantes en los que siempre terminé dedicando más tiempo
fueron la implementación del sistema y la administración de la configuración. Ambos eran
problemáticos de una forma u otra para usar.
Gestión de la configuración
A lo largo de su vida, Satellite 5.x mejoró de una versión a otra, pero tenía un problema
importante: su sistema de gestión de configuración. Este intento de gestión de la
configuración fue horrible. La gestión de la configuración utilizó un concepto de
almacenamiento de archivos de configuración que se enviarían a los sistemas de los
clientes. Desafortunadamente, esto tenía la costumbre de convertirse en un caos a medida
que se almacenaban más y más archivos de configuración. La configuración se podía
versionar, pero era extremadamente difícil de administrar y, a menudo, terminaba en un
verdadero desastre.
93
Machine Translated by Google
La implementación del sistema utilizada en los primeros Satellite usaba Cobbler junto
con mecanismos de arranque PXE. Conseguir que el sistema de implementación funcionara
a veces resultó ser todo un desafío. Pasé muchas horas ajustando la configuración para
que los sistemas se implementaran solo para luego descubrir que no configuré los permisos
correctos o que me faltaba un paquete. Las versiones posteriores mejoraron y se volvieron
más fáciles de instalar. Posiblemente una combinación de mí ganando experiencia y
mejorando la documentación.
Satélite 6
La versión principal actual del servidor Satellite es la versión 6.x. Satellite 6.x se basa en
una combinación de productos que incluyen lo siguiente:
• Capataz
• Caldera
• Pulpa
• Martillo
• Candelabro
Gestión de contenido
94
Machine Translated by Google
Vistas de contenido
Sugerencia A medida que crecen las visualizaciones de contenido, pueden tardar más en publicarse.
Mantener la vista de contenido pequeña puede ayudar con esto, o puede habilitar la descarga a pedido.
Ciclos de vida
Las vistas de contenido son útiles para agrupar contenido, pero es necesario que los
sistemas las utilicen. Para ello, se añaden sistemas registrados a diferentes ciclos de vida.
Estos ciclos de vida se pueden llamar como quieras, pero generalmente se les da
nombres aburridos de la siguiente manera:
Biblioteca (predeterminada) ÿ Desarrollo ÿ Test UAT ÿ Preproducción ÿ
Producción
Luego, las vistas de contenido se asocian con ciclos de vida que, a su vez, son
sistemas asociados.
95
Machine Translated by Google
96
Machine Translated by Google
Los sistemas de parcheo registrados en Satellite no son diferentes a las versiones anteriores
de Satellite. Los sistemas aún necesitan ejecutar "yum update" para obtener el contenido
más reciente. La ejecución remota también se puede usar como solía usarse en
Satélite 5.x para ejecución masiva en todo el predio. Personalmente, recomendaría usar su
plataforma de automatización para hacer esto, pero depende de usted cómo desea
administrar su patrimonio.
97
Machine Translated by Google
Gestión de la configuración
La gestión de configuración se ha mejorado drásticamente con Satellite 6 desde Satellite
5. Las primeras versiones de Satellite 6.x solo usaban "Puppet" para la gestión de
configuración y SOE (entorno operativo estándar).
Una desventaja de Puppet es que Puppet requiere que los agentes de títeres se
ejecuten en los sistemas cliente. Estos agentes a menudo deben configurarse para
registrarse en el maestro de Satellite Puppet para garantizar que se mantengan en línea
con la configuración esperada.
El contenido de Puppet se almacenaría dentro de la "vista de contenido"
asociada con el sistema cliente registrado en el servidor Satellite. El cliente de Puppet
luego se comunicaría con el maestro de Satellite Puppet y luego revisaría el contenido
disponible para verificar si es necesario aplicar o corregir algo nuevo. Si el agente de
Puppet se detuviera en el sistema cliente, la configuración no se aplicaría.
Las versiones posteriores de Satellite 6 introdujeron Ansible como otra opción para
la gestión de la configuración, que, de manera muy similar a la configuración de Puppet,
requería una "vista de contenido" para contener todas las funciones y configuraciones de
Ansible con las que deseaba configurar su sistema.
La configuración de Puppet o Ansible también estaría controlada por versiones con
"vistas de contenido" y también requeriría publicación y promoción para que el contenido
actualizado esté disponible para los sistemas registrados en Satellite.
98
Machine Translated by Google
organización pequeña.
Administrador de SUSE
Uyuni
Uyuni se bifurcó originalmente del proyecto Spacewalk, pero comenzó a desviarse tanto del
proyecto original de Spacewalk que comenzó a convertirse en una herramienta propia, lo cual es
refrescante saber que Spacewalk ha existido durante mucho tiempo y tuvo su parte justa. de
problemas
99
Machine Translated by Google
Apoyo
Uyuni y SUSE Manager tienen sus propios desafíos, estoy seguro, y aquellos con más
experiencia con esta herramienta pueden saber todo sobre ellos. La configuración de SUSE
Manager no es demasiado diferente a la de Red Hat Satellite y se explica por sí misma.
Ambos productos tienen una excelente documentación y brindan soporte empresarial.
Una de las primeras cosas que debe hacer con SUSE Manager es registrar su
cuenta para que los paquetes se puedan sincronizar para sus entornos SUSE, de
forma muy similar a Red Hat Satellite. El contenido descargado luego se clasifica en "canales",
que es el mismo concepto que se usa en Spacewalk. Se ha introducido un nuevo concepto
de ciclos de vida que mejora la forma en que se puede administrar el contenido agregado
para proporcionar actualizaciones en todos los entornos. Este nuevo enfoque agiliza el
proceso en lugar de tener que hacer la sincronización de "canal" que solía requerir Spacewalk.
100
Machine Translated by Google
Capataz
Foreman es uno de los principales proyectos upstream para Red Hat Satellite 6.x.
La función principal de Foreman es ayudar con el aprovisionamiento de sistemas Linux;
sin embargo, Foreman tiene la capacidad de ampliar su funcionalidad agregando
complementos.
Aprovisionar hipervisores
Complementos
101
Machine Translated by Google
Paseo espacial
Abandonado
Lo que hizo que Spacewalk fuera un producto tan bueno en ese momento fue su capacidad
para administrar sistemas Linux en general. Los sistemas se pueden agrupar y la ejecución
remota se puede enviar a todos los sistemas a la vez, una capacidad muy útil cuando
tiene cientos de sistemas para parchear o instalar paquetes. Esto fue antes de los días de
Ansible e incluso de Puppet. Como se mencionó algunas veces, la administración de
configuración de Spacewalk fue horrible de usar, pero proporcionó la funcionalidad para
mantener la configuración en línea si no ejecutaba un
102
Machine Translated by Google
Ambiente de marionetas. Como Puppet era un poco difícil de dominar y comprender, la gestión de
Aprovisionamiento de red
Spacewalk también presentó a más personas a Cobbler y puso en marcha la
implementación, lo que llevó la creación de sistemas Linux a una nueva era de implementación.
Tener la capacidad de iniciar un sistema fuera de la red y seleccionar un archivo kickstart para usar
realmente eliminó parte del dolor de andar con medios físicos. El hecho de que los archivos kickstart
automatizaran la instalación facilitó aún más la vida, y aquellos que estaban preparados para el desafío
podían crear sus propios fragmentos de código para configurar el sistema recién construido un poco
más.
La gestión del entorno con canales significaba que la clonación de paquetes podía garantizar
que los entornos no recibieran actualizaciones a menos que los administradores de sistemas de
Linux lo consideraran así. Esto fue lo mismo con las erratas y las correcciones de errores.
Spacewalk cumplió bien su propósito durante mucho tiempo, pero con la introducción
de Foreman y otros productos similares, ha llegado el momento de que Spacewalk se retire como
estaba. Nuevas versiones como Uyuni han tomado lo que era Spacewalk y lo han convertido en
Herramientas de aprovisionamiento
Otro tipo de sistema de gestión que se puede utilizar para gestionar su patrimonio es una
103
Machine Translated by Google
actuaría como una interfaz única en todos los aspectos de su cartera. Si implementó
en las instalaciones en la nube, tener una herramienta de aprovisionamiento significaría
que todas las operaciones podrían ejecutarse desde una ubicación.
Nubes
Red Hat Cloudforms es una herramienta de aprovisionamiento empresarial
basada en el proyecto upstream ManageIQ. Red Hat adquirió ManageIQ en diciembre
de 2012 y continuó impulsando la adopción de Cloudforms durante la próxima década.
Máquinas de estado
machine” está escrito con código Ruby on Rails para proporcionar los pasos de
automatización necesarios para construir y configurar su máquina virtual o instancia
en la nube. En las versiones más recientes de Cloudforms, está disponible la capacidad
de usar Ansible en lugar de Ruby on Rails.
Una desventaja bastante grande del desarrollo de la máquina de estado fue
la configuración compleja requerida para que funcionara. Esto no era algo que saliera de
la caja y, a menudo, requería que alguien con experiencia ayudara a que funcionara.
Incluso entonces, el proceso seguía siendo complicado.
104
Machine Translated by Google
aprovisionamiento, que, si se configura, puede restringirse para que los usuarios no técnicos
usen y soliciten plataformas sin saber nada sobre la configuración subyacente requerida. Se
pueden configurar formularios y pantallas personalizados para permitir que los usuarios sin
contracargo
sistema que se esté construyendo en la propiedad. Los centros de costos o similares se pueden
configurar para administrar los costos del patrimonio y se pueden facturar a diferentes equipos o
departamentos.
Solicitar aprobaciones
Cuando los usuarios solicitan un nuevo sistema o plataforma, se pueden configurar las aprobaciones
que deben aprobarse antes de que se pueda ejecutar cualquier automatización. También se pueden
configurar varias capas de aprobaciones, lo que permite que los equipos de control de cambios
aprueben las compilaciones. Algo muy útil si quieres tener el control de lo que se construye.
Ventajas
de plantilla.
muchas posibilidades.
105
Machine Translated by Google
• Se pueden usar portales de usuario personalizados para que los usuarios soliciten
sistemas
Desventajas
• Cloudforms tiene una curva de aprendizaje técnico pronunciada.
Terraformar
Terraform es otro producto interesante para usar si desea aprovisionar a diferentes
plataformas. Provisto por HashiCorp, Terraform es una infraestructura de código abierto
como solución de código que tiene la capacidad de aprovisionarse en múltiples entornos,
como AWS o Azure.
Productos disponibles
HashiCorp ofrece algunas opciones para usar Terraform fuera de su soporte empresarial.
106
Machine Translated by Google
CLI de la comunidad
Existe la opción CLI estándar de la comunidad que está disponible para todos los que deseen aprender
y usarla. La mayoría, si no toda, la funcionalidad de Terraform está disponible para que comience a usar
Otra forma de usar Terraform de forma gratuita es a través del nivel "gratuito" de la solución en la
nube de Terraform. Este es un servicio gestionado por HashiCorp que ofrece algunas funciones básicas
en el nivel gratuito, pero también ofrece funciones ampliadas para algunos de los servicios de pago.
bastante engorroso utilizar diferentes herramientas para diferentes trabajos. Para evitar esto, he visto
a algunas organizaciones construir su propia capa de "abstracción". Esta capa suele ser una aplicación
personalizada escrita con Python o un lenguaje de desarrollo similar que se comunica con otras
No reinventes la rueda
Ya hay herramientas disponibles que pueden conectarse a otros sistemas a través de su API.
Cloudforms y ManageIQ son herramientas que se pueden usar listas para usar para hacer un poco de
107
Machine Translated by Google
API tiene algunas ventajas importantes, pero viene con el alto precio del desarrollo interno. Este costo de
tiempo y esfuerzo a menudo termina con cualquier posibilidad potencial de que se cree algo. Incluso si
una organización autoriza el tiempo y el esfuerzo, otro obstáculo importante podría ser la falta de
habilidades internas para desarrollar este producto. Esto significaría más capacitación o tiempo requerido
para mejorar.
Las mejores herramientas para usar para el acceso a la API serían algo que le brinde la capacidad
de conectarse a la plataforma y mostrar la funcionalidad de una manera que tenga sentido para usted
Lamentablemente no. Esta es la razón por la cual las personas tradicionalmente han escrito sus propias
herramientas de llamada de API y han asignado las solicitudes de API a la funcionalidad de la aplicación.
Si está buscando una herramienta para reducir su esfuerzo de desarrollo, podría usar algunas de las
siguientes.
Jenkins o Tekton podrían ser una forma útil de conectarse a la API de los sistemas de gestión para
pueden activar y los eventos se pueden capturar; a partir de eso, se podría usar una lógica diferente
para determinar las próximas acciones. Esta podría ser una forma interesante de introducir capacidades
de autorreparación en su propiedad.
108
Machine Translated by Google
Plataformas de Automatización
El uso de Ansible o similar es un enfoque mejor y más limpio para ponerse en contacto con la API
de los sistemas de gestión. Ansible, por ejemplo, tiene muchos módulos disponibles que ya hablan
con diferentes herramientas de administración a través de su API. Un ejemplo de esto son los nuevos
módulos de Satélite que ahora están disponibles para que los usuarios automaticen la configuración
de Satélite. Algo útil para administrar sus ciclos de aplicación de parches cuando puede automatizar
Guiones de shell
No es la mejor solución, pero es algo que podría usar si todo lo que quisiera hacer fuera automatizar
algunas tareas básicas. Personalmente, no tomaría este enfoque; Prefiero escribir algo de Ansible
Resumen
En este capítulo, se le presentó lo siguiente:
de la configuración
109
Machine Translated by Google
CAPÍTULO 5
Automatización
Este es el primer capítulo en el que nos centraremos en una disciplina específica,
automatización.
por cientos si no miles. Discutiremos cuáles son las mejores herramientas y por qué debería usarlas o
evitarlas. Veremos cómo estas herramientas difieren entre sí para que pueda tomar una decisión
informada sobre qué herramienta funciona mejor para usted. Luego veremos cuáles son las tendencias
del mercado para estos productos y por qué algunas personas prefieren una herramienta sobre la otra.
Discutiremos temas como "cuándo debe automatizar y cuándo no". Exploraremos el uso de técnicas
Automatización en teoría
La automatización no debería ser nada nuevo para la mayoría de las personas que leen esto.
Siempre ha habido alguna forma de automatización en lo que hemos hecho en el pasado, ya sean
scripts de shell personalizados o alguna herramienta de administración programada para iniciar un trabajo.
Capítulo 5 Automatización
Código idempotente
Lo primero que debe cumplir toda automatización es garantizar que el código
escrito sea idempotente. Esto significa que el código solo hará un cambio si el estado no
coincide con el estado requerido por la plataforma de automatización.
Un ejemplo de esto podría ser actualizar un paquete del sistema. Si el sistema tiene
un paquete instalado que ya tiene la última versión, no querrá que la tarea de automatización
haga nada excepto confirmar que el paquete tiene la versión solicitada. Al no hacer nada
más que confirmar el estado del paquete, el sistema permanece intacto. Si el paquete
requería un reinicio del servicio, la reinstalación o actualización del paquete podría haber
resultado en una pequeña interrupción. Este es posiblemente un mal ejemplo, ya que
también se pueden usar manijas para garantizar que no haya interrupciones.
112
Machine Translated by Google
Capítulo 5 Automatización
automatizarse. Mi regla general siempre ha sido automatizar todo lo que voy a repetir en algún momento,
Parece obvio escribir automatización solo para tareas repetibles, pero ¿qué pasa con
escribir automatización para construir algo que solo se necesita una vez? Esto puede ser algo
malo si no se piensa en por qué lo estás haciendo, pero también puede tener mucho sentido.
“Después de pasar todo ese tiempo haciendo que su automatización funcione, podría
Esto podría ser lo típico que su gerente podría decirle cuando descubre cuánto esfuerzo se
dedicó a escribir el código que escribió para algo que solo se construirá una vez.
El argumento con el que debe seguir sobre por qué automatizar algo
que solo se usará una vez es el hecho de que está construyendo el patrimonio a partir del código y se
Según Gartner, es probable que las organizaciones que no automatizan experimenten una
partes, y si usted o su organización se quedan atrás, corren el riesgo de ser superados por sus
competidores.
Automatizar debería ser el valor predeterminado hoy; sin embargo, si necesita razones, aquí hay
113
Machine Translated by Google
Capítulo 5 Automatización
• Riesgo reducido
• Fomentar la innovación
Es difícil pensar en razones para no automatizar nada hoy en día, pero a veces hay
Estos puntos anteriores no son realmente buenas razones, sino más excusas
opción. Como administradores de sistemas Linux, nuestro trabajo ha cambiado, nos guste o no.
Otra cosa muy importante que debe comprender acerca de las diferentes plataformas de
solo verifican el estado cuando se ejecuta el código para una tarea específica, mientras que otras
plataformas verifican constantemente los sistemas que administran para verificar su estado actual
114
Machine Translated by Google
Capítulo 5 Automatización
Herramientas de automatización
desarrollo que deberá aprender; cuáles usar requerirán que tome una decisión informada.
para usted hoy y discuta qué los hace buenos o malos para usar.
Antes de comenzar a analizar las diferentes herramientas, vale la pena comprender los diferentes
tipos de lenguajes de secuencias de comandos de automatización que se pueden usar para escribir
YAML
comandos más fáciles de aprender, ya que la mayor parte de la sintaxis es bastante sencilla de
entender y recordar.
115
Machine Translated by Google
Capítulo 5 Automatización
YAML en acción
Los siguientes dos ejemplos usan las populares plataformas de automatización Ansible y
SaltStack. Ambos ejemplos proporcionan el mismo resultado, que es instalar el paquete
"httpd".
Ansible
---
hecho realidad
Tareas:
116
Machine Translated by Google
Capítulo 5 Automatización
pila de sal
configuración web:
paquete:
- instalado
- paquetes:
- apache2
Estos ejemplos utilizan un formato similar y ambos tienen una sangría muy
similar. A partir de estos ejemplos, la lógica se entiende fácilmente y se manipula con
bastante facilidad para instalar otros paquetes. Estos ejemplos usan un módulo de
paquete básico proporcionado, pero hay muchos otros módulos disponibles para hacer
mucho más. Una búsqueda rápida en Google a menudo lo lleva directamente a la
documentación más reciente que puede seguir.
Rubí
Ruby es un lenguaje de programación multipropósito de alto nivel que fue diseñado
para ser un verdadero lenguaje orientado a objetos. Ruby es similar a Perl y Python
excepto en cómo maneja sus variables de instancia. Ruby mantiene estas variables
privadas para la clase y solo las expone a través de métodos de acceso como
"attr_writer" o "attr_reader".
El siguiente es un ejemplo básico de código Ruby. No es frecuente que lo harías
escriba código Ruby para tareas de automatización a menos que necesite escribir
una nueva función o algo similar:
#!/usr/bin/ruby
def build(opt1 = "Linux", opt2 = "Windows")
pone "El sistema que se construirá es #{opt1}"
pone "El sistema que se construirá es #{opt2}"
fin
construir
117
Machine Translated by Google
Capítulo 5 Automatización
Pitón
Python se usa de varias maneras para automatizar tareas. Puede usar Python
para escribir sus propios scripts de la misma manera que podría escribir Ruby o
cualquier otro lenguaje de scripting. Python, sin embargo, tiende a usarse
principalmente para los módulos o funciones utilizados por Ansible y SaltStack.
A continuación se muestra un fragmento de código básico de Python.
resultado = x + y
resultado devuelto
118
Machine Translated by Google
Capítulo 5 Automatización
tienen una gran variedad de módulos que se conectan a la mayoría de las plataformas a través de su
API.
Las secuencias de comandos de Shell por defecto no funcionan realmente bien como un
de codificación adicional.
Plataformas de Automatización
Con una idea básica de cómo se ven los lenguajes de secuencias de comandos de automatización,
ahora tiene sentido hablar sobre algunas de las herramientas de automatización que puede usar que
mencioné que algunas tienen herramientas de automatización integradas. En la mayoría de los casos y
Hay excepciones a esto ahora con herramientas de administración actualizadas como Uyuni que ha
119
Machine Translated by Google
Capítulo 5 Automatización
• Ya en su lugar
• Habilidades ya implementadas
• Ahorrar tiempo
• Funcionalidad limitada
• Complejidad añadida
Sin duda, Ansible está presentando argumentos sólidos para ser la herramienta de
crecimiento de Ansible ha sido impresionante en los últimos años y ha ido ganando popularidad
proveedores en todos los ámbitos para crear módulos para Ansible continúan justificando por qué
120
Machine Translated by Google
Capítulo 5 Automatización
Sin agente
Ansible no requiere ningún agente para administrar sus sistemas cliente.
Las conexiones se realizan a los sistemas cliente a través de ssh en Linux o sistemas
basados en Unix y WinRM si se conecta a un sistema Windows. La autenticación se puede
realizar ingresando la contraseña del sistema al ejecutar Ansible o mediante el uso de claves
ssh. La mayoría de los administradores de sistemas de Linux tienden a usar la opción ssh,
principalmente porque las conexiones a los sistemas Linux o Unix serán perfectas y no solicitarán
una contraseña. Esto podría ser una gran irritación si está ejecutando un libro de jugadas contra
cien sistemas.
Si las claves ssh no son una posibilidad, hay otras opciones que se pueden usar,
pero esto requeriría que todos los sistemas se autentiquen en una ubicación central. De lo
contrario, tendrá que ingresar diferentes contraseñas para diferentes sistemas.
121
Machine Translated by Google
Capítulo 5 Automatización
Los entornos de Ansible pueden tener potencialmente un gran agujero de seguridad para un
estado si las claves ssh no se administran correctamente. Si un administrador de sistemas
de Linux, por ejemplo, tiene claves ssh en su sistema que pueden acceder a cualquier
sistema en el estado, existe un gran problema potencial si alguien obtiene acceso no
autorizado a su sistema. Por esta razón, se debe tener mucho cuidado para garantizar la
seguridad de este sistema. El uso de bóvedas del sistema podría mitigar este riesgo como ejemplo.
Uso de Ansible
Línea de comando
instalar con un sistema de gestión de paquetes como Yum vs. instalar a través de pip.
También discutimos cómo ejecutar algunos comandos básicos.
La línea de comandos de Ansible a menudo se conoce como Ansible Core, pero es
posible que el nombre esté cambiando si no lo ha hecho ya. Red Hat está trabajando
arduamente para mejorar Ansible todo el tiempo y está trabajando constantemente en cómo
Ansible puede usarse o integrarse con otros productos; por esta razón, el nombre puede
cambiar para adaptarse al uso.
Una cosa para recordar: si elige usar la línea de comandos
solo la versión de Ansible, no importa demasiado si usa la versión comunitaria o
empresarial desde el punto de vista de la funcionalidad. Ambos productos tienen la misma
funcionalidad la última vez que revisé. El mayor problema sería el soporte si necesita ayuda.
122
Machine Translated by Google
Capítulo 5 Automatización
cualquier cosa que gane popularidad, los desarrolladores analizan los casos de
uso y se adaptan según la demanda. Con eso, es cada vez más probable que las
nuevas versiones de Ansible se basen más en las herramientas gráficas que en la
línea de comandos. Por este motivo, la herramienta Ansible Tower actual es el enfoque
recomendado cuando se aprende Ansible por primera vez.
• Capacidad para administrar cualquier cosa que pueda abrir un control remoto
conexión a
• Flexible
• Escalable
• Soporte empresarial
123
Machine Translated by Google
Capítulo 5 Automatización
AWX
Cuando Red Hat adquirió Ansible, Ansible Tower no era de código abierto. Para
corregir esto, los desarrolladores e ingenieros de Red Hat trabajaron en el código abierto
de Ansible Tower lo más rápido posible. El producto resultante es el proyecto AWX.
124
Machine Translated by Google
Capítulo 5 Automatización
• Capacidad para administrar cualquier cosa que pueda abrir un control remoto
conexión a
• Flexible
otro producto
pila de sal
125
Machine Translated by Google
Capítulo 5 Automatización
• SSH directo
• Agente y servidor
Ejecución Remota
Gestión de la configuración
Salt utiliza un enfoque diferente al de otros productos, ya que utiliza un bus de mensajes
ZeroMQ. Cuando un sistema cliente o un subordinado desencadena un evento, se crea un
mensaje en el bus de mensajes para que el servidor maestro actúe cuando esté listo. Este
método de usar un bus de mensajes permite que un maestro administre una gran cantidad de
sistemas.
126
Machine Translated by Google
Capítulo 5 Automatización
• Enfoque modular.
• Masivamente flexible.
• Escalable.
• Rico en características.
Marioneta
127
Machine Translated by Google
Capítulo 5 Automatización
Satellite 6.x primero usó Puppet para su gestión de configuración, pero luego introdujo la
opción de usar Ansible. Puppet no se eliminó y aún está disponible para los usuarios que
invirtieron mucho tiempo en desarrollar módulos de títeres, pero no se debe dar por sentado
que la disponibilidad de Puppet en Satellite permanecerá allí para siempre.
Puppet requiere un maestro de Puppet para administrar el estado de todos los sistemas que
administra. También se requiere que todos los clientes tengan un agente ejecutándose para
registrarse con el maestro de Puppet.
Productos como Ansible y SaltStack han introducido una curva de aprendizaje menos pronunciada
para los usuarios y representan una fuerte amenaza para productos como Puppet y Chef. No
ayuda que Red Hat también haya comenzado a introducir Ansible en tantos de sus productos
como sea posible para impulsar aún más la popularidad de Ansible. SaltStack también se ha
incluido en las versiones más recientes de los clones de Spacewalk utilizados por SUSE y Ubuntu.
Empresa y Comunidad
128
Machine Translated by Google
Capítulo 5 Automatización
configuración.
• Plataforma idempotente.
Cocinero
detrás de Puppet es Chef. Chef es un producto basado en Ruby como Puppet y funciona en
una arquitectura de agente de servidor. Chef originalmente era una mezcla de componentes
propietarios y de código abierto; sin embargo, desde abril de 2019, Chef declaró que sería de código
Fiel a su trabajo, hoy, al momento de escribir este artículo, Chef tiene una versión comunitaria
129
Machine Translated by Google
Capítulo 5 Automatización
Chef actualmente tiene tres formas en que los usuarios pueden usar su plataforma de automatización.
Servicio gestionado
desea construir ningún sistema local. Hay costos adicionales involucrados como con cualquier
servicio administrado.
En la premisa
Para la organización que tiene una red cerrada o desea administrar su propio patrimonio
infraestructura usted mismo. Hay costos adicionales si desea soporte, y el modelo de precios
pasó del precio del sistema al precio por nodo administrado por mes.
Comunidad
Dado que ahora Chef es de código abierto, la versión comunitaria de código abierto de Chef está
disponible para su descarga y uso, pero viene con la advertencia estándar de no soporte.
• Flexible
130
Machine Translated by Google
Capítulo 5 Automatización
Tomar la decisión
Tomar una decisión sobre qué herramientas de automatización usar puede ser difícil si es nuevo en la
automatización. Los siguientes son algunos consejos que puede utilizar para llegar a la decisión correcta
para usted.
Observar cuáles son las tendencias actuales en el mercado o con sus competidores puede
ayudarlo a tomar una decisión un poco más informada. No estoy defendiendo que sigas a la manada
para bien o para mal, estoy sugiriendo que mires lo que funciona o no para los demás. Las tendencias del
inversión, pero le dan una mejor idea si un producto se usa más que otro. Lo último que desea hacer es
131
Machine Translated by Google
Capítulo 5 Automatización
Instalar y probar cada plataforma por sí mismo es algo que le recomendaría que hiciera
si no está seguro de qué producto es el adecuado para usted. Mi recomendación sería
tomar un caso de uso simple, como construir un servidor web. No para instalar el sistema
operativo sino simplemente instalar e iniciar servicios para convertir un sistema en un
servidor web. Las tareas son simples y deben encontrarse fácilmente en la documentación
oficial de cada uno de los diferentes productos. Este enfoque le permitirá ver cómo se
comparan los productos. A continuación, puede comparar cosas como
• Documentación.
132
Machine Translated by Google
Capítulo 5 Automatización
necesitará para que todo esté en condiciones de ser útil. Esto puede inducir a error a los nuevos
usuarios al pensar que la plataforma viene configurada de fábrica, y casi siempre terminan con una
plataforma que no se utiliza. Cuando dedique su tiempo a probar y probar productos, asegúrese de
tener en cuenta el esfuerzo que se requerirá para que su organización esté en una posición en la
La información del mapa de ruta sobre un producto es casi tan importante como el producto
en sí. El producto puede ofrecer la mejor funcionalidad y parecer muy atractivo, pero si el producto
que elige tiene un ciclo de vida corto y no se lanzarán nuevas versiones, está perdiendo el tiempo y
de las diversas herramientas de administración, analicemos qué puede hacer para mejorar la
administración de su patrimonio.
Ya sea por accidente o por mala intención, querrá asegurarse de no tener sorpresas
133
Machine Translated by Google
Capítulo 5 Automatización
Controlar el estado de todos sus sistemas asegurará que sus sistemas funcionen
exactamente como estaban cuando se construyeron y probaron por primera vez. Esto es crucial
Productos empresariales
mejores capacidades de configuración del entorno operativo estándar suelen ser productos
SUSE se encuentran entre las mejores opciones para una propiedad de Linux en la actualidad.
Ambos incluirán Puppet o SaltStack. Estos productos son bastante buenos para permitirle
Sin embargo, lo positivo es que la documentación es bastante buena y, dado que está pagando
por el servicio, el soporte también está disponible si necesita ayuda con cualquier cosa. La
mayoría de las empresas de soporte harán todo lo posible para ayudar, hasta cierto punto.
El soporte empresarial no significa que el proveedor proporcionará servicios profesionales de
forma gratuita, pero hará todo lo posible para mantenerlo satisfecho. Al final, estás pagando
Para entender por qué es importante usar algo, a menudo es útil ver un ejemplo. Este es un
ejemplo básico de una situación en la que un entorno operativo estándar puede evitar problemas
134
Machine Translated by Google
Capítulo 5 Automatización
La herramienta de la plataforma
Red Hat, "Servidor satelital 6.x". Esta es la última versión del sistema Satélite que Red
Hat está desarrollando. Este ejemplo también podría hacer uso de SaltStack si lo prefiere.
Red Hat Satellite 6 tiene la capacidad de configurar vistas de contenido con módulos Puppet
específicos. Estos módulos se pueden mejorar aún más con parámetros inteligentes que ayudan
inteligente como para incluir un módulo de marionetas que controla la configuración del archivo
ssh_config estándar del estado. Esto mantiene todo el estado configurado de tal manera que
Todos los sistemas del estado están configurados para ejecutar agentes de Puppet que se
El error
Donde este caso de uso es interesante es cuando se comete un simple error.
sshd falle al reiniciar. Como el administrador del sistema de Linux no está al tanto de este
cambio en el archivo ssh_config, no reinicia ningún servicio porque no cree que haya cambiado
nada. ¿Por qué reiniciarían los servicios, especialmente si no quieren causar interrupciones no
135
Machine Translated by Google
Capítulo 5 Automatización
Si no se marca, el cambio no deseado realizado por el administrador del sistema de Linux se aplicará
durante la próxima ventana de mantenimiento. Por lo general, durante estas ventanas de mantenimiento,
del sistema. Como este error tipográfico previamente no detectado estaba esperando en las sombras, sería
en esta etapa que el problema del sueño se despertaría para asomar su fea cabeza. Si no se hizo nada para
corregir este problema antes de reiniciar el sistema, el demonio ssh ahora estaría en un estado inactivo
después del reinicio, sin permitir que nadie inicie sesión a través de ssh.
Red de seguridad
Debido al hecho de que la organización fue lo suficientemente inteligente como para tener
deseados, el error tipográfico del administrador del sistema nunca se convirtió en un problema.
El agente local de Puppet del sistema de la víctima se registró con el maestro de Puppet en el
servidor Red Hat Satellite poco después del error tipográfico del administrador del sistema de Linux y
volvió a alinear la configuración con lo que se consideró que era la configuración correcta cuando se
Si no fuera por la red de seguridad, un simple error como un error tipográfico podría haber
causó un retraso en la depuración de las interrupciones que pueden haber ocurrido después de que se
trabajo descuidado, podría haber mayores implicaciones para el desafortunado administrador de sistemas de
Linux.
Sí, este ejemplo tenía formas de eludir el problema iniciando sesión en una consola, pero ¿y si esta
configuración fuera algo un poco más serio como la configuración de grub? Esto habría significado que es
posible que el sistema no se haya iniciado después de su reinicio programado, creando efectivamente un
136
Machine Translated by Google
Capítulo 5 Automatización
Para evitar problemas similares al caso de uso explicado, es fundamental que se gestione el estado de
configuración del estado. Para tener configurada una plataforma SOE exitosa, deberá asegurarse de
tener su herramienta de gestión patrimonial configurada de acuerdo con las buenas prácticas. Esto
organización.
Para construir sus sistemas que serán administrados por su entorno SOE, debe asegurarse de hacer lo
siguiente:
gestión de configuración.
configuración.
evento.
Fuente de control
Cualquier código que se escriba para administrar su patrimonio debe pasar por un proceso
137
Machine Translated by Google
Capítulo 5 Automatización
• Todo el código debe pasar por un sistema de pelusa para verificar problemas
peticiones.
proceso.
La prueba por fases o la prueba por etapas es el proceso de probar su gestión de automatización y
configuración a través de diferentes entornos antes de llegar a la producción. El enfoque debe ser
similar al siguiente.
Desarrollo de código
138
Machine Translated by Google
Capítulo 5 Automatización
Promoción de código
Automatiza la automatización
Una vez que tenga su plataforma de automatización en su lugar y esté familiarizado con las
Autocuración
Tener su plataforma completamente automatizada es un logro increíble del que cualquier
administrador de sistemas Linux debería estar orgulloso. Dar el siguiente paso es lo que llevará su
Construir una plataforma que pueda curarse a sí misma cuando ocurre un desastre es
el próximo gran avance que todos los administradores de sistemas de Linux deberían
del sistema y aplicar soluciones sin tener que mover un dedo era algo que solo hacían las
películas de ciencia ficción. Hoy en día, puede hacer esto con una variedad de herramientas o
139
Machine Translated by Google
Capítulo 5 Automatización
Capas de autorreparación
Hay algunas capas en las que puede ocurrir la autocuración. Hay una capa de hardware, la capa
Cada una de estas capas tiene sus propias áreas de falla y sus propios métodos
Si un disco físico o una placa base mueren, ninguna cantidad de automatización o herramientas
inteligentes lo salvará si no tiene un sistema de repuesto al que hacer la conmutación por error.
Lo primero que siempre haces es mirar tus puntos únicos de falla. Por esta razón, debe tener
hardware de respaldo para todo lo que se ejecuta en su propiedad. Suena caro, ¿verdad? Lo es,
pero tiende a hacer este nivel de recuperación de patrimonio inteligente solo para organizaciones
menos no deberían hacerlo. Por lo general, existen dispositivos secundarios o terciarios para que se
produzca la conmutación por error que se pueden utilizar.
Donde viene la parte inteligente es cómo reconoce la falla del hardware y cómo
140
Machine Translated by Google
Capítulo 5 Automatización
Informes
1. La conmutación por error debe ocurrir automáticamente para garantizar que haya
es limitado o no hay tiempo de inactividad.
141
Machine Translated by Google
Capítulo 5 Automatización
Recuperación automatizada
142
Machine Translated by Google
Capítulo 5 Automatización
Con la complejidad de la autorreparación del hardware, puede que no le sorprenda saber que la capa de
la plataforma tiende a tener un grado de sus propias capacidades de autorreparación. Las “plataformas”
suelen ser capas de orquestación como OpenShift o Tanzu si utiliza contenedores o pueden ser plataformas
de virtualización como VMware o la virtualización de Red Hat. Estas plataformas están diseñadas para
garantizar naturalmente que mantengan la carga de trabajo en funcionamiento al permitir que la carga de
trabajo se conmute desde los nodos que dejan de responder. Eso, combinado con balanceadores de carga
y redes redundantes, debería permitir que la plataforma siga siendo bastante resistente.
inteligente lógica de autocuración de su patrimonio hacer que toda la plataforma vuelva a funcionar.
clústeres. Aquí es donde debe entrar en juego tu lógica inteligente. Al igual que la recuperación automática
del hardware, debe haber una secuencia de pasos que se sigan automáticamente para garantizar que la
143
Machine Translated by Google
Capítulo 5 Automatización
al clúster y probar una carga de trabajo. Siempre que todo haya pasado,
La reparación automática de la aplicación debe depender del servidor de aplicaciones que aloja
no disponible, podrían ocurrir reconstrucciones y bases de datos replicadas. Hay una buena cantidad
de cosas que se pueden hacer, pero idealmente si su aplicación es lo suficientemente simple, todo lo
para que las aplicaciones se recuperen de fallas. Es mejor dejar este tema para los desarrolladores.
144
Machine Translated by Google
Capítulo 5 Automatización
Cuándo autocurarse
La construcción de su plataforma de automatización y autocuración debe basarse en cuándo desea
que ocurra la autocuración. ¿Quiere prestar atención solo cuando se ha producido un fallo o quiere
Estoy seguro de que puede estar de acuerdo en que es mucho mejor detectar un problema antes
puede convertirse en un problema mayor más adelante. Al ser proactivo, puede hacer que su
sistema de recuperación automática resuelva los problemas de una manera menos intrusiva.
nodos se pueden drenar con gracia en lugar de a la fuerza. Al permitir que las reconstrucciones
ocurran de manera controlada, las interrupciones se pueden programar para adaptarse a los procesos
organizacionales, como el control de cambios adecuado. Con este flujo, todo se puede automatizar,
esta para su patrimonio? Para discutir completamente las técnicas de autocuración y hacerle justicia,
definitivamente necesitaríamos otro libro completo. Sin embargo, analicemos ligeramente cómo
puede comenzar con algunas migas de pan para que investigue más a fondo.
puertas
Al igual que necesita puertas para controlar el flujo de agua en un canal, necesitará puertas para
controlar sus entornos de autocuración. Estas puertas deberían ser puntos de parada para validar lo
que acaba de suceder. No querrá iniciar un largo proceso de remediación si no se buscó primero una
solución simple.
Es decir, ¿ha funcionado un reinicio?
145
Machine Translated by Google
Capítulo 5 Automatización
Las puertas tampoco tienen que tener una configuración técnica. Una
organización altamente regulada puede no querer una lógica inteligente que reconstruya
sistemas sin ser aprobada. Para ello, podría introducir una puerta de control de cambios.
Una plataforma proactiva de autorreparación podría identificar un problema potencial y
generar una solicitud de cambio. Si se aprueba la solicitud de cambio, las acciones de
remediación continuarían, dentro de una ventana de cambio regulada.
Otra puerta útil podría ser hacer una pausa después de que se haya reconstruido un
sistema fallido antes de que el tráfico vuelva a fallar, en caso de que no se haya detectado
un problema subyacente.
Las puertas en general deberían ser lo primero que construyas cuando desarrolles tu
plataforma de autorreparación. Piense en ellos como paradas de diagnóstico mientras prueba
que su lógica funciona.
146
Machine Translated by Google
Capítulo 5 Automatización
Aprendizaje automático
147
Machine Translated by Google
Capítulo 5 Automatización
dynatrace
Un producto del que he oído hablar en el pasado es Dynatrace. Sé muy poco sobre el
producto ya que nunca lo he usado antes y no estoy haciendo ninguna recomendación
basada en lo que sé, así que dejaré que investigues y lo compruebes por ti mismo.
Solo recuerdo Dynatrace porque asistí a una presentación en Red Hat Summit en
Boston hace un par de años.
Durante la presentación, el presentador explicó cómo usaban Dynatrace
para administrar su propio patrimonio y, mientras se desarrollaba la presentación,
hubo una interrupción en uno de sus servidores web (posiblemente preparado para
el efecto). Básicamente, la plataforma Dynatrace se activó y comenzó a ejecutar sus
diagnósticos y su posible trabajo de remediación. Sin embargo, notificó al presentador
que había un problema, lo que supongo que cualquier plataforma de monitoreo
podría hacer de todos modos.
Sin embargo, la impresión que tuve fue que Dynatrace podría hacer algunas
cosas inteligentes y podría ser una buena opción. Como mencioné, haga su propia
verificación y prueba antes de saltar con ambos pies.
148
Machine Translated by Google
Capítulo 5 Automatización
En última instancia, no hay una lista de todas las mejores prácticas que puede seguir
cuando se trata de automatizar su patrimonio. El mejor consejo en este sentido sería
comprender todas las mejores prácticas para la plataforma de automatización que decida
utilizar. Familiarícese con las ubicaciones de los archivos de configuración y cómo deben
configurarse.
Bibliotecas de códigos
149
Machine Translated by Google
Capítulo 5 Automatización
Ansible
En el mundo de Ansible, puede utilizar Ansible Galaxy. Ansible Galaxy tiene una amplia
gama de diferentes roles de Ansible que puede buscar y usar mediante las etiquetas que las
personas han asociado con ellos.
https://galaxy.ansible.com/
Marioneta
Al igual que Ansible, Puppet tiene una gran biblioteca similar a Ansible Galaxy llamada
Puppet Forge.
https://forge.puppet.com/
pila de sal
https://github.com/saltstack-formulas
Tenga en cuenta que Ansible es mi elección personal; es por eso que lo uso
como ejemplo con bastante frecuencia. Intento no recomendar nada directamente ya que
Metadatos
Una vez que esté en condiciones de contribuir con el código a la comunidad que
eligió seguir, asegúrese de comprender cómo formatear y compilar su código para que se
puedan usar los metadatos correctos para catalogar su trabajo. Nada es más frustrante que
proporcionar un código que nadie
puede encontrar o usar.
150
Machine Translated by Google
Capítulo 5 Automatización
Cosas a evitar
Algunas cosas que debe evitar al automatizar, independientemente de la plataforma que utilice
decida usar.
Guiones de shell
automatización de su elección. Ansible, como ejemplo, tiene una rica biblioteca de módulos
instalar con las colecciones de Ansible. Es posible que existan enfoques similares con otras
plataformas. Siempre investigue cuál es la mejor manera de ejecutar una tarea antes de recurrir
a un script de shell.
relacione con una API de plataforma o similar manejaría toda la codificación adicional por usted y
Si su código de automatización tiene una tarea de reinicio de servicio, nunca reinicie solo por
reiniciar. Use un código de control que verifique si el servicio realmente necesita reiniciarse. Aunque
podría ser una ligera caída en el servicio, representa un riesgo si la configuración no es correcta.
151
Machine Translated by Google
Capítulo 5 Automatización
Buenas practicas
Como hay cosas que siempre debe evitar al escribir código de automatización, también
hay algunas buenas prácticas que debe incluir en sus métodos de trabajo.
depuración
Recuerde eliminar los pasos de depuración adicionales o las tareas agregadas a su código.
Puede ser útil cuando está probando y desarrollando su código, pero puede verse
desordenado cuando se usa en producción. También podría obtener algunas preguntas no
deseadas de personas que no entienden por qué hay líneas rojas en todas partes cuando
ejecutan sus tareas de automatización.
No olvides LÉEME
Documentar su código para que otros lo usen es muy importante cuando no está trabajando
solo. El objetivo de la automatización es ahorrar tiempo; pasar ese tiempo explicando a otros
cómo usar su código es contradictorio.
152
Machine Translated by Google
Capítulo 5 Automatización
Fuente de control
Resumen
En este capítulo, discutimos lo siguiente:
153
Machine Translated by Google
CAPÍTULO 6
Contenedores
Este capítulo va en una dirección ligeramente diferente de los capítulos anteriores.
automatización y la administración general del sistema Linux. Hablaremos un poco más sobre
las plataformas hacia el final de este capítulo, pero estaremos más estructurados en torno al
administrar las cargas de trabajo dentro de ellos. Discutiremos qué son los contenedores, cómo
puede comenzar con ellos, qué debe hacer para administrarlos y qué hacer y qué no hacer.
Empezando
Como administrador de sistemas de Linux, lo más probable es que ya haya oído hablar de los
importante que, como administrador de sistemas de Linux, sea plenamente consciente de qué
Capítulo 6 Contenedores
Mientras que una máquina virtual es un sistema operativo completo con sus propios archivos
y recursos, un contenedor es una parte aislada de un sistema operativo que no solo tiene sus
propios archivos y archivos binarios, sino que también comparte bibliotecas y archivos binarios
con su sistema operativo host. Los contenedores se crean y ejecutan sobre una capa del
sistema conocida como tiempo de ejecución del contenedor (Figura 6-1).
en la Figura 6-1.
Historial de contenedores
156
Machine Translated by Google
Capítulo 6 Contenedores
No fue hasta que Google introdujo más tarde la capacidad de separar recursos como
CPU y memoria mediante la introducción de Cgroups que el mundo de los contenedores realmente
comenzó a crecer. Con el concepto de Cgroups, los gustos de LXC (contenedores de Linux) y systemd-
nspawn podrían crear sus propias formas iniciales de contenedores. LXC buscó crear contenedores de
sistema completo donde systemd-nspawn pudiera administrar procesos con espacio de nombres y ser
controlado por systemd. Ambos fueron los primeros líderes en contenedores. Docker basó gran parte de
su desarrollo inicial en LXC, pero luego abandonó LXC a favor de comenzar un estándar de contenedor.
Este fue el nacimiento de Open Container Initiative (OCI) y se convirtió en el estándar para todos los
Hay una serie de tiempos de ejecución de contenedores que se pueden usar hoy en día para
crear contenedores, en gran parte debido al hecho de que todos los tiempos de ejecución de contenedores
siguen este estándar.
Los tiempos de ejecución de contenedores son lo que hace posible ejecutar un contenedor en su sistema.
Un tiempo de ejecución de contenedor permite que el contenedor se comunique con el kernel del host y
ejecute procesos.
Los tiempos de ejecución del contenedor original eran simples y podían ejecutarse de forma aislada.
entornos, pero con el tiempo estos tiempos de ejecución se han vuelto más complejos y han evolucionado
donde se requieren múltiples capas para administrar contenedores en entornos complejos. Para que
comprenda el flujo completo de cómo se crean y administran los contenedores hoy en día, hay tres
categorías que debe comprender sobre los tiempos de ejecución de los contenedores:
• Motores de contenedores
157
Machine Translated by Google
Capítulo 6 Contenedores
En el nivel más bajo cuando se usan contenedores están los tiempos de ejecución de OCI. Los
tiempos de ejecución de OCI se centran principalmente en el ciclo de vida del contenedor. Esta es la creación
Los tiempos de ejecución de bajo nivel tienen dos variaciones, nativos y "virtualizados".
Los tiempos de ejecución de OCI nativos ejecutan sus procesos en el mismo núcleo del sistema host
Algunos ejemplos de tiempos de ejecución OCI nativos son runc, crun y containerd.
A diferencia de los tiempos de ejecución nativos, los tiempos de ejecución virtuales y de espacio aislado están más aislados
Los tiempos de ejecución de Sandbox crean una capa de proxy denominada unikernel que envía
solicitudes al kernel del host, lo que reduce los posibles problemas si un contenedor se viera comprometido
alguna vez. Los tiempos de ejecución de sandbox disponibles al momento de escribir son gVisor y nabla-
containers.
158
Machine Translated by Google
Capítulo 6 Contenedores
En lugar de usar una capa de proxy, los tiempos de ejecución virtuales crean una máquina virtual para
usar en lugar del kernel del host. Estos tiempos de ejecución pueden ser más lentos, pero brindan otra
capa sólida de protección. Los tiempos de ejecución virtuales disponibles al momento de escribir son
Kubernetes, surgió la necesidad de alejarse de los tiempos de ejecución codificados que estaban
integrados en los demonios de kubelet. La idea era crear un nuevo
interfaz que permitía que herramientas como Kubernetes hablaran con cualquier tiempo de
ejecución de contenedor sin necesidad de volver a compilar kubelets cada vez que se usaba un nuevo
tiempo de ejecución. Esta nueva interfaz permitió una mayor flexibilidad para cambiar
tiempos de ejecución nativos.
Hay dos opciones principales de CRI en la actualidad que son capaces de realizar los pasos
Contenedor
Un tiempo de ejecución de alto nivel desarrollado por Docker con runc oculto, Containerd contiene
159
Machine Translated by Google
Capítulo 6 Contenedores
CRI-O
CRI-O es una implementación más delgada de un CRI. Actualmente, Red Hat respalda la
integración de CRI-O en Kubernetes y su producto OpenShift. Docker se eliminó a favor de pasar a una
arquitectura de tipo CRI, lo que permite la flexibilidad de cambiar los tiempos de ejecución de bajo nivel.
Motores de contenedores
La última categoría de tiempos de ejecución de contenedores que debe comprender es la capa en la que
realmente puede crear algunos contenedores. Esta capa es el motor del contenedor. Al igual que una máquina
virtual requiere un hipervisor para ejecutarse, los contenedores requieren un motor de contenedor.
puede ver dónde existe la capa del motor del contenedor entre los contenedores y el sistema operativo. Este
es el motor contenedor.
La tabla 6-1 enumera los dos motores de contenedores comunes que se utilizan en la actualidad;
son Docker y Podman. A lo largo de este capítulo, utilizaremos Podman como motor de contenedor para
Docker Lanzado en marzo de 2013. Uno de los primeros contenedores de uso masivo
tiempos de ejecución
contenedores
160
Machine Translated by Google
Capítulo 6 Contenedores
Estibador
Hoy, cuando hablo con la gente sobre los contenedores, a menudo todavía se refieren a los
contenedores como "contenedores Docker". Docker fue el primer contenedor real
motor que usaba la mayoría de la gente; muchos todavía usan Docker y todavía confían en él.
Si eres una persona de Docker o Podman, no importa demasiado si solo lo estás usando en tu
computadora portátil o laboratorio de pruebas; al final, todo lo que quiere hacer es crear un contenedor
lo usé En el pasado, los archivos binarios de Docker se podían instalar con dnf o yum, pero
ahora es posible que deba tener repositorios separados habilitados o tener suscripciones especiales.
Una vez que se haya instalado Docker, es posible que desee leer las páginas de manual
sobre cómo se usa Docker.
La Tabla 6-2 enumera algunas de las opciones de parámetros de la ventana acoplable que se pueden usar.
161
Machine Translated by Google
Capítulo 6 Contenedores
adjuntar Adjuntar flujos de error, salida y entrada estándar local a un contenedor en ejecución
imágenes Muestra todas las imágenes que se han extraído de su sistema local
Podman
Podman llegó un tiempo después de Docker y es similar a Docker en cómo
se crean y gestionan los contenedores. Una diferencia importante entre Podman y Docker es que Podman
no requiere un servicio o demonio para ejecutarse. Esto se debe al hecho de que Docker se ejecuta sobre un
contenedor runc, mientras que Podman no lo hace. En cambio, Podman usa directamente contenedores runc.
Todos los comandos de Docker deberían funcionar con Podman; las páginas de ayuda y manual de Podman
162
Machine Translated by Google
Capítulo 6 Contenedores
Podman y Docker pueden usar las mismas imágenes y Dockerfiles, por lo que si
# hombre podman
Si las páginas del manual son demasiado largas para leerlas y solo desea obtener
comenzado, correr
#ayuda podman
contenedores locales. Si tiene Dockerfiles, puede usarlos para crear imágenes personalizadas
Imágenes de contenedores
Si fuera a construir una máquina virtual, necesitaría crear un "shell de máquina virtual" en su
hipervisor, iniciar la máquina virtual e instalar un sistema operativo. Los contenedores, dado que
comparten bibliotecas con el sistema operativo, normalmente no necesitan tener instalado su propio
sistema operativo.
En su lugar, las imágenes del contenedor se crean con los archivos y bibliotecas necesarios para
que el contenedor ejecute su carga de trabajo.
163
Machine Translated by Google
Capítulo 6 Contenedores
Registros de contenedores
Puede imaginar que las variaciones de la imagen del contenedor podrían crecer bastante;
con solo pensar en algunos ejemplos, puede ver que el número crece.
Por esa razón, es importante almacenar estas imágenes para su uso posterior. Nadie querrá
crear una nueva imagen cada vez que tenga una carga de trabajo particular que desee
implementar. Si ha tenido alguna experiencia en la creación de servidores de aplicaciones,
comprenderá que algunas configuraciones pueden llevar mucho tiempo. Tener que repetir el
proceso de configuración para cada nuevo entorno no es algo que recomendaría.
164
Machine Translated by Google
Capítulo 6 Contenedores
Registros en la nube
Los registros en la nube son una excelente manera de trabajar con imágenes si tiene un
patrimonio pequeño que administrar. Al igual que no tiene sentido construir una
plataforma de gestión de bienes para una pequeña cantidad de sistemas en su patrimonio,
lo mismo es cierto para un pequeño patrimonio de contenedores. Si solo usa contenedores
para algunas aplicaciones básicas que no cambian con frecuencia, alojar sus imágenes en un
registro en la nube tiene mucho sentido.
Empresas como IBM y Google tienen opciones de registro en la nube para que
usted aloje sus imágenes de contenedores. Según los requisitos de su organización,
Google podría ser un buen lugar para comenzar. Ofrecen un nivel gratuito de $ 300 para
probar los servicios de Google que incluyen opciones de registro. Una vez finalizada la
prueba, por supuesto habrá un costo involucrado; Al igual que evaluar las herramientas de
administración de bienes, deberá determinar qué funciona mejor para usted.
Registros Locales
Hay una serie de opciones que puede elegir si necesita un registro de contenedores. Al
igual que la mayoría de las cosas que hemos discutido hasta ahora en este libro, hay
productos comunitarios y hay productos empresariales.
165
Machine Translated by Google
Capítulo 6 Contenedores
Con los productos de la comunidad, obtiene una funcionalidad básica y, en la mayoría de los
casos, características bastante interesantes. Con los productos empresariales, obtiene todas
las bondades del análisis de seguridad y cumplimiento.
Al elegir, deberá considerar todo nuevamente desde el precio
a las características.
Contenedores en la práctica
Ahora, con los conceptos básicos de los contenedores cubiertos en teoría, obtengamos algo de
requisitos previos
Para esta sección del libro, necesitará tener disponible lo siguiente si desea probar algunas de
las configuraciones que se discutirán.
Lista de la compra
Antes de que podamos crear cualquiera de los contenedores o configuraciones, debe preparar
el sistema que utilizará.
Instalar paquetes
esto será tan simple como ejecutar "dnf install podman -y" o "apt get -y install podman".
166
Machine Translated by Google
Capítulo 6 Contenedores
Nota Para esta sección, usaré Podman; por esa razón, puede valer la pena
usar Podman para evitar configuraciones adicionales o búsquedas en Google.
Creación de contenedores
En las próximas páginas, cubriremos la experiencia práctica básica que necesitará para
comenzar a trabajar con contenedores básicos. El objetivo de esta sección no es convertirlo en
un especialista en contenedores, sino más bien mostrarle cómo crear un entorno de contenedor
simple para adquirir experiencia.
Antes de que se pueda crear o ejecutar un contenedor, deberá extraer una imagen
base de un registro en la nube o, si está adelantado, de un registro local.
Para extraer la imagen correcta de un registro, debe saber qué carga de trabajo del
contenedor se ejecutará. ¿El contenedor será un servidor nginx?
¿Vas a ejecutar una aplicación php? ¿O tienes algo completamente diferente en mente?
167
Machine Translated by Google
Capítulo 6 Contenedores
Una vez que sepa qué tipo de contenedor ejecutará, puede buscar una imagen de
contenedor que se parezca mucho a su carga de trabajo prevista. Si quisiera encontrar
una imagen nginx para ejecutar un contenedor de servidor web básico, ejecutaría algo
similar a lo siguiente:
168
Machine Translated by Google
Capítulo 6 Contenedores
similar al siguiente. Estas imágenes se pueden usar para crear contenedores en su sistema
local.
# imágenes de podman
CREADO TALLA
semanas 138 MB
Ejecutar un contenedor
Si encontró la imagen del contenedor que desea usar y logró descargarla o extraerla con
éxito, puede ejecutar una instancia básica del contenedor de esa imagen en su sistema de prueba.
Para ejecutar un contenedor nginx básico desde la imagen nginx descargada previamente, ejecute
169
Machine Translated by Google
Capítulo 6 Contenedores
95bf289585a8caef7e9b9ae6bac0918e99aaac64d46b461180484c8dd1efa0a4
Contenedores en funcionamiento
Una vez que haya creado su contenedor, es posible que desee ver si se está ejecutando.
La forma más sencilla de hacer esto es ejecutar un comando de lista de contenedores
según lo siguiente:
PUERTOS NOMBRES
Figura 6-2.
170
Machine Translated by Google
Capítulo 6 Contenedores
registros de imágenes, podemos explorar cómo personalizar una imagen para alojar su
propia carga de trabajo.
# mkdir -p /var/lib/registro
171
Machine Translated by Google
Capítulo 6 Contenedores
Para configurar podman para usar un registro inseguro, deberá editar el archivo
"/etc/containers/registries.conf" y buscar la sección "[registries.insecure]". En la sección
"[registries.insecure]", busque la línea "registries = [ ]" y actualícela a "registries =
['localhost:5000']".
Finalmente, después de guardar el archivo registries.conf, deberá reiniciar el
servicio podman:
Etiquetado de imágenes
Lo primero que deberá hacer cuando haya descargado imágenes locales es etiquetarlas
con su registro interno de podman. De esta manera, puede indicarle a podman que envíe
imágenes al registro local en lugar de a un registro remoto. Piense en ello como una forma
de cambiar la ruta de una imagen de contenedor.
Para etiquetar una imagen, ejecute el comando de etiqueta podman. Si tomamos
el ejemplo de nginx que hemos estado usando hasta ahora, podemos etiquetar la
imagen de nginx con el siguiente comando:
172
Machine Translated by Google
Capítulo 6 Contenedores
empujando imágenes
Registros Remotos
Hasta ahora, todo lo que hemos hecho es usar imágenes de contenedores tal como están sin agregar
¿De qué serviría un servidor web sin ningún contenido, verdad? Lo mismo puede
decirse de las imágenes de contenedores; ¿Cuál es el punto de ejecutar un servidor web nginx
o apache si no aloja ningún contenido web en ellos?
Veamos cómo agregar nuestro propio contenido personalizado a un
Servidor web.
Dockerfile
imagen, necesitaremos usar un archivo de compilación. Este archivo de compilación es más comúnmente
denominado Dockerfile. Tanto Podman como Docker pueden usar Dockerfiles.
173
Machine Translated by Google
Capítulo 6 Contenedores
Para usar un Dockerfile, todo lo que necesita hacer es crear un nuevo archivo llamado
directorio actual, o debe especificar la ubicación cuando ejecuta el comando de compilación podman.
Ejemplo
Como antes, veamos un ejemplo. Para este ejemplo, vamos a construir una imagen de CentOS
con apache httpd instalado. Una vez que se instalan los paquetes del servidor web, el ejemplo
Dockerfile
A continuación, deberá crear un Dockerfile. Recuerde que el Dockerfile debe llamarse exactamente
como "Dockerfile". Asegúrese de estar en el mismo directorio que su Dockerfile cuando intente
El Dockerfile en mi ejemplo extraerá la última imagen de CentOS que pueda encontrar si aún
no ha extraído una. Una vez que la imagen esté disponible, yum instalará los paquetes "httpd" y
"git". Estos conformarán todos los paquetes necesarios para nuestra imagen personalizada.
Siéntase libre de agregar cualquier otra cosa que desee usar como PHP. Una vez que se instalan los
paquetes, un clon de git extraerá el código fuente de nuestro contenido web y lo moverá a /var/www/
directorio html para que lo use el servidor web. En este ejemplo, escribí una página HTML muy
básica. Esto puede ser lo que quieras, así que cambia con tu propio contenido si quieres probar algo
un poco diferente.
174
Machine Translated by Google
Capítulo 6 Contenedores
DESDE centos:último
Crear imagen
Crear Contenedor
175
Machine Translated by Google
Capítulo 6 Contenedores
Para verificar que su contenedor realmente se haya iniciado, puede ejecutar el siguiente comando:
#podman pd
#podman pd
IMAGEN DE IDENTIFICACIÓN DEL CONTENEDOR DOMINIO
0.0.0.0:80->80/tcp elated_jepsen
Eliminar contenedor
Para eliminar un contenedor, primero debe detener el contenedor y luego puede eliminarlo. Esto se
#podman rm 08832f29f46e
#podman rm 08832f29f46e
08832f29f46edab6bdd41227a542bf494f926831d099a0a83ee8838bfe71fdf9
176
Machine Translated by Google
Capítulo 6 Contenedores
Prácticas de contenedores
Con una mejor comprensión de qué son los contenedores y cómo administrarlos, ahora
Nativo de la nube
Lo primero que debe comprender al trabajar con cargas de trabajo en contenedores es lo que
significa nativo de la nube.
en general, con una infraestructura inmutable. El uso de estas herramientas y muchas otras
puede permitir altas tasas de liberación de la carga de trabajo del producto. Netflix es un
excelente ejemplo de esto. Netflix lanza alrededor de 100 lanzamientos de producción en un día
a través de cargas de trabajo ligeras y rápidas que se optimizan para la producción mediante el
Buenas practicas
Mantenlo pequeño
La regla número uno para ejecutar cualquier contenedor o carga de trabajo nativa de la nube es
mantener la carga de trabajo lo más pequeña posible. No se recomienda crear cargas de trabajo
que estén en el rango de tamaño de gigabytes. Cuanto menor sea la carga de trabajo, mejor para
deba rediseñar cómo se escribe la carga de trabajo. Esto podría dividir la carga de trabajo en
Los beneficios de ejecutar cargas de trabajo más pequeñas darán sus frutos a largo plazo.
177
Machine Translated by Google
Capítulo 6 Contenedores
Implementación dinámica
La implementación de la carga de trabajo nunca debe realizarse manualmente. El código debe estar
Utilice herramientas de canalización, webhooks de control de código fuente y cualquier otra cosa que pueda
Un ejemplo básico de cómo debería verse esto se puede ver en la Figura 6-3.
Figura 6-3.
178
Machine Translated by Google
Capítulo 6 Contenedores
Escalable
nube o se considerará nativa de la nube debe ser escalable. La capacidad de escalar cuando
¿“Se nubla”?
carga de trabajo sea nativa de la nube. Hay muchas otras cosas que hacen que las cargas
de trabajo sean nativas de la nube, pero las tres preguntas que debe hacerse cuando quiere
Con las preguntas anteriores, ahora puedes preguntarte, ¿se nubla? Si su respuesta
es no a alguna de las preguntas, tiene trabajo que hacer antes de poder migrar o implementar
que debas hacerlo. Los peligros de hacer esto volverán a morderte más adelante cuando no
puedas aprovechar los beneficios de la computación en la nube. Las grandes cargas de trabajo
aplicaciones más pequeñas que puedan "nube" como se pretendía que fuera la nube.
179
Machine Translated by Google
Capítulo 6 Contenedores
Malas Prácticas
Hay muchas buenas prácticas y muchas malas prácticas. Estos se conocen como antipatrones.
Aquí hay un par de prácticas más comunes que deben evitarse cuando sea posible.
Los contenedores no son lo mismo que las máquinas virtuales y no deben ser
Imágenes diferentes
La tentación puede ser usar diferentes imágenes para diferentes entornos, ya que parece
un método más seguro para crear imágenes de carga de trabajo.
Sin embargo, la creación de imágenes de prueba para prueba, imágenes de
desarrollo para desarrollo e imágenes de producción para producción abre la posibilidad de
que se produzcan diferencias que no se prueban ni aprueban. Es muy posible que una
imagen utilizada en su entorno de prueba no tenga vulnerabilidades, pero una imagen
utilizada en producción sí. Por este motivo, migre las imágenes generadas por la aplicación a
través de sus entornos. De esta manera, se asegura de que se realicen las comprobaciones
de seguridad y que el código se pruebe correctamente y, lo que es más importante, se
apruebe para su uso en producción (Figura 6-4).
180
Machine Translated by Google
Capítulo 6 Contenedores
Figura 6-4.
La idea básica sobre cómo se prueban y promocionan las imágenes debe ser
similar a la Figura 6-4.
181
Machine Translated by Google
Capítulo 6 Contenedores
Construir un contenedor debe ser un proceso idempotente. Sus Dockerfiles no deberían intentar
No debe haber ningún código que se confirme ni ningún cambio externo que se impulse. En
pocas palabras, la construcción de un contenedor debe seguir un flujo similar al de la Figura 6-5.
Figura 6-5.
el contenedor para ejecutar. El flujo debe ser tan simple como el que se muestra en la Figura
6-5.
Desarrollo de contenedores
Hasta ahora, en este capítulo, hemos abordado brevemente cómo se pueden desarrollar los
contenedores. Hemos explorado algunas buenas y malas prácticas simples y, con suerte, le
hemos dado una buena idea de lo que es la nube nativa. Para esta sección, comprendamos
cómo puede crear una carga de trabajo significativa mediante el desarrollo de contenedores.
Consideraciones de desarrollo
Lenguajes de codificación
Escribir código para contenedores no es diferente a escribir código para su entorno de desarrollo
local o computadora portátil. Todavía puede elegir y usar su lenguaje de desarrollo favorito y aún
182
Machine Translated by Google
Capítulo 6 Contenedores
plataforma de control de fuente. No existe una regla estricta y rápida que diga que no puede usar un
idioma en particular u otro. Sin embargo, no todos los lenguajes de desarrollo se crean por igual. Es
posible que el uso de idiomas más antiguos no se traduzca a la nube con la misma eficacia que los
más nuevos. Antes de comenzar a escribir cualquier aplicación nueva, dedique algún tiempo a analizar
La Tabla 6-3 enumera algunas opciones de lenguaje de desarrollo que se utilizan hoy en día
Editor de código
Para escribir código útil, necesita practicar y tener un editor que funcione lo suficientemente bien
sin romper el banco. Hay algunos disponibles que puede usar, pero siempre se trata de preferencias
personales y de las funciones sin las que está dispuesto a vivir. La Tabla 6-4 enumera algunas
183
Machine Translated by Google
Capítulo 6 Contenedores
Código VSC De uso gratuito, fácil de entender y tiene una gran selección de complementos
y complementos
Eclipse Gran editor con la capacidad de agregar servidores de aplicaciones para pruebas de
Notepad++ Más avanzado que sus editores de texto estándar, una opción útil cuando tiene opciones
limitadas
Empuje No siempre se instala en sistemas Linux, pero se puede usar para desarrollar
código. Se pueden instalar complementos, pero tienden a ser más limitados que la GUI
opciones
Nano, Emacs Se pueden usar más editores de línea de comandos, pero pueden carecer de los ricos
características que una herramienta GUI puede ofrecer
Fuente de control
No importa qué plataforma de control de fuente desee usar, solo asegúrese de usar una. No usar
el control de código fuente es un gran error para cualquier desarrollador u organización. Pierde la
capacidad de revisar el código por pares de una manera centralizada efectiva y corre el riesgo de
perder el código. No vale la pena correr el riesgo. La Tabla 6-5 enumera las opciones de control de fuente
184
Machine Translated by Google
Capítulo 6 Contenedores
GitLab local
popularidad
Fundación del equipo de Microsoft Sistema de control de fuente desarrollado por Microsoft
Servidor
Tenga en cuenta que Git es probablemente el sistema de control de código fuente más popular en la actualidad.
Una vez que haya desarrollado su código y haya implementado las ideas del contenedor, querrá
Hay muchas formas de hacer esto, tanto las correctas como las no tan correctas. También tendrá
185
Machine Translated by Google
Capítulo 6 Contenedores
CI/CD
La primera área a considerar es su sistema de entrega de contenedores. Esto se conoce como su sistema
de integración continua y entrega continua. Esto ayudará a implementar su carga de trabajo en sus diversos
entornos y le brindará la flexibilidad de hacer mucho más con las imágenes de su contenedor o la
implementación de la carga de trabajo. La Tabla 6-6 enumera algunas opciones disponibles para
canalizaciones de CI/CD.
Jenkins Popular herramienta gratuita de código abierto que es lo suficientemente fácil de usar y tiene
Integración de TeamCity con Visual Studio, útil para el desarrollo y las pruebas de Windows. Tiene
repositorios de GitLab
Ejemplo de Jenkins
Jenkins es una de las herramientas de canalización más populares que se utilizan hoy en día y es
de uso gratuito para realizar pruebas. Para ver cómo se ve el código de canalización de Jenkins, el
186
Machine Translated by Google
Capítulo 6 Contenedores
nodo
{ def aplicación
stage('Repositorio de clones') {
/* Comentario básico sobre el código de
clonación*/ checkout scm
}
escenario('Crear imagen') {
/* Crea la imagen de tu contenedor */
app = docker.build("jenkinsproject/helloworld")
}
stage('Imagen de prueba')
{ /* Ejecuta pruebas unitarias de algún tipo */
app.inside { sh 'echo "Pruebas aprobadas"'
}
}
}
}
}
A partir de este ejemplo de Jenkins, puede ver que las etapas se utilizan en la
canalización; puede agregar tantos como desee para diferentes tareas. Es posible que
desee agregar una etapa para el escaneo de imágenes de seguridad como ejemplo.
Idealmente, desea incorporar tanta automatización y pruebas como sea posible.
187
Machine Translated by Google
Capítulo 6 Contenedores
Registro de imágenes
A medida que desarrolle sus aplicaciones y el contenido del contenedor, necesitará un lugar
para almacenar estas imágenes. Está bien si desea probar y compilar cuando lo necesite,
pero como buena práctica, se recomienda comenzar a almacenar las imágenes de su
contenedor a medida que comienza a crear su cartera de aplicaciones. Esta práctica es muy
recomendable si va a implementar algo en un entorno en vivo.
188
Machine Translated by Google
Capítulo 6 Contenedores
Tip VSCode es una excelente opción si necesita algo que sea gratuito y fácil
de usar. En general, para mí es un ganador, pero pruébalo por ti mismo.
Antes de enviar o confirmar cualquier tipo de código, ya sea YAML o Dockerfiles, utilice
herramientas de linting. Para Dockerfiles, hay una buena herramienta de pelusa en línea
que puede copiar y pegar para verificar el contenido de su Dockerfile.
www.fromlatest.io/#/
DevSecOps
Una palabra clave en el mundo actual de la gestión de plataformas es DevOps. DevOps
es un conjunto vital de prácticas y herramientas que cierra la brecha entre los
desarrolladores y los equipos operativos. DevSecOps es una adición a este concepto,
donde todos son responsables de la seguridad.
Herramientas DevSecOps
189
Machine Translated by Google
Capítulo 6 Contenedores
Tuberías
En una situación estándar en la que no se utilizan prácticas DevOps o DevSecOps, los equipos de
seguridad deben escanear e informar problemas cada vez que se construye un nuevo sistema o
plataforma. Los equipos de seguridad son responsables de la seguridad de la organización y los que
tendrían que responder las preguntas difíciles si alguna vez se experimenta una brecha. Por esta razón,
entornos en vivo. Este proceso puede implicar herramientas de seguridad adicionales y puede tardar en
completarse. Esto también puede ser un trabajo frustrante si constantemente se lanzan nuevas
plataformas o sistemas.
y los equipos operativos asumen la responsabilidad de la seguridad, lo que reduce en gran medida
Puertas de seguridad
Con la seguridad integrada en las herramientas de canalización como Jenkins, se pueden crear
puertas de seguridad en las que, si una imagen falla en un análisis de seguridad por cualquier motivo,
el proceso de creación se puede detener, lo que permite que se produzca la remediación antes de
que se publique en un entorno en vivo.
GitOps
Otra palabra clave en la gestión de patrimonio y la gestión de plataformas de contenedores de hoy
en día es GitOps.
https://about.gitlab.com/topics/gitops/
190
Machine Translated by Google
Capítulo 6 Contenedores
Git
El primer paso para usar GitOps es comenzar a usar Git. Puede ser GitLab, Bitbucket
o GitHub, cualquier plataforma Git que permita que las canalizaciones de CI/CD detecten
solicitudes de combinación.
Herramientas de tubería
Argo CD
Otra herramienta de GitOps que se usa cada vez más es ArgoCD. ArgoCD ayuda con los
flujos de trabajo de GitOps y puede usarse como una herramienta independiente o como parte
de su canalización de CI/CD.
191
Machine Translated by Google
Capítulo 6 Contenedores
ArgoCD junto con Git actúa como una "fuente de la verdad" al configurar
OpenShift u otras variantes de Kubernetes. Es útil para mantener el estado de sus
plataformas de orquestación de contenedores. Es muy similar a cómo las herramientas
de administración de bienes como SaltStack mantienen el estado de los sistemas dentro
del patrimonio que administra.
ArgoCD funciona con Git prestando atención a cualquier cambio en el archivo de
configuración a través de solicitudes de extracción o fusión. Cuando se fusiona un
cambio en Git, ArgoCD extrae la nueva configuración y configura la plataforma para la
que está destinada la configuración (Figura 6-6).
Figura 6-6.
La Figura 6-6 muestra el flujo básico que debe seguir una configuración de ArgoCD.
Orquestación de contenedores
Unos pocos contenedores pueden convertirse rápidamente en cientos, si no miles,
en entornos donde las aplicaciones se implementan con regularidad. Para administrar este
tipo de crecimiento, la necesidad de orquestación de contenedores se vuelve más
importante. Herramientas como Kubernetes, Docker Swarm y OpenShift brindan a los
administradores la capacidad de administrar grandes propiedades de contenedores.
192
Machine Translated by Google
Capítulo 6 Contenedores
¿Qué hace?
La orquestación de contenedores es la capa que debe existir por encima de los contenedores antes
de que los usuarios finales los utilicen. Una buena herramienta de orquestación de contenedores
• Escalable
• Flexible
• Seguro
• Automatizado
• Fácil de usar
Estas propiedades garantizan que la carga de trabajo del contenedor se pueda administrar
de manera efectiva y segura, que tenga la capacidad de conectarse a los sistemas de CI/CD y
Podman no tiene la flexibilidad para crear redes aisladas entre diferentes nodos
para una carga de trabajo específica.
193
Machine Translated by Google
Capítulo 6 Contenedores
Opciones de orquestación
Kubernetes
Kubernetes, o K8s, es un proyecto de código abierto desarrollado originalmente por
Google y basado en su sistema "Borg" original (sistema de administración de clústeres).
Red Hat fue uno de los primeros colaboradores de Kubernetes antes de que fuera
lanzado oficialmente.
En 2015, Google donó el proyecto Kubernetes a la CNCF (Cloud
Fundación de Computación Nativa).
Bifurcaciones de Kubernetes
194
Machine Translated by Google
Capítulo 6 Contenedores
Estos servicios administrados en la nube permiten a los usuarios finales implementar sus
cargas de trabajo de contenedores sin la necesidad de construir su propia orquestación
plataforma o gestionar cualquiera de los sistemas asociados a ella. Los usuarios se registran para obtener
necesita implementar propiedades muy grandes y está feliz de hacer toda la administración usted
mismo.
Componentes maestros
El plano de control
del clúster
replique la configuración entre ellos para garantizar que el control continúe proporcionando la
195
Machine Translated by Google
Capítulo 6 Contenedores
Nodos
Los nodos son los trabajadores de los clústeres de Kubernetes. Son responsables de hospedar la
carga de trabajo del contenedor que implementan los usuarios. Los nodos constan de algunos
subcomponentes:
Espacios de nombres
Los espacios de nombres están diseñados para proporcionar una forma de segregar un clúster de
Kubernetes para que varios usuarios puedan implementar cargas de trabajo sin poder comunicarse
entre sí.
Demonios
Normalmente, el programador es responsable de colocar los pods en los nodos donde hay recursos
Sin embargo, los Daemonsets se utilizan cuando es necesario forzar la ejecución de un pod en cada
Los objetos de carga de trabajo son lo que se implementa y usa en los nodos trabajadores. Los
vainas
Los contenedores se ejecutan dentro de los pods; estos pods son los que se generan en los
nodos de trabajo. Por lo general, un contenedor se ejecuta dentro de un pod, pero esta no es una
regla estricta y rápida.
196
Machine Translated by Google
Capítulo 6 Contenedores
Servicios
Volúmenes
De forma predeterminada, todos los contenedores son efímeros, lo que significa que no
tienen forma de almacenar sus datos después de reiniciar o recrear un pod. Al montar
volúmenes o volúmenes persistentes en pods, debe recuperar cualquier dato de pods
previamente destruidos o reiniciados.
Mapas de configuración
OpenShift
Antes de que OpenShift fuera OpenShift, era un producto PaaS de una empresa
llamada Makara. Red Hat adquirió Makara en 2010 para la plataforma PaaS, que era
propietaria en ese momento y se basaba en la tecnología de contenedores de Linux.
197
Machine Translated by Google
Capítulo 6 Contenedores
OpenShift temprano
Antes de OpenShift 3.0, la plataforma Red Hat PaaS era propietaria y se desarrollaba a
medida. Se necesitaron dos años después de la adquisición para que Red Hat lanzara la
primera versión de código abierto y luego tres años para pasar de la plataforma personalizada
OpenShift 3.0 fue la primera versión en la que Red Hat usó Docker para la
OpenShift actual
Actualmente, Red Hat tiene OpenShift 4.9 generalmente disponible para uso público. La separación
del Docker "codificado" ha permitido que OpenShift 4.x se mueva a un enfoque de interfaz de tiempo
continua de Red Hat continúa aumentando las nuevas funcionalidades y adquisiciones de OpenShift.
Componentes de OpenShift
Dado que OpenShift se basa en Kubernetes, la mayoría de los componentes son muy similares
y se nombran de manera similar. Por supuesto, existen algunas variaciones, como que los
198
Machine Translated by Google
Capítulo 6 Contenedores
Producto
Empresa
Seguridad
Consola web
OpenShift tiene una consola web por defecto. Kubernetes requiere que lo implemente por
separado y que el kube-proxy del clúster dirija el tráfico a la consola.
Mucho mas
Sin enumerar todas las diferencias, hay otras funciones como la gestión de
imágenes y las soluciones de almacenamiento empresarial que Red Hat OpenShift
ofrece sobre Kubernetes. Si está interesado, debe hacer lo recomendado con la
mayoría de los productos de este libro. Cree una prueba de concepto y compare las
diferencias por sí mismo.
199
Machine Translated by Google
Capítulo 6 Contenedores
Resumen
En este capítulo, se le presentó lo siguiente:
• Una descripción general de qué son los contenedores, sus tiempos de ejecución,
200
Machine Translated by Google
CAPÍTULO 7
Vigilancia
¿Cuáles son algunas de las características más importantes que debe tener cualquier
sistema Linux nuevo antes de que pueda ser aceptado en la producción o en el estado
activo de su organización? Las respuestas comunes dadas son monitoreo, registro y seguridad.
También por una buena razón, cualquier sistema que no esté siendo monitoreado,
registrado o seguro es solo una receta para el desastre y en casi todos los casos será
rechazado por cualquier equipo de operaciones serio.
Este capítulo profundizará en una de las primeras cosas que debe tener un
sistema Linux: monitoreo. Discutiremos las herramientas que se han utilizado en el pasado
y qué herramientas están disponibles de forma inmediata con la mayoría de las
distribuciones de Linux. Luego veremos algunas de las nuevas herramientas y tendencias que han
Capítulo 7 Monitoreo
Casi desde que Linux existe, ha habido herramientas para monitorear lo que sucede en el
sistema. Estas herramientas pueden ser tan básicas como el comando "superior" o tan complejas
como usar systemtap para comprender qué está haciendo el kernel cuando se agrega un nuevo
dispositivo a su sistema.
Una vez que conozca los conceptos básicos sobre cómo usar un sistema Linux, el
siguiente paso lógico siempre debe ser saber cómo confirmar que su sistema está en
buen estado y cómo asegurarse de que se mantenga así. Para esto, existen numerosas
herramientas diferentes que pueden mostrar el estado de su sistema.
Monitoreo de Procesos
Comandos de proceso predeterminados, ps y top
los comandos "superior" y "ps". No solo le muestran todos los procesos que se ejecutan en su
sistema, sino que también le brindan el número de identificación del proceso que se puede usar para
# ps-ef | grephttpd
También se pueden usar los comandos "superior" o alternativos, pero es posible que
tenga dificultades para buscar su proceso en la lista. El uso de "ps" y "grep" le dará una
salida más rápida y limpia.
204
Machine Translated by Google
Capítulo 7 Monitoreo
Pstree
Una herramienta rápida y agradable para ver todos los procesos y los padres
de cada proceso es el comando "pstree". La siguiente es una salida básica de
pstree con una salida reducida:
# pstree
systemdÿÿÿModemManagerÿÿÿ3 * [{ModemManager}]
EtNetworkManagerÿÿÿ2 * [{NetworkManager}]
ÿÿabrt-dbusÿÿÿ2 * [{abrt-dbus}]
ÿÿ3*[abrt-dump-journ]
ÿÿabrtdÿÿÿ2*[{abrtd}]
... [reducido por longitud]
ÿÿtermaldÿÿÿ{termald}
ÿÿudisksdÿÿÿ4*[{udisksd}]
ÿÿupowerdÿÿÿ2*[{upowerd}]
ÿÿde origen ureoÿÿÿ2*[{de origen ureo}]
wpa_supplicant
205
Machine Translated by Google
Capítulo 7 Monitoreo
Sugerencia Mire las páginas man de ps --help y ps para obtener más opciones
para usar con ps.
Disco y E/S
Puede haber una situación en la que el rendimiento del disco sea lento o los discos se
llenen. Algunas herramientas útiles que se pueden usar para el monitoreo de disco y E/
S que todavía se usan hoy en día son herramientas como "iostat", "iotop", "du" y "df".
iostat y iotop
“iostat” e “iotop” son herramientas básicas que le brindan información sobre sus sistemas
de entrada-salida:
# iostato
206
Machine Translated by Google
Capítulo 7 Monitoreo
# iotop
LECTURA TOTAL DEL DISCO: 0,00 B/s | ESCRITURA DE DISCO total: 0.00 108,61 K/s
LECTURA DE DISCO actual: B/s | ESCRITURA DE DISCO actual: LECTURA 3,19 K/s
TIEMPO PREVIO USUARIO DE DISCO INTERCAMBIO DE ESCRITURA DE DISCO ES>
DOMINIO
733973 ser / 4 ken 0,00 B/s 57,50 K/s 0,00 % 0,00 %
[rcu_gp]
4 ser/0 raíz 0.00 B/s 0,00 B/s 0,00 % 0,00 %
[rcu_par_gp]
du y df
Estos se utilizan para mostrar el uso del disco y dónde se montan los discos:
# df-h
207
Machine Translated by Google
Capítulo 7 Monitoreo
# du -h /etc
0 /etc/.java/.systemPrefs
8.0K /etc/.java/despliegue
8.0K /etc/.java
0 /etc/NetworkManager/conf.d
0 /etc/NetworkManager/dispatcher.d/no-wait.d
0 /etc/NetworkManager/dispatcher.d/pre-down.d
0 /etc/NetworkManager/dispatcher.d/pre-up.d
0 /etc/NetworkManager/dispatcher.d
0 /etc/NetworkManager/dnsmasq-shared.d
0 /etc/NetworkManager/dnsmasq.d
28K /etc/NetworkManager/system-conexiones
32K /etc/NetworkManager
... [reducido por longitud]
80K /etc/gimp/2.0
80K /etc/gimp
28K /etc/pcp/derivado
28K /etc/pcp
37M /etc/
UPC
Las estadísticas de la CPU en su sistema se pueden verificar utilizando una serie de herramientas
que se envían con su distribución y herramientas que puede instalar con bastante facilidad. Las
208
Machine Translated by Google
Capítulo 7 Monitoreo
Cima
La mayoría de los administradores de sistemas de Linux usarán el comando superior y presionarán la tecla "1".
arriba - 23:56:10 hasta 108 días, 1:38, 1 usuario, promedio de carga: 1.31,
1.73, 1.54
Tareas: 373 en total, 2 en ejecución, 370 durmiendo, 0 detenido, 1 zombi
% Cpu0: 10,0 us, 2,3 sy, 0,0 ni, 87,0 id, 0,0 wa, 0,3 hi, 0,3 si, 0,0 st
%Cpu1: 6,6 us, 7,9 sy, 0,0 ni, 83,8 id, 0,0 wa, 1,0 hi, 0,7 si, 0,0 st
%Cpu2: 10,7 us, 3,3 sy, 0,0 ni, 85,3 id, 0,0 wa, 0,3 hi, 0,3 si, 0,0 st
% CPU3: 10,3 us, 3,6 sy, 0,0 ni, 83,4 id, 0,3 wa, 2,0 hi, 0,3 si, 0,0 st
MiB Mem: 23679.7 total, 3091.2 gratis, 13131.6 usado, 7456.8 buff/
cache
Intercambio de MiB: 8192,0 en total, 6207,6 gratis, 1984,4 usados.
8940.7 disponible Mem
209
Machine Translated by Google
Capítulo 7 Monitoreo
mpstat
Otro comando útil para las estadísticas de la CPU es el comando mpstat. El comando
“mpstat” muestra las actividades de cada CPU disponible.
Para ver todas las estadísticas por CPU, puede ejecutar el siguiente comando:
# mpstat -P TODO
Memoria
Algunas formas de verificar la memoria del sistema incluyen mirar el archivo /proc/meminfo
o ejecutar comandos como "free" o "top". Las siguientes son algunas cosas que puede
hacer en su sistema para comprender más acerca de su memoria.
Gratis
# libre -h
total utilizado Buff/caché compartido gratuito disponible
Memoria: 23Gi Intercambio de 1.2Gi 7.2Gi 8.8Gi
Tamaño de página
210
Machine Translated by Google
Capítulo 7 Monitoreo
pmap
Otra herramienta útil es la utilidad “pmap”. “pmap” informa un mapa de memoria de un proceso.
“pmap” puede ser bastante útil para encontrar las causas de los cuellos de botella en la memoria.
Memoria virtual
Ocasionalmente sucede que necesita investigar problemas relacionados con la
memoria virtual o slabinfo. La herramienta “vmstat” es útil para este tipo de
investigación.
vmstat
La herramienta vmstat se puede ejecutar para brindarle información diferente
sobre su sistema.
Ejecutar un comando vmstat básico de la siguiente manera:
#vmstat
st
0 0 2032024 2086144 1056 8923084 2 8 21 701 40 50
28 12 59 0 0
211
Machine Translated by Google
Capítulo 7 Monitoreo
asi que
Memoria intercambiada a disco
a nosotros
Porcentaje de tiempo de ejecución de código no kernel
identificación
Porcentaje de tiempo inactivo
Washington
Porcentaje de tiempo dedicado a la espera de IO
Red
Las herramientas para monitorear la configuración o el tráfico de la red son realmente útiles cuando necesita
212
Machine Translated by Google
Capítulo 7 Monitoreo
Netstat
Una de las primeras herramientas que uso cuando necesito verificar si un puerto está
escuchando tráfico es el comando "netstat".
Tenga en cuenta que Netstat sigue siendo parte del paquete de herramientas de red,
pero en algún momento se eliminará porque netstat ahora está obsoleto; se prefiere
usar el comando ss en su lugar.
ss
Para obtener información rápida sobre las estadísticas del socket, puede usar el
comando "ss".
Para ver todos los sockets TCP y UDP en un sistema Linux con ss, puede usar
el siguiente comando:
# ss -t -a
iptraf-ng
Si prefiere usar herramientas de iniciativa para ver las estadísticas de la red, puede usar el
comando "iptraf". “iptraf” es útil para monitorear varias estadísticas de red, incluida la
información de TCP, los recuentos de UDP, la información de carga de la interfaz, los errores
de suma de comprobación de IP y mucha otra información útil (Figura 7-1).
#iptraf-ng
213
Machine Translated by Google
Capítulo 7 Monitoreo
Figura 7-1.
volcado de tcp
214
Machine Translated by Google
Capítulo 7 Monitoreo
Figura 7-2.
Nota Una forma útil de buscar cualquier cosa que pueda estar transmitiendo
en su red en texto sin cifrar.
215
Machine Translated by Google
Capítulo 7 Monitoreo
NetHogs
Si estaba experimentando grandes ráfagas de carga de red en un sistema Linux y
quería saber quién podría ser el responsable, puede probar la herramienta "nethogs"
para ver qué PID está causando una situación de ancho de banda (Figura 7-3).
# nethogs
Figura 7-3.
si arriba
# si arriba
216
Machine Translated by Google
Capítulo 7 Monitoreo
Figura 7-4.
Herramientas gráficas
217
Machine Translated by Google
Capítulo 7 Monitoreo
Figura 7-5.
En la Figura 7-5, puede ver todos los procesos que se están ejecutando actualmente en
su sistema Linux.
Ksysguard
Si la herramienta Gnome no le funciona, también puede usar la herramienta KDE llamada
ksysguard. La diferencia entre el monitor del sistema Gnome y la herramienta ksysguard de
KDE es que ksysguard tiene la capacidad de monitorear sistemas remotos. Se pueden crear
nuevas pestañas y se pueden monitorear diferentes recursos de sistemas remotos. Útil para
una herramienta de monitoreo rápida y simple con poco o ningún esfuerzo real de configuración
(Figura 7-6).
218
Machine Translated by Google
Capítulo 7 Monitoreo
Figura 7-6.
Al igual que el monitor del sistema Gnome, también puede ver todos los
procesos que se ejecutan en su sistema, como se muestra en la Figura 7-6.
Hasta ahora, hemos visto algunas herramientas de monitoreo útiles que se pueden usar
en una distribución de Linux pero todas con un problema (excepto quizás tcpdump).
Ninguna de las herramientas guarda datos históricos. Las estadísticas que se muestran
son datos en tiempo real de su sistema en el momento actual. Un ejemplo simple de querer
ver cómo era la carga de la CPU de un día anterior. Top y otros comandos similares no
serían de ninguna utilidad.
219
Machine Translated by Google
Capítulo 7 Monitoreo
Es por eso que las herramientas anteriores mencionadas son para la actividad actual del sistema.
y verificación del sistema en tiempo real. Intentar usarlos para el análisis de la causa raíz después de
Sar
Una herramienta útil para consultar las métricas del sistema de historial es "sar". La utilidad "sar" se
instala con el paquete sysstat. Junto con "sar", el paquete sysstat tiene algunas otras utilidades como
La utilidad "sar" almacena estadísticas y métricas del sistema dentro de los archivos del
sistema local que se pueden consultar más tarde para obtener estadísticas del sistema. Los archivos
/var/log/sa/
r Utilización de la memoria
en utilización de la CPU
Copiloto de rendimiento
Una utilidad que, en mi opinión, es un poco mejor para usar que "sar" son las herramientas
instaladas con el paquete pcp. El paquete pcp instala algunas herramientas útiles para la consulta y
recopilación de métricas. La Tabla 7-3 enumera las herramientas instaladas con el paquete pcp.
220
Machine Translated by Google
Capítulo 7 Monitoreo
Nombre Descripción
pmlogger Almacena los datos métricos en archivos que pmval puede consultar más tarde
vnstat
Sin olvidar las métricas de la red, la herramienta vnstat es otra herramienta útil para mantener
información histórica de la red. vnstat mantiene un registro del tráfico de red por hora, día y mes para
Monitoreo central
Con una buena comprensión ahora de las herramientas locales de monitoreo y recopilación de
métricas, ahora podemos pasar a las herramientas de monitoreo central disponibles en el mundo de
código abierto. Estas son las herramientas que se pueden usar para monitorear todo su patrimonio
desde una sola ubicación con datos históricos guardados para un posible análisis de la causa raíz
más adelante.
nagios
La primera herramienta que mucha gente puede conocer y haber llegado a usar en algún momento
es Nagios. Nagios es otro de esos nombres de código abierto que es recursivo. Nagios significa
221
Machine Translated by Google
Capítulo 7 Monitoreo
Versiones
Nagios tiene una comunidad y un producto pago que se puede instalar en la mayoría de las
distribuciones de Linux. Sin embargo, CentOS y RHEL son las plataformas admitidas en esta
etapa para el producto Enterprise Nagios XI. Sin embargo, Nagios Core se puede instalar en
bastantes distribuciones de Linux diferentes. Siempre es mejor discutir estas opciones con el
Centro
La edición de Nagios apoyada por la comunidad es la versión Core que le brinda las
capacidades básicas de monitoreo de Nagios pero requiere que use los foros de la comunidad
Nagios XI
La solución empresarial o de pago de Nagios viene con los componentes básicos estándar y más.
Esto también incluye todo el soporte para el producto por teléfono y correo electrónico.
Basado en agente
Nagios consiste en una implementación basada en un servidor y un agente con algunas opciones
NRPE
El Ejecutor de complementos remotos de Nagios (NRPE) utiliza scripts alojados en los sistemas
cliente. NRPE puede monitorear recursos como el uso del disco, la carga del sistema o el número
total de usuarios registrados. Nagios sondea periódicamente al agente en los sistemas remotos
222
Machine Translated by Google
Capítulo 7 Monitoreo
NRPE también puede comunicarse con complementos de agentes de Windows, lo que permite
Tenga en cuenta que NRPE ha quedado obsoleto desde entonces y está aquí solo
para información.
NRDP
NRDP o Nagios Remote Data Processor es otro agente de Nagios que puede usar. NRDP viene con
un mecanismo de transporte de datos flexible y un procesador que permite que NRDP se amplíe y
personalice fácilmente. NRDP utiliza puertos y protocolos estándar (HTTP y XML) y se puede utilizar
NSClient++
Un agente de Windows para Nagios, NSClient++ escucha en los puertos TCP hasta el 12489. El
complemento de Nagios que se usa para recopilar información de este complemento se llama
check_nt.
NCPA
El agente final que se puede utilizar es el agente NCPA. El NCPA o Nagios Cross Platform Agent
NCPA se puede instalar en Windows y Linux. A diferencia de otros agentes, NCPA utiliza la
Las comprobaciones activas se realizan a través de la API del servicio "NCPA Listener", mientras
que las comprobaciones pasivas se envían a través del servicio "NCPA Passive".
223
Machine Translated by Google
Capítulo 7 Monitoreo
Horquillas Nagios
Hay varios tenedores de Nagios que también se pueden usar. Algunas de las bifurcaciones de
• Pensamiento
• Naemón
• Shinken
Todos compartirán una similitud con Nagios, pero con el tiempo se han convertido en
sus propias soluciones. Icinga, por ejemplo, ha estado desarrollando sus propias funciones
durante más de una década.
Instalación
implementar Nagios dentro de un sistema dedicado, pero para probar y jugar rápidamente, use un
contenedor.
Prometeo
Prometheus es un sistema de monitoreo de eventos y alertas de código abierto que almacena
datos en una base de datos de series temporales. Prometheus es una ubicación central
para que los datos métricos se almacenen y generalmente se combina con otro software para
224
Machine Translated by Google
Capítulo 7 Monitoreo
Exportadores
Los exportadores son los que llevan los datos a la base de datos de series temporales de Prometheus.
node_exporter dedicado que exportará las métricas del sistema local, como la CPU o la
utilización de la memoria.
Herramienta de alerta
Cualquier plataforma de monitoreo que valga su peso en sal debe tener una forma de informar
a los administradores de sistemas de Linux cuando hay un problema. Esta suele ser su
herramienta de alerta. Una herramienta útil de código abierto es Alertmanager, que se puede
Tablero
Aunque Prometheus tiene una interfaz de usuario web que se puede usar para consultar
Grafana, por ejemplo, es una buena opción para esto y es una de las herramientas de
Lenguaje de consulta
Instalación
De la misma manera que se recomienda instalar Nagios, recomendaría instalar Prometheus.
La documentación es muy clara y bien pensada. Los pasos de instalación son lo suficientemente
Internet está lleno de roles de Ansible para hacerlo por usted o, si lo prefiere, también hay
imágenes de contenedores que se pueden usar para implementar un contenedor si desea la opción
preconstruida.
225
Machine Translated by Google
Capítulo 7 Monitoreo
Kubernetes o OpenShift
Configuración
Una vez instalado, Prometheus no requiere mucha configuración para comenzar. Se
puede usar un archivo YAML simple normalmente llamado prometheus.yaml para todas
las configuraciones. Una configuración básica del Prometheus oficial.
sitio es el siguiente:
global:
scrape_interval: 15s
evaluación_interval: 15s
archivos_de_reglas:
# - "primeras.reglas"
# - "segunda.reglas"
scrape_configs:
- nombre_trabajo: prometeo
configuraciones_estáticas:
- objetivos: ['localhost:9090']
Global
226
Machine Translated by Google
Capítulo 7 Monitoreo
Rule_files
La sección rule_files es para las reglas personalizadas que queremos que use Prometheus.
La configuración de ejemplo en este caso no tiene ningún archivo de reglas para usar.
Scrape_configs
La sección scrape_configs le dice a Prometheus qué métricas recopilar. En el ejemplo de
configuración, se contactará al host local en el puerto 9090 y buscará métricas en el punto
final /metrics.
A partir de Prometeo
Por lo general, las plataformas de monitoreo deben iniciarse desde un servicio y
Prometheus también puede configurarse para hacerlo. Al iniciar Prometheus, debe tener
al menos un parámetro especificado, y ese es el nombre del archivo de configuración de
Prometheus que está utilizando.
Para iniciar Prometheus manualmente, puede ejecutar el siguiente comando desde el
directorio instalado de Prometheus:
# ./prometeo --config.file=prometeo.yml
Thanos
El monitoreo de Prometheus es bastante bueno por sí solo y puede proporcionar
todo lo que pueda desear de una plataforma de monitoreo simple, excepto tal vez datos
históricos extensos o alta disponibilidad.
Aquí es donde se puede utilizar Thanos. Thanos ha sido diseñado para
proporcionar una solución de alta disponibilidad que puede mantener una retención de
métrica ilimitada de múltiples implementaciones de Prometheus.
Thanos está basado en Prometheus y requiere al menos un Prometheus
instancia dentro de la misma red que él mismo. Thanos gestiona la recopilación de
métricas y la consulta a través de una serie de componentes.
227
Machine Translated by Google
Capítulo 7 Monitoreo
Sidecar
Un sidecar es el componente que permite a Thanos conectarse a una instancia de Prometheus. Luego
de objetos en la nube.
compactador
Esto comprime o compacta los datos y aplica la retención de los datos almacenados en un depósito de
almacenamiento en la nube.
Receptor
Gobernante/Regla
Esto se usa para evaluar grabaciones y reglas de alerta contra datos en Thanos.
interrogador
Esto hace uso de la API v1 de Prometheus para extraer y consultar datos de los componentes
subyacentes.
interfaz de consulta
Mediante el uso de la API v1 de Prometheus, la interfaz de consulta puede evaluar las consultas de
228
Machine Translated by Google
Capítulo 7 Monitoreo
Figura 7-7.
Monitoreo empresarial
El monitoreo para grandes organizaciones con diferentes equipos suele ser un
tema polémico, principalmente porque los diferentes equipos quieren usar una
herramienta que se adapte mejor a ellos. Hay algunas herramientas propietarias de
Windows excelentes, y también hay herramientas Linux de código abierto bastante
buenas que se pueden usar. Como este libro se centra en las tecnologías de código
abierto y la adopción de Linux, echemos un breve vistazo a algunas herramientas de
supervisión empresarial de código abierto que podría utilizar.
229
Machine Translated by Google
Capítulo 7 Monitoreo
Zabbix
Una excelente herramienta de monitoreo de nivel empresarial que se puede usar para
monitorear su patrimonio es Zabbix. Zabbix se enorgullece del hecho de que puede monitorear
cualquier cosa, desde plataformas de servidor hasta sistemas de red. Zabbix es un sistema
basado en servidor y agente, pero también puede monitorear algunas instalaciones sin el uso
de un agente.
Soporte empresarial
Zabbix tiene un servicio de soporte pago que se puede usar para soporte empresarial, o
puede apoyarse a sí mismo a través de los foros de la comunidad.
Instalación
Características útiles
Hay algunas características realmente buenas que Zabbix puede proporcionar. Ejemplos
de estos incluyen la capacidad de monitorear aplicaciones basadas en Java directamente
sobre JMX, la capacidad de monitorear máquinas virtuales con herramientas de VMware y la
capacidad de integrarse con herramientas de administración de sistemas como Puppet o Chef.
CheckMk
Otra buena herramienta de monitoreo empresarial es CheckMk. CheckMk es una
solución escalable como Zabbix que puede monitorear una amplia variedad de sistemas
desde plataformas Linux estándar hasta dispositivos IoT.
230
Machine Translated by Google
Capítulo 7 Monitoreo
Soporte empresarial
CheckMk ofrece una versión gratuita con monitoreo ilimitado en el que usted se respalda a
sí mismo y una solución empresarial de pago con funciones adicionales.
Instalación
Características útiles
OpenNMS
La primera herramienta de monitoreo que instalé fue OpenNMS hace muchos años cuando
me metí por primera vez en las tecnologías de código abierto. Investigando para este libro,
me impresionó mucho ver que OpenNMS no solo era todavía un producto desarrollado, sino
que también se veía bastante impresionante.
Soporte empresarial
Como la mayoría de las plataformas empresariales, generalmente hay dos opciones: una
versión "gratuita" con soporte comunitario y una versión empresarial de pago.
231
Machine Translated by Google
Capítulo 7 Monitoreo
Instalación
La instalación de OpenNMS no es tan simple como quizás algunas de las otras herramientas
clara y lo guía a través de todo lo que necesita hacer. También hay un buen foro comunitario
Características útiles
Una característica que realmente salta a la vista es que OpenNMS usa Grafana como una
debido al hecho de que cada vez más usuarios de hoy en día están desarrollando sus propios
tableros.
Las métricas de OpenNMS también se pueden recopilar con una amplia variedad de métodos
Tableros
Un aspecto del monitoreo que es casi tan importante como las métricas que se recopilan es la
capacidad de ver las métricas en un formato que tenga sentido. Aquí es donde las herramientas
232
Machine Translated by Google
Capítulo 7 Monitoreo
A lo largo de los años, me he encontrado con algunas herramientas de monitoreo que eran
y siguen siendo muy buenas, pero que se ven horribles en un navegador. Con algunas herramientas de
monitoreo de aplicaciones, también encontré que los tableros eran muy difíciles de configurar. Cambiar el
tamaño de las ventanas era una pesadilla, y conectar herramientas externas siempre era imposible.
personas inteligentes han comenzado a desarrollar herramientas de tablero dedicadas que pueden integrarse
Herramientas de tablero
La Tabla 7-4 enumera algunas herramientas de tablero que se pueden usar hoy.
Nombre Descripción
lanzado en 2013
Chronograf Una muy buena herramienta si la mayoría de sus métricas se extraen de una base de datos
InfluxDB
datos de red Una herramienta de tablero basada en complementos que admite arquitecturas
kibana Ampliamente utilizado con Elasticsearch y Logstash para formar la pila ELK
Grafana
Como Grafana es la herramienta más popular hoy en día, vale la pena explorar lo que Grafana tiene
para ofrecer.
233
Machine Translated by Google
Capítulo 7 Monitoreo
¿Qué es Grafana?
Figura 7-8.
Usando Grafana
Hay algunas formas de usar Grafana:
234
Machine Translated by Google
Capítulo 7 Monitoreo
descargue un rol de Ansible prediseñado para que realice la implementación por usted.
Fuentes de datos
Antes de que pueda crear un panel, deberá tener una fuente de donde se extraerán los
datos de métricas. Estas son sus fuentes de datos. Deberá crear una fuente de datos antes
de intentar crear un tablero.
Grafana admite una serie de fuentes de datos que incluyen algunas de las siguientes:
• Administrador de alertas
• AWS CloudWatch
• Monitor azul
• Búsqueda elástica
235
Machine Translated by Google
Capítulo 7 Monitoreo
• MySQL
• PostgreSQL
• Prometeo
• Jager
Creación de tableros
Una vez que tenga su fuente de datos, estará listo para comenzar a crear
tableros. Grafana tiene la capacidad de crear muchos paneles diferentes, y estos se
pueden crear desde la pantalla principal de Grafana cuando inicia sesión por primera
vez.
Los paneles se pueden importar y exportar si desea descargar
paneles prediseñados o si desea compartir su configuración.
Paneles
Una vez que tenga su primer tablero, querrá comenzar a crear su visualización de
métricas. Para esto, los tableros usan paneles. Se pueden usar múltiples paneles para
mostrar las métricas de su elección desde su fuente de datos preconfigurada. Cada
panel tiene un editor de consultas específico para la fuente de datos seleccionada en el
panel (Figura 7-9).
Figura 7-9.
236
Machine Translated by Google
Capítulo 7 Monitoreo
filas
Para organizar todos sus paneles, debe crear filas; las filas son sus divisores lógicos para
todos sus paneles. Los paneles se pueden arrastrar a diferentes filas para una organización
sencilla.
Guardar
Recuerde siempre guardar sus tableros cuando haya agregado nuevos paneles o filas. Si por
casualidad abre un nuevo panel, sus cambios se perderán.
Monitoreo de aplicaciones
Un tipo especial de monitoreo que puede ser un poco más complicado y, a menudo, más
costoso tanto en recursos como en tiempo es el monitoreo de aplicaciones. El monitoreo de
aplicaciones requiere tanto herramientas de infraestructura como desarrolladores que
desarrollen sus aplicaciones para exponer las métricas que se pueden monitorear.
Herramientas de rastreo
237
Machine Translated by Google
Capítulo 7 Monitoreo
también existen alternativas de código abierto y, dado que nos centramos principalmente en
todo lo que es de código abierto, podemos dejar atrás las que no lo son.
Jaeger
Originalmente de código abierto de Uber, Jaeger está inspirado en los proyectos OpenZipkin y
microservicios. Con eso, Jaeger promete ayudar a resolver los siguientes problemas:
Zipkin
Antes de Jaeger, Zipkin se desarrolló como un proyecto de código abierto basado en el
proyecto Google Dapper. Zipkin es una aplicación basada en Java que proporciona una interfaz
para que los usuarios vean los datos de seguimiento de una variedad de backends de datos.
Zipkin admite mecanismos de transporte como RabbitMQ y Kafka.
238
Machine Translated by Google
Capítulo 7 Monitoreo
Exposición de métricas
Las herramientas de monitoreo son tan buenas como los datos que pueden recopilar. Para el monitoreo
de la plataforma estándar, las métricas se pueden extraer mediante agentes que, a su vez, se comunican
con el sistema en el que se ejecutan para devolver los datos que necesitan.
Sin embargo, las aplicaciones necesitan exponer los datos desde dentro de la aplicación para que el
Desde allí, las alertas se pueden configurar junto con cualquier tablero.
incorporen métricas de aplicaciones; para esto, los desarrolladores deben asegurarse de que el código
esté escrito para exponer las métricas. Lo mismo es cierto para el desarrollo de aplicaciones que se
Tener conversaciones con los desarrolladores y crear aplicaciones de prueba de concepto para
mostrar los beneficios del seguimiento junto con las métricas de aplicaciones expuestas es esencial
cuando se trata de diagnosticar problemas. A medida que crezca su cartera de aplicaciones, contar con
estas herramientas reducirá en gran medida el tiempo de inactividad potencial y la extinción de incendios.
Vale la pena desarrollar estas buenas prácticas desde el principio que tratar de adaptarlas más tarde.
Esto puede ser más difícil si está utilizando un tercero para su aplicación.
Resumen
En este capítulo, se le presentó lo siguiente:
escritorio Linux
239
Machine Translated by Google
Capítulo 7 Monitoreo
OpenNMS y CheckMk
240
Machine Translated by Google
CAPÍTULO 8
Inicio sesión
En este capítulo, nos centramos en un tema en el que pasamos la mayor parte de nuestro tiempo resolviendo
Exploraremos diferentes sistemas de registro que puede usar, cómo leer registros,
cómo aumentar la información que obtenemos de los registros y cómo cuidamos nuestros
sistemas para que los registros no nos causen más problemas. Finalmente, exploraremos
cómo deben descargarse los registros a sistemas de registro externos de manera ordenada
y segura.
Hay algunas opciones diferentes que se pueden usar para los registros del
sistema y de la aplicación. De manera predeterminada, todos los sistemas Linux se
instalan con syslog para administrar los registros locales. Hay algunas alternativas a syslog
que se pueden usar, o puede desarrollar una propia si lo desea.
Los dos sistemas de registro que veremos brevemente son Rsyslog y Fluentd.
Rsyslog
Instalado de forma predeterminada en todos los sistemas Linux y casi siempre utilizado,
Rsyslog es un sistema de registro increíblemente rápido con la capacidad de recibir
registros de casi todo lo que se ejecuta en una plataforma Linux. Rsyslog tiene la capacidad
no solo de recibir registros de casi todas partes, sino que también puede descargar registros
a numerosos destinos desde archivos hasta MongoDB.
Capítulo 8 Registro
Modular
Rsyslog se ha diseñado de forma modular, lo que permite a los usuarios elegir lo que
quieren usar con rsyslog. Hay una serie de módulos disponibles actualmente que van desde
la configuración de trampas snmp hasta el registro del kernel. Para obtener una lista
completa de todos los diferentes módulos que podría usar, consulte el sitio web oficial de rsyslog:
www.rsyslog.com/doc/v8-stable/configuration/modules/index.html
Instalación
Si por alguna razón muy extraña, rsyslog no está instalado de manera predeterminada, puede
instalarlo desde su sistema de administración de paquetes estándar, como dnf o apt:
Servicio
El servicio rsyslog está habilitado e iniciado de manera predeterminada, pero se puede detener o
deshabilitar de la manera estándar de systemd:
Archivos de configuración
rsyslog.conf”
almacenado “/etc/rsyslog.d/”
242
Machine Translated by Google
Capítulo 8 Registro
• Directivas globales
• Plantillas
• Reglas y acciones
Directivas globales
Plantillas
Las plantillas le brindan la capacidad de formatear cómo desea que se registren los registros
y permitir la generación dinámica de nombres de archivos. Es una configuración útil si está
creando un sistema rsyslog central y desea registrar el nombre de host del sistema que
envía registros.
Normas
Las reglas constan de selectores y acciones. Estos son los campos que establecen lo que
Campo selector
El campo selector consta de dos partes, la facilidad y la prioridad. Estas dos partes están
divididas por el “.” personaje.
Las siguientes entradas son tipos de instalaciones válidas: auth, authpriv,
cron, daemon, kern, lpr, mail, news, syslog, user, uucp y local0 a local7.
Las siguientes entradas son prioridades válidas que se pueden utilizar: depuración, información,
243
Machine Translated by Google
Capítulo 8 Registro
Campo de acción
fluido
Fluentd es un proyecto de código abierto que fue creado originalmente por una empresa
llamado Datos del Tesoro.
Basado en complementos
244
Machine Translated by Google
Capítulo 8 Registro
Usado a Escala
Ejecutar un entorno a gran escala con Fluentd es completamente posible con
casos de usuarios que informan que Fluentd puede manejar más de 50,000 sistemas
que envían datos.
Instalación
Fluentd se puede instalar de varias maneras: instalación de paquete estándar,
instalación desde la fuente o ejecución desde un contenedor.
requisitos previos
• Configurar NTP.
Puede encontrar más información sobre estos requisitos previos en el sitio web oficial.
documentación de instalación de Fluentd.
Instalación manual
245
Machine Translated by Google
Capítulo 8 Registro
Despliegue de contenedores
Configuración
El archivo de configuración principal para Fluentd es el archivo fluentd.conf.
Los parámetros de configuración se pueden encontrar en la documentación
oficial en línea o en las páginas man. Un archivo de configuración básico tiene un aspecto
similar al siguiente:
<fuente>
@escriba http
puerto 9880
enlazar 0.0.0.0
</fuente>
<partido **>
</coincidencia>
246
Machine Translated by Google
Capítulo 8 Registro
Comprender lo que los registros realmente le dicen es otro paso muy importante.
En todas las principales distribuciones empresariales de Linux, los archivos de registro generalmente
se almacenan en el directorio "/var/log". Este directorio normalmente debe montarse en una partición
de disco separada para evitar que el sistema de archivos raíz se llene si se produce un registro fuera
de control.
Los registros se pueden ver con una variedad de herramientas instaladas en su distribución de Linux.
En un sistema estándar, al menos tendrá acceso a la herramienta "vi", pero puede instalar y usar
247
Machine Translated by Google
Capítulo 8 Registro
Registros de infraestructura
Los registros que le informan todo acerca de los eventos, los servicios y el sistema de su sistema
Linux son sus registros de infraestructura. Estos registros son los registros estándar que están configurados
en su archivo de configuración rsyslog.conf y le informan todo sobre lo que está haciendo su sistema en
segundo plano. Estos son los registros que se usarán para solucionar cualquier problema del sistema y se
Registros importantes
Los registros que deben monitorearse para detectar problemas del sistema son los siguientes.
/var/log/mensajes
Este registro se utiliza para almacenar todos los eventos genéricos e información sobre su sistema. Otras
distribuciones como Ubuntu o Debian usan un archivo de registro llamado syslog en su lugar. Este registro
siempre debe ser uno de los primeros lugares que verifique si necesita solucionar algún problema. Es posible
que no tenga toda la información, pero puede ayudarlo a comenzar cuando no sabe por dónde empezar.
/var/registro/seguro
Este archivo de registro se utiliza para eventos de autenticación. Este registro o el /var/log/
auth.log en Ubuntu y Debian es el mejor lugar para comenzar a solucionar fallas de autenticación o intentos
de inicio de sesión.
/var/log/boot.log
relacionados con el arranque. Es un registro útil para ver cuánto tiempo ha estado inactivo un sistema.
248
Machine Translated by Google
Capítulo 8 Registro
/var/log/dmesg
Esto se utiliza para registrar información sobre cambios y fallas en el hardware del sistema. Es
muy útil si tiene problemas para detectar la adición o eliminación de nuevo hardware.
/var/log/yum.log
Si usa una distribución que usa yum como su sistema de administración de paquetes, puede ver un
/var/registro/cron
Este es un registro simple para capturar todas las tareas relacionadas con cron que se
Registros de aplicaciones
Dependiendo de su aplicación o del servidor de aplicaciones que utilice, los archivos de registro podrían
información importante se registre para solucionar problemas o realizar un seguimiento de los eventos.
Buena práctica
subdirectorio dedicado a la aplicación. Las aplicaciones pueden tener sus directorios vinculados al
249
Machine Translated by Google
Capítulo 8 Registro
Seguridad
Advertencia o superior
Los registros en producción nunca deben dejarse en modo de depuración. Los registros solo
deben establecerse en advertencia o error. Esto mantendrá los registros pequeños y solo
informará si hay un problema inminente o informa errores. Establecer niveles de registro
demasiado bajos puede hacer que su disco /var/log se llene.
Aumento de la verbosidad
Cuando ocurren problemas, puede ser necesario obtener más información de la que se ha
proporcionado.
aumentar o disminuir la verbosidad del registro. Los siguientes niveles de registro suelen estar
disponibles para que los usuarios los utilicen al configurar los niveles de registro:
• Fatal
• Error
250
Machine Translated by Google
Capítulo 8 Registro
• Advertir
• Información
• Depurar
• Rastro
Sin embargo, cuando surge la muy rara necesidad, establecer la verbosidad del
registro en "Depurar" definitivamente registrará más información, pero se limitará a lo
que la aplicación o plataforma considere como un mensaje de depuración.
Para obtener la información que necesita, es mejor comenzar desde "Advertir" y trabajar
hasta "Rastrear" hasta que tenga la información que necesita. Una vez hecho esto, siempre
vuelva a establecer el nivel de registro en "Advertencia" o "Error".
Mantenimiento de registros
Un buen administrador de sistemas de Linux se asegura de que todos los registros se rotan y archivan
en toda la automatización de la configuración del sistema y nunca más tendrá que preocuparse por eso.
251
Machine Translated by Google
Capítulo 8 Registro
Logrótate
El primer paso para cualquier administrador de sistemas de Linux cuando se trata de mantenimiento de
registros es configurar Logrotate. Logrotate puede rotar, comprimir y enviar archivos de registro por correo.
• /etc/logrotate.conf
• /etc/logrotate.d
Instalación
Logrotate se instala de forma predeterminada en todas las distribuciones empresariales de Linux y en la mayoría de
252
Machine Translated by Google
Capítulo 8 Registro
Reenvío de registros
El reenvío de registros es la opción preferida para la mayoría de las personas hoy en día. Las herramientas
empresariales como Fluentd son una excelente manera de descargar registros locales a una ubicación central.
Elimina la necesidad de que los sistemas locales conserven registros durante períodos prolongados y
código abierto. Los grandes nombres en el registro central durante la última década han sido Splunk, SolarWinds,
Los últimos tres son de código abierto y vale la pena dedicar tiempo a conocerlos.
Pila elástica
También conocido como pila ELK, Elastic Stack se compone de cuatro herramientas enumeradas en la
Tabla 8-1.
Herramienta
Descripción
fluido
Fluentd se puede usar como reemplazo del registro local, como se explicó anteriormente en este
capítulo, y también se puede usar como una plataforma de registro centralizada. Para usar Fluentd como
253
Machine Translated by Google
Capítulo 8 Registro
Reenviadores de registro
<fuente>
@escriba reenviar
puerto 24224 </
source>
<fuente>
@escriba el
puerto http
8888 </source>
<ejemplo de coincidencia.**>
@escriba adelante
<servidor>
anfitrión 192.168.100.1
puerto 24224</
servidor>
<buffer>
254
Machine Translated by Google
Capítulo 8 Registro
Agregadores de registro
El destino de los reenviadores de registros serían los agregadores de registros. Están formados por
demonios que se ejecutan constantemente y aceptan información de registro para almacenar. Luego,
los registros se pueden exportar o migrar a entornos en la nube para su almacenamiento fuera del sitio.
<fuente>
@escriba adelante
puerto 24224
</fuente>
# Producción
<ejemplo de coincidencia.**>
Rsyslog
Si no desea usar nada fuera de lo que se proporciona en una distribución de Linux
Agregador Rsyslog
Muy similar en cómo se configura Fluentd para usar reenviadores y agregadores de registros,
Rsyslog se puede configurar para hacer lo mismo. Rsyslog se puede configurar para enviar y
recibir registros a través de tcp o udp. Rsyslog también se puede configurar para enviar y recibir registros
255
Machine Translated by Google
Capítulo 8 Registro
Como mínimo, para que un servidor Rsyslog reciba registros como un sistema de registro
central, debe asegurarse de que se cumpla lo siguiente:
3. Configurar NTP.
$ModLoad imtcp
$InputTCPServerEjecutar 514
Reenviadores Rsyslog
Para enviar registros a un servidor Rsyslog central, también debe configurar el archivo
rsyslog.conf en sus sistemas cliente Linux para enviar registros al servidor central. Una
configuración sencilla para enviar todos los registros de forma centralizada mediante tcp
es la siguiente:
*.* @@192.168.0.1:514
Nota Se usa una sola @ para udp, mientras que dos @@ se usan para enviar
a través de tcp.
256
Machine Translated by Google
Capítulo 8 Registro
Al igual que con el servidor Rsyslog central, una vez que el archivo de configuración rsyslog.
Resumen
En este capítulo, se le presentó lo siguiente:
• Cuáles son los registros importantes en un sistema Linux y para qué se utilizan
estos registros
registro central
257
Machine Translated by Google
CAPÍTULO 9
Seguridad
La seguridad es uno de los temas más importantes que se pueden discutir como administrador
de sistemas de Linux. Todas las organizaciones requieren al menos una cantidad mínima de
seguridad para evitar ser expuestas o saboteadas por piratas informáticos aleatorios que buscan
un objetivo fácil.
Las organizaciones más grandes, como los bancos, deben centrarse en gran medida
en la seguridad y deben asegurarse de que estén protegidas a toda costa. Esto implicará
pueden verificar los sistemas para garantizar que cumplan no solo con las buenas prácticas de
seguridad, sino también con las normas de cumplimiento. En este capítulo, exploraremos
diferentes herramientas que se pueden usar de la comunidad de código abierto para construir
plataformas seguras y cómo validar que los sistemas son realmente tan seguros como sea posible.
mejorar la seguridad Veremos cómo las prácticas actuales de DevSecOps han mejorado el
Seguridad Linux
El enfoque tradicional para crear y configurar un entorno Linux seguro habría sido utilizar
firewalls, SELinux y, en algunos casos, software antivirus.
Capítulo 9 Seguridad
Hoy, sin embargo, tenemos más que solo sistemas Linux estándar implementados en
imágenes de instancias en la nube, por nombrar algunas. ¿Cómo se verifican las vulnerabilidades en estas
imágenes y cómo se verifica el software de terceros que se utiliza para ejecutar las aplicaciones de su
organización?
¿Cómo gestiona usted, como administrador de sistemas de Linux, estos riesgos de forma que
no le impidan realizar su trabajo diario? ¿Qué herramientas se pueden usar para agilizar este
distribuciones de Linux sin demasiado esfuerzo. Luego, observe cómo el cambio cultural y las nuevas
Desde el primer momento, la mayoría de las distribuciones de Linux tendrán herramientas instaladas o
estarán disponibles para instalar que le permitirán asegurar la plataforma a un nivel básico. Las herramientas
cortafuegos
Para configurar el conjunto de reglas para Netfilter, necesita una herramienta de creación de
conjunto de reglas. De manera predeterminada, todos los sistemas Linux empresariales tienen
instalada una herramienta de conjunto de reglas de firewall, con la excepción de ciertas versiones de
imágenes en la nube. Estas imágenes tienden a ser más recortadas y no siempre incluyen las herramientas del firewall.
Esto se debe al hecho de que la protección debe manejarse en la capa de orquestación de la nube.
260
Machine Translated by Google
Capítulo 9 Seguridad
herramienta de conjunto de reglas. Ambas opciones tienen un alto grado de configuración que se
iptables
Distribuciones de Linux anteriores y algunas que han decidido no seguir adelante
con systemd aún usa la herramienta de configuración del conjunto de reglas de firewall
conocida como iptables. Iptables puede volverse complejo, pero si tiene una comprensión básica
y sabe cómo verificar si una regla ha sido habilitada, ya está bien encaminado (Tabla 9-1).
iptables -L -n Enumere todas las reglas en todas las cadenas en forma numérica
formato
configuración de iptables
iptables
261
Machine Translated by Google
Capítulo 9 Seguridad
Cortafuegos
Si está utilizando una versión empresarial de Linux, lo más probable es que esté utilizando
systemd. Con systemd, usará firewalld como la herramienta de configuración del conjunto de
Firewalld fue diseñado para ser más simple y fácil de usar que iptables.
Firewalld como iptables tiene algunos comandos que todos los administradores de sistemas Linux
deberían conocer. La Tabla 9-2 enumera algunos comandos básicos para recordar.
firewall-cmd --recargar Vuelva a cargar el firewall para habilitar las nuevas reglas
SELinux
262
Machine Translated by Google
Capítulo 9 Seguridad
El interior del edificio de seguridad, junto con sus habitaciones e instalaciones, está regido por
el personal de seguridad de turno. Es trabajo del personal de seguridad verificar quién tiene
acceso a qué habitaciones y qué instalaciones. El equipo de seguridad, en este caso, estaría
Así como necesita comprender los conceptos básicos de su firewall de Linux, también debe
comprender los conceptos básicos de SELinux (Tabla 9-3). Por ahora, todo lo que necesita saber es
Hay dos tipos de detección de intrusos que se pueden utilizar para cualquier
estado del servidor: detección de intrusiones basada en host e intrusión basada en red
detección. A los efectos de este libro, solo analizaremos lo que podemos implementar en nuestras
plataformas Linux.
263
Machine Translated by Google
Capítulo 9 Seguridad
distribuciones empresariales de Linux, debe haber al menos una de las siguientes opciones para
instalar. De lo contrario, es posible que deba instalar desde un repositorio comunitario como EPEL.
La Tabla 9-4 enumera algunas opciones que se pueden usar para la intrusión basada en host
detección.
repositorios estándar
264
Machine Translated by Google
Capítulo 9 Seguridad
Deshabilite la capacidad de iniciar sesión en la raíz a través de ssh editando el archivo sshd_config.
Aún podrá iniciar sesión a través de una consola o si necesita rescatar su sistema a través del
Instalación mínima
Instale su servidor Linux con los paquetes mínimos seleccionados. Es mejor comenzar desde una
compilación básica y agregar los paquetes que necesita después. Menos es más cuando se trata de
Particiones de disco
La Tabla 9-5 enumera todas las particiones de disco separadas que deben configurarse con las
/era
/var/registro
/var/log/auditoría
/casa nodev
265
Machine Translated by Google
Capítulo 9 Seguridad
Cifrado de disco
sin escritorio
Utilice comunicaciones encriptadas cuando sea posible. Utilice certificados o claves al abrir
conexiones ssh. Monte sistemas de archivos de red utilizando métodos seguros sin transmitir
contraseñas de texto claro.
Elimine paquetes potencialmente inseguros como telnet o ftp y use versiones seguras
como sftp. También se recomienda eliminar o deshabilitar los servicios no utilizados.
Suena obvio, pero asegúrese de que su sistema Linux haya sido parcheado al último nivel
posible. Actualice los núcleos y elimine los núcleos antiguos una vez que haya confirmado que
su sistema funciona perfectamente con el nuevo núcleo.
266
Machine Translated by Google
Capítulo 9 Seguridad
SELinux y cortafuegos
Asegúrese de que tanto SELinux como el firewall de Linux estén habilitados y tengan la
Si se ve obligado a usar usuarios locales, configure la caducidad de la contraseña para las cuentas de
usuario de Linux, asegúrese de que no se puedan usar contraseñas usadas anteriormente y bloquee las
cuentas después de inicios de sesión fallidos. Finalmente, asegúrese de que ninguna cuenta tenga
contraseñas vacías.
Verifique qué puertos están abiertos actualmente y verifique si algún puerto no debería estar
abierto. Un comando muy útil para verificar qué puertos están abiertos en el host local es el
siguiente:
Cualquier archivo en un sistema Linux que no sea propiedad de nadie puede representar un
riesgo potencial para la seguridad. Busque cualquiera de los archivos con el siguiente comando:
267
Machine Translated by Google
Capítulo 9 Seguridad
ACL
Configure permisos específicos para discos y archivos usando ACL para usuarios
que necesitan acceso al sistema. No abra permisos de todo el sistema para usuarios que
no sean administradores.
Detección de intrusos
DevSecOps
Todos estos pasos de seguridad son tan buenos como las personas que los aplican.
Si una organización no ha asumido el hecho de que la seguridad no es solo
responsabilidad del equipo de seguridad, habrá oportunidades para los tipos
desagradables cuando ocurra un error de seguridad. Por eso tiene que haber una evolución
en la visión cultural de la seguridad.
Uno de los mayores cambios culturales en las organizaciones en los últimos
pocos años ha sido exactamente esto. El entendimiento de que todos son
responsables de la seguridad.
268
Machine Translated by Google
Capítulo 9 Seguridad
¿Qué es?
Figura 9-1. Diagrama de Venn donde se reúnen los diferentes equipos para
crear DevSecOps
269
Machine Translated by Google
Capítulo 9 Seguridad
La seguridad debe tratarse como una entidad en evolución. Las amenazas deben
detectarse y la plataforma debe remediarse cuando se encuentran problemas. El proceso
de gestión de la seguridad debe seguir un flujo similar al que se muestra en la Figura 9-2.
observan los cambios necesarios y, finalmente, se aplican los cambios para no repetir los
problemas experimentados.
270
Machine Translated by Google
Capítulo 9 Seguridad
Instrumentos
Los administradores de sistemas, desarrolladores y usuarios de Linux deben ser conscientes de que
cualquier cosa nueva que se agregue a un estado de Linux debe cumplir con los requisitos de seguridad.
Ejecutar escaneos y pruebas manualmente no respaldará este cambio cultural y lo dejará en una
Cuando se detectan problemas de seguridad, el proceso debe detenerse y corregirse. Si crea una
nueva imagen de contenedor, por ejemplo, no tiene sentido crear una imagen de contenedor insegura y
compilación.
Puertas de seguridad
Una buena manera de incorporar las prácticas de DevSecOps sería construir puertas de seguridad
Figura 9-3. El código se empuja, verifica y hornea con una imagen extraída
La imagen resultante que se usará para implementar un nuevo contenedor se verifica antes
implementación falla, lo que evita que se implementen agujeros de seguridad en un entorno en vivo.
Cualquier herramienta de automatización podría usarse para incluir puertas de seguridad. Ansible
Tower, por ejemplo, tiene la capacidad de hacer uso de flujos de trabajo. Red Hat Satellite o Uyuni
271
Machine Translated by Google
Capítulo 9 Seguridad
Herramientas de terceros
para sus puertas de seguridad. El uso de productos como SonarQube tiene la capacidad de buscar
almacenar los detalles de la tarjeta de crédito dicta cómo se deben proteger los sistemas dentro
Para que los sistemas sean compatibles, hay requisitos de refuerzo que deben seguirse.
Estos requisitos deben aplicarse a todos los sistemas y deben proporcionarse pruebas cuando llegue
el momento de la auditoría.
Hay muchas áreas en las que un sistema puede estar expuesto para que lo use un posible
atacante. Por ejemplo, se ha demostrado que una vulnerabilidad descubierta recientemente permite
Reducir la posibilidad de que ocurra el problema en primer lugar es aún más importante cuando se
construyen cientos, si no miles, de sistemas. Esta es la razón por la cual el fortalecimiento del sistema
y el análisis de vulnerabilidades del sistema son vitales para garantizar que sus sistemas estén lo más
272
Machine Translated by Google
Capítulo 9 Seguridad
Estándares de endurecimiento
Hay una serie de estándares que se pueden usar hoy en día para fortalecer su propiedad
de Linux. Los dos principales utilizados son CIS y STIG. Ambos son muy similares, en
gran parte debido al hecho de que solo hay ciertos ajustes de seguridad que uno puede
hacer. Ambos, sin embargo, sirven como un buen punto de partida para asegurar sus
plataformas a un buen nivel.
Hay algunos otros estándares que también se deben seguir para diferentes
organizaciones como NIST 800-53 para agencias federales de EE. UU. y PCI DSS para
organizaciones financieras o cualquiera que quiera almacenar detalles de tarjetas de crédito/
débito. Estos estándares generalmente se aplican por encima de las pautas STIG o CIS.
273
Machine Translated by Google
Capítulo 9 Seguridad
Endurecimiento de Linux
Configuración manual
La última forma en que fortalecería un sistema Linux sería haciéndolo manualmente. La
gran cantidad de pasos de endurecimiento que deben seguirse lo mantendrían ocupado hasta
que las vacas regresen a casa. La mayoría de las guías de endurecimiento tienen más de 100
páginas y están lejos de ser una lectura fascinante.
Si surgiera la necesidad de endurecer un sistema a mano, entonces la mejor herramienta
que podría seguir serían las guías de endurecimiento disponibles en Internet como CIS.
274
Machine Translated by Google
Capítulo 9 Seguridad
Automatización
OpenSCAP
275
Machine Translated by Google
Capítulo 9 Seguridad
Escaneo de vulnerabilidades
Vigilar su patrimonio y asegurarse de que no haya vulnerabilidades es vital
para garantizar que no tenga sorpresas desagradables esperando.
OpenVAS
OpenSCAP
276
Machine Translated by Google
Capítulo 9 Seguridad
AlmejaAV
Si necesita un antivirus de código abierto, ClamAV puede ayudarlo con la detección de virus,
troyanos y muchos otros tipos de malware. ClamAV se puede usar para escanear correos
electrónicos o archivos personales en busca de contenido malicioso. ClamAV también puede servir
como un escáner del lado del servidor.
El producto ClamAV “de pago” realiza una actualización automática y periódica de su base
de datos para poder detectar amenazas recientes. El producto comunitario requiere alguna
La ejecución de patrimonios de Linux hoy en día requiere la gestión de más que los
sistemas Linux estándar. Los contenedores y las imágenes a partir de las cuales están
construidos deben escanearse en busca de vulnerabilidades al igual que los sistemas Linux
estándar.
Puerto
código abierto que brinda acceso basado en roles a su registro de contenedores con la
Harbour protege los artefactos con políticas y control de acceso basado en funciones, lo
277
Machine Translated by Google
Capítulo 9 Seguridad
curiosidades
Harbor antes de la versión 2.2 usaba Clair como su escáner de vulnerabilidades, pero desde
entonces pasó a usar Trivy. Harbour también se puede conectar a más de un escáner de
contra vulnerabilidades.
Harbor se puede iniciar para escanear una imagen en particular o en todas las imágenes en el
entorno de Harbor. Las políticas también se pueden configurar para escanear automáticamente
Rayos X de JFrog
JFrog Xray es una herramienta de análisis de vulnerabilidades proporcionada por JFrog. Xray
se integra de forma nativa con Artifactory para buscar vulnerabilidades y problemas de licencia de
software. Xray puede escanear todos los tipos de paquetes admitidos, desde archivos binarios hasta
imágenes de contenedores.
Escaneo profundo
El escaneo profundo permite que Xray busque cualquier amenaza recursivamente a través de
vivo.
clara
Clair (de un término francés que significa claro) es un proyecto de código abierto que ofrece
aplicaciones.
278
Machine Translated by Google
Capítulo 9 Seguridad
Imágenes compatibles
• Ubuntu
• Debian
• RHEL
• SUSE
• Oráculo
• Alpino
• AWSLinux
• Fotones de VMware
• Pitón
Versión empresarial
del producto Red Hat Quay (pronunciado “kway” y no “clave”). Clair proporciona una herramienta
Escaneo continuo
Clair escanea cada imagen enviada a Quay y escanea imágenes continuamente para
proporcionar una vista en tiempo real de las vulnerabilidades conocidas en sus contenedores.
279
Machine Translated by Google
Capítulo 9 Seguridad
Panel
Clair también tiene un tablero detallado que muestra el estado de las imágenes de contenedores
almacenadas en Quay.
Tubería
Al trabajar en la metodología DevSecOps, la API de Clair se puede aprovechar en
herramientas de canalización como Jenkins o Tekton para escanear imágenes que se crean
durante la fase de horneado.
Una de las adquisiciones más recientes de Red Hat ha sido la inclusión de StackRox en la
cartera de Red Hat. StackRox actualmente es el proyecto upstream para el producto Red
Hat ACS, pero continúa teniendo una versión comunitaria disponible para plataformas no
compatibles.
Escaneo de vulnerabilidades
Escaneo de cumplimiento
Con el respaldo de paneles informativos, Red Hat ACS puede escanear contenedores e imágenes
para garantizar que cumplan con los requisitos de cumplimiento de estándares como CIS, PCI o
NIST, por nombrar algunos ejemplos.
280
Machine Translated by Google
Capítulo 9 Seguridad
Segmentación de red
Capacidad para hacer cumplir las políticas de red y una segmentación más estricta del tráfico de red
Perfil de riesgo
Todos los riesgos detectados a partir de implementaciones dentro de Kubernetes u OpenShift se
Gestión de la configuración
Se utiliza no solo para administrar la seguridad y las vulnerabilidades de la carga de trabajo del
contenedor dentro de Kubernetes u OpenShift. Red Hat ACS también puede reforzar los componentes
Detección y Respuesta
Mediante el uso de una combinación de reglas, listas de permitidos y líneas base, Red Hat ACS puede
Falcó
Creado por Sysdig, Falco es otra solución de detección de amenazas de código abierto para entornos
de tipo Kubernetes y OpenShift. Falco puede detectar cualquier comportamiento inesperado en las
para extraer datos de los servidores API de Kubernetes/OpenShift o entornos de tiempo de ejecución de
contenedores. A continuación, se pueden crear reglas a partir de
281
Machine Translated by Google
Capítulo 9 Seguridad
Alerta inmediata
Reduzca el riesgo para su patrimonio con alertas inmediatas que permiten una
reparación más rápida de las vulnerabilidades.
conocidas. Tan pronto como la plataforma de seguridad sepa de una vulnerabilidad, usted
también lo sabrá.
Seguridad acuática
Aqua Security está diseñado para proteger las aplicaciones que se construyen
sean seguras y limpias al garantizar que no tengan vulnerabilidades conocidas en ellas. Aqua
Security incluso verifica que las imágenes de contenedores que se están desarrollando no
tengan contraseñas o secretos conocidos y ningún tipo de amenaza de seguridad que pueda
Tablero Informativo
Aqua Security tiene un tablero claro y útil que brinda información en tiempo real sobre
alguna vulnerabilidad, Aqua Security informa los problemas al desarrollador con recomendaciones
sobre lo que se requiere para reparar las imágenes vulnerables.
282
Machine Translated by Google
Capítulo 9 Seguridad
Resumen
En este capítulo, se le presentó lo siguiente:
• Guías que se pueden usar para fortalecer los sistemas Linux para
cumplir con los requisitos de cumplimiento
283
Machine Translated by Google
CAPÍTULO 10
Tareas de
mantenimiento y planificación
Cualquier administrador de sistemas de Linux estará familiarizado con el temido
mantenimiento requerido para las propiedades de Linux. En este capítulo, discutiremos los
las tareas burocráticas se pueden sincronizar para reducir el dolor general que a veces
involucrados.
Es posible que no sea necesario realizar cada ciclo de mantenimiento, pero algunos deberán
realizarse con la mayor frecuencia posible. Incluso puede haber ocasiones en las que necesite
Parchar
La razón número uno para el mantenimiento será la aplicación de parches y las
actualizaciones del sistema. No se puede enfatizar cuán importante es este proceso y nunca
Puesta en escena
Nunca es una buena idea parchear sus entornos de producción/en vivo o orientados al cliente
Esta es la razón por la que siempre se debe adoptar un enfoque por etapas para la aplicación de parches.
Determine el orden en el que desea parchear sus entornos y parchearlos por etapas.
pasado.
286
Machine Translated by Google
Salvadera
Comience con un entorno tipo sandbox con al menos un sistema que ejecute
aplicaciones similares o similares a las de su entorno de producción.
Este entorno no debe estar orientado al usuario ni requerir la aprobación
del control de cambios para trabajar en él. Todo el entorno debe ser
desechable y automatizado. Sandbox es su entorno y está ahí para
demostrar que la configuración no causará problemas en otros entornos.
Pruebas automatizadas
• Selenio
• Estudio Catalán
• Robotio
plataforma se pueden automatizar, realmente hay pocas cosas que le impidan automatizar su
287
Machine Translated by Google
cualquier cosa que le permita ejecutar etapas o flujos de trabajo. De esta manera, puede ejecutar
lo siguiente en etapas:
• Comprobaciones previas
• reinicios
• Pruebas automatizadas
Retroceder
incorporar tanta gestión de riesgos le ahorrará tener que explicar por qué su automatización
rompió un entorno.
riesgos para asegurarse de que no se culpe a su automatización por las interrupciones del sistema.
sistema de archivos
Un área que puede crecer y causar preocupación con el tiempo si no se mantiene bien son sus
sistemas de archivos. Los sistemas de archivos no solo almacenan registros, también almacenan
archivos que los usuarios dejan en sus directorios de inicio. Prestar atención a sus sistemas de
evitables.
288
Machine Translated by Google
Limpiar
Durante el mantenimiento de su sistema, definitivamente vale la pena ejecutar los siguientes
Comprobar errores
Una vez que haya verificado los archivos no utilizados y haya borrado la mayor cantidad posible,
vale la pena ejecutar una verificación de salud del sistema de archivos. Esto ayudará a identificar
Los comandos de la Tabla 10-1 son muy útiles cuando se ejecuta el mantenimiento del
du-k/var/log | ordenar -n | cola -10 Buscar los diez archivos más grandes en
un directorio
encontrar /var/log -mtime +90 -ls -exec rm {} Encuentre cualquier archivo que tenga más de
\; 90 días y elimínelo
tar -zcvf var_log.`fecha +%Y%m%d` Cree un archivo tar de todos los archivos de
289
Machine Translated by Google
cortafuegos
Las verificaciones de firewall están ahí para garantizar que no se hayan introducido nuevas reglas
verificar el firewall es una tarea rápida y simple. Hacerlo durante una ventana de mantenimiento solo
significa que puede eliminar cualquier cambio no deseado, siempre que esté cubierto por cualquier control
de cambios.
copias de seguridad
Este realmente es evidente. Se deben realizar copias de seguridad para cualquier sistema que
no se pueda reconstruir a partir del código y realizarse dentro de plazos aceptables. Las máquinas
virtuales se pueden respaldar en su totalidad, pero los sistemas físicos deberán tener directorios
Durante su ventana de mantenimiento, vuelva a verificar que todas las copias de seguridad tengan
290
Machine Translated by Google
corromperse?
plataformas?
La tarea obvia que se debe hacer de forma regular es la aplicación de parches. Los ciclos de
parches dependen de las políticas de la organización, que pueden ser cada 7 días o cada 90
Si tuviera que tomar la decisión, le recomendaría parchear con la mayor frecuencia posible.
Se debe utilizar la automatización y debe ayudar a reducir el factor humano con un mantenimiento
regular. Al ejecutar un mantenimiento y parches muy regulares, reduce cualquier posible riesgo
291
Machine Translated by Google
Estructura
Al tener una ventana de mantenimiento regular para cada entorno, puede planificar y estructurar
cómo se aplican y prueban las actualizaciones. Al hacer esto, reduce drásticamente la posibilidad de
problemas en sus entornos en vivo, tanto por errores como por vulnerabilidades.
plataformas Esta es la única forma en que realmente puede escalar. Tener una persona o un equipo
Automatización
Estoy seguro de que mencioné la automatización tantas veces como para que se cansen
del término, y también estoy bastante seguro de que la mayoría de ustedes ya están
automatizando.
automatización del proceso de construcción. Los siguientes son elementos que debe automatizar:
• Copias de seguridad
• Aplicación de parches
• Limpieza de disco
• Comprobación de disco
• Eliminación de programas
292
Machine Translated by Google
4. Limpiezas de disco.
5. Comprobaciones de configuración.
deberá ejecutar varios centros de datos o varios entornos por sitio en una implementación de estilo
azul/verde.
Azul verde
Este método implicaría cambiar el tráfico a azul o verde y luego parchear el entorno sin actividad.
lo desea, ya que técnicamente no está actualizando el lado "en vivo". Siempre que haga toda la diligencia
debida y se asegure de que el entorno que está parcheando esté funcionando al 100% antes de volver a
293
Machine Translated by Google
La ejecución de múltiples centros de datos es otro enfoque común para reducir los
puntos únicos de falla. La falla de su tráfico en vivo a su segundo centro de datos
permitirá que el mantenimiento se realice sin tiempo de inactividad para el tráfico en vivo.
Deben aplicarse los mismos principios de mantenimiento antes de la conmutación por recuperación
Planificación de mantenimiento
La ejecución es tan buena como el plan. Hay un par de cosas importantes a considerar
para cualquier planificación de mantenimiento.
294
Machine Translated by Google
que reduce la necesidad de solucionar problemas constantemente y le permite tener más tiempo
Si tiene una gran cantidad de mantenimiento que hacer y aún no ha automatizado el proceso, divida
Mejor ejecute varias ventanas de mantenimiento pequeñas que una ventana grande.
arte de estimar
Tenga cuidado al calcular el tiempo necesario para completar una tarea. Prefiere sobreestimar y
terminar temprano que subestimar y ponerse bajo presión. Hable con otros administradores de
sistemas de Linux para obtener ayuda sobre cómo estimar el tiempo al planificar.
En el caso del mantenimiento del sistema, esta funcionalidad puede ser muy bien
ventana de mantenimiento. No solo ya no tiene que hacer las implementaciones técnicas manuales,
295
Machine Translated by Google
Automatización de procesos
Hay algunos productos y proyectos diferentes disponibles en la actualidad para ayudarlo a automatizar
procesos, pero uno que vale la pena mencionar es Red Hat Process Automation Manager, o PAM.
Red Hat PAM proporciona las herramientas para automatizar los procesos y decisiones
comerciales. Mediante el uso de motores de procesos y reglas comerciales avanzadas, junto con
el procesamiento de eventos complejos y la gestión de casos, Red Hat PAM puede ayudar a
resolver problemas complejos de planificación y programación. PAM utiliza todas las capacidades
de Drools, un potente y ampliamente utilizado motor de reglas de código abierto. PAM puede
resolución integrada.
Al igual que la mayoría de los demás productos de Red Hat, el proyecto upstream para Red
Hat PAM es el proyecto jBPM, un producto de código completamente abierto que se puede utilizar
296
Machine Translated by Google
Resumen
En este capítulo, se le presentó lo siguiente:
297
Machine Translated by Google
CAPÍTULO 11
Solución de problemas
La solución de problemas puede ser una habilidad difícil de dominar si no comprende el
enfoque correcto. El simple hecho de buscar en los registros o archivos de configuración
puede ayudar a resolver problemas simples, pero comprender cómo encontrar la causa
raíz de un problema es donde surge la verdadera habilidad. En este capítulo, veremos
cómo se debe considerar un problema, cómo se debe analizar el problema y, finalmente,
cómo se debe actuar sobre la información que se ha visto. Tomarse su tiempo para
comprender antes de adivinar es primordial para resolver su problema de manera más
rápida y eficiente.
Una vez que hemos analizado cómo se debe abordar un problema,
discutiremos la etiqueta adecuada que debe usarse al hacer preguntas en la
comunidad. El primer paso es aprender a no pedirle a otros que hagan su trabajo por
usted o al menos formular sus preguntas de tal manera que parezca que al menos lo ha
intentado. En este capítulo, veremos la mejor manera de pedir ayuda.
Comprender el problema
Para comprender completamente cómo solucionar un problema, debe comprender
cuáles son los efectos del problema; esto probablemente le dará su primera pista sobre
dónde comenzar a buscar.
Para resolver problemas de manera efectiva, debe comprender lo que está
resolviendo, adivinar sin sentido si no sabe cómo funciona todo en primer lugar.
Solo obtendrá una parte de la respuesta y posiblemente terminará perdiendo el
tiempo buscando la respuesta en el lugar equivocado.
Si tiene un problema de red, por ejemplo, pero no tiene idea de cómo rastrear el
tráfico de la red, es mejor que busque a alguien que sepa que trabaje con usted en el
problema. Aprender sobre la marcha es la forma en que ganamos experiencia, así que
no tenga miedo de pedir ayuda. Solo hazlo correctamente; cubriremos eso en breve.
Saber por dónde empezar es la mitad de la batalla para llegar al fondo del
problema. Comenzar desde arriba suena como un cliché, pero es la forma en que
avanza a través de la evidencia para seguir las migas de pan lo que eventualmente lo
llevará a la causa raíz.
Hacer las preguntas correctas al principio te dará ideas sobre dónde empezar a
investigar. Cuando los problemas se describen como "está roto" o "no funciona",
significa que sus preguntas deben ser simples al principio, luego se vuelven más
complejas a medida que profundiza. Recuerde basar sus preguntas en el nivel de
conocimiento de las personas con las que está trabajando y sea paciente.
302
Machine Translated by Google
Explicar el problema
Cuando un problema es complejo, requiere una profunda reflexión,
cuestionamiento y comprensión. Sólo a través de la explicación se vuelve más
claro. Al pasar por múltiples sesiones de explicaciones y preguntas, aumenta su
conocimiento del problema hasta que obtiene su respuesta.
Aquí hay algunas técnicas que puede usar para explicar su problema.
Explícate a ti mismo
303
Machine Translated by Google
pato de goma
Otra persona
Si la opción del patito de goma falla, intente explicar su problema a otra persona; ni
siquiera tienen que ser técnicos. De hecho, puede ser mejor si no lo son. Esto te permitirá
simplificar tu explicación para que entiendan y posiblemente en el proceso te ayude a
descubrir algo que quizás hayas pasado por alto porque era muy simple.
Usar herramientas
El uso de una pizarra o un borrador de papel al explicar también le permitirá sacar las
ideas y pensamientos de su cabeza. Volver a leer la explicación para usted mismo
puede agregar más claridad.
Romper el problema
304
Machine Translated by Google
Si bien no a todos les gusta hablar consigo mismos o involucrar objetos inanimados, hay
otra forma similar que puede usar para abordar la resolución de problemas complejos: una
técnica llamada los cinco "por qué".
En este enfoque, el solucionador de problemas pasa por cinco preguntas en cuanto a
por qué algo ha ido mal.
Ejemplo
Si tomamos un escenario en el que la intranet interna de su organización no se carga después
del mantenimiento de la noche, se pueden preguntar los "por qué" que se muestran en la Figura 11-1.
Figura 11-1. Ejemplo del flujo que deben seguir los porqués al
tratar de determinar un problema subyacente
305
Machine Translated by Google
¿Por qué? El servidor web no estaba escuchando en ningún puerto. ¿Por qué? El servicio del
servidor web no se iniciará después del arranque. ¿Por qué? Hay un error de sintaxis en el
archivo de configuración. ¿Por qué? El por qué final es lo que te lleva a tu causa raíz. Alguien
había realizado un cambio en la configuración del servidor web y no probó la sintaxis. El cambio
nunca se aplicó al reiniciar el servicio web, y solo cuando el servidor web se reinició después de
servidor web de la intranet. El cambio nunca se probó en una verificación de sintaxis y el servicio
Cada vía deberá investigarse y requerirá evidencia para demostrar que es la prueba irrefutable
306
Machine Translated by Google
Construcción de hipótesis
El flujo de trabajo que se muestra en la Figura 11-2 puede ayudarlo con su análisis de la causa raíz
Construye tu teoría
Una buena teoría siempre debe comenzar con una buena hipótesis o una conjetura fundamentada.
Para probar la hipótesis, se debe recopilar toda la información sobre el área sospechosa. Esto podría
incluir archivos de configuración, carga del sistema, uso de memoria o cualquier cosa que pueda
307
Machine Translated by Google
Causalidad
Demuestra tu teoría
Como la depuración y las pruebas en un entorno en vivo nunca son una buena idea,
su teoría necesitará evidencia sólida para respaldar su afirmación antes de que pueda
aplicar algo a un entorno en vivo. Por esta razón, necesitas probar tu teoría.
Reproducir el problema
Remediación
Finalmente, con su teoría probada y una solución preparada, el live
el medio ambiente se puede remediar con poco o ningún riesgo.
308
Machine Translated by Google
Pedir ayuda
Al principio de mi carrera, me dijeron que siempre pidiera ayuda y que no desperdiciara más
tiempo del necesario para resolver un problema. Si estaba atascado, no debería "golpearme la
cabeza" por mucho tiempo antes de preguntar. Después de todo, todos todavía estamos aprendiendo;
Trabajamos en una industria que está en constante movimiento y cambio. Es posible que alguien
sentado a su lado o en Internet ya haya experimentado el mismo problema que usted tiene y puede
con tu problema. La persona que te ayuda tiene que gastar energía en entender tu problema;
necesitan pensar en una posible solución que pueden haber usado en el pasado y luego tratar de
Para ese esfuerzo, usted como solicitante debería haber hecho al menos el
• Buscó en Internet ejemplos de lo que otros han intentado y verificó que nadie
Capacitación
Si tiene la suerte de tener acceso a los materiales de capacitación, verifique si hay algo que le
309
Machine Translated by Google
Gramática correcta
“Lo siento por mi mal inglés, espero que mi pregunta tenga sentido”.
Trate de evitar el uso de jerga y use la ortografía correcta de las palabras cuando
sea posible. Recuerde que está pidiendo ayuda, asegúrese de que su pregunta sea lo más
clara posible.
Ortografía
Revisa la ortografía de tus preguntas usando cualquier herramienta que tengas disponible.
Google Docs tiene un corrector ortográfico decente (espero, ya que este libro fue escrito en
él), y es gratis.
310
Machine Translated by Google
Hacer una pregunta que haga que las personas te pidan más detalles de
inmediato no te dará la respuesta que deseas ni ninguna otra.
responder en absoluto.
./ amdgpu-install-pro --opencl=pro,heredado
y ./ amdgpu-install-pro --opencl=rocr,heredado
pero ambos me dan el error.
“No se puede encontrar el dispositivo”
311
Machine Translated by Google
Área correcta
A la gente realmente no le gusta que le hagan preguntas sobre temas que no son
relevantes para el área en la que está haciendo su pregunta. Asegúrese de seleccionar
el foro o la sala de chat correctos o incluso el correo electrónico de soporte antes de
hacer su pregunta.
La respuesta cortés general lo redirigirá al lugar correcto, pero alguien con menos
paciencia puede pasar una respuesta un poco más sarcástica. Así que evita la
vergüenza o al menos perder el tiempo. Haga sus preguntas donde deben ser hechas.
Foros
312
Machine Translated by Google
Hay numerosos sitios donde puede hacer preguntas técnicas sobre cualquier cosa con la que
tenga problemas. Stack Overflow es un sitio común donde encuentro respuestas, pero lugares
Casos de soporte
organización están pagando suscripciones, plantee un caso de soporte con sus mesas de
Sin embargo, asegúrese de tener muy claro cuál es su problema. Adjunte archivos de
registro y posibles resultados de diagnóstico cuando sea posible. Con solo agregar todos los
Para evitar perder el tiempo, hay algunas cosas que siempre debe probar
para evitar.
Depuración en vivo
No realice la depuración en entornos en vivo; cualquiera que diga que la depuración en vivo está
bien está pisando hielo muy delgado. Todo lo que se necesita es dejar un error de sintaxis o un
Hay una razón por la que se crean entornos de prueba y entornos que no son de
313
Machine Translated by Google
Correlación vs causalidad
Cuando esté buscando la causa raíz de su problema, concéntrese en dónde podría estar el
problema aplicando el pensamiento lógico. Desglose el problema de los componentes que
podrían ser potencialmente responsables y evite centrarse en los componentes que dependen
de los componentes posiblemente defectuosos.
Básicamente, evite perder el tiempo en áreas que podrían ser víctimas de la causa raíz y
no la causa de la misma.
Adivinando y mintiendo
Esto está realmente relacionado con la resolución de problemas con un grupo. Si eres
responsable de algo que ha pasado y has pedido ayuda para salir de un aprieto, sé 100%
honesto y no adivines dónde es posible que te hayas equivocado.
314
Machine Translated by Google
fantasmas
No todos entienden el término “pista falsa”, pero es un término que usamos en el Reino Unido
para referirnos a algo que no existe. un fantasma Evite buscar algo que probablemente no sea
la causa raíz de su problema. Siga aplicando el pensamiento lógico cuando esté buscando su
causa raíz.
No creas que todos los grandes problemas tienen grandes causas. ¿No te olvides de
comprobar cosas sencillas como DNS o se ha llenado el disco?
A menudo, son las cosas que menos esperamos las que pueden causar los mayores
problemas; ceñirse a lo básico y trabajar desde allí.
Albert Einstein dijo, “la definición de locura es hacer lo mismo y esperar resultados
diferentes”. Nada más lejos de la verdad cuando se trata de solucionar problemas. Si
tiene una naturaleza olvidadiza, mantenga un registro de dónde verificó y los resultados. Así
evitarás repetirte y perder el tiempo.
315
Machine Translated by Google
Solucionar el problema para que no se vuelva a romper o aplicar una solución alternativa
que causará otro apagón?
Argumentar el punto de tomar un poco más de tiempo para solucionar el problema subyacente está lejos
No olvides tu retrospectiva
El objetivo final de la resolución de problemas es encontrar la raíz de un problema. Sin
embargo, el objetivo secundario debería ser que nunca vuelva a suceder. Para esto, es
crucial tener una discusión con todos los involucrados y planificar cómo evitar el problema.
Resumen
En este capítulo, exploramos lo siguiente sobre la solución de problemas:
• Los cinco por qué y cómo simplemente preguntar por qué una cosa está
rota puede ayudarlo a encontrar al culpable principal.
316
Machine Translated by Google
317
Machine Translated by Google
CAPÍTULO 12
Avanzado
Administración
Este capítulo final de Administración del sistema Linux para la década de 2020 explorará
las formas en que usted, el administrador de sistemas de Linux, puede profundizar en el
sistema operativo Linux para encontrar la información que necesita.
Este capítulo comenzará analizando el análisis del sistema y lo ayudará a
comprender cómo obtener más información de su sistema Linux sin tener que pasar horas
haciéndolo. Discutiremos qué herramientas se pueden usar para extraer y descifrar la
información del sistema para que pueda obtener sus respuestas un poco más rápido.
Aquí hay algunas herramientas rápidas que puede usar para obtener información sobre
un sistema Linux.
Mantener o ejecutar un patrimonio de Linux puede ser un trabajo más simple si tiene las
herramientas adecuadas disponibles y sabe cómo usarlas de una manera que tenga sentido para
usted.
InformeSos
Con todos los sistemas Linux empresariales, "sosreport" se usa para extraer información
para los equipos de soporte. Sosreport es una herramienta basada en complementos que se puede
ejecutar con diferentes parámetros para exportar información diferente. Los equipos de soporte
siempre vale la pena cargarlo cada vez que se presenta un nuevo caso de soporte.
y registros. Los equipos de soporte pueden usar el informe sos para comprender
mejor los problemas que se experimentan sin solicitar diferentes archivos de configuración.
Se puede crear un informe sos sin especificar ningún parámetro de la siguiente manera,
pero también se pueden pasar parámetros adicionales para reducir la salida o aumentar lo que se
extrae:
# informe sos
Como administrador de sistemas de Linux, es posible que desee utilizar sosreports para
sus propias consultas de diagnóstico. Los informes de Sos se pueden extraer manualmente si desea
que se puede utilizar para extraer y resumir la configuración dentro de los informes.
320
Machine Translated by Google
xsos
Una de esas herramientas es xsos, desarrollada y mantenida por miembros de la comunidad;
xsos puede tomar entradas de sosreport y crear un buen resumen del sistema.
Para el personal de soporte, esto ahorra más tiempo de lo que la mayoría cree, ya que no hay necesidad
de extraer o filtrar los archivos de configuración para obtener una descripción general rápida.
Para ejecutar una prueba básica de xsos, puede ejecutar el siguiente comando:
El comando anterior solo generará detalles del sistema desde el que lo está ejecutando.
Si desea ver la salida de un informe sos, deberá instalar la herramienta xsos y pasar la ruta a
su informe sos.
El informe básico de xsos generará las siguientes áreas:
• Configuración de volcado
• Detalles de la CPU
• Interrupciones y softirq
• Memoria
• Almacenamiento
• LSCI
321
Machine Translated by Google
Sugerencia Automatice sus sistemas Linux para generar automáticamente estos informes
Si alguna vez tiene un problema importante, puede consultar estos informes sos para
directorio "/proc". En el "/proc", hay diferentes archivos como "meminfo" o "cpuinfo" que le
ejemplo, le mostrará toda la información sobre todas las CPU conectadas a su sistema Linux,
Si buscar en los archivos "/proc" no es para usted, las herramientas enumeradas en la Tabla 12-1
también se puede utilizar para obtener información básica sobre su sistema Linux. Estar
familiarizado con estas herramientas le permitirá obtener acceso rápido a la información del
Tabla 12-1. Herramientas básicas del sistema Linux para información de hardware
# gato /proc/cpuinfo
lspci Enumera todos los controladores y dispositivos PCI conectados a las ranuras PCI
322
Machine Translated by Google
Más detalles
Si los detalles no son suficientes en las herramientas de acceso directo, puede usar las
Aprender lo que sucede debajo de las sábanas es lo que a veces se necesita cuando se enfrenta a un
problema persistente. Hay algunas herramientas que pueden ayudarlo como administrador de sistemas
rastro
Una herramienta extremadamente útil para ver lo que sucede con un proceso o una
aplicación en ejecución es "strace". Strace se puede ejecutar como prefijo de un comando o aplicación
Instalación
Strace está disponible en los repositorios más comunes en casi todas las distribuciones de Linux.
323
Machine Translated by Google
El siguiente comando le mostrará todo lo que sucede cuando ejecuta el comando gratuito:
# rastro libre -h
Salida a un archivo
Una cosa muy útil cuando se usa strace es enviar la salida a un archivo; desde allí, puede
buscar cadenas o valores.
Para enviar un comando strace a un archivo, puede ejecutar un comando similar al
siguiente:
Qué buscar
Las siguientes son algunas cosas útiles para buscar con strace:
324
Machine Translated by Google
Parámetro Descripción
-e trace=open Filtra todas las llamadas del sistema para incluir solo las llamadas abiertas. Otras opciones
y señal
Systemtap es un lenguaje de secuencias de comandos que utiliza archivos con la extensión ".stp".
Systemtap se puede utilizar para diagnosticar problemas complejos de rendimiento o funcionales con
Instalación
Systemtap se puede instalar manualmente o se puede instalar utilizando el método de
instalación automatizado.
Manual de instalación
Los paquetes básicos necesarios para systemtap son systemtap y systemtap runtime. En un
325
Machine Translated by Google
Instalación automatizada
Stap-prep es una utilidad simple que resolverá los requisitos para systemtap y los
instalará por usted. Para usar stap-prep, debe instalar el paquete "systemtap-devel".
Usuarios de Systemtap
Si está utilizando el backend normal del módulo del kernel de Linux, puede ejecutar
"stap" como root. Sin embargo, si desea permitir que otros usuarios creen y ejecuten
secuencias de comandos systemtap, los siguientes usuarios y grupos coincidentes deben estar
creado:
• stapusr
• paso a paso
En todos los sistemas donde esté instalado systemtap, tendrá acceso a scripts de
ejemplo. Estos se pueden encontrar en la siguiente ubicación:
/usr/share/systemtap/ejemplos/
326
Machine Translated by Google
Como se mencionó, los archivos systemtap se guardan con extensiones .stp y se ejecutan con el
comando stap.
Para probar systemtap, use los ejemplos provistos como el script de ejemplo
disktop.stp. Este script muestra qué procesos están escribiendo actualmente en el disco. El guión
se puede encontrar en
/usr/share/systemtap/examples/io/disktop.stp
Lo que hace este script es sondear el kernel para obtener información sobre el
Bloquear dispositivos conectados:
# paso -v /usr/share/systemtap/examples/io/disktop.stp
Una vez que la secuencia de comandos se esté ejecutando, verá que la secuencia de comandos sondea el núcleo
Instrumentación cruzada
A menudo, en entornos en vivo, puede que no sea posible instalar todos los paquetes
systemtap para ejecutar sondeos o pruebas. Por esta razón, es posible crear módulos systemtap
utilizado para compilar los módulos de instrumentación systemtap. Sin embargo, las
versiones del kernel tendrían que coincidir y los sistemas tendrían que tener la misma
arquitectura. Para construir diferentes módulos para diferentes núcleos
327
Machine Translated by Google
Una vez creados, estos módulos deben ser copiados por un administrador de sistemas a /
Este proceso puede resultar difícil si no cuenta con la orientación de ninguno de los
afinado
El proceso de ajuste de su sistema Linux puede implicar una comprensión profunda
de los parámetros del kernel y la configuración del sistema. Sin embargo, hay una herramienta
muy buena llamada "sintonizada" que tiene la capacidad de ajustar un sistema utilizando
diferentes perfiles.
Instalación
Tuned se puede instalar simplemente con yum en un sistema RHEL según lo siguiente:
328
Machine Translated by Google
Usando Tuned
Tuned tiene una serie de perfiles que se proporcionan durante la instalación. Para ver el
# tuned-adm activo
Resumen
En este capítulo, se le presentó lo siguiente:
329