0% encontró este documento útil (0 votos)
220 vistas315 páginas

?????????????? ??? ??????? ?????

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
220 vistas315 páginas

?????????????? ??? ??????? ?????

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 315

Machine Translated by Google

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.

© Kenneth Hitchcock 2022 K. 3


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_1
Machine Translated by Google

Capítulo 1 Linux de un vistazo

Breve historia de Unix a Linux


Mucho antes de que se pensara en Linux, el mundo tenía Unix. Unix, al igual que Linux, se

creó por necesidad.

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

Ritchie y sus colegas abandonaron el proyecto Multics y comenzaron a trabajar en lo que

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

nuevas versiones de Unix con él.

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.

Se estaba trabajando en Unix como un esfuerzo global y ya no por individuos.

El comienzo de Linux no es muy diferente de Unix. A diferencia de cómo Unix

fue una bifurcación de Multics, Linux es Unix reinventado desde cero.

4
Machine Translated by Google

Capítulo 1 Linux de un vistazo

A principios de la década de 1990, un estudiante finlandés de la


Universidad de Helsinki llamado Linus Torvalds se hartó de las opciones de
sistemas operativos disponibles. Linus quería usar Unix, pero desafortunadamente
o afortunadamente, dependiendo de cómo lo veas, Unix era demasiado caro para un
estudiante. Con solo una opción, Linus comenzó a construir su núcleo "Solo por diversión"1 desd
rascar.

Casi al mismo tiempo que Linus estaba escribiendo el kernel de Linux, un


desarrollador de software estadounidense llamado Richard Stallman junto con FSF2
estaban desarrollando su propio sistema operativo llamado GNU. Linus y Richard
Stallman junto con la FSF estaban trabajando en última instancia hacia el mismo
objetivo, aunque desde diferentes extremos. Linus construyó el kernel y Richard con
la FSF estaba construyendo las utilidades. La combinación de estas utilidades y el
kernel llevó a la creación del primer sistema operativo Linux, “GNU/Linux”.

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

Capítulo 1 Linux de un vistazo

Linux está en todas partes


Casi todo lo que usamos hoy en día, desde teléfonos inteligentes hasta computadoras portátiles

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

a diario sin saberlo.

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

las comunidades que los mantienen trabajan constantemente en la corrección de errores o en

nuevos proyectos, este tipo de modelo de desarrollo impulsa la innovación y fomenta


constantemente la inversión de organizaciones más grandes para desarrollar nuevas ideas.

Los proveedores de hardware también están empezando a entender por qué abrir

el código fuente es mejor y buscan constantemente formas de hacer uso de herramientas de

código abierto. Esto no se puede enfatizar lo suficiente en el mercado de teléfonos móviles o


celulares.

En 2013, el mercado de Android tenía el 75 % de la cuota de mercado; hoy, ese

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

la mitad de la población mundial está usando Linux en este momento.


Los televisores inteligentes, las tabletas, los dispositivos de automatización del hogar y los dispositivos IoT no son

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

Capítulo 1 Linux de un vistazo

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ú.

No es solo la innovación en nuestros hogares lo que es impresionante, es la automatización

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

eliminar las malas hierbas, regar las verduras y rociar pesticidas.

Estos dispositivos e ideas innovadores tienen profundas raíces en el código abierto y

Linux. La disponibilidad de cientos, si no cientos de miles, de desarrolladores y aficionados ha

demostrado que la colaboración supera con creces los esfuerzos de desarrollo de cualquier

empresa de software patentado.

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

con su familia o innovar mejores técnicas agrícolas.

Al seguir prácticas de código abierto y retribuir a la comunidad, los agricultores pueden

expandirse y alimentar a más personas. Construir proyectos comunitarios y compartir con el planeta

solo aumenta la capacidad para la erradicación del hambre.

Son estas innovaciones las que hacen brillante el futuro y abren nuevas puertas.

7
Machine Translated by Google

Capítulo 1 Linux de un vistazo

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.

Distribuciones comunitarias de Linux


Como su nombre lo indica, las distribuciones comunitarias de Linux, o "distribuciones",
como se las conoce mejor, son desarrolladas y respaldadas por la comunidad para la
comunidad.
Esto es genial, pero ¿qué significa realmente el término "comunidad"?

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

Capítulo 1 Linux de un vistazo

Si a un patrocinador de un producto, como Red Hat, le gusta una de las características originales,

toman el código de la comunidad y trabajan la nueva función en el equivalente


empresarial. Luego, estas funciones se prueban y modifican para garantizar que
sean de nivel empresarial antes de lanzar nuevas versiones para
clientes.

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

Para que una comunidad exista o proporcione un producto, la comunidad necesita


contribuyentes. Los colaboradores de la comunidad suelen ser desarrolladores de
software, aficionados o personas que disfrutan creando y desarrollando proyectos en
su tiempo libre. Estos colaboradores dedican su tiempo libre a devolver el código para
que cualquiera lo use. Para ellos, se trata de hacer llegar su trabajo a tantas personas
como sea posible y compartirlo.

Nota Otra cosa a tener en cuenta es que retribuir a la comunidad no solo


significa escribir código. Ser parte de una comunidad puede ser cualquier
cosa, siempre que pueda contribuir al proyecto oa la comunidad de manera
significativa. Podría ser una donación monetaria o dar parte de tu tiempo
para organizar una reunión. Cualquier cosa que pueda ayudar a hacer
crecer el proyecto tendrá valor.

9
Machine Translated by Google

Capítulo 1 Linux de un vistazo

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.

Como ya se mencionó algunas veces, el código abierto se trata de ser abierto.

y tener código disponible para que cualquiera lo use. Es por eso que cualquiera puede crear una nueva

distribución; de hecho, hay distribuciones que te ayudan a crear distribuciones.

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.

El núcleo es una de las pocas cosas que es igual en la mayoría, si no en todos


distribuciones de Linux. Las diferencias que existen entre las distribuciones de Linux están alrededor

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

Ubuntu usan su sistema de administración de paquetes basado en deb.

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

Capítulo 1 Linux de un vistazo

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.

RHEL/Cent OS Fedora abrirSUSE Mandrágora

Asianux Linux de bayas SUSE Linux Empresa Mandriva

ClearOS BLAG Linux Escritorio linux

FermiLinux LTS EnGarde Seguro SUSE Linux Empresa Magia


Linux milagroso linux Servidor ROSA Linux

oracle linux Fuduntu Estudio SUSE OpenMandriva

bandera roja linux Hanthana GeckoLinux unidad linux


Cúmulo de rocas Korora

Distribución Linpus Linux

Linux rocoso linux xp

Linux científico MeeGo

amazonas linux 2 Sombrero de fieltro ruso

remezclar

Trustix

perro amarillo linux

Qué distribución es mejor para usted


Con todas las distribuciones disponibles, para cualquier usuario nuevo, la elección de qué distribución elegir

podría ser una tarea desalentadora y puede terminar asustando al nuevo usuario potencial.

11
Machine Translated by Google

Capítulo 1 Linux de un vistazo

Entonces, ¿cómo haces para elegir la distribución correcta para ti?

Para tomar la decisión sobre qué distribución es mejor para usted, debe hacerse las

preguntas correctas.

Las siguientes son algunas preguntas que me gusta considerar al elegir

una distribución Estoy seguro de que hay muchos más buenos, pero estos creo que son un

buen comienzo:

1. ¿Esto se utilizará para ampliar mis conocimientos o simplemente

reemplazar el sistema operativo que tengo actualmente?

2. ¿Necesito usar algún producto de Windows?

3. ¿Estaré jugando en la plataforma?

4. ¿Cuánto control quiero de la plataforma?

5. ¿Cuánto quiero preinstalado y configurado?

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

por etapas. Comience cambiando a herramientas de código abierto en su sistema operativo

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

Capítulo 1 Linux de un vistazo

Las tres categorías de distribución de Linux

En mi opinión personal, hay tres categorías de distribuciones de Linux que


puedo usar:

• Las distribuciones "listas para usar" más simples con todo


funcionando desde el primer día

• Las opciones "casi listas para usar" que tienen casi todo lo que necesita
pero requieren algunos ajustes

• Las distribuciones de "desafío aceptado", donde todo, desde la


instalación hasta la configuración, requiere tiempo, paciencia,
aprendizaje y experiencia.

Opción uno: distribuciones listas para usar

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.

La instalación no debería requerir un título


El otro aspecto importante para encontrar la mejor distribución para usuarios
principiantes de Linux es que la distribución debe ser fácil y sencilla de instalar.
No hay muchos proveedores de hardware que vendan computadoras portátiles o de
escritorio con Linux preinstalado, por lo que es importante que el usuario pueda instalar
la distribución sin frustrarse. La instalación debería ser tan simple como arrancar desde
un DVD o USB y hacer clic en instalar. Una instalación simple ayudará cuando lo inevitable

13
Machine Translated by Google

Capítulo 1 Linux de un vistazo

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

encuentran fácilmente en Lutris y se pueden agregar con relativa facilidad.

caminar antes de correr

Mi consejo para cualquier usuario nuevo es comenzar con Ubuntu o algo muy similar.

Familiarícese con el funcionamiento de Linux en general. Aprenda sobre systemd y comprenda

cómo se configuran los firewalls.

Familiarícese con la instalación de controladores para hardware no incluido en el kernel, como

tarjetas gráficas. Pase tiempo en los foros de discusión aprendiendo cómo resolver las cosas por sí

mismo.

Esfuérzate y aprende a configurar tu distro Linux como una web

servidor o un servidor plex para su hogar como un divertido proyecto inicial.

14
Machine Translated by Google

Capítulo 1 Linux de un vistazo

Opción dos: las distribuciones casi listas para usar


Elegir una distribución que requiera un poco más de comprensión es una buena manera de

dar el siguiente paso en su conocimiento de Linux. Estas distribuciones se recomiendan para el

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

entorno de trabajo a Linux.

Pruebe Fedora, openSUSE o Debian

Si los juegos de computadora no son importantes y no se requiere el uso de productos de Windows,

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

tal como están.

Personalmente, prefiero usar Fedora. Es el "ascendente" para RHEL que

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.

Sin embargo, Fedora no es excelente para jugar o instalar Windows.

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.

La instalación de herramientas de terceros también requerirá la instalación de nuevos repositorios

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

los casos, es bastante sencillo y se puede resolver con suficiente paciencia.

15
Machine Translated by Google

Capítulo 1 Linux de un vistazo

Opción tres: las distribuciones de "desafío aceptado"


Si un desafío es algo que prefiere, entonces las distribuciones más
"difíciles" podrían ser algo a considerar. El uso de estas distribuciones más
desafiantes requerirá experiencia y comprensión sobre cómo configurar la plataforma,
a menudo con ayuda limitada de recursos en línea.
El uso de estas distribuciones puede hacer que lo remitan al temido RTFM3
cuando solicite ayuda en línea. No es que la comunidad de estas distribuciones pueda
ser difícil, están compuestas predominantemente por personas súper inteligentes con
poco tiempo libre, que realmente no están interesadas en ayudar a las personas que no
quieren ayudarse a sí mismas.

Nota En un capítulo posterior, discutiré cómo hacer preguntas


técnicas. Algo que toda la gente técnica necesita aprender para
evitar irritar a la gente al hacer preguntas técnicas.

Con Gran Poder…

Estas distribuciones de "desafío aceptado" brindan más "poder" al usuario (no es


que otras distribuciones no tengan la capacidad). Brindan más opciones y
oportunidades para que los usuarios rompan la plataforma sin pensar demasiado.
Estas distribuciones requieren tener cuidado al ejecutar comandos o cambios de
configuración. Ejecutar comandos sin conocer las consecuencias probablemente
conducirá a una reconstrucción del sistema.

Prueba Arch Linux o Gentoo

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.

3 Lee el Maldito Manual


dieciséis
Machine Translated by Google

Capítulo 1 Linux de un vistazo

Estas distribuciones deben usarse cuando se sienta cómodo resolviendo problemas


por su cuenta y no necesite demasiada orientación. Debe estar bien versado en encontrar
errores significativos y comprender dónde aumentar la verbosidad cuando sea necesario.

La compilación a partir del código y la reconstrucción de los módulos del kernel


tampoco debería ser algo que no haya hecho antes. En algunos casos, hacer que las
aplicaciones o los controladores funcionen implicará este tipo de tareas. Las
distribuciones como Arch Linux y Gentoo deben dejarse para los fanáticos acérrimos que

desean proponerse un desafío, así que no los tome a la ligera si está predispuesto a la
frustración.

Distribuciones empresariales de Linux


Red Hat, SUSE y Canonical (Ubuntu) han construido sus empresas en torno al
modelo de suscripción paga. Como el software y el código son de código abierto,
estas empresas no pueden venderle el software. En cambio, le venden soporte y
actualizaciones de productos de nivel empresarial. Como usuario, puede utilizar los
productos como desee, siempre que no infrinja los acuerdos de licencia, es decir,
afirmar que el código es suyo y convertirlo en código propietario.

Nota Lea los acuerdos de licencia para asegurarse de no


infringir ninguna de las reglas si no está seguro.

Donde los productos empresariales realmente se pagan solos es en las


actualizaciones de productos que brindan estas empresas. Estas actualizaciones son
vitales para las empresas que requieren soporte empresarial, como los bancos. Los
bancos requieren un alto grado de seguridad. Confían en empresas como Red Hat para
proporcionar actualizaciones de seguridad actualizadas para las vulnerabilidades cuando se hacen públ

17
Machine Translated by Google

Capítulo 1 Linux de un vistazo

Si los bancos no usaran productos empresariales y optaran por usar productos


basados en la comunidad, tendrían que esperar a que la comunidad solucione una
vulnerabilidad cuando se informe. Esto a veces puede tomar un par de horas o un par
de días, si no semanas.
Si la vulnerabilidad fuera particularmente mala, podría costarle al banco más de
lo que le costaría cualquier suscripción de software. Incluso podría significar el final
para algunas organizaciones si fueran violadas debido a una vulnerabilidad que
espera ser reparada por la comunidad.
Las empresas de Enterprise Linux pueden ganar dinero con el software que
apoyo, pero no piense ni por un minuto que no ayudan a las comunidades a ayudar a
desarrollar sus productos. Las empresas de Enterprise Linux se han vuelto
extremadamente importantes para las comunidades de las que obtienen la mayoría de
sus productos "upstream". Red Hat, como ejemplo, no solo usa proyectos "ascendentes"
como Fedora para RHEL, sino que también tiene muchos, muchos otros proyectos
"ascendentes" que admiten. Es este apoyo el que hace crecer los productos y promueve
la adopción en toda la industria.

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

Capítulo 1 Linux de un vistazo

Red Hat Enterprise Linux

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

Capítulo 1 Linux de un vistazo

OpenShift es la principal solución de nube híbrida en Red Hat; OpenShift


proporciona una capa de orquestación para contenedores, lo que permite a los clientes
migrar cargas de trabajo desde las instalaciones a la nube y viceversa. Red Hat está
invirtiendo masivamente en OpenShift, que está en constante evolución y se ha
convertido en la opción número uno para la mayoría de las organizaciones al elegir una
herramienta de orquestación de contenedores.

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

Capítulo 1 Linux de un vistazo

Internet de las Cosas


Un área en la que Canonical es diferente tanto de Red Hat como de SUSE es su

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

La primera categoría de productos es en la que SUSE ha construido su negocio: su


distribución empresarial de Linux. SUSE tiene muchas variaciones de Linux desde Desktop
hasta las versiones de IBM Power. Todos tienen diferentes suscripciones que se pueden
comprar, y la mayoría, si no todos, están impulsados por el producto openSUSE "upstream".

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

Capítulo 1 Linux de un vistazo

Nube, almacenamiento y administración

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

Ceph y combinarlo con las soluciones de Red Hat si así lo desean.

Para las plataformas en la nube, en particular en torno a la nube híbrida y la orquestación de

contenedores, el recientemente adquirido Rancher (adquirido en diciembre de 2020) ofrece competencia

a OpenShift de Red Hat.

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.

Para administrar SUSE Enterprise Linux, SUSE admite un producto llamado

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?

Las preguntas anteriores ya han sido respondidas si Ud.

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

requieren controles estrictos en torno a la seguridad y la vulnerabilidad de la plataforma, particularmente

en los sistemas donde se almacenarán los datos de la tarjeta. uno muy importante

22
Machine Translated by Google

Capítulo 1 Linux de un vistazo

El requisito de cumplimiento de PCI DSS es que la plataforma del cliente utilice software que

haya sido probado minuciosamente y superado un escrutinio de seguridad intensivo, preferiblemente

por empresas acreditadas que hayan sido aprobadas por varios auditores de cumplimiento y hayan

sido acreditadas por su seguridad.

Por esta razón principal muy importante, siempre encontrará bancos que utilizan productos

empresariales y no productos comunitarios.

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

ejemplo? La mayoría de las organizaciones benéficas no procesan datos de tarjetas de crédito/débito.

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

adecuadas de prueba, preproducción y producción probadas y verificadas deberían reducir el riesgo y

garantizar suficiente estabilidad.

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

de seguridad de nuestros laboratorios domésticos (yo no).

Lo más importante que debe recordar sobre la elección de una comunidad

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.

Tienen personal dedicado que encuentra día cero

23
Machine Translated by Google

Capítulo 1 Linux de un vistazo

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

laboratorios si nos preocupa un problema de seguridad.

Los bancos no tienen ese privilegio.

Verificación de conocimientos

Para el mejor uso de este libro, se espera que conozca los conceptos básicos de la administración

del sistema Linux. Esto incluiría cosas como

• Comandos básicos del sistema Linux

• Configuración básica del sistema Linux, que incluye cómo administrar

los dispositivos de almacenamiento y cómo agregar nuevos usuarios

• Conceptos básicos de seguridad de Linux

Si no está familiarizado con estas cosas, es recomendable leer un poco más antes de

continuar con este libro.

Sin embargo, esperamos que este libro esté escrito de manera que aún se beneficie de

su contenido, pero le servirá mejor si tiene una base sólida de Linux.

Resumen
En este capítulo se introdujeron los siguientes temas:

• La brevísima historia de Unix y Linux

• Cómo Linux está en todas partes, en su teléfono inteligente, TV y

sistemas de entretenimiento de vuelo

• Qué son las distribuciones comunitarias de Linux y quién

los desarrolla

24
Machine Translated by Google

Capítulo 1 Linux de un vistazo

• Cómo decidir qué distribución es mejor para ti

• Qué opciones de Linux empresarial están disponibles y qué


empresas las ofrecen

• Las principales diferencias entre Linux comunitario y


Linux empresarial

25
Machine Translated by Google

CAPITULO 2

Nuevas Herramientas para


Mejorar la Gestión Administrativa

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.

© Kenneth Hitchcock 2022 K. 29


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_2
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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.

Iniciar el servidor web apache como se mencionó requiere un comando de


servicio. Con la mayoría de las distribuciones de Linux, este será un comando systemctl:

# systemctl iniciar httpd

Para verificar si el servicio ha comenzado, puede reemplazar el parámetro de inicio


con el parámetro de estado, o puede verificar qué procesos se están ejecutando que
coinciden con el nombre httpd:

# ps-ef | grephttpd

La salida debería verse algo como

raíz 150274 1 0 22:48 ? 00:00:00 /usr/sbin/

httpd -EN PRIMER PLANO


apache 150275 150274 0 22:48 ? 00:00:00 /usr/sbin/

httpd -EN PRIMER PLANO

30
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

apache 150277 150274 0 22:48 ? 00:00:00 /usr/sbin/

httpd -EN PRIMER PLANO


apache 150278 150274 0 22:48 ? 00:00:00 /usr/sbin/

httpd -EN PRIMER PLANO


apache 150279 150274 0 22:48 ? 00:00:00 /usr/sbin/

httpd -EN PRIMER PLANO


raíz 150506 108621 0 22:48 puntos/2 00:00:00 grep --
color=auto httpd

Herramientas de visualización de tareas

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

Top está instalado de forma predeterminada en casi todas las distribuciones


de Linux que he usado. Ejecutar el comando "arriba" debería dar un resultado similar
al siguiente:

# cima
arriba - 21:51:30 hasta 35 días, 22:34, 1 usuario, promedio de carga: 4.80, 5.38, 3.13

Tareas: 423 en total, 1 en ejecución, 421 durmiendo, 0 detenido, 1 zombi

% 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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

MiB Mem: 23679.7 en total, 1453.4 gratis, 11263.9 usado, 10962.5


mejorado/caché
Intercambio de MiB: 8192.0 en total, 8190.8 gratis, 1.2 usado.
10835.9 disponible Mem

USUARIO PID PR NI VIRTUAL RES SHR S % CPU


%MEM TIEMPO+ COMANDO

3219 ken 20 0 17,3g 237396 144936 S 16,9


1.0 106:56.90 cromo
1033 raíz -51 0 0 0 0 D 10.6

0.0 21:58.24 irq/136-rmi4_sm


129564 ken 20 0 20,6g 323744 123548 S 9,9
1.3 14:31.80 cromo
29109 ken 20 0 4450712 196656 105148 S 9.3
0.8 34:17.92 canela
2021 ken 20 0 1051020 103268 62488 S 8,6
0.4 37: 08.53 Xorg
108567 ken 20 0 754204 42076 30860 S 3.3
0.2 0:08.86 gnome-terminal-
3171 ken 20 0 16,9g 489020 192036 S 1,7
2.0 66:08.40 cromo
3220 ken 20 0 16,5 g 131584 92976 S 1,0
0.5 28:09.36 cromo
151128 raíz 20 0 236260 5568 4376 R 1,0 0,0 0:00,15 superior

150042 raíz 20 0 0 0 0 yo 0.7


0.0 0:08.40 kworker/1:2-eventos
14 raíz 20 0 0 0 0 yo 0.3
0.0 1:09.19 rcu_sched
1140 dbus 20 0 13396 9064 2644 S 0,3
0.0 0: 20.92 dbus-corredor

32
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

3177 ken 20 0 7768 4120 3304 S 0.3

0.0 2: 19.38 cgroupificar


3532 ken 20 0 20,7 g 404148 123592 S 0,3 1,7 12:04,38 cromo

49421 systemd+ 20 0 17712 8712 7832 S 0.3


0.0 1:25.22 systemd-ood
83705 ken 20 0 20,6g 119640 79348 S 0,3
0.5 0:11.45 cromo
97202 ken 20 0 20,6 g 147012 97388 S 0,3
0.6 0:13.16 cromo

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.

Tabla 2-1. Alternativas a la parte superior

Alternativa superior Descripción

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

desplazarse vertical u horizontalmente

miradas Una utilidad de monitoreo diseñada para mostrar la mayor


cantidad de información posible en una pantalla. Útil si quieres ver
informacion sobre sensores

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

mon
nmon es otra herramienta muy útil para ayudar a diagnosticar problemas en su sistema. Por lo

general, no se instala de forma predeterminada, pero se puede instalar en la mayoría de las

plataformas. nmon tiene un método muy claro para mostrar la CPU, la memoria, el disco y el kernel,

por nombrar algunos. Definitivamente es una herramienta que recomendaría usar.

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

ver si hay un método recomendado.

He experimentado en el pasado que algunos administradores de sistemas no siempre entienden

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:

1. Obtenga la ID del proceso utilizando una herramienta de visualización de procesos

como "superior" o "ps".

34
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

2. Intente eliminar educadamente el proceso utilizando el


comando de eliminación sin un parámetro. Esto usará
de forma predeterminada la señal "TERM", que le dice al
proceso que se va a eliminar y, si tiene controladores,
intentarán ejecutar tareas de limpieza antes de finalizar.

matar <id de proceso>

3. Si el enfoque "agradable" no funcionó, puede aplicar el


enfoque mazo. Esto eliminará el proceso a la fuerza y el
evento de finalización no se podrá capturar, lo que
significa que el proceso no podrá ejecutar ningún trabajo
de limpieza.

matar -9 <id del proceso>

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Tiene mucho sentido si piensas en lo que es realmente un proceso zombie. No es


más que un descriptor de memoria que no ha sido
despejado Ninguna cantidad de comandos de eliminación lo borrará. tendrías que encontrar

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.

Encontrar la causa subyacente del proceso zombi implicará mirar la aplicación


cuyo proceso murió. ¿El código estaba mal escrito? ¿El proceso padre murió primero?
En mi experiencia, esto generalmente se debe a la inestabilidad del sistema al tener otro
proceso o aplicación tirando de la alfombra debajo del proceso.

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.

Tarea en segundo plano

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:

1. Presione las teclas “CTRL + Z”.

• Esto le dice al sistema operativo Linux que suspenda la tarea actual y


devuelve al usuario al shell.

36
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

2. Una vez de regreso al shell, ejecute el comando “bg”.

• Este comando envía la tarea suspendida actual al fondo y reanuda la


ejecución.

Si desea que la tarea en segundo plano vuelva al primer plano, debe

simplemente ejecute el comando "fg".

Ejecución de tareas que consumen mucho tiempo

Como administrador del sistema, a menudo necesitará ejecutar secuencias de comandos o


tareas que tardan mucho tiempo en ejecutarse. A veces, ejecutar estas tareas largas puede
ser bastante frustrante si las ejecuta en su computadora portátil y quiere terminar el día.
Afortunadamente, no tiene que esperar hasta que termine su tarea si usa las herramientas
adecuadas.
Hay un par de herramientas que puede usar para ayudarlo con las tareas que requieren mucho tiempo.

tareas y permitirle volver a disfrutar de su vida fuera del trabajo.

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

intentando instalar un paquete llamado "pantalla".

37
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Para usar la pantalla de una manera muy básica, todo lo que necesita saber son los
comandos enumerados en la Tabla 2-2.

Tabla 2-2. Cómo usar "pantalla"

Dominio Descripción

pantalla Inicia una nueva sesión de pantalla

ctrl + a seguido de d Lo desconecta de la sesión de la pantalla en

ejecución pero deja la sesión en ejecución

lista de pantalla Enumera todas las sesiones de pantalla.

screen -r <nombre de la sesión> Vuelve a conectarse a la sesión de pantalla en ejecución

Nota Cabe señalar que algunas distribuciones han dejado de enviar


"pantalla" en algunas de sus nuevas versiones, pero el paquete aún está
disponible en los repositorios de la comunidad.

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.

Entonces, para evitar esto, usar "tmux" me permite

38
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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.

Tabla 2-3. Cómo usar "tmux"


Dominio Descripción

tmux Inicia una nueva sesión de tmux

ctrl + b + d Te desconecta de la sesión en ejecución

sesiones de lista tmux Lista todas las sesiones tmux

ctrl + b + % Divide la pantalla verticalmente


"
ctrl + b + Divide la pantalla horizontalmente

ctrl + b + w Muestra una ventana en tmux con todas las sesiones de tmux

para que te cambies

ctrl + b + teclas de flecha Le permite cambiar el tamaño de las ventanas

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

La respuesta a ambas preguntas es la automatización y, en particular,

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

necesitan saber cómo automatizar estas configuraciones.

Ansible es una de las herramientas de automatización más populares disponibles en la actualidad

y lo beneficiaría enormemente en el crecimiento de su carrera si comenzara a familiarizarse con

ella. Hay un capítulo dedicado a la automatización un poco más adelante en este libro donde

profundizaremos un poco más en las prácticas relacionadas con la automatización. En esta

sección, solo analizamos brevemente los conceptos básicos de Ansible.

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.

Ansible se puede instalar de dos maneras.

Gestión de paquetes
La primera y más sencilla forma de instalar Ansible es a través de su sistema de

administración de paquetes de distribución como dnf o apt.

Simplemente intentar instalar el paquete Ansible funcionará en la mayoría de las

distribuciones de la comunidad, ya que generalmente tienen Ansible disponible en sus

repositorios estándar. Sin embargo, las distribuciones empresariales como Red Hat

Enterprise Linux requieren suscripciones separadas y acceso a diferentes repositorios. Para

esas distribuciones, asegúrese de seguir su documentación oficial sobre cómo habilitar los

repositorios requeridos.

40
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Nota La instalación de Ansible a través de un sistema de administración de


paquetes es el enfoque recomendado, ya que esto no solo instala el binario
de Ansible, sino que también prepara su sistema Linux con todos los demás
archivos de configuración de Ansible compatibles, lo que le permite trabajar
con la mejor configuración posible.

Pepita

Otra forma de instalar Ansible es a través del programa de instalación preferido


de Python, o comúnmente conocido como pip. No se requieren suscripciones ni
repositorios diferentes además de instalar pip. Una vez que se instala pip, Ansible
se puede instalar a través de los comandos de instalación de pip.

Nota Al instalar a través de pip, siempre asegúrese de verificar la versión de


Python en la que se instalará pip.

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Sin embargo, los archivos de configuración deben almacenarse en ubicaciones específicas


para que Ansible pueda leerlos si no se le indica lo contrario. También hay una

jerarquía Ansible seguirá en qué archivos Ansible leerá primero.

Puede crear archivos de configuración de Ansible en las siguientes ubicaciones.

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.

• archivo ansible.cfg en el directorio actual en el que está

trabajando.

• .ansible.cfg en su directorio de inicio de usuario.

• Cree /etc/ansible/ansible.cfg.

También se le puede decir a Ansible dónde encontrar el archivo de configuración configurando


la variable ambiental ANSIBLE_CONFIG.

Nota Al crear el archivo de configuración de Ansible en el


directorio de inicio del usuario, es vital que el archivo se llame
“.ansible.cfg” y no “ansible.cfg”. Si no inicia el archivo con el “.”, se ignorará.

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

Ansible se instala desde un sistema de administración de paquetes, el archivo de inventario

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

El diseño básico de un archivo de inventario de Ansible consta de un nombre de


grupo entre corchetes, seguido de una lista de sistemas que forman parte de un grupo. En
el siguiente ejemplo, dos servidores son parte del grupo "servidor web" y uno es parte del
grupo "base de datos":

[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:

ansible todo -m ping

Para ejecutar un libro de jugadas, puede usar algo similar a lo siguiente:

ansible-playbook -i /ruta/a/inventario /ruta/a/playbook.yaml

Ansible es relativamente sencillo de ejecutar y no requiere ninguna configuración


para usarlo. Para familiarizarse con Ansible, ejecute algunos comandos de Ansible ad
hoc para comenzar, luego pase a crear sus propios libros de jugadas.

43
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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

libro de jugadas muy simple, esto no es realmente necesario. El siguiente es un ejemplo


básico de un libro de jugadas:

---

- nombre: "Instalar servidor web"


anfitrión: servidor web
Tareas:

- nombre: "Instalar httpd"


mmm:

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Estructura del directorio de roles

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

"ansible-role-", seguidos por el nombre que desee para el rol.

Generación de funciones de Ansible

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:

# ansible-galaxy init <nombre de su función>

45
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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.

En la sección "Libros de jugadas" unas páginas atrás, había un ejemplo de libro de

jugadas. En el ejemplo, utilicé el módulo "yum" para instalar el paquete "httpd". Este módulo

"yum" es parte de las colecciones estándar de Ansible y no requiere ninguna instalación

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

complejos de usar. Afortunadamente, la documentación de Ansible es bastante buena y ofrece

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

Los módulos de Ansible normalmente se escriben con Python. Técnicamente,

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

la mejor herramienta de automatización disponible en la actualidad. Los esfuerzos de la

comunidad en el desarrollo de módulos de Ansible han sido asombrosos con los proveedores.

46
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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.

Nota Una vez que se haya familiarizado con Ansible, considere


devolver su código a lugares como Ansible Galaxy.

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

en constante crecimiento de Ansible que todos pueden usar.


Cuando se enfrente a la necesidad de escribir un nuevo rol o módulo de Ansible,

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

más nuevos a Linux mientras estaban aprendiendo.

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

requiere es ssh y cualquier software necesario para el

47
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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.

Cockpit normalmente se usaría solo en plataformas de servidor, pero puede ser


instalado en cualquier plataforma que admita el uso de la cabina.

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:

# yum instalar cabina -y

Configuración
Una vez instalado, asegúrese de que el servicio "cabina" ha sido habilitado y
comenzó:

# systemctl habilitar cabina && systemctl iniciar cabina

Compruebe que "cabina" se está ejecutando:

# cabina de estado de systemctl


# netstat-siesta | agarre LISTA

Finalmente, asegúrese de que si tiene su firewall en ejecución, el puerto 9090 se haya


abierto para el tráfico tcp:

# cortafuegos-cmd --listar-todos

48
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Nota Debido a que Linux es de código abierto, mis


recomendaciones y alternativas serán software no propietario y,
en general, productos de código abierto. Aunque puede haber
buenas opciones propietarias, usted podrá encontrarlas y leer sobre ellas.

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

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

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.

Con el sistema de administración de paquetes del sistema Linux, intente instalar


"tui" agregando "-tui" al final del nombre del paquete. Un ejemplo de esto podría ser
intentar usar la interfaz de usuario de texto de NetworkManager. Si el paquete no
está instalado, intente instalar lo siguiente:

# yum instalar nm-tui -y

Utilizando

Las consolas de texto son lo suficientemente simples de usar y generalmente se explican por sí mismas.

La mejor manera de conocerlos es comenzando a usarlos. Personalmente, he


estado usando NetworkManager "tui" para configurar la red, principalmente porque es
más rápido y tengo que recordar menos.

51
Machine Translated by Google

Capítulo 2 Nuevas herramientas para mejorar la experiencia administrativa

Resumen
En este capítulo, se le presentó lo siguiente:

• Cómo se pueden administrar las tareas en un sistema Linux y cómo


puede trabajar con tareas en segundo plano.

• Conceptos básicos de Ansible y qué tan rápido puede aprender


Ansible para volverse competente en cuestión de horas.

• El poder que viene con las consolas web para


gestionar plataformas Linux.

• Que no todo hay que hacerlo con mucho tiempo


comando y un millón de parámetros. Las consolas de texto pueden
ahorrar tiempo y esfuerzo.

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.

© Kenneth Hitchcock 2022 K. 53


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_3
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Formas obsoletas de trabajar


En mi experiencia como consultor de Linux durante la última década, he conocido a muchas
personas increíbles. Algunos me enseñaron nuevas cosas interesantes y en algunos casos
nuevas formas de hacer las cosas. En el otro lado de la balanza, he conocido a otros que
me han frustrado por su falta de progreso o visión de futuro. Esto no quiere decir que no
fueran buenos; de hecho, la mayoría han sido personas increíblemente inteligentes que se
han visto atrapadas en situaciones en las que la organización para la que trabajaban
simplemente no les ha brindado la oportunidad de crecer, aprender o probar cosas nuevas.
Mis frustraciones a menudo no solo terminaban con el individuo, sino que también se
extendían a la organización infractora. Al no promover el crecimiento y nuevas formas
innovadoras de trabajo, los administradores de sistemas Linux con los que trabajé se
estancaron y se aburrieron, y a menudo terminaron dejando la organización.

Entonces, con esto en mente, aquí hay algunos ejemplos de lo que quiero decir cuando
decir "formas obsoletas de trabajar".

Habilidades obsoletas

Más a menudo de lo que me gustaría, me encuentro con administradores de sistemas


Linux que no están constantemente actualizando sus habilidades. Algunas de las
personas solo pueden culparse a sí mismas y, lamentablemente, algunas no cuentan con
el apoyo de la organización para la que trabajan. Ejemplos de esto incluyen no estar
familiarizado con los nuevos cambios y problemas conocidos en las nuevas versiones de los
productos que administran, a menudo debido a la falta de capacitación. Otros ejemplos
incluyen no estar al día con los cambios en el mercado y las nuevas tendencias que se utilizan
para la gestión de la plataforma. Otros problemas involucran a las organizaciones que no
desean que los administradores de sistemas Linux introduzcan nuevas tecnologías en sus
entornos. Esto a menudo significa que los administradores del sistema Linux tendrían que
experimentar en laboratorios domésticos o entornos de prueba, lo que algunos

54
Machine Translated by Google

Capítulo 3 Gestión patrimonial

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.

Mantener el conocimiento para ellos mismos

Este es lo peor de lo peor. Me he encontrado con personas que mantenían a los


demás a distancia cuando se trataba del trabajo que hacían. Parecía que la
intención era no mostrarle a nadie más lo que estaban haciendo para poder
asegurar su trabajo por un poco más de tiempo. Estas personas tienden a ser
muy reacias a que alguien más colabore en cualquier proyecto con ellos y tienden
a diseñar en exceso todo lo que hacen. Esto no es algo que recomendaría hacer
en los entornos de trabajo actuales. Cuanto más compartes, más aprendes; a
menudo, el punto anterior sobre habilidades obsoletas y este van de la mano. Si es
culpable de hacer esto, mi consejo es que empiece a aprender todo lo que pueda
sobre las tecnologías emergentes y empiece a trabajar con otros. Esto no solo
mejorará lo que está haciendo, sino que también le abrirá nuevos caminos, tal vez
incluso con una organización diferente y posiblemente con un salario mayor.

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

Capítulo 3 Gestión patrimonial

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

sistemas o ejecutar la tarea que deseaba realizar. El software de administración también se

puede aprovechar para administrar sistemas sin el uso de scripts de shell. Cambiar su enfoque

para usar alternativas a las secuencias de comandos de shell comenzará su transformación en

una administración de patrimonio más grande desde una ubicación central. Sin mencionar, menos

mantenimiento para hacer en los antiguos scripts de shell.

Los recién llegados a su organización tampoco necesitarán molestarlo para comprender

lo que hace su script; simplemente puede redirigirlos para que lean la documentación oficial sobre

la herramienta de administración que está utilizando.

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

usarse para nada permanente y definitivamente no para nada en producción.

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

Capítulo 3 Gestión patrimonial

Sugerencia El primer paso para mejorar la gestión de su patrimonio y reducir


la extinción de incendios es deshacerse de tantos copos de nieve como sea posible.

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

Capítulo 3 Gestión patrimonial

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.

Métodos de instalación manual


El primer método a discutir es la buena y antigua implementación manual. Esto
puede estar bien para el extraño sistema aleatorio que desea probar o jugar, pero
definitivamente no es algo que quiera hacer si tiene cien sistemas para construir.
Definitivamente no encontrará el favor de su empleador si pasa una semana haciendo
algo que debe hacerse en 20 a 30 minutos.
Con todas las formas en que se pueden construir los sistemas, incluidas las diferentes
herramientas o sistemas de administración que puede usar para construirlos, la construcción
manual de sistemas no debería ser una de ellas. Sin embargo, como estamos aprendiendo
qué evitar, comencemos desde el principio y obtengamos una buena comprensión de
cómo se debe realizar este proceso manual y observemos los métodos de compilación
manual que se han utilizado para instalar Linux. Más adelante en el capítulo, discutiremos
cómo se pueden simplificar estos procesos.

Instalación de medios de arranque

El método más simple es usar medios de arranque para realizar la implementación.


Esto podría ser un DVD o un dispositivo USB. El sistema generalmente se inicia desde
su medio de instalación, y una vez que su sistema se inicia en su instalador de Linux,
normalmente ejecuta los pasos manuales. Los valores predeterminados se pueden
seleccionar como la opción más simple, pero no se recomienda si está creando algo que
no sea un sistema de prueba. Cosas importantes como la partición del disco y el paquete

58
Machine Translated by Google

Capítulo 3 Gestión patrimonial

la instalación se puede personalizar para cualquier sistema de importancia. Si


está construyendo un sistema que se usará como plantilla, debe prestar mucha
atención durante esta instalación. Realmente no desea tener una plantilla
configurada incorrectamente, especialmente si se usará para implementar todo
el estado más adelante.

Instalación de red

Arrancar su red a través de un servidor NFS es otro método para implementar


un sistema Linux manualmente. Esto aún requeriría medios de arranque donde
deberá redirigir la instalación a una ubicación de red. Este método de instalación
requeriría un sistema NFS ejecutándose con los medios de instalación exportados
y disponibles para su uso. Aún necesitaría ejecutar la instalación manualmente, y
aún tendría que asegurarse de no seleccionar solo los valores predeterminados si
está creando un sistema de producción. Esto se puede simplificar si tiene un archivo
kickstart, pero requerirá una mayor comprensión de cómo se escriben los archivos
kickstart. Afortunadamente, vivimos en un mundo donde la información está
disponible libremente en Internet. Hay muchos ejemplos de archivos kickstart y
muchas preguntas y respuestas del foro para que pueda comenzar.

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

Capítulo 3 Gestión patrimonial

modificaciones no deseadas en la edición o la configuración. A partir de esta plantilla,


se pueden crear nuevas máquinas virtuales con el sistema operativo instalado y listo para
personalización

Imágenes de máquinas virtuales

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.

Sugerencia El uso de la instalación de red es una buena manera de comenzar a

automatizar sus implementaciones. Esto definitivamente podría mejorar su proceso de

compilación si todavía está implementando manualmente. Foreman es un producto

comunitario, por lo que si no puede usar Red Hat Satellite o SUSE Manager,

definitivamente es una opción que vale la pena considerar.

Instalaciones Linux Automatizadas


Ahora que se han cubierto las instalaciones manuales, debemos comenzar a analizar
cómo optimizar el proceso. El primer paso para reducir el tiempo perdido al construir
nuevos sistemas es automatizar tanto como sea posible. Esto debería incluir la mayor
automatización posible para que su sistema esté listo para la "producción". Hay dos
enfoques que puede utilizar.

60
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Método 1: Instalación en red


La primera forma de automatizar una compilación de Linux sería usar una opción de instalación
en red. Para eso, hay algunas cosas que deben estar disponibles.

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.

Sugerencia Red Hat Satellite y Foreman se analizarán con mayor profundidad


en el próximo capítulo.

61
Machine Translated by Google

Capítulo 3 Gestión patrimonial

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.

Método 2: plantillas de máquinas virtuales

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í.

A los efectos de esta sección, solo nos referiremos a la creación de máquinas


virtuales.

API de hipervisor

Con la opción de instalación de red en el método de instalación anterior, requería el uso de un


sistema de arranque PXE. Sin embargo, la implementación de sistemas Linux a partir de
plantillas no requiere la instalación del sistema operativo Linux, ya que eso ya se hizo en la
plantilla. Lo que necesitará es un método para comunicarse con el hipervisor que actualmente
aloja la plantilla para su implementación.

62
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Para hablar con un hipervisor para el aprovisionamiento del sistema, hay algunas
opciones disponibles:

• Módulos de Ansible

• Marioneta o similar

• Script de shell personalizado

• Sistemas de gestión como Satellite, Foreman o


Administrador de SUSE

Con uno de los métodos anteriores, puede automatizar el aprovisionamiento


proceso para que su hipervisor cree una máquina virtual a partir de una plantilla.
La creación de plantillas también se puede automatizar para extraer imágenes de Internet si
desea simplificar aún más.

Ejemplos de Ansible

Para el proceso anterior, personalmente recomiendo usar Ansible.


Ansible ofrece una curva de aprendizaje más fácil y es la tendencia actual del mercado
para la automatización. Los módulos de Ansible ya están disponibles con Ansible y se pueden
agregar módulos adicionales instalando las colecciones de Ansible requeridas. Además de
los módulos, hay más que suficientes ejemplos disponibles en línea para mostrarle cómo
automatizar casi cualquier cosa que se le ocurra. De hecho, si esto es algo que desea seguir,
eche un vistazo a mis repositorios de GitHub para ver algunos ejemplos básicos en Ansible. Una
función particular de Ansible en la que he estado involucrado en el desarrollo durante los últimos

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

aprovisione instancias en la nube en AWS y Azure.

https://github.com/kenhitchcock

63
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Uso de imágenes

Si el modelo de implementación de plantillas es algo que desea seguir, valdrá la pena


comprender qué enfoque es mejor utilizar: usar una imagen dorada o usar un catálogo 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 hay posibilidad de que la expansión de la imagen genere caos.

• Una fuente de verdad. Sabes lo que hay en él.

no lo uses
• Si su imagen no es 100 % correcta, puede terminar con un
conjunto de sistemas Linux que necesitará reconstruir.

• No se puede usar para acelerar rápidamente los sistemas que se


van a usar de fábrica. Aún sería necesaria la configuración.

• Ahorro de tiempo mínimo con el uso de una imagen básica.

64
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Nota Este ya no es un enfoque que recomendaría, en gran parte debido al hecho de


que hoy en día existen formas mucho mejores de automatizar las compilaciones del
sistema. Este método se usó principalmente en los primeros días de la creación de
propiedades de Linux.

Catálogo de imágenes

Este catálogo puede ser plantillas de máquinas virtuales, imágenes o archivos kickstart. Todos tendrán

ventajas y desventajas similares.

Si decide usar un catálogo de imágenes o archivos kickstart, se recomienda que

mantenga un registro de para qué se usan las imágenes y cómo se pueden usar para las variaciones.

El siguiente es un ejemplo básico:

• [Imagen base del sistema operativo Linux]

• [Imagen del servidor web]

• [Imagen del equilibrador de carga]

• [Imagen de proxy inverso]

• [Imagen del servidor de base de datos]

• [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

y desventajas para comparar.

sesenta y cinco
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Ventajas
• Catálogo de imágenes prediseñadas o archivos kickstart que se pueden usar

para construir sistemas rápidamente. Permitiendo una construcción

repetible cada vez.

• Los sistemas se pueden configurar casi al 100 % para su uso después de

la implementación.

• Las plantillas se pueden sellar para garantizar que no haya configuración


se produce deriva.

Desventajas
• Si usa plantillas para la clonación de máquinas virtuales, las

plantillas deberán parchearse y podrían olvidarse.

• Podría ocurrir una expansión de la imagen y usted podría terminar con un

montón de plantillas que nadie sabe para qué sirven.

• Será necesario parchear varias imágenes y

mantenido por alguien.

Flujo de proceso de construcción

Para mejorar el proceso de construcción en cualquier organización, necesitamos entender el flujo.

Una vez que tenemos un buen desglose del flujo, podemos ver dónde se pueden automatizar las

cosas y dónde se pueden realizar mejoras.

Proceso de construcción básico

Un flujo rudimentario de la compilación de un sistema Linux normalmente se parecería a la Figura 3-1.

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

Capítulo 3 Gestión patrimonial

Figura 3-1. Construcción del sistema Linux

Muchas organizaciones todavía utilizan esta solución y no ha cambiado mucho


durante la última década, aparte de las versiones de los sistemas operativos que se
están instalando.

Qué se puede mejorar


Con este ejemplo de nuestro proceso de construcción básico, tenemos muchas
posibilidades de mejora y automatización. Entendamos qué se puede hacer para
mejorar este proceso.

Autómatas, autómatas, autómatas

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.

Introducir un portal de solicitud de usuario

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

Capítulo 3 Gestión patrimonial

Integración con otras plataformas

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

debe notificar al usuario.

Simplifique los requisitos de recursos

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

o notas durante el proceso de solicitud del usuario.

Utilice una plataforma de automatización

Se recomienda encarecidamente el uso de una plataforma de automatización cuando se intenta

automatizar construcciones completas de inmuebles. Las funciones proporcionadas a menudo ayudan a

que el proceso sea un poco más fácil, a menudo brindando orientación y consejos a lo largo del camino.

Algunas plataformas de automatización, como Red Hat Automation Platform, también

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

usar, pero eso dependerá de su apetito por los productos empresariales.

68
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Introducir fechas de caducidad

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.

Flujo de proceso de construcción automatizado

Si se adoptan todas las recomendaciones y más, su nuevo flujo de compilación no solo


debería reducir el trabajo de compilación diario. También permitirá reconstrucciones
completas de propiedades y una mejor recuperación después de un desastre. La necesidad
de combatir los sistemas que fallaron se reducirá, ya que podrían volver a aprovisionarse y
estar disponibles para su uso en minutos o en una hora. Con la recuperación ante desastres
y la conmutación por error adecuadas, debería existir poco o ningún tiempo de inactividad.
La figura 3-2 tiene en cuenta algunos escenarios, pero debería incluir mucho más sobre las
pruebas y la personalización del sistema.

Figura 3-2. El proceso de construcción estándar se puede mejorar para


eliminar la configuración manual
69
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Al mejorar su proceso de construcción, puede dedicar más tiempo a más

trabajo emocionante, y puede mejorar la innovación.

Aplicación de parches al sistema

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

peor si los sistemas no se parchean con regularidad.

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

trabajo, especialmente cuando el trabajo termina siendo a la 1 a. m. de la mañana.

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

trabajo fuera del horario laboral.

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.

Estas actualizaciones vienen en dos formas: actualizaciones de paquetes y erratas.

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.

Normalmente, durante el ciclo de actualización, el administrador de paquetes o los archivos de instalación

del paquete harían copias de seguridad de cualquier archivo de configuración que pueda estar

70
Machine Translated by Google

Capítulo 3 Gestión patrimonial

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.

Es en estas erratas que recibirá las correcciones de seguridad importantes cuando


se descubran vulnerabilidades en un paquete o archivo. Estas erratas deben
aplicarse a cualquier entorno de producción lo antes posible.

Nota Como administrador de sistemas de su patrimonio de Linux, asegúrese de recibir

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

parches, especialmente si la errata contiene correcciones de seguridad.

Puesta en escena

Al aplicar parches y erratas a los sistemas de su organización, es vital saber que


las nuevas actualizaciones no causan ningún efecto adverso en los sistemas en
ejecución. Para reducir ese riesgo, tiene sentido organizar sus actualizaciones.
Lo que quiero decir con esto es que su aplicación de parches debe tener un flujo
desde sus sistemas de menor prioridad hasta sus sistemas de mayor prioridad.
Comenzaría parcheando sus sistemas de menor prioridad, como un entorno de espacio
aislado. Ejecute pruebas automatizadas o haga que un equipo de pruebas firme la
plataforma para confirmar que nada se ha roto durante el último ciclo de parches. Una
vez que esté seguro de que nada se ha visto afectado por los nuevos lanzamientos de
parches, puede continuar con su próximo entorno (Figura 3-3).

71
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Figura 3-3. Flujo típico de aplicación de parches

El diagrama de flujo de ejemplo solo tiene en cuenta las pruebas después de la


entorno sandbox y no considera paquetes que son diferentes en diferentes plataformas.
Para esta configuración, sería beneficioso contar con pruebas automatizadas hasta los
entornos de preproducción. Como la preproducción debe ser un espejo de la producción,
está mejor posicionado después de que se haya parcheado la preproducción para saber si
algo se romperá en la producción después de que se haya completado el parche.

Sistemas de gestión de parches


El uso de una plataforma de administración de parches como Spacewalk o Red Hat Satellite
ayudará a administrar los ciclos de administración de parches. Estos sistemas están
construidos con una funcionalidad que permite a los administradores de sistemas delimitar
parches o erratas para nunca llegar a un entorno.

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

Capítulo 3 Gestión patrimonial

"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.

Tabla 3-1. Sistemas de gestión de parches

Nombre del sistema ¿Para qué se usa esto?

Satélite Red Hat Se utiliza para sistemas RHEL 6 y superiores. Se puede usar para

parchear y aprovisionar sistemas y más.

Administrador de SUSE Se utiliza para los sistemas SUSE y se puede utilizar para la aplicación de

parches y el aprovisionamiento del sistema.

Nota En el próximo capítulo, discutiré el servidor Satélite con un


poco más de detalle. Si quieres saber más, te recomiendo leer parte de
la documentación oficial para obtener más información.

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

Capítulo 3 Gestión patrimonial

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.

Si el plan es infalible, la implementación puede ser realizada por administradores de sistemas

menos experimentados, lo que permite distribuir la carga de trabajo.

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

hacer de varias maneras.

Restaurar sistema desde copia de seguridad

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

un tiempo que no tiene.

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

Capítulo 3 Gestión patrimonial

Reversión de la gestión de paquetes

Otro método de reversión relativamente rápido es usar el sistema de


administración de paquetes para revertir. Con Red Hat Enterprise Linux o cualquier
distribución que use yum, tiene la capacidad de retroceder usando el comando "yum history
undo <id>". Otras distribuciones como Ubuntu y SUSE son un poco más complicadas.

Reinstalación de Paquetes

El enfoque un poco más irritante sería la eliminación y reinstalación del paquete


defectuoso. El problema con este enfoque es que el proceso de descubrimiento para
encontrar el paquete ofensivo le llevaría la mayor parte de su tiempo si está parcheando
una gran cantidad de paquetes y sistemas.
Aunque esto resolvería el problema, gastará tiempo que quizás no tenga durante su ventana de
parche.

Reimplementación del sistema

El enfoque de mazo sería destruir el sistema y volver a implementarlo. Algo que se


puede hacer en sistemas de menor prioridad como arenero, pero definitivamente no es
algo que la mayoría de las organizaciones hagan en producción.

Copia de seguridad y recuperación

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

Capítulo 3 Gestión patrimonial

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.

Directorios y archivos importantes


Hay algunos directorios estándar de los que es importante hacer una copia de seguridad si
necesita hacer una copia de seguridad a nivel de sistema de archivos. Estos directorios deben
incluir, entre otros, lo siguiente:

/etc
/casa
/raíz
/usr

/optar
/svr

/var (asegúrese de excluir registros o cualquier elemento grande que no sea necesario)

Los directorios anteriores deben comprimirse con la herramienta de su elección. Ese


archivo se puede enviar a una ubicación de copia de seguridad. Puede ser cualquier tipo de

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

dentro de una ventana determinada, elija sabiamente.

Copias de seguridad de máquinas virtuales

La mayoría de los proveedores de máquinas virtuales tienen la capacidad de tomar

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

Capítulo 3 Gestión patrimonial

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

requerirían que la máquina virtual se apague primero, lo que no siempre es posible.

Los administradores de la plataforma de virtualización deben tener soluciones implementadas, pero

en caso de que no se realicen copias de seguridad, asegúrese de que al menos toma instantáneas cuando

realiza un posible trabajo destructivo.

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

para recuperarse del desastre.

El objetivo de la recuperación ante desastres no es garantizar que se cubran todos los puntos únicos de

falla, sino más bien cómo volver a la producción.

Mejores estrategias basadas en tiempos de recuperación

Exploremos algunas opciones de recuperación ante desastres y analicemos cuáles podrían adaptarse a

su organización.

Centros de datos replicados

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

requeriría una conectividad de buena calidad entre ambos centros de datos.

77
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Clústeres extendidos

Técnicamente, esta no es una solución de recuperación ante desastres, pero permite


que los centros de datos sean conmutados entre sí, lo que permite reducir el tiempo de
inactividad y brinda la posibilidad de cambiar de centro de datos cuando se requiere
mantenimiento.
Sin embargo, esta solución requiere una infraestructura que puede ser clústeres.
Todo, desde el almacenamiento hasta el equipo de red, deberá configurarse de tal manera
que sea posible la conmutación por error.

Infraestructura como código

Dado que la mayoría de las organizaciones ya han comenzado a adoptar el mundo


de la automatización, este método de recuperación ante desastres no debería parecer del
todo extraño.
Si todo lo implementado y configurado en su patrimonio está automatizado, todo lo que
necesitaría recuperar para continuar operando sería el código para ejecutar su
automatización. Si se realiza una copia de seguridad y se restaura en centros de datos o
plataformas en la nube, la automatización podría ejecutarse para reconstruir todos los
sistemas requeridos por su organización. Este enfoque requeriría un alto grado de
organización e implicaría un proceso de construcción estricto que solo permite que los
sistemas se construyan a partir del código.
Existe el elemento de datos reales que necesitaría ser restaurado en

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

Capítulo 3 Gestión patrimonial

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.

Malas prácticas comunes


Antes de ver algunas buenas prácticas para la administración de bienes, veamos algunos ejemplos

de algunas prácticas no tan buenas.

Plantillas de máquinas virtuales


Anteriormente, hablamos sobre el uso de plantillas de máquinas virtuales para construir sistemas

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

dejar su patrimonio abierto a la implementación de sistemas que fallarán en el escaneo de

cumplimiento.

Si utiliza plantillas de máquinas virtuales como proceso de compilación de Linux, asegúrese de

que te mantengas al tanto de mantener tus plantillas en orden. Cree un trabajo de

programación regular en su plan de trabajo que no se pueda omitir para que alguien verifique

el estado de las plantillas y se asegure de que estén actualizadas.

79
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Parches o falta de ellos


A veces, la aplicación de parches al sistema se retrasa y, en muy raras ocasiones, se
olvida. Tener los sistemas actualizados es extremadamente importante si los sistemas
son accesibles desde el mundo exterior. No hace falta decir que si una vulnerabilidad
conocida no se parchea en su sistema, usted y su organización se exponen
potencialmente a un desastre. Incluso las plataformas a las que no se puede acceder
desde el mundo exterior deben parchearse y actualizarse periódicamente. Estos
sistemas parecen seguros, pero si un intruso pudiera acceder a su red, tener todos sus
sistemas lo más seguros posible al menos dificultaría que se produjeran más daños.

Cortafuegos deshabilitado

Los cortafuegos locales de Linux pueden ser complicados de mantener y


configurar cuando se ejecutan miles de sistemas, pero su importancia no se puede
enfatizar lo suficiente. Al igual que los sistemas de parches en una red segura reducen
el riesgo de daños adicionales si un intruso incluso logra violar su red, los firewalls
locales de Linux podrían proporcionar otro inconveniente para el posible intruso.

Automatice la configuración del cortafuegos en las plataformas de administración


de configuración de compilación y uso para aliviar el dolor de administrar estos
cortafuegos. Podrían marcar la diferencia algún día.

SELinux deshabilitado o permisivo


La mayoría de las veces, cuando visito nuevos clientes, descubro que han deshabilitado
SELinux o que no han configurado SELinux en modo de aplicación en sus sistemas, a
veces debido al hecho de que no saben cómo configurar SELinux o no han entendido los
beneficios. .

80
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Tener tantas opciones disponibles para garantizar que un sistema permanezca


seguro solo puede ser una ventaja para cualquier organización. Establecer SELinux en el
modo de cumplimiento es a menudo un requisito del análisis de cumplimiento. Acostumbrarse
a usar SELinux ahora hará que la vida sea mucho mejor cuando se vea obligado a habilitarlo
más adelante.

Uso de repositorios comunitarios


El uso de distribuciones empresariales de Linux como Red Hat Enterprise Linux no se
limita solo al uso de repositorios de Red Hat. Los repositorios comunitarios como EPEL
se pueden habilitar y usar si lo desea. A veces, esto se debe a una buena razón, como
requerir un paquete que no está disponible en los repositorios de Red Hat y, a veces, se
puede habilitar porque una organización desea usar paquetes de última generación, lo
cual, cuando usted y su organización lo admiten por completo, está bien. Sin embargo, no
está bien si depende del uso del soporte empresarial. El problema sería potencialmente
contaminar un sistema en la medida en que dejara de ser compatible hasta que elimine
paquetes y actualizaciones no autorizados. Esto podría proporcionar grandes dolores de
cabeza al plantear casos de soporte cuando tiene problemas en producción.

Guiones, guiones y más guiones


El uso de scripts bash o shell para administrar su plataforma puede parecer una gran idea,
pero puede salirse fácilmente de control. Los nuevos principiantes y los que se van crean
sus propios guiones y, antes de que te des cuenta, ya nadie sabe qué se usa para qué.
Peor que eso, algunos de estos scripts son menos que deseables y en algunos casos son
completamente peligrosos.
Las plataformas de gestión deben usarse tanto como sea posible, y todos los scripts
deben estar en forma de automatización ejecutada desde una plataforma de automatización.

81
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Ejecutando como root

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.

Construcción de sistemas desechables

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

Capítulo 3 Gestión patrimonial

Automatice tanto como sea posible


Este se explica por sí mismo, pero siempre que sea posible intente automatizar lo que
hace. La idea de hacer cualquier cosa manualmente hoy parece extraña, ya que es
probable que deba repetir el trabajo en un momento u otro.
Tener la automatización en su lugar simplifica todo y también proporciona una buena
fuente de documentación para cualquier principiante. Además, escribir código de
automatización es mucho más emocionante e interesante que hacer clic en Siguiente en
una instalación.

Buscar antes de crear


Antes de lanzarse de cabeza a escribir una nueva función de Ansible o cualquier tipo de
guión, siempre haga su debida diligencia y compruebe si alguien ya lo ha hecho por
usted. Lo más probable es que encuentre lo que está buscando y se ahorre tiempo y
esfuerzo. Reinventar la rueda es solo una pérdida de tiempo y, en la mayoría de los
casos, el contenido que encuentra se ha tardado en crearse con una buena cantidad de
esfuerzo y pensamiento.

Compartir conocimientos y colaborar


Comparte lo que aprendes con tus compañeros de trabajo y trata de involucrar a tantas
personas como puedas en los proyectos de trabajo. Organiza talleres y genera interés en
lo que haces. Esto abrirá la puerta para que sus gerentes le den más tiempo para innovar
y mostrar su valor a su organización. Por favor, no sienta que lo que aprende debe
guardarse solo para usted; nunca se sabe si alguien puede ofrecer una vista alternativa
con un giro interesante para hacer algo mejor. Recuerde, el código abierto es más que
código disponible. Es colaboración y estar abierto.

83
Machine Translated by Google

Capítulo 3 Gestión patrimonial

Fuente de control

Todo lo que desarrolle para administrar su patrimonio debe almacenarse en una


plataforma de control de fuente como Git. El código debe tener una revisión de código
realizada y absolutamente nunca debe ejecutarse en producción hasta que se hayan
realizado pruebas rigurosas. Todos tenemos las mejores intenciones cuando escribimos código y

a menudo puede ser cegado por los errores que cometemos. Un segundo par de ojos a
veces puede marcar la diferencia.

Reevaluación de los requisitos del sistema


Cuando se ejecuta una gran propiedad de máquinas virtuales, es posible que los recursos
necesarios no siempre reflejen los recursos solicitados para las compilaciones originales.
El uso de herramientas de monitoreo de estado lo ayudará a mantenerse al tanto de los
sistemas que en realidad no requieren los recursos que se les asignaron. Esto podría
permitirle liberar los recursos no utilizados para otros sistemas. Por supuesto, esto no
importará demasiado si su plataforma de virtualización se configuró para recuperar
automáticamente los recursos no utilizados.

Resumen
En este capítulo, se le presentaron los siguientes temas y puntos de discusión:

• Algunas formas obsoletas de trabajar que se han adoptado


a lo largo de los años. Cosas a evitar

• El proceso de construcción de Linux y cómo puede ser


mejorado. ¿Cuáles son algunos de los problemas que se
pueden encontrar y qué se puede hacer para mejorar el
proceso?

• Los procesos involucrados en el parcheo del sistema Linux y la


importancia de mantenerse actualizado

84
Machine Translated by Google

Capítulo 3 Gestión patrimonial

• Opciones de copia de seguridad y recuperación, incluidas ideas sobre


recuperación de desastres

• Malas prácticas comunes y cosas que idealmente no se deberían hacer


al administrar patrimonios de Linux

• Buenas prácticas y recomendaciones sobre cosas para empezar a


hacer

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

lo dejará en un montón de problemas, no tanto cuando el análisis de cumplimiento muestre agujeros

en su entorno. No solo encontrará cantidades masivas de vulnerabilidades de seguridad que podrían

causarle palpitaciones a cualquier persona de seguridad, sino que también lo dejará con una cantidad

deprimente de trabajo de remediación.

Para evitar estos problemas, se recomienda encarecidamente el uso de un software

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

de compilación se simplifica y la temida solución de seguridad se puede descargar a la plataforma

de administración para que la maneje por usted.

Algunas herramientas tienen un costo y, por esa razón, es importante

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

vida como administrador de sistemas de Linux.

© Kenneth Hitchcock 2022 K.


87
Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_4
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

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.

Herramientas de la plataforma Linux

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:

• Sincronización de paquetes desde repositorios externos

• Capacidad para segregar paquetes por entorno

• Capacidades de creación y puesta en marcha de Linux

• Escaneo e informes de cumplimiento

• Control de deriva de configuración

• Supervisión y registro de la plataforma

• Integración en plataformas de virtualización o en la nube

• Capacidad para trabajar en un entorno desconectado

• Debe ser escalable y confiable

88
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

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

o escribir la suya propia.

Herramientas de plataforma Linux disponibles

La Tabla 4-1 proporciona una lista de algunas de las herramientas de la plataforma Linux más comunes

que puede usar para administrar propiedades Linux pequeñas o grandes.

Tabla 4-1. Opciones de gestión de la plataforma Linux

Producto Descripción

sombrero rojo La principal herramienta empresarial de administración de patrimonio de


Satélite Linux de Red Hat. Se utiliza para gestionar patrimonios de RHEL 6 y

superiores. El producto ha existido durante casi dos décadas en el momento de

escribir este artículo.

Capataz Un producto comunitario utilizado para administrar el proceso de

construcción del sistema Linux. Foreman es upstream para Red Hat Satellite 6

Katello Un producto comunitario que proporciona administración de contenido

para Foreman. Katello es otro producto utilizado por Red Hat Satellite 6 como

su equivalente ascendente

Pulpa Un producto comunitario que administra repositorios de paquetes para

sistemas Linux. Pulp como Foreman y Katello es otro producto upstream

para Red Hat Satellite 6

SUSE Manager El producto empresarial de SUSE para gestionar plataformas SUSE.

SUSE Manager se basa en el producto comunitario Uyuni, que en sí

mismo es una bifurcación del proyecto Spacewalk.

(continuado)

89
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

Tabla 4-1. (continuado)

Producto Descripción

Paseo espacial Spacewalk se ha utilizado en el pasado como upstream para Red Hat Satellite

5. Hoy en día, sigue siendo una herramienta de gestión de plataforma Linux

comunitaria que ha sido abandonada por sus desarrolladores.

Uyuni Un sistema de gestión de plataforma comunitaria que proporciona

funciones de aprovisionamiento de sistemas y gestión de parches.

SaltStack administra la administración de la configuración y presenta

la capacidad de ejecutar un análisis de cumplimiento. Uyuni es una bifurcación

del producto Spacewalk con SaltStack integrado. Uyuni también es upstream

para SUSE Manager

eurolinux Otra herramienta comunitaria de gestión de bienes de Linux que parece

estar también bifurcada de Spacewalk con integración de SaltStack

Nota Las plataformas bifurcadas de Spacewalk son en su mayoría iguales,


excepto por la inclusión de SaltStack. Si decide utilizar uno de ellos, la decisión
deberá basarse en la frecuencia de reparación del producto para asegurarse de que
tiene correcciones de errores y parches de vulnerabilidades disponibles.

Selección de su herramienta de plataforma Linux

Con la mayoría de las cosas en el mundo del código abierto, existen productos empresariales y

productos comunitarios. Según los requisitos de su organización y las restricciones presupuestarias, es

posible que tenga opciones limitadas. Para comprender cómo tomar la decisión correcta sobre qué

herramienta debe usar, veamos lo que debe preguntarse:

90
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

• Soporte: ¿Necesito soporte de un proveedor empresarial?


si encuentro problemas, o estoy feliz de trabajar con las
comunidades y sus foros para obtener mi respuesta?

• Distribuciones de Linux: ¿Qué distribuciones de Linux estoy administrando?


¿Tienen suscripciones empresariales que necesitan ser administradas?

• Funciones: ¿De qué funciones no puedo prescindir? Soy

¿Estoy feliz de usar múltiples plataformas para proporcionar


todas las funciones que quiero, o necesito una herramienta
que tenga todo en un solo lugar?

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

Capítulo 4 Herramientas de gestión patrimonial

Para respaldar su decisión y construir su caso, debe tener confianza


el producto es el producto adecuado para usted. Para hacer esto, debe estar familiarizado
con él y comprender sus limitaciones. Esto se puede lograr haciendo lo siguiente:

• Haga que el vendedor haga una demostración del producto: si el

producto es un producto pagado, pídale al vendedor que venga a visitarlo.


Solicite una demostración del producto para ser mostrado a usted ya
los tomadores de decisiones de su empresa. Esto aumentará sus
posibilidades de obtener el producto que desea si tiene más visibilidad
dentro de su organización. Los tomadores de decisiones tendrán
entonces toda la información disponible para
ellos para tomar una decisión informada.

• Prueba de concepto: Otra forma útil de comprender cómo funciona una


herramienta de plataforma es mediante la creación de un sistema
de prueba de concepto para probar. Si desea probar un producto
empresarial, hable con el proveedor y solicite una suscripción o

licencia de demostración. Los productos de la comunidad normalmente


no requieren suscripciones, pero algunos pueden requerir o solicitar
una donación.

Sugerencia Es recomendable probar una versión un poco más antigua de un


producto comunitario para su prueba PoC. Esto debería reducir algo del dolor que
puede surgir de las tecnologías de última generación. Cíñete a las ramas estables
cuando todavía estés aprendiendo.

92
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

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

Capítulo 4 Herramientas de gestión patrimonial

Implementación del sistema

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

Para mí, la mejor función que se presentó con Satellite 6 fue la

revisión completa del sistema de gestión de contenidos. Anteriormente, en los


sistemas Satellite 5 y Spacewalk, el contenido se segregaba en "canales".
Estos "canales" requerían la clonación de uno a otro para crear un flujo de
preparación para que aplicara contenido desde el desarrollo hasta la prueba y
la producción. Si esto no tiene sentido, no se preocupe; confundió a suficientes
personas cuando traté de mostrárselo en el pasado. Lo desglosaré un poco más
en la sección "Paseo espacial" un poco más adelante para explicar un poco más.

94
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

Vistas de contenido

Afortunadamente, Satellite 6.x ha proporcionado una mejor solución con la ayuda de


Katello. El nuevo sistema ya no usa "canales", sino que usa un nuevo concepto llamado
"vistas de contenido". Una "vista de contenido" es una colección de contenido que Satellite
puede proporcionar a un sistema. Este contenido puede incluir módulos de marionetas,
roles de Ansible o repositorios yum estándar. Donde realmente brilla una "vista de
contenido" es en su capacidad de ser versionada. Esto significa que, a medida que se
descargan nuevos paquetes en Satellite o se agregan nuevos módulos de marionetas, las
"vistas de contenido" previamente versionadas no se ven afectadas. Lo que significa que
cualquier sistema asignado a estas "vistas de contenido" no verá el nuevo contenido.
Perfecto si desea organizar su contenido a lo largo de sus ciclos de vida.

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

Capítulo 4 Herramientas de gestión patrimonial

Flujo de gestión de contenido

En la Figura 4-1 se muestra un ejemplo básico de contenido que se actualiza y se


aplica a un entorno de ciclo de vida.

Figura 4-1. Entorno típico del ciclo de vida

El flujo básico de la Figura 4-1 muestra cómo las vistas de contenido se


actualizan, publican y envían a diferentes entornos de ciclo de vida, lo que permite
la migración de contenido, como actualizaciones de paquetes o erratas, desde
entornos de prueba hasta entornos de producción.

Sugerencia Las vistas de contenido se pueden anidar. Se denominan vistas de


contenido compuesto.

96
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

Aprovisionamiento del sistema

Con la introducción del uso de Foreman en lugar de Cobbler, el proceso de


implementación de Linux se ha simplificado en cierta medida y complicado en otra. La
complejidad se ha centrado principalmente en garantizar que las organizaciones y las
ubicaciones se hayan configurado para todos los componentes del proceso de
aprovisionamiento. Cosas como "sistemas operativos" y "subredes de red" deben agregarse
a la "organización" y la "ubicación" correctas.
Una vez que haya comprendido los problemas de agrupación, el resto de la configuración
se vuelve un poco más sencilla que la configuración anterior de Cobbler.

Una cosa importante a tener en cuenta sobre el proceso de aprovisionamiento


del sistema es que cuando implementa su Satélite, debe asegurarse de agregar las
funciones para la implementación del sistema. La documentación oficial de Red Hat
explica el proceso con bastante claridad y proporciona todos los parámetros que
necesitará. Si prefiere no utilizar la documentación, también puede consultar el comando
"satellite-installer --help" para obtener más parámetros.
Se explican por sí mismos y deberían tener sentido cuando los vea.
Mi recomendación es ceñirse a la documentación oficial cuando instale su Satélite por
primera vez. Una vez que haya hecho uno, el comando de ayuda es útil para recordarle
lo que necesita.

Aplicación de parches al sistema

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

Capítulo 4 Herramientas de gestión patrimonial

El mayor cambio con respecto a las versiones anteriores de Satellite se mantiene


en torno a las versiones de "vista de contenido". Cuando haya nuevo contenido disponible
y desee implementarlo en su propiedad, recuerde seguir el diagrama de flujo de
administración de contenido más adelante en el capítulo. Una vez que su "vista de
contenido" haya sido promovida a los entornos de ciclo de vida de su sistema, podrá
ejecutar las actualizaciones de su sistema.

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

Capítulo 4 Herramientas de gestión patrimonial

Razones para usar Satélite

• Capacidad para aprovisionar sistemas RHEL con una plataforma de

aprovisionamiento más fácil de usar

• Habilidad de aplicar parches y actualizaciones a través de


ambientes

• Producto empresarial con soporte continuo y mejoras de características

• Escaneo y remediación de cumplimiento integrados

• Gestión de la configuración con Puppet o Ansible

Razones para no usar el satélite

• Los costos involucrados podrían estar fuera de rango para una

organización pequeña.

• No recomendado para fincas pequeñas de menos de 30

sistemas más o menos.

• No es ideal para sistemas que no sean de Red Hat.

Administrador de SUSE

SUSE Manager 4.x es la última herramienta de administración de la plataforma SUSE Linux.

SUSE Manager 4.x se basa en el producto comunitario Uyuni (ya - uni).

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

Capítulo 4 Herramientas de gestión patrimonial

Donde Spacewalk fracasó con su gestión de configuración deficiente, Uyuni se destacó al


desechar la antigua herramienta de gestión de configuración y reemplazarla con SaltStack.
Esta decisión fue un golpe de genio y posiblemente una buena decisión por la que Uyuni es el
proyecto upstream de SUSE Manager.

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.

Configuración del administrador de SUSE

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.

Si pertenece a una organización de SUSE, SUSE Manager 4 es la herramienta que debe


considere usar para su entorno. Lea la documentación oficial, cree un sistema de prueba
de concepto y compare su funcionalidad con lo que está disponible.

Razones para usar SUSE Manager

• Puede aprovisionar sistemas SUSE con una plataforma de


aprovisionamiento central.

• Habilidad de aplicar parches y actualizaciones a través de


entornos.

100
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

• Producto empresarial con soporte continuo y función


mejoras

• Gestión de la configuración con SaltStack.

Razones para no usar SUSE Manager


• Donde los costos exceden la utilidad

• Uso de distribuciones que no son de SUSE que deben administrarse

• Administrar una pequeña propiedad de menos de 30 o más sistemas

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

Una buena característica de Foreman es que tiene la capacidad de aprovisionar no solo


plataformas Linux sino también hipervisores de virtualización. Una habilidad muy útil si
está buscando automatizar su patrimonio al "enésimo" grado.

Complementos

Foreman, sin embargo, por sí solo no ayuda en la gestión de contenido o la gestión


de configuración como Satellite 6.x. Para eso, deberá combinar Foreman con
complementos adicionales. Los complementos van desde Katello para la gestión de
contenido hasta la gestión de la configuración.

101
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

y automatización con Chef. Como Foreman es un proyecto de la comunidad, los


nuevos complementos están disponibles todo el tiempo y la funcionalidad crece
constantemente.

El código abierto también necesita dinero

Foreman es un producto comunitario que no requiere suscripciones ni licencias. El


proyecto acepta donaciones si te gusta lo que están haciendo. Si está dispuesto a hacerlo,
puede contribuir al proyecto y proporcionar algún recurso valioso de cualquier manera
que pueda.

Paseo espacial

Como la herramienta de administración que inició todo para la administración de la plataforma


Linux, Spacewalk merecía ser mencionado, aunque sea brevemente.

Abandonado

Desafortunadamente, Spacewalk ha sido abandonado por sus desarrolladores y se ha


dejado a otros para bifurcar y desarrollar el proyecto. Uyuni es uno de esos proyectos que ha
tomado lo que comenzó Spacewalk y actualmente está construyendo una herramienta
bastante atractiva. Canonical, la empresa de distribución de Ubuntu, es otra que utiliza una
variación de Spacewalk para la gestión de su plataforma.

Por qué fue bueno

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

Capítulo 4 Herramientas de gestión patrimonial

Ambiente de marionetas. Como Puppet era un poco difícil de dominar y comprender, la gestión de

configuración en Spacewalk fue una buena herramienta.


tener aunque no fuera lo mejor.

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.

Puesta en escena del entorno

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.

Gracias por tu servicio

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

algo nuevo y emocionante nuevamente.

Herramientas de aprovisionamiento

Otro tipo de sistema de gestión que se puede utilizar para gestionar su patrimonio es una

herramienta de aprovisionamiento dedicada. Técnicamente, Foreman es una herramienta de

aprovisionamiento y también lo es Satellite, pero una herramienta de aprovisionamiento dedicada.

103
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

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.

Panel de vidrio único


Cloudforms siempre se ha descrito como el único panel de vidrio en su propiedad.
Cloudforms tiene la capacidad de integrarse en VMware, RHV y varios proveedores de
nube como AWS y Azure para el aprovisionamiento, pero también podría integrarse con
Red Hat Satellite y Ansible Tower, lo que le brinda aún más control de su patrimonio.

Máquinas de estado

Con las opciones de integración disponibles, se pueden crear máquinas virtuales


e instancias en la nube con lo que se conoce como "máquina de estado". Un 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

Capítulo 4 Herramientas de gestión patrimonial

Portal de solicitud de usuario

Cloudforms o ManageIQ tiene la capacidad de usarse como un portal de solicitud de

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

conocimientos técnicos completen y soliciten sistemas.

Detrás de estas pantallas simples están las máquinas de estado y la automatización

configurada para ejecutar las tareas.

contracargo

Otra instalación realmente agradable es la capacidad de controlar el contracargo de cualquier

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

• Muy simple de instalar ya que Cloudforms se implementa desde un dispositivo

de plantilla.

• Cloudforms es una herramienta rica en características con

muchas posibilidades.

• Capacidad para interactuar con muchos sistemas y proporcionar una única

herramienta de administración para administrarlos a todos.

105
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

• Se pueden aprovisionar centros de datos completos una vez que


se ha desplegado el dispositivo.

• Se pueden usar portales de usuario personalizados para que los usuarios soliciten

sistemas

• Integración con plataformas como ServiceNow.

Desventajas
• Cloudforms tiene una curva de aprendizaje técnico pronunciada.

• La configuración no es la más fácil de entender,


y lleva tiempo acostumbrarse, pero una vez que los usuarios se
familiarizan con él, las posibilidades son infinitas.

• El desarrollo de funciones también se ha ralentizado en los últimos


años, lo que posiblemente indica que el final del producto está
cerca.

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

Capítulo 4 Herramientas de gestión patrimonial

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

la plataforma desde el primer día.

Plataforma en la nube Terraform

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.

API y extracción de información útil


Con todas las herramientas de administración disponibles en la actualidad, puede resultar

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

plataformas de administración a través de su API.

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

integración de API con otras plataformas.

El único inconveniente de estas herramientas es que están más estructuradas en torno a la

implementación de sistemas. Las tareas de tipo de automatización y aplicación de parches pueden

necesitar un poco de ajuste para ponerse en marcha.

107
Machine Translated by Google

Capítulo 4 Herramientas de gestión patrimonial

Por qué no escribir su propia herramienta

Escribir su propia herramienta personalizada que aproveche diferentes herramientas a través de su

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

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

desde el primer momento. ¿Existe esta herramienta?

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.

Herramientas para tuberías

Jenkins o Tekton podrían ser una forma útil de conectarse a la API de los sistemas de gestión para

automatizar las implementaciones o la aplicación de parches al sistema. Las llamadas a la API se

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

Capítulo 4 Herramientas de gestión patrimonial

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

la promoción y publicación de vistas de contenido.

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

para que haga el trabajo por mí.

Resumen
En este capítulo, se le presentó lo siguiente:

• Plataformas de administración de patrimonio de Linux para agilizar

el proceso de compilación de Linux, la aplicación de parches y la gestión

de la configuración

• Las diferentes herramientas de gestión patrimonial disponibles en la actualidad

y por qué usarlas o no

• Herramientas de aprovisionamiento en la nube como Cloudforms, ManageIQ


y Terraform

• Uso de la API de herramientas de administración para agilizar su uso e

incorporar su funcionalidad en su día a día.


automatizació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.

En este capítulo, profundizaremos en las artes oscuras de la manipulación de sistemas.

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.

Este capítulo analiza la automatización en general y no se centra en un producto en

particular. La idea es entender los conceptos de automatización y cómo se deben aplicar de la

mejor manera posible.

Discutiremos temas como "cuándo debe automatizar y cuándo no". Exploraremos el uso de técnicas

para automatizar la automatización y cuándo se debe hacer.

Finalmente, terminaremos el capítulo discutiendo las mejores prácticas y el uso de secuencias

de comandos de shell, en el que discutiremos los diferentes lenguajes de secuencias de comandos de


shell que se pueden usar.

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.

© Kenneth Hitchcock 2022 K. 111


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_5
Machine Translated by Google

Capítulo 5 Automatización

La automatización ha evolucionado bastante durante la última década, con el


desarrollo de nuevas herramientas y plataformas de automatización. Los días de usar
scripts personalizados que se ejecutan desde trabajos cron están llegando a su fin, si no
es que ya. Las soluciones de automatización complejas ahora administran todo, desde la
creación de sistemas hasta los sistemas de autorreparación.
La automatización no solo tiene que ser técnica. La mayoría de las
organizaciones ahora están buscando soluciones para automatizar los procesos comerciales
junto con la gestión técnica de su patrimonio. Incorporar la automatización para crear
solicitudes de cambio o generar tickets de soporte se está convirtiendo más en un requisito
que en un lujo. El tiempo y el esfuerzo ahorrados es lo que hace que más organizaciones se
den cuenta de que no tener una automatización completa en proceso significa un desastre
para mantenerse al día con los competidores.

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.

Recuerde siempre al escribir código de automatización:


"¿Es mi código idempotente?"

112
Machine Translated by Google

Capítulo 5 Automatización

Saber cuándo y cuándo no automatizar


La mitad de la batalla al escribir código de automatización es saber qué automatizar y qué no debe

automatizarse. Mi regla general siempre ha sido automatizar todo lo que voy a repetir en algún momento,

lo que con mi línea de trabajo siempre está en las cartas.

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

haber instalado el sistema manualmente y ahorrado un montón de tiempo”.

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

está preparando para posibles reconstrucciones en caso de desastre.

Según Gartner, es probable que las organizaciones que no automatizan experimenten una

caída del 25 % en la retención de clientes. La automatización está creciendo rápidamente en todas

partes, y si usted o su organización se quedan atrás, corren el riesgo de ser superados por sus

competidores.

Para entender completamente cuándo o cuándo no automatizar, veamos algunos

Razones a favor y en contra de la automatización.

Razones para automatizar

Automatizar debería ser el valor predeterminado hoy; sin embargo, si necesita razones, aquí hay

algunas que vale la pena mencionar:

• Construcciones repetibles y predecibles

• Infraestructura como código

113
Machine Translated by Google

Capítulo 5 Automatización

• Código como documentación

• Ahorro de tiempo y costos

• Cambio de cultura organizacional

• Riesgo reducido

• Fomentar la innovación

Razones para no automatizar

Es difícil pensar en razones para no automatizar nada hoy en día, pero a veces hay

razones, aunque no sean muy buenas:

• Una sola tarea que no se repetirá nunca. Incluso entonces,


hay razones para automatizar esto también.

• La organización aún no ha madurado para aceptar


automatización.

• No hay habilidades disponibles o tiempo para capacitación.

Estos puntos anteriores no son realmente buenas razones, sino más excusas

en mi opinión personal. El mundo de la gestión de patrimonios y la construcción de

patrimonios está cambiando rápidamente en la actualidad, y no automatizar no debería ser una

opción. Como administradores de sistemas Linux, nuestro trabajo ha cambiado, nos guste o no.

Ya no somos administradores de sistemas Linux, ahora somos ingenieros de automatización.

Administración del Estado

Otra cosa muy importante que debe comprender acerca de las diferentes plataformas de

automatización es su capacidad para administrar el estado del sistema. Algunas plataformas

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

para ver si se ha cambiado algo. Cuando se detecta un cambio de estado, la configuración se

actualiza para que coincida con el estado deseado de la plataforma de automatización.

114
Machine Translated by Google

Capítulo 5 Automatización

Sugerencia El uso de una plataforma que verifique constantemente el estado


del sistema en función del estado deseado garantizará que ejecute un entorno
que seguirá siendo estándar. Esto es muy útil cuando tiene diferentes personas
que podrían realizar cambios en el sistema que podrían causar interrupciones en
el sistema. Este enfoque también reducirá la posibilidad de desviación de la
configuración.

Herramientas de automatización

Todos podemos estar de acuerdo en que la automatización no desaparecerá pronto y, para no

quedarse atrás, es importante comprender qué herramientas debe usar.

La adopción de prácticas de automatización requerirá un conjunto de herramientas y lenguajes de

desarrollo que deberá aprender; cuáles usar requerirán que tome una decisión informada.

En las próximas páginas, discutiremos las diferentes opciones disponibles

para usted hoy y discuta qué los hace buenos o malos para usar.

Lenguajes de scripting de automatización

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

código de automatización: YAML, Ruby, Python y secuencias de comandos de shell.

YAML

"YAML no es un lenguaje de marcado" es el lenguaje principal utilizado por las plataformas de

automatización como Ansible y SaltStack. YAML es uno de los lenguajes de secuencias de

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

Estos no son los espacios que buscas


YAML es conocido por quejarse del formato, que es un área que puede molestar a las
personas cuando aprenden a codificar con YAML por primera vez. La sangría debe
ser 100% correcta, de lo contrario, su código no se ejecutará.
A YAML no le gusta el uso del carácter de tabulación y solo acepta caracteres
de espacio estándar para la sangría. El carácter de tabulación en la mayoría de
los editores se reemplaza con el número correspondiente de espacios para que este
proceso parezca que se han utilizado los valores de tabulació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
---

- nombre: "Construir servidor web Linux"


anfitriones: servidores web

hecho realidad

Tareas:

- nombre: "Instalar el último paquete apache httpd"


ansible.integrado.yum:
nombre: httpd
estado: último

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

El siguiente es un ejemplo de un código de módulo de marionetas. Marioneta incluye


dos API de Ruby para escribir funciones personalizadas. Hay más en un módulo
de marionetas que lo siguiente, pero solo para darle una idea básica de cómo se
ve el código, pensé que valdría la pena ver un ejemplo:

clase hola mundo (


$file_path = undef
){
notificar { "¡Hola mundo!": mensaje => "Estoy en el entorno $
{environment}"}
a menos que $file_path == undef {
archivo{ $ruta_archivo :
asegurar => archivo,
content => "Estoy en el entorno ${environment}",
}
}
}

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.

# Ejemplo de módulo de Python


def suma(x, y):
"""Esta aplicación devuelve el resultado de x + y"""

resultado = x + y
resultado devuelto

print("El valor de mi función python es", add(3,4))

118
Machine Translated by Google

Capítulo 5 Automatización

Secuencias de comandos de shell

Las secuencias de comandos de Shell se pueden usar para la automatización, pero no se

recomiendan, principalmente debido al hecho de que otros lenguajes y herramientas de 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

lenguaje de secuencias de comandos idempotente. Implementar la idempotencia significaría un poco

de codificación adicional.

Nota La mayoría del código de automatización que generalmente se escribe


en estos días es YAML para plataformas como Ansible y SaltStack. Las otras
variaciones son el código de tipo Ruby para Puppet y Chef. No es común
ponerse manos a la obra escribiendo módulos de Ruby o Python.

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

aprovechan los lenguajes de secuencias de comandos discutidos anteriormente.

Automatización en Herramientas de Gestión Patrimonial

En el Capítulo 4, hablamos sobre las herramientas de administración de la plataforma Linux y

mencioné que algunas tienen herramientas de automatización integradas. En la mayoría de los casos y

tradicionalmente en el pasado, las instalaciones de automatización no brindaban suficiente funcionalidad

para que se las considerara una plataforma de automatización absoluta.

Hay excepciones a esto ahora con herramientas de administración actualizadas como Uyuni que ha

incluido el uso de SaltStack. cuanto de el


Las características de SaltStack están disponibles y quedan por probar.

119
Machine Translated by Google

Capítulo 5 Automatización

Sin embargo, para evitar la falta de funciones de automatización que pueden

faltan herramientas de administración de bienes como Red Hat Satellite, se recomienda

considerar el uso de una plataforma de automatización dedicada a administrar todas las

necesidades de automatización de su patrimonio. Estas plataformas deben incluir todas las

funciones para que pueda automatizar completamente su patrimonio.

Razones para usar

• Ya en su lugar

• Sin presupuesto para otras herramientas

• Habilidades ya implementadas

• Ahorrar tiempo

• Tiene una buena herramienta de automatización integrada con suficientes

funciones para comenzar

Razones para no usar

• Funcionalidad limitada

• Complejidad añadida

• Requerir separación con RBAC

Plataforma de automatización Ansible

Sin duda, Ansible está presentando argumentos sólidos para ser la herramienta de

automatización líder en el mercado, al menos en el momento de escribir este libro. El

crecimiento de Ansible ha sido impresionante en los últimos años y ha ido ganando popularidad

entre más usuarios y organizaciones cada día. El crecimiento de la comunidad y la adopción de

proveedores en todos los ámbitos para crear módulos para Ansible continúan justificando por qué

muchas personas eligen Ansible como la herramienta de automatización preferida.

120
Machine Translated by Google

Capítulo 5 Automatización

Sin tratar de predecir el futuro, creo firmemente que Ansible va a


estar alrededor por un tiempo. La razón por la que digo esto se debe a algunas cosas:

1. Red Hat, que adquirió Ansible en octubre de 2015, está completamente


detrás de Ansible y su desarrollo. Hay mejoras constantes todo el
tiempo, y claramente tienen grandes planes para su futuro.

2. La curva de aprendizaje de Ansible es mucho más indulgente que


otros productos en la misma área. La gente simplemente prefiere
usar algo que no requiere una maestría para entenderlo.

3. La adopción comunitaria está creciendo casi al mismo ritmo


día con más y más proveedores proporcionando nuevos
módulos todo el tiempo.

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

Agujero de seguridad potencial

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

Ansible está disponible en versiones empresarial y comunitaria. Tanto los productos


empresariales como los comunitarios tienen dos "tipos" de Ansible que se pueden
instalar. Existe la interfaz gráfica que se puede utilizar y una versión de línea de
comandos.

Línea de comando

En el Capítulo 2, analizamos brevemente cómo se puede instalar y utilizar la herramienta


de línea de comandos de Ansible. Cubrimos cómo hay beneficios adicionales de

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

Recomendación El uso de la herramienta gráfica para Ansible es el


enfoque recomendado, principalmente porque no se ha replicado funcionalmente
fácilmente con la herramienta de línea de comandos.

Interfaz gráfica del usuario


Lo que parece estar atrayendo a nuevos usuarios a Ansible es la interfaz gráfica
de usuario que se puede usar con Ansible Automation Platform. Al igual que con

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.

Razones para usar Ansible

• Fácil de aprender y comenzar

• Comunidad en crecimiento con recursos de código masivos


disponibles

• Excelente documentación y ejemplos

• Capacidad para administrar cualquier cosa que pueda abrir un control remoto
conexión a

• Flexible

• Escalable

• Soporte empresarial

• Se están desarrollando nuevas características que pueden no hacer


a AWX

123
Machine Translated by Google

Capítulo 5 Automatización

Razones para no usar Ansible

• Si no necesita productos de nivel empresarial, es posible que esto


no sea para usted.

• La licencia de Ansible Tower puede ser costosa si tiene miles de


sistemas para monitorear con un presupuesto pequeño.

• Es posible que no sea necesario si tiene una pequeña cantidad de


sistemas a gestionar.

• Problemas relacionados con la seguridad de la clave SSH.

• Falta de comprensión del estado del sistema antes de que se


ejecuten las tareas.

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.

AWX es casi igual que su equivalente empresarial (Ansible Tower), excepto


por algunas características empresariales. Un ejemplo es que la autenticación basada
en roles se ha excluido de la versión comunitaria. Si un usuario necesitara estas funciones,
tendría que comprar una licencia de Ansible Tower.

Razones para usar AWX

• Fácil de aprender y comenzar

• Comunidad en crecimiento con recursos de código masivos


disponible

• Excelente documentación y ejemplos

124
Machine Translated by Google

Capítulo 5 Automatización

• Capacidad para administrar cualquier cosa que pueda abrir un control remoto
conexión a

• Producto comunitario sin costes

• Flexible

Razones para no usar AWX

• Si necesita características empresariales, deberá


considere Ansible Automation Platform o

otro producto

• Menos pruebas y trabajo realizado en AWX que en


Torre Ansible.

• No recomendado para entornos de producción.

• No todos los componentes de seguridad de AWX han pasado por


controles de seguridad como lo que se hace con Ansible Tower.

• No se admiten actualizaciones directas en el lugar entre


versiones.

• Problemas relacionados con la seguridad de la clave SSH.

• Falta de comprensión del estado del sistema antes de las tareas


son ejecutados.

pila de sal

Otra herramienta de administración de configuración basada en Python que se puede


usar es SaltStack. SaltStack viene en versiones comunitarias y versiones compatibles
con empresas.

125
Machine Translated by Google

Capítulo 5 Automatización

Comunicación de servidor a cliente

A diferencia de Ansible, SaltStack se puede configurar para ejecutarse de varias maneras


cuando se conecta al sistema que administra:

• SSH directo

• Agente y servidor

• Solo agente sin servidor de administración

Ejecución Remota

De manera similar a cómo Ansible se conecta a los sistemas y ejecuta comandos ad


hoc, SaltStack tiene la capacidad de ejecutar comandos de ejecución remota. Esta
funcionalidad es muy similar a lo que hace actualmente el servidor Satellite y lo que solía
hacer el servidor Spacewalk.

Gestión de la configuración

SaltStack es un poco más tradicional en la forma en que se realizaba la gestión de la


configuración en el pasado. La configuración se administra en el maestro SaltStack y se
envía a los sistemas que han cambiado o requieren una configuración actualizada. El
sistema maestro SaltStack controla el estado de sus clientes (secundarios) que administra a
través de la comprensión del estado en el que debe estar el sistema y los eventos que se
han desencadenado en el sistema de minions que el maestro está observando. Si algo cambia
que no debería, el maestro SaltStack revierte los cambios no autorizados.

Utiliza un bus de mensajes

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

Razones para usar SaltStack

• Curva de aprendizaje menos empinada.

• Enfoque modular.

• Masivamente flexible.

• Escalable.

• Funciona bien a escala. Miles de minions pueden

gestionarse al mismo tiempo con un rendimiento bastante


eficiente.

• Gestión de la configuración basada en eventos.

• Seguridad mejorada sobre otros productos.

• Rico en características.

Razones para no usar SaltStack

• Debido a un ciclo de liberación más lento, potencialmente podría no ser


para entornos de movimiento más rápido.

• Ha habido problemas en el pasado con los módulos


no ser capaz de administrar sus propias dependencias.
Requerir que los usuarios ejecuten entornos virtuales separados.

• No es el mejor soporte para sistemas que no son Linux.

• La instalación y la configuración pueden ser más desafiantes.

• La documentación puede ser difícil de entender y usar.

Marioneta

Puppet es un sistema de administración de configuración basado en Ruby que se usaba


bastante antes de la introducción de Ansible.

127
Machine Translated by Google

Capítulo 5 Automatización

sombrero rojo y títere

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.

Basado en agente de servidor

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.

Adopción potencial más baja

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.

La popularidad de estas distribuciones y su respectivo software de gestión no es un buen augurio


para Puppet.

Empresa y Comunidad

Puppet tiene versiones comunitarias y empresariales disponibles para acomodar a


los usuarios en todos los ámbitos. El soporte empresarial está disponible para organizaciones

corporativas que requieren acuerdos de soporte por motivos normativos o de cumplimiento, y


hay versiones comunitarias disponibles para los usuarios que no requieren soporte.

128
Machine Translated by Google

Capítulo 5 Automatización

Razones para usar marionetas

• Gestión de la configuración basada en el estado. Los clientes se

registran constantemente en Puppet Masters para cambios de

configuración.

• Excelente apoyo de la comunidad. Código de ejemplo fácilmente


disponible.

• La instalación es indolora y sencilla.

• Se ejecuta en casi todos los sistemas operativos disponibles.

• Plataforma idempotente.

Razones para no usar marionetas

• El soporte de Ruby está disminuyendo.

• Interfaz de línea de comandos basada en Ruby.

• Empinada curva de aprendizaje para desarrollar marionetas personalizadas


módulos.

• El código puede ser complejo y complicado.

• Menos control que otros productos.

Cocinero

Probablemente, uno de los productos más utilizados para la gestión de la configuración

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

abierto todo lo que es Chef.

Fiel a su trabajo, hoy, al momento de escribir este artículo, Chef tiene una versión comunitaria

de su herramienta de administración de configuración disponible para descargar y usar.

129
Machine Translated by Google

Capítulo 5 Automatización

Formas de utilizar Chef

Chef actualmente tiene tres formas en que los usuarios pueden usar su plataforma de automatización.

Servicio gestionado

Chef ofrece un servicio administrado para la organización o la pequeña empresa que no

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

completamente desde las instalaciones, Chef ofrece la posibilidad de descargar e instalar la

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.

Razones para usar Chef

• Buena integración con Git

• Muchos módulos y recetas de la comunidad


disponible en linea

• Flexible

• Herramientas disponibles para reducir las complicaciones de instalación

• Gestión de configuración basada en estado como Puppet

130
Machine Translated by Google

Capítulo 5 Automatización

Razones para no usar Chef

• El soporte de Ruby está disminuyendo.

• Curva de aprendizaje empinada para nuevos usuarios.

• Sin capacidades de inserción.

• La documentación no ha sido tan buena como la de otros productos.

• El soporte empresarial y los costos en las instalaciones pueden aumentar

si se utilizan grandes propiedades.

• No es ideal para organizaciones con patrimonios pequeños.

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.

Las tendencias del mercado

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

mercado no le dicen cuánto esfuerzo se ha invertido en configurar el entorno ni le muestran el retorno de la

inversión, pero le dan una mejor idea si un producto se usa más que otro. Lo último que desea hacer es

invertir tiempo en algo que se reemplazará en 6 a 12 meses.

131
Machine Translated by Google

Capítulo 5 Automatización

Ver por ti mismo

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.

• ¿Qué tan fácil es instalar la plataforma?

• ¿Qué tan simple es escribir y ejecutar el código?

• ¿Qué tan empinada fue la curva de aprendizaje para comenzar?

Estos puntos lo ayudarán cuando presente sus hallazgos a los titulares de su


organización y justifique el tiempo dedicado a probar los diferentes productos.

Empresa vs. Comunidad vs. Costo


¿Necesita un producto empresarial o puede utilizar un producto comunitario? Esta
pregunta normalmente se responde en milisegundos después de hacer esta pregunta
con algunas organizaciones, en gran parte debido a los requisitos normativos de
cumplimiento u otras razones similares. Cualquiera que sea la razón para usar cualquier
producto, hay otro aspecto muy importante en el que pensar.

El costo real que traerá el producto. Este no siempre es el costo de licencia o


suscripción de los proveedores, sino el costo del esfuerzo para que la plataforma esté en
posición de ser efectiva para su organización. Los proveedores venden productos a muchas
personas basándose en buenos ejemplos y casos de uso prediseñados.

132
Machine Translated by Google

Capítulo 5 Automatización

Estos proveedores pueden olvidarse de explicar la capacitación requerida o el tiempo que se

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

que pueda usar el producto de la manera más efectiva posible.

Ciclo de vida del producto

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

posiblemente el dinero de su organización. Antes de comprometerse con cualquier producto,

asegúrese de que la hoja de ruta se vea saludable.

Automatización con Herramientas de Gestión


Para ampliar un poco más el uso de las herramientas de automatización que se envían con algunas

de las diversas herramientas de administración, analicemos qué puede hacer para mejorar la

administración de su patrimonio.

Administración del Estado

Una característica muy importante que desea de su plataforma de automatización o herramienta

de administración de bienes es la capacidad de mantener administrado el estado de su patrimonio.

Desea configurar su herramienta de plataforma de automatización o administración de bienes

para monitorear y corregir cualquier desviación de configuración que pueda ocurrir.

Ya sea por accidente o por mala intención, querrá asegurarse de no tener sorpresas

desagradables la próxima vez que se reinicie el sistema.

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

para reducir la lucha contra incendios más adelante.

Productos empresariales

Lamentablemente, las herramientas de administración de bienes que brindan las

mejores capacidades de configuración del entorno operativo estándar suelen ser productos

empresariales. El producto “Satellite server” de Red Hat o el producto “SUSE Manager” de

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

administrar el "estado" de sus sistemas en su propiedad. Su implementación es bastante diferente

y requerirá algún tiempo de perfeccionamiento.

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

por un producto, y les interesa que lo sigas usando.

Ejemplo de caso de uso

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

importantes más adelante.

134
Machine Translated by Google

Capítulo 5 Automatización

La herramienta de la plataforma

En este ejemplo, estamos utilizando la herramienta de administración de patrimonio de

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.

Simplemente ajuste el nombre y la funcionalidad en consecuencia en el ojo de su mente.

La configuración de la herramienta de la plataforma

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

a administrar la configuración de su patrimonio.

En este ejemplo, un administrador de sistemas líder de Linux fue lo suficientemente

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

nadie puede iniciar sesión como root.

Todos los sistemas del estado están configurados para ejecutar agentes de Puppet que se

comunican periódicamente con el maestro de Puppet.

El error
Donde este caso de uso es interesante es cuando se comete un simple error.

A un nuevo administrador de sistemas de Linux se le ha asignado la tarea de depurar un inicio de sesión

emisión en uno de los sistemas de preproducción de la finca. Durante el proceso de

depuración, se ingresó accidentalmente un simple error tipográfico en el archivo

ssh_config. Desafortunadamente, el error tipográfico, si se aplica, podría causar que el servicio

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

deseadas, sin importar cuán pequeñas sean?

135
Machine Translated by Google

Capítulo 5 Automatización

Acostado en las sombras esperando

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,

normalmente se aplican actualizaciones o parches. En la mayoría de los casos, se produciría un reinicio

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

una herramienta de administración de configuración que escuchara cambios de configuración no

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

configuró Puppet para el entorno.

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

creó el problema. Si se tratara de un sistema de producción y se extendiera una interrupción debido a un

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

problema donde nunca debería haber habido uno en primer lugar.

136
Machine Translated by Google

Capítulo 5 Automatización

Configuración de una SOE

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

requerirá una adecuada planificación, preparación y, en algunos casos, un cambio en la cultura de la

organización.

Construir a partir de un estándar

Para construir sus sistemas que serán administrados por su entorno SOE, debe asegurarse de hacer lo

siguiente:

• Compilación a partir de una imagen/plantilla de compilación estándar del sistema o


archivo kickstart.

• Se deben construir nuevos sistemas con todos los requisitos

agentes o servicios para registrar su nuevo sistema en su plataforma de

gestión de configuración.

• Asegúrese de que sus sistemas estén registrados para corregir

ambientes y deje que la administración de la configuración alinee la

configuración.

• Cambio de configuración actualizado para reflejar el estado actual de las

configuraciones. De esta manera, si algo cambia, tendrá un registro del

evento.

Fuente de control

Cualquier código que se escriba para administrar su patrimonio debe pasar por un proceso

de desarrollo de código adecuado. Esto significa que debería suceder lo siguiente:

• Todo el código para cualquier automatización debe almacenarse en una

plataforma de control de fuente como Git.

137
Machine Translated by Google

Capítulo 5 Automatización

• Todo el código debe pasar por un sistema de pelusa para verificar problemas

básicos de formato y sintaxis.

• Los cambios deben realizarse a través de solicitudes de incorporación de cambios o fusión

peticiones.

• Dos personas diferentes deben estar involucradas en


revisión de código.

• El código nunca debe insertarse en una producción

ambiente sin pasar por una etapa de prueba

proceso.

Pruebas por fases

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

• Código desarrollado y probado en un entorno sandbox.

• Un plan de prueba para la nueva gestión de configuración

debe construirse que explique cómo se verá el cambio de configuración

y cómo se puede validar.

Pruebas de código y revisión por pares

• El código nuevo se envía a un repositorio Git local que

tiene webhooks o similares en una herramienta de canalización que

ejecuta pruebas básicas de limitación o sintaxis. Si el código pasa la

prueba, solo entonces se abre una nueva solicitud de combinación o

extracción para revisión por pares.

• Una segunda persona debe revisar el código y aprobarlo.

cualquier combinación o solicitud de extracción.

138
Machine Translated by Google

Capítulo 5 Automatización

Promoción de código

• El código se puede promocionar a la primera versión en vivo.

entorno de prueba. Por lo general, se trata de un entorno de

desarrollo o similar. Recuerde que los entornos de desarrollo aún

están activos, ya que tienen usuarios en ellos, por lo que se

recomienda precaución. Si es posible, evite los entornos que

idealmente no pueden tener tiempo de inactividad.

• Ahora se debe seguir el plan de prueba establecido para asegurarse de que

nada se haya roto o haya causado algún problema.

• Si todo funcionó como se esperaba y el cambio se aprobó como

exitoso, promocione el código a su próximo entorno.

Automatiza la automatización
Una vez que tenga su plataforma de automatización en su lugar y esté familiarizado con las

prácticas de automatización, querrá comenzar a desarrollar sus prácticas para


incluir más vías de automatización.

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

valor a su organización a un nivel completamente nuevo.

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

comenzar a hacer. En el pasado, dar a su plataforma la capacidad de reconocer interrupciones

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

técnicas de desarrollo propio.

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

de "plataforma" y finalmente la capa de aplicación.

Cada una de estas capas tiene sus propias áreas de falla y sus propios métodos

de recuperación. Si comenzamos de abajo hacia arriba, veamos la capa de hardware.

Eliminación de todos los puntos únicos de falla

El hardware puede ser complicado de reparar por sí mismo si no tiene redundancia.

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

que no pueden permitirse el tiempo de inactividad.

Ley 1 de Ken El dinero no debe ser un factor si la cantidad que se perderá


debido al tiempo de inactividad excede el dinero para el hardware de redundancia.

Autorreparación de la capa de hardware

La mayoría de las organizaciones no se ejecutan en un solo conjunto de dispositivos de hardware o al

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

cambia de un hardware que funciona mal a un hardware saludable.

140
Machine Translated by Google

Capítulo 5 Automatización

Necesitaría una lógica inteligente que necesitaría prestar atención a las


herramientas de registro y monitoreo de la plataforma. Estas herramientas pueden atraer
la atención de su plataforma de recuperación automática hacia alertas, eventos y
registros. No solo todo el hardware debe informar sobre el estado de sus propios
componentes, sino que también debe buscar pistas sobre el rendimiento del hardware más cercano
En caso de falla del hardware, el sistema de autorreparación debe tener
puntos de decisión automatizados para ejecutar acciones específicas. En el caso
de que ocurra una situación completamente desconocida, se debe activar una
opción a prueba de fallas que podría ser tan simple como marcar un incidente
importante e involucrar a un ser humano. Aprender de estos incidentes mejorará su
plataforma, así que no se desanime mientras aún la está perfeccionando. Es imposible
predecir todos los escenarios posibles.
El flujo básico de la curación de la automatización de su hardware debe ser
similar a la siguiente.

Informes

1. Los sistemas de monitoreo y registro deben recibir el evento


de que el hardware no se registre.

2. Las herramientas de administración de bienes también deben ser notificadas de

sospecha de falla de hardware.

Garantizar la disponibilidad de la plataforma

1. La conmutación por error debe ocurrir automáticamente para garantizar que haya
es limitado o no hay tiempo de inactividad.

2. Si falla la conmutación por error, el proceso se dividirá en


un apagón Se debe plantear un incidente importante y se
debe llamar a alguien.

141
Machine Translated by Google

Capítulo 5 Automatización

Recuperación automatizada

1. La recuperación automática puede comenzar una vez que se ha producido una

conmutación por error.

2. El primer paso de la investigación automatizada debe ser

motivado. Es decir, ¿cualquier otro hardware más cercano al sistema

puede llegar al sistema fallido?

3. Si se ha llegado a la decisión de que el hardware

ha fallado, se debe iniciar el primer intento de recuperación.

Esto podría ser acceder a la API de administración de energía que

controla el hardware y hacer un reinicio en frío para ver si el hardware


se recupera.

4. Después de un tiempo asignado, debe activarse un segundo paso de

investigación para ver si el hardware fallido ha comenzado a responder.

5. Si el hardware se ha recuperado, un conjunto completo de


se deben ejecutar pruebas automatizadas para confirmar la salud

del sistema. Si se aprueba, la plataforma puede recuperar la falla de

hardware que se sospechaba anteriormente.

6. Si el hardware sigue sin responder, la lógica debería tomar la

decisión de desechar el hardware actual apagándolo y

aprovisionando un nuevo sistema con hardware de repuesto o

reconstruir el sistema fallido.

una. Si se selecciona una reconstrucción del sistema actual, será necesario


realizar una verificación para ver si el hardware obsoleto

se puede acceder después del reinicio a través de una opción

de inicio de red. Si se puede acceder al sistema desde un inicio de

red, puede comenzar un proceso de reconstrucción automatizado.

142
Machine Translated by Google

Capítulo 5 Automatización

b. Si la decisión es desechar el hardware defectuoso,

la plataforma de recuperación automática automática deberá ponerse

en contacto con la API de administración de energía y arrancar el hardware

de repuesto. Será necesario realizar una creación de red de un sistema

operativo, seguida de una configuración según la configuración del estado

para que el sistema vuelva a estar en línea para la carga de trabajo.

7. Cualquiera que sea la opción elegida del paso 6, la

el sistema recuperado deberá volver a unirse a los clústeres y marcar

el sistema como disponible para la conmutación por recuperación


que se produzca.

Autorreparación de capa de plataforma

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.

Ahí es donde termina la autocuración en su mayoría para estas plataformas. Depende de la

inteligente lógica de autocuración de su patrimonio hacer que toda la plataforma vuelva a funcionar.

En la sección de autorreparación de hardware, hablamos sobre volver a unir el hardware a los

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

plataforma se recupere automáticamente:

1. Compruebe la disponibilidad de hardware. Debe existir un registro de los

sistemas disponibles para su uso. Aquí es donde su sistema

reconstruido o su sistema recién construido debe

143
Machine Translated by Google

Capítulo 5 Automatización

informar que están disponibles para su uso. Para aquellos

familiarizados con OpenStack, esto es como una lista de servidores

bare metal que informa su estado de disponibilidad.

2. Eliminar el sistema fallido. Los sistemas que se marcaron como inactivos

deben eliminarse de los clústeres y completar cualquier trabajo de

limpieza antes de agregar el nuevo hardware.

3. Agregar al clúster. Luego, el sistema disponible debe configurarse como

un nuevo nodo o host. La configuración debe incluir agregar el sistema

al clúster y probar una carga de trabajo. Siempre que todo haya pasado,

la carga de trabajo se puede volver a programar en el nodo o el host.

Autorreparación de la capa de aplicación

La reparación automática de la aplicación debe depender del servidor de aplicaciones que aloja

la aplicación en general, pero si tuviera que pensar más en el funcionamiento interno de la

aplicación, se podría realizar una reparación automática adicional.

Mejorar el estado de los datos de la aplicación o la conectividad a las bases de datos


podría controlarse con automatización. Si un servidor de base de datos se convirtiera

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

que se necesitaría sería volver a implementar y redirigir el tráfico.

Para aplicaciones más complejas, los desarrolladores necesitarían incorporar funcionalidad

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

estar atento a las señales de que un problema es inminente?

¿Quieres ser proactivo o reactivo?

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.

Esto podría permitir que su sistema o sistemas se apaguen y reconstruyan correctamente.


Luego, las conmutaciones por error se pueden programar cuando el tráfico haya disminuido, y los

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,

incluido el trabajo de administración para obtener la aprobación del cambio de plataforma.

Cómo implementar la autocuración


Hablar de autocuración en teoría es bastante simple, pero ¿cómo implementa una solución como

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.

Herramientas: Automatización y Gestión de Estado

Usando una combinación de herramientas de administración de estado y


plataformas de automatización, debería ser más que capaz de encadenar suficiente lógica
para hacer una autocuración interesante. Deberá averiguar cómo analizar los registros para
obtener información importante. Tener un sistema de recopilación de registros como Splunk
que se extrae constantemente le permitiría crear una base de datos de posibles problemas.
Si su lógica de autorreparación coincide con algo que podría ser un problema, puede
informar un problema a un bus de mensajes. Otra gran parte de su estado de recuperación
automática podría monitorear el bus de mensajes para detectar diferentes tipos de trabajos
que necesitarían ejecutar trabajos de recuperación automática.

La configuración y las aplicaciones que se ejecutan juntas pueden volverse


demasiado complejas rápidamente. Tómese el tiempo suficiente y diseñe su enfoque antes
de comenzar a construir para ver si esta es la mejor opción para usted.

146
Machine Translated by Google

Capítulo 5 Automatización

Aprendizaje automático

Otra forma de desarrollar su propia plataforma de autocuración podría ser enseñándole


a entender qué hacer bajo ciertas condiciones. Para esto, necesita construir una red
neuronal de escenarios. Eso podría incluir mirar registros, alertas y eventos. Luego, su
lógica de autorreparación debe sopesar el porcentaje de datos que coinciden con una
condición que desencadenará una secuencia de tareas de automatización. Luego, las
tareas se pueden ejecutar desde herramientas de administración de bienes y plataformas
de automatización. La mayoría de las herramientas disponibles en la actualidad también
tienen la capacidad de integrarse con las plataformas de la mesa de servicio para
generar incidentes e incluso tienen la capacidad de iniciar la comunicación con un
ingeniero de reserva.
Sin embargo, el aprendizaje automático es una curva de aprendizaje empinada
y requiere cierta aptitud para dominarlo. Si es algo que le interesa, pase un tiempo
jugando con algunos ejemplos básicos y continúe desde allí.
Internet es un gran lugar para aprender y está lleno de personas con buenos ejemplos
que puedes probar.
Una nota importante acerca de comenzar con el aprendizaje automático es
que necesitará un hardware de procesamiento de números pesado para compilar sus
programas de aprendizaje automático. Si tiene la suerte de tener una GPU decente, puede
comenzar con eso. Agregar más GPU disminuirá su tiempo de compilación, pero con la
escasez general de GPU hoy en día, podría enfrentar una lucha cuesta arriba con esta.

Sugerencia No tenga miedo del hardware de segunda mano; Usar el hardware


antiguo que no te gusta de otra persona aún puede ayudarte cuando estés
comenzando y también te ahorrará algo de dinero.

147
Machine Translated by Google

Capítulo 5 Automatización

Productos listos para usar

Si tiene el presupuesto y no tiene el tiempo o la paciencia para crear su propia


plataforma, puede considerar algunas de las opciones "listas para usar".
Estos productos pueden proporcionar bastante funcionalidad, pero es posible
que no le brinden todo lo que necesita. Preste mucha atención a lo que se incluye de
fábrica y lo que necesita configurar usted mismo. Podría ser un motor de
automatización glorificado que todavía requiere que escribas lógica, o algo peor.
Compre algunos de los servicios profesionales de la organización para construir la lógica para usted.

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

Mejores prácticas de 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.

No reinventar la rueda, otra vez...


Esta es un área en la que muchas personas fallan, y estoy seguro de que se está
cansando de que lo mencione, ya que he hablado de esto ahora al menos unas cuantas veces.
Es algo que mucha gente sigue haciendo, incluyéndome a mí mismo, por lo que al
mencionarlo todo el tiempo espero que al final de este libro te quede tan grabado que
nunca intentes reinventar nada de nuevo.
Evite siempre tratar de desarrollar todo desde cero, especialmente si
puede obtener algo similar, si no idéntico, a lo que desea en línea.
Realmente no hay razón para gastar tiempo en algo que ya existe.
Por todos los medios, tome el código y ajústelo para que se ajuste a lo que quiere hacer,
pero no se limite a desarrollar desde el principio cada vez. Entiendo que habrá momentos
en los que escribir un papel o un módulo de títeres puede ser más rápido, pero siempre
pregúntate a ti mismo con honestidad.
"¿Cuánto tiempo llevará escribir esto?"
Si la respuesta dura más de cinco minutos, entonces sabes que estás
pasar tiempo donde quizás no lo necesites. Es mejor que dedique ese tiempo adicional a
probar y perfeccionar la configuración de su plataforma.

Bibliotecas de códigos

La mayoría, si no todas, las principales plataformas de automatización tienen amplias


bibliotecas de ejemplos y códigos en línea que puede descargar. Si su primer paso es
tomar una decisión sobre qué plataforma de automatización usar, su próximo paso debe ser
encontrar la biblioteca de código o módulos en línea equivalente.

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

SaltStack no tiene exactamente la misma configuración, pero tiene una ubicación


de GitHub llamada fórmulas de SaltStack con toneladas de contenido.

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

quiere evitar estar sesgado hacia un proveedor o producto en particular.

Siempre tome su propia decisión basada en una opinión informada.

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

Usar ejemplos de su proveedor elegido puede ayudarlo a comenzar.

Descargue un ejemplo y "tome prestado" el código de allí.

Cosas a evitar

Algunas cosas que debe evitar al automatizar, independientemente de la plataforma que utilice
decida usar.

Guiones de shell

Si es posible, utilice los módulos y el código proporcionados por la herramienta de

automatización de su elección. Ansible, como ejemplo, tiene una rica biblioteca de módulos

Ansible disponibles. Ya no todo está instalado de forma predeterminada, pero se puede

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.

Los scripts de shell tienden a ser no idempotentes y requerirían más

código para asegurarse de que eran. El uso de un módulo preconstruido que se

relacione con una API de plataforma o similar manejaría toda la codificación adicional por usted y

lo dejaría con un código limpio y ordenado.

Reinicio de servicios cuando no se requieren

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.

Algunos servicios pueden negarse a iniciarse y terminar con una interrupción.

151
Machine Translated by Google

Capítulo 5 Automatización

Uso de versiones antiguas

Parece obvio, pero asegúrese de estar utilizando la última versión posible de la


herramienta de automatización que ha elegido. Es posible que la documentación no
siempre se actualice si el código que está escribiendo quedará obsoleto.

Documentación de la versión correcta

Lea la documentación más reciente o al menos la documentación que coincida

la versión de la herramienta de automatización que está utilizando. Los cambios de


código y los módulos quedan obsoletos, por lo que seguir ejemplos antiguos o artículos
antiguos de la base de conocimientos puede retrasarlo cuando necesite refactorizar su código
más adelante.

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

También es muy recomendable cuando comparte código en línea a través de


diferentes portales de intercambio. Acostumbrarse a hacerlo cuando se empieza es la
mejor forma de seguir haciéndolo.

Fuente de control

Envíe su código a GitHub/GitLab o al proveedor de git que prefiera, pero hágalo a


menudo y siempre antes de terminar el día. Su código no solo es seguro, sino que
también le permite crear un portafolio de su trabajo para que otros lo usen.

Resumen
En este capítulo, discutimos lo siguiente:

• La teoría apunta a la automatización, cuándo


automatizar y cuándo no hacerlo.

• Qué significa desarrollar código que sea idempotente.

• Varias plataformas de automatización disponibles en la actualidad.


Por qué los usaría y por qué no los usaría.

• Qué son los entornos operativos estándar y cómo puede


configurar su estado para que sea uno.

• Cómo se pueden configurar el hardware, las plataformas del sistema y

las aplicaciones para que se autorreparen.

• Mejores prácticas de automatización y cosas que deberían


ser evitado

153
Machine Translated by Google

CAPÍTULO 6

Contenedores
Este capítulo va en una dirección ligeramente diferente de los capítulos anteriores.

Este será el primer capítulo donde discutiremos la carga de trabajo de la organización y

cómo administrar esa carga de trabajo. Anteriormente, discutimos las plataformas, la

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

tema principal de este capítulo: los contenedores.

Este capítulo profundizará en el mundo de la creación de contenedores y cómo puede

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.

Finalmente, terminaremos el capítulo sobre cómo puede administrar un estado completo de

contenedores utilizando las herramientas disponibles en la actualidad.

El objetivo de este capítulo es ayudarle a obtener una comprensión básica de

contenedores y las herramientas de orquestación que puede usar para administrarlos.

Empezando
Como administrador de sistemas de Linux, lo más probable es que ya haya oído hablar de los

contenedores; es posible que ya los esté utilizando en su organización.

Los contenedores son la próxima gran evolución en las propiedades de Linux. Es

importante que, como administrador de sistemas de Linux, sea plenamente consciente de qué

son, cómo se construyen y, lo que es más importante, cómo se administran.

En pocas palabras, un contenedor es un conjunto de uno o más procesos y archivos

administrados dentro de su propio entorno aislado.

© Kenneth Hitchcock 2022 K. 155


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_6
Machine Translated by Google

Capítulo 6 Contenedores

Máquina virtual frente a contenedor

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).

Figura 6-1. demuestra las diferentes capas requeridas para


máquinas virtuales y contenedores

Se muestran las diferencias entre una máquina virtual y un contenedor

en la Figura 6-1.

Historial de contenedores

La idea de un contenedor no es un concepto nuevo en absoluto y como concepto ha


existido por más tiempo que el mismo Linux. Los contenedores comenzaron su viaje
conceptual a fines de la década de 1970 y principios de la de 1980 con la primera introducción
del uso de chroot para crear entornos aislados. Más tarde, a principios de la década de 2000,
Solaris y FreeBSD ampliaron la idea con implementaciones prácticas de plataformas que
proporcionaban segregación.

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

tiempos de ejecución de contenedores.

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.

Tiempos de ejecución de contenedores

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:

• Tiempos de ejecución de bajo nivel o tiempos de ejecución OCI

• Interfaces de tiempo de ejecución de contenedores

• Motores de contenedores

157
Machine Translated by Google

Capítulo 6 Contenedores

Runtimes de bajo nivel u OCI

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

básica y el funcionamiento de contenedores.

Los tiempos de ejecución de bajo nivel tienen dos variaciones, nativos y "virtualizados".

Tiempos de ejecución nativos

Los tiempos de ejecución de OCI nativos ejecutan sus procesos en el mismo núcleo del sistema host

donde se ejecuta el tiempo de ejecución de OCI.

Nota Debido al hecho de que el host comparte su kernel con el nativo


tiempo de ejecución, existe la preocupación de que un contenedor
comprometido pueda afectar al host en el que se ejecuta. Por esta razón,
siempre debe comprender todos los problemas de seguridad que podría
estar creando en sus contenedores.

Algunos ejemplos de tiempos de ejecución OCI nativos son runc, crun y containerd.

Tiempos de ejecución virtuales y en espacio aislado

A diferencia de los tiempos de ejecución nativos, los tiempos de ejecución virtuales y de espacio aislado están más aislados

del kernel del host.

Tiempos de ejecución de sandbox

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

Tiempos de ejecución virtuales

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

Katacontainers, Sysbox y Firecracker-containerd, por nombrar algunos.

Interfaz de tiempo de ejecución del contenedor

Con el crecimiento de las cargas de trabajo de contenedores y la evolución de herramientas como

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.

Un CRI debe poder hacer lo siguiente:

• Cápsulas de arranque y parada

• Administrar operaciones de tipo iniciar, detener y eliminar

dentro de una vaina

• Extraer y enviar imágenes de registros de contenedores

• Ayudar en la recuperación de métricas y registros

Hay dos opciones principales de CRI en la actualidad que son capaces de realizar los pasos

anteriores. Son contenedores y CRI-O.

Contenedor

Un tiempo de ejecución de alto nivel desarrollado por Docker con runc oculto, Containerd contiene

toda la funcionalidad de un CRI y se considera un buen ejemplo de un CRI.

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.

En el diagrama de la sección "Máquina virtual frente a contenedor", puede

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

cualquier ejemplo o ejercicio de contenedor.

Tabla 6-1. Ejemplos de motores de contenedores

Herramienta Nombre Descripción

Docker Lanzado en marzo de 2013. Uno de los primeros contenedores de uso masivo

tiempos de ejecución

Podman A diferencia de Docker, Podman no ejecuta un demonio subyacente para ejecutar

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

basado en una imagen.


Docker, sin embargo, se ha vuelto un poco más difícil de instalar desde la primera vez que

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.

Si Docker es la opción que desea elegir, deberá leer la documentación.

Logré instalar “Docker” en mi sistema Fedora usando el siguiente comando:

# dnf instalar ventana acoplable -y

Una vez que se haya instalado Docker, es posible que desee leer las páginas de manual
sobre cómo se usa Docker.

Deberá comprender cómo iniciar un contenedor, averiguar si el

contenedor se está ejecutando y cómo eliminar el contenedor cuando haya terminado.

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

Tabla 6-2. Opciones de ejemplo de Docker de la ayuda de Docker

Herramienta Nombre Descripción

comienzo Iniciar uno o más contenedores detenidos

detener detener un contenedor

PD Lista de contenedores en ejecución

adjuntar Adjuntar flujos de error, salida y entrada estándar local a un contenedor en ejecución

search Buscar en los registros de Docker una imagen de contenedor

history Mostrar el historial de una imagen

imágenes Muestra todas las imágenes que se han extraído de su sistema local

crear Crear un nuevo contenedor

construir Cree una imagen a partir de un Dockerfile

eventos Obtener eventos en tiempo real del servidor

matar Mata uno o más contenedores en ejecución

rmi Eliminar imagen de contenedor

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

también serán una gran fuente de información cuando esté comenzando.

162
Machine Translated by Google

Capítulo 6 Contenedores

Podman y Docker pueden usar las mismas imágenes y Dockerfiles, por lo que si

encuentra ejemplos de Docker que también deberían funcionar con Podman.

Instalar Podman es tan simple como ejecutar su comando de instalación para su

sistema de administración de paquetes local. En el caso de Fedora, el comando para instalar


Podman es

# dnf instalar podman -y

Para comprobar las páginas man de Podman, puede ejecutar

# hombre podman

Si las páginas del manual son demasiado largas para leerlas y solo desea obtener
comenzado, correr

#ayuda podman

De manera similar a Docker, puede buscar imágenes y puede enumerar imágenes y

contenedores locales. Si tiene Dockerfiles, puede usarlos para crear imágenes personalizadas

si lo desea y, lo que es más importante, puede crear contenedores.

Podman es lo suficientemente simple como para entenderlo, y hay

muchos ejemplos para Podman y Docker en línea.

Si no está familiarizado con Docker o Podman, no se preocupe demasiado. Veremos algunos

ejemplos prácticos para que los pruebe en breve.

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

Un ejemplo podría ser una imagen de contenedor que se va a utilizar como


servidor web nginx. La configuración básica y las bibliotecas deberán instalarse dentro de
la imagen, ya que no todos los hosts que ejecutarán tiempos de ejecución de contenedores
tendrán nginx instalado. Lo mismo puede decirse de los archivos binarios del servidor de
aplicaciones que puedan ser necesarios.
Es esta capacidad de enviar los binarios y archivos para una aplicación lo que
realmente permite que los contenedores sean completamente portátiles. Más sobre eso más
adelante en este capítulo.

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.

Aquí es donde los registros de contenedores se vuelven útiles; no solo almacenan


las imágenes personalizadas que crea para su organización, sino también las bibliotecas
de imágenes descargadas para cargas de trabajo particulares que pueda tener. En lugar
de crear una imagen de php, por ejemplo, podría encontrar una imagen de contenedor de php
con todo lo disponible para ejecutar su aplicación de php.
Los registros de contenedores están disponibles para usted de varias maneras.
Hay registros en la nube o en Internet donde puedes sacar las imágenes que necesites. Luego
puede personalizar estas imágenes y enviarlas a sus repositorios de nube privada si lo desea,
o puede enviarlas a sus registros locales en las instalaciones.

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

Si tiene un requisito más profundo para el almacenamiento de imágenes de contenedores,


es posible que desee considerar las opciones de registro de contenedores en las
instalaciones. Las opciones disponibles dependerán drásticamente del nivel de servicio
que necesite. Esto podría ser tan simple como simplemente tener un lugar para almacenar
imágenes de contenedores en un entorno desconectado o con espacio de aire, o podría ser
más complejo, ya que requiere el escaneo de imágenes por razones de seguridad. Sean
cuales sean sus requisitos, pruebe y pruebe para confirmar lo que funciona para usted.

Proveedores de registro de contenedores

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

experiencia práctica con la creación de cargas de trabajo de contenedores.

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

• Un sistema Linux con privilegios de root

• Acceso a Internet desde el sistema Linux

• Capacidad para instalar paquetes

Preparación del sistema

Antes de que podamos crear cualquiera de los contenedores o configuraciones, debe preparar
el sistema que utilizará.

Instalar paquetes

Instale Podman, Docker o cualquier paquete de tiempo de ejecución utilizando la


documentación oficial si no está familiarizado con el proceso. En la mayoría de los casos,

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

La instalación de Docker puede ser un poco diferente de la de Podman, ya que es


posible que deba habilitar repositorios adicionales para obtener los paquetes necesarios. Cheque
la documentación oficial para estar seguro.

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.

Advertencia Los siguientes ejercicios no están destinados a entornos


de producción o en vivo. No son lo suficientemente resistentes y le
causarían más problemas de los que valen. Para entornos de tipo de
producción, deberá observar más las herramientas de orquestación de
contenedores.

Extraer una imagen de contenedor

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

Búsqueda de imágenes de 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:

#podman busca nginx

El resultado enumeraría todas las imágenes disponibles que contienen la palabra


clave nginx. Presta atención a la cantidad de estrellas y si la imagen es de una fuente
oficial:

ÍNDICE NOMBRE DESCRIPCIÓN


OFICIAL DE ESTRELLAS

docker.io docker.io/library/nginx Versión oficial de Nginx.


15732 [Aceptar]
...salida reducida

Tirando de la imagen del contenedor

De la lista de imágenes de contenedores disponibles que descubrió con el comando


de búsqueda podman, ahora puede extraer o descargar la imagen a su sistema local.
Es este proceso el que le permitirá usar la imagen localmente para cualquier contenedor
que desee ejecutar.
Para extraer una imagen de contenedor del comando de búsqueda anterior, puede usar
un comando muy similar al siguiente:

# Podman tire de docker.io/library/nginx

La salida debe ser similar a la siguiente:

#root@localhost ~]#podman pull docker.io/library/nginx


Intentando extraer docker.io/library/nginx:latest...
Obtener firmas de origen de imagen

168
Machine Translated by Google

Capítulo 6 Contenedores

Copiando blob fca7e12d1754 [==============>-------] 20.6MiB/25.4MiB

Copiando blob 858292fd2e56 hecho

Copiando blob 1c84ebdff681 hecho

Copiando blob a4723e260b6f hecho

Copiando blob b380bbd43752 hecho

Copiando blob 745ab57616cb hecho

Las imágenes de contenedores se pueden descargar como archivos de almacenamiento si es necesario

guárdelos en un dispositivo de almacenamiento portátil para otro sistema.

Imágenes de contenedores locales

Para ver qué imágenes de contenedor ha descargado, puede ejecutar un comando

similar al siguiente. Estas imágenes se pueden usar para crear contenedores en su sistema

local.

# imágenes de podman

La salida debe ser similar a la siguiente:

[root@localhost ~]# imágenes de podman


REPOSITORIO ETIQUETA ID DE IMAGEN

CREADO TALLA

docker.io/library/nginx Hace 3 más reciente 87a94228f133

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

un comando similar al siguiente:

[root @ localhost ~] # podman ejecutar -d --name kentest -p 8080: 80 nginx

169
Machine Translated by Google

Capítulo 6 Contenedores

El resultado sería el ID del contenedor que se crea:

95bf289585a8caef7e9b9ae6bac0918e99aaac64d46b461180484c8dd1efa0a4

La opción "-d" en el comando le dice a podman que se separe del contenedor en


ejecución y deje que se ejecute en segundo plano. El "-p" establece el puerto en el que
escuchará el contenedor.

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:

[root@localhost ~]# lista de contenedores podman


ESTADO DE CREACIÓN DEL COMANDO DE IMAGEN DE ID DE CONTENEDOR

PUERTOS NOMBRES

95bf289585a8 muelle.... nginx... 7 seg... Hasta 0.0.0.0:8080->80/tcp


kentest

En la lista, puede ver todos los contenedores que ha logrado iniciar


en su sistema local. El ejemplo de nginx se ejecuta en todas las interfaces y escucha en
el puerto 8080.

Figura 6-2.
170
Machine Translated by Google

Capítulo 6 Contenedores

La captura de pantalla de la Figura 6-2 muestra las solicitudes de servicio de nginx en el


host local en el puerto 8080.

Imágenes y contenedores personalizados


Ahora que sabemos cómo descargar y ejecutar contenedores básicos desde Internet

registros de imágenes, podemos explorar cómo personalizar una imagen para alojar su
propia carga de trabajo.

Crear un registro de imágenes de Podman

Las imágenes personalizadas creadas en las próximas secciones deberán almacenarse en


un registro local. Sin tener que comprar o pagar ningún servicio en línea para que actúe como
un registro de contenedores, podemos configurar uno en su sistema local. Para esto, crearemos
un registro de podman básico y enviaremos nuestras nuevas imágenes al registro de ejecución
del contenedor local.

Crear un directorio para almacenar datos

# mkdir -p /var/lib/registro

Crear contenedor de registro

El comando para crear el contenedor en ejecución es el siguiente; incluido en el comando


hay un parámetro "-v", que le dice al contenedor que monte un directorio desde el sistema
host al contenedor en ejecución. En este caso, esto está ahí para ayudar al registro del
contenedor a conservar las imágenes del contenedor cuando se reinicia el contenedor.

# podman run --privileged -d --name registro -p 5000:5000 -v /


var/lib/registry:/var/lib/registry --restart=siempre registro:2

171
Machine Translated by Google

Capítulo 6 Contenedores

Configurar Podman para usar un registro inseguro

Como los registros de contenedores normalmente quieren estar seguros, debe


decirle a podman que use un registro no seguro. Puede configurar su registro
para usar un certificado firmado, pero para eso debe seguir el podman
documentación.

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:

# submenú de reinicio systemctl

Uso del Registro Podman


Ahora, con su propio registro de podman local configurado en la sección anterior,
ahora puede agregarle sus propias imágenes para su custodia.
Luego puede extraer imágenes de su propio registro al crear nuevas aplicaciones
o imágenes.

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:

# etiqueta podman docker.io/library/nginx localhost:5000/nginx

172
Machine Translated by Google

Capítulo 6 Contenedores

empujando imágenes

Con la imagen de nginx etiquetada, el siguiente paso es enviar o cargar la imagen


de nginx en el repositorio local. Esto se puede hacer con lo siguiente
dominio:

# podman empuje servidor local: 5000/nginx

Registros Remotos

Si creó un registro de podman en un host diferente y expuso el registro en la interfaz


de red en lugar de la dirección de bucle invertido, también puede etiquetar y enviar sus
imágenes a esa dirección si lo desea. Solo asegúrese de abrir cualquier puerto de firewall
para permitir el tráfico a través del registro de podman.
Lo mismo puede decirse de cualquier registro de imágenes en las instalaciones; Siempre
que tenga la capacidad y los permisos para enviar imágenes, los comandos de etiquetado y
envío de podman le permitirán usar registros locales.

Personalizar una imagen

Hasta ahora, todo lo que hemos hecho es usar imágenes de contenedores tal como están sin agregar

ninguna de nuestras propias personalizaciones.

¿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

Para entender cómo agregar algunas personalizaciones básicas a un contenedor

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

Estos Dockerfiles se utilizan para crear cualquier personalización que desee

en la imagen de su contenedor. Piense en estos archivos como archivos de instalación de imágenes.

Para usar un Dockerfile, todo lo que necesita hacer es crear un nuevo archivo llamado

Dockerfile. No cambie el nombre ni agregue ninguna extensión. El archivo debe existir en el

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

desplegará un archivo HTML de ejemplo de mi cuenta de GitHub. Finalmente, ejecutaremos un

nuevo contenedor con la nueva imagen.

Desplegar la imagen de CentOS

Antes de comenzar, deberá descargar una versión de CentOS:

# podman tire de docker.io/library/centos

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

crear su nueva imagen.

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

El siguiente es el aspecto del Dockerfile que utilicé:

DESDE centos:último

EJECUTAR yum -y instalar httpd git; \


clon de git https://github.com/kenhitchcock/basicwebapp.git; \
mv basicwebapp/index.html /var/www/html/index.html
CMD ["/usr/sbin/httpd", "-D", "EN PRIMER PLANO"]
EXPONER 80

Crear imagen

Para construir la imagen basada en nuestro Dockerfile anterior, debe asegurarse de


estar en el mismo directorio que su Dockerfile, luego ejecute el podman
comando de compilación:

#podman build -t centos.

Nota la "." le dice al comando podman que use el directorio actual.


Esta es la razón por la que debe estar en el mismo directorio que
Dockerfile cuando ejecuta el comando de compilación. El nombre de la
imagen construida puede ser el que quieras, solo cambia el texto después
del parámetro "-t". Este ejemplo usa el nombre de CentOS.

Crear Contenedor

Con la imagen del contenedor recién creada y el contenido personalizado, podemos


ejecutar y probar la nueva imagen:

# podman ejecutar -p 80:80 -dit localhost/centos

175
Machine Translated by Google

Capítulo 6 Contenedores

Desafío El puerto predeterminado para el servidor web apache es 80.


Como desafío, intente descubrir cómo personalizar su Dockerfile para usar
un puerto diferente.

Confirme que el contenedor se está ejecutando

Para verificar que su contenedor realmente se haya iniciado, puede ejecutar el siguiente comando:

#podman pd

La salida debe ser similar a la siguiente:

#podman pd
IMAGEN DE IDENTIFICACIÓN DEL CONTENEDOR DOMINIO

CREADO ESTADO PUERTOS NOMBRES

08832f29f46e localhost/centos:latest /usr/sbin/httpd -... Hace 24 horas Hasta hace 12 minutos

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

puede hacer con comandos similares a los siguientes:

# parada podman 08832f29f46e

#podman rm 08832f29f46e

La salida debe ser similar a

#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

necesita comprender qué constituye buenas y malas prácticas.

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.

La explicación más simple de la nube nativa es que es la práctica de usar tecnologías

en la nube para implementar cargas de trabajo de una manera ligera y rápida.

Las herramientas nativas de la nube suelen implicar el uso de automatización,

plataformas escalables en nubes privadas o públicas, contenedores, mallas de servicios y,

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

uso de automatización y otras herramientas.

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

la implementación y la escalabilidad. Si su carga de trabajo exige un tamaño mayor, es posible que

deba rediseñar cómo se escribe la carga de trabajo. Esto podría dividir la carga de trabajo en

microservicios y trabajar desde allí.

Siempre retroceda si se ve obligado a crear implementaciones de gran carga de trabajo.

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

comprometido con su control de código fuente y pasar a producción.

Utilice herramientas de canalización, webhooks de control de código fuente y cualquier otra cosa que pueda

desencadenar la implementación de la carga de trabajo.

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

Cualquier carga de trabajo o aplicación que se implementará en un entorno de tipo

nube o se considerará nativa de la nube debe ser escalable. La capacidad de escalar cuando

aumenta la demanda es vital para las buenas prácticas de trabajo en la nube.

Si la carga de trabajo que está implementando no puede escalar dinámicamente, debe

considerar rediseñar la carga de trabajo. No poder escalar dinámicamente es un síntoma de

cargas de trabajo anticuadas y código potencialmente antiguo.

¿“Se nubla”?

El hecho de que esté implementando en una plataforma en la nube no significa que su

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

saber si su carga de trabajo es para la nube son:

• ¿La carga de trabajo es pequeña?

• ¿Se puede escalar la carga de trabajo?

• ¿Se puede implementar dinámicamente la carga de trabajo?

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

en un entorno de nube de manera efectiva.

No caiga en la trampa de intentar construir máquinas virtuales en contenedores o

en hiperescaladores de estilo nativo de la nube. El hecho de que puedas no siempre significa

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

pueden ser ineficientes y derrochadoras, anulando el ahorro de costos que esperaba.

Si necesita grandes cargas de trabajo, es posible que las plataformas de contenedores

o en la nube no sean lo que necesita en este momento. Dé un paso atrás y observe


detenidamente la carga de trabajo primero, refactorice el código y divida los monolitos en

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 máquinas virtuales

Los contenedores no son lo mismo que las máquinas virtuales y no deben ser

tratado igual. Un contenedor es una entidad recortada que tiene un propósito.


Esta práctica garantiza que los principios de la nube permanezcan intactos. Si está
tratando de replicar lo que hace una máquina virtual, es posible que aún no esté listo para
usar contenedores.

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.

Compilaciones de producción a partir del código

Este punto es similar al anterior. No hornee las imágenes de su contenedor


directamente en producción. Sus imágenes deben construirse en desarrollo y luego
promocionarse a través de sus diferentes entornos de escenario. Podría terminar con
una situación en la que se implementa un código diferente en diferentes sistemas. Tener
un único punto de entrada a su entorno de producción desde un registro central de
imágenes reducirá en gran medida el riesgo de que esto suceda. También tiene la seguridad
de que el código probado es el código implementado.

Secretos codificados o configuración


Las aplicaciones deben ser independientes de la configuración o los secretos de la
plataforma. La necesidad de codificar cualquier cosa debería ser una señal de alarma de
que la aplicación no es nativa de la nube. La configuración y los secretos deben ser
administrados por la plataforma en la que se implementará la aplicación; cualquier otra cosa
generalmente se considera una mala práctica y un riesgo potencial para la seguridad.

181
Machine Translated by Google

Capítulo 6 Contenedores

Construcción de contenedores idempotentes

Construir un contenedor debe ser un proceso idempotente. Sus Dockerfiles no deberían intentar

realizar cambios externos a la imagen que está creando.

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.

La creación de imágenes de contenedores solo debe centrarse en lo que se requiere para

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

puede enviar código a su lenguaje favorito.

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

algunas de las siguientes opciones.

La Tabla 6-3 enumera algunas opciones de lenguaje de desarrollo que se utilizan hoy en día

dentro de las aplicaciones en contenedores.

Tabla 6-3. Lenguajes o marcos de desarrollo


Nombre del lenguaje Descripción

Quarkus Marco API Java optimizado para entornos en la nube

Reaccionar Marco de Java para el desarrollo de la interfaz de usuario

pitón, rubí Lenguajes de programación de alto nivel de propósito general

Golang Rápido y robusto, a menudo utilizado para dispositivos IoT

.Red Si necesita ceñirse a los lenguajes basados en Microsoft

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

opciones del editor de código que se pueden usar.

183
Machine Translated by Google

Capítulo 6 Contenedores

Tabla 6-4. Editores de código

Herramienta Nombre Descripción

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

código. Generalmente una herramienta de desarrollo de Java

NetBeans Otro editor de Java

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

Sugerencia VSCode es de uso gratuito, tiene excelentes complementos y es


bastante simple de usar. Antes de pasar demasiado tiempo con otros editores,
pruebe VSCode y cambie si encuentra algo mejor.

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

que se pueden usar para controlar su código fuente.

184
Machine Translated by Google

Capítulo 6 Contenedores

Tabla 6-5. Opciones de control de fuente

Nombre de la herramienta Descripción

Git Git básico se puede implementar en cualquier sistema

Linux; el código se puede empujar y tirar

GitHub Plataforma de control de fuente Git basada en Internet

GitLab Similar a GitHub, excepto que puedes ejecutar tu propio

GitLab local

Bitbucket Otro producto de Git que se puede ejecutar en las instalaciones

Subversión Opción popular antes de Git y actualmente perdiendo

popularidad

Mercurial Maneja proyectos de todos los tamaños, un servicio gratuito

de administración de control distribuido

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.

Familiarízate con él lo antes posible.

Herramientas para contenedores

Una vez que haya desarrollado su código y haya implementado las ideas del contenedor, querrá

comenzar a trabajar para simplificar la creación de la imagen del contenedor.

Hay muchas formas de hacer esto, tanto las correctas como las no tan correctas. También tendrá

algunas herramientas entre las que puede elegir.

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.

Tabla 6-6. Opciones de CI/ CD

Herramienta Nombre Descripción

Jenkins Popular herramienta gratuita de código abierto que es lo suficientemente fácil de usar y tiene

muchas opciones de complementos

Integración de TeamCity con Visual Studio, útil para el desarrollo y las pruebas de Windows. Tiene

opciones gratuitas y propietarias.

GitLab Tiene la capacidad de crear y ejecutar tareas directamente desde sus

repositorios de GitLab

Travis CI Puede detectar automáticamente confirmaciones en GitHub y ejecutar pruebas en una

plataforma alojada de Travis CI

Texto Otra herramienta de CI/CD de código abierto que admite implementaciones en

diferentes plataformas locales o en la nube

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

siguiente es un ejemplo básico usando pseudocódigo:

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"'

}
}

etapa ('Imagen de inserción') {


/* Con una imagen verificada, envíe su imagen a un registro */
docker.withRegistry('https://someregistry.com', 'registry-credentials')
{ app.push("${env.BUILD_NUMBER}") app .push("más reciente")

}
}
}

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

Desafío Como desafío de aprendizaje, implemente un contenedor de Jenkins en


su entorno de prueba o computadora portátil. Vea si puede escribir su propio
archivo Jenkins personalizado para crear una nueva imagen de contenedor que se
activa a partir de la actualización de su código fuente en git.

Constructores de imágenes dedicados

Utilice componentes que no sean de Docker para crear imágenes de contenedores.


Herramientas como Buildah (https://buildah.io/) y Kaniko (https://github.
com/GoogleContainerTools/kaniko) son más seguros ya que ejecutan cada comando en
Dockerfile en el espacio de usuario. Tanto Buildah como Kaniko no requieren que el demonio
Docker se esté ejecutando para crear imágenes.

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.

Anteriormente en este capítulo, discutimos cómo crear un registro de imágenes


podman; para ampliar eso, busque proporcionar almacenamiento para asegurarse de que
sus contenedores no sean efímeros. Podman, por ejemplo, tiene la capacidad de crear
volúmenes; esos volúmenes se pueden montar en su contenedor cuando los crea.

El uso de plataformas de orquestación como OpenShift o Kubernetes puede


proporcionar registros de imágenes, pero a menudo son efímeros por defecto. Asegúrese
de tener volúmenes de almacenamiento montados para no perder ninguna de sus imágenes.

188
Machine Translated by Google

Capítulo 6 Contenedores

Complementos del editor de desarrollo

Con el editor de desarrollo de su elección, busque e instale complementos que


ayuden con la depuración del desarrollo de contenedores. Los complementos que pueden
ayudar con la creación de Dockerfile o Jenkinsfile definitivamente lo ayudarán cuando comience.

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.

Herramientas para pelar

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

DevSecOps permite tanto a los desarrolladores como a los equipos operativos


comprender los requisitos de seguridad e incorporar la seguridad en sus herramientas.

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,

son meticulosos en su exploración y se aseguran de que no se expongan vulnerabilidades en los

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.

Siguiendo las prácticas de DevSecOps, se pueden construir consideraciones de seguridad

en canalizaciones o herramientas de creación de imágenes. Con este proceso, los desarrolladores

y los equipos operativos asumen la responsabilidad de la seguridad, lo que reduce en gran medida

las idas y venidas con los equipos de seguridad.

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.

“GitOps es un marco operativo que toma las mejores prácticas de DevOps

se utiliza para el desarrollo de aplicaciones como el control de versiones, la colaboración, el

cumplimiento y las herramientas de CI/ CD, y las aplica a la automatización de la infraestructura”.

https://about.gitlab.com/topics/gitops/

190
Machine Translated by Google

Capítulo 6 Contenedores

Caja de herramientas de GitOps

Algunas herramientas útiles que pueden ayudarlo a lo largo de su aprendizaje de


GitOps son las siguientes. Hay muchas otras herramientas y variaciones que puede usar,
pero como este tema puede ser uno solo para un libro, he mencionado solo algunas.

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.

Infraestructura como código

Técnicamente no es una herramienta, sin embargo, todo lo que escriba para


automatizar o configurar su plataforma debe estar en forma de código. Eso podría ser
YAML para sus configuraciones de OpenShift o Kubernetes o Ansible para construir un nuevo
sistema. Todo debe construirse o configurarse a partir del código; no se debe utilizar ninguna
configuración manual en ninguna parte.

Herramientas de tubería

Elija su herramienta de canalización y configúrela para detectar solicitudes de fusión o


extracción en su entorno de git. Cada vez que se realiza un nuevo cambio, se debe iniciar la
canalización para crear o implementar nuevas versiones de aplicaciones o crear nuevos
sistemas.

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

cargas de trabajo y garantizar su disponibilidad. Cada herramienta tiene sus propias


ventajas y desventajas y podría ser discutida en tal extensión que se necesitarían muchos
más capítulos para cubrirla; sin embargo, como no nos estamos enfocando demasiado en
la orquestación de contenedores en este momento, solo toquemos los conceptos básicos
por ahora.

¿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

debe tener las siguientes propiedades:

• 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

que el contenido se actualice dinámicamente.

¿Por qué no usar Podman?


La diferencia entre usar algo como Podman para alojar una matriz de pods y Kubernetes
como ejemplo es que Podman no le brinda la capacidad de monitorear el rendimiento y
ajustar la cantidad de pods para manejar la carga adicional automáticamente.

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

Todos estos servicios de configuración y automatización de alto nivel que


proporcionan las capas de orquestación como Kubernetes u OpenShift están destinados
a implementaciones de grandes propiedades. Podman tiene la capacidad de albergar
una multitud de pods con muchos contenedores en su interior, pero carece de la
capacidad de administrar estos pods a escala. Agregar más nodos y conectar redes de
módulos resultaría más complicado y anularía el propósito de que una capa de
orquestación de contenedores sea fácil de usar.
Podman es útil para implementaciones locales o pequeñas, pero no está
diseñado para nada a escala. Puede desarrollar sus propias herramientas de
envoltura para administrar Podman, pero solo estaría reinventando la rueda. Lo mejor
que puede hacer sería invertir su tiempo usando Kubernetes u otro producto
empresarial como OpenShift si puede tenerlo en sus manos. En su defecto, también
puede utilizar el producto comunitario llamado OKD.

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

Como Kubernetes es de código abierto, existen muchas variaciones posteriores de


Kubernetes en la actualidad, como OpenShift de Red Hat, la versión de Kubernetes
de VMware y muchas plataformas en la nube como AWS y Azure que brindan sus propios
servicios administrados.

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

una cuenta, obtienen recursos asignados e implementan cargas de trabajo.

Donde OpenShift y Kubernetes se pueden implementar en la nube y

en las instalaciones, deben instalarse, configurarse y administrarse en el futuro. Esto es útil si

necesita implementar propiedades muy grandes y está feliz de hacer toda la administración usted

mismo.

Componentes maestros

Kubernetes tiene algunos componentes de clúster fundamentales que le permiten proporcionar la

orquestación para los pods y los contenedores que contienen.

El plano de control

El plano de control consta de lo siguiente:

• La base de datos de valores clave de ETCD que almacena toda la configuración

del clúster

• El servidor de API que proporciona la API de Kubernetes a través de

JSON sobre http

• El programador que es responsable de programar la carga de trabajo en los


nodos

• El administrador del controlador solía administrar diferentes


Controladores de Kubernetes

El plano de control lo proporciona un grupo de nodos maestros; estos nodos

replique la configuración entre ellos para garantizar que el control continúe proporcionando la

funcionalidad del clúster.

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:

• Kubelet asegura el estado del nodo y la salud de

contenedores corriendo sobre él.

• Kube-proxy es responsable de enrutar el tráfico a su


contenedores

• Tiempo de ejecución del contenedor.

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

disponibles para garantizar que no solo se sobrecargue un nodo.

Sin embargo, los Daemonsets se utilizan cuando es necesario forzar la ejecución de un pod en cada

nodo. Este suele ser el caso de los contenedores de registro.

Componentes del nodo trabajador

Los objetos de carga de trabajo son lo que se implementa y usa en los nodos trabajadores. Los

siguientes se utilizan en la mayoría, si no en todos, los nodos trabajadores.

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

Los servicios son lo que une varios pods de la misma aplicación.


Cuando se generan varios pods en diferentes nodos de trabajo, debe equilibrar el tráfico
entre ellos. Un servicio es la capa que proporciona ese "servicio".

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

Dentro de los contenedores, a veces necesita configurar archivos de configuración.


Un servidor web, por ejemplo, puede necesitar ser configurado con detalles sobre el sitio
web que aloja. Los mapas de configuración le brindan la capacidad de abstraer la
configuración de la imagen del contenedor a la plataforma de orquestación.
Cuando se implementa un pod con un mapa de configuración, la configuración se
aplica durante la fase de implementación, de forma similar a cómo se pueden usar los
Dockerfiles para configurar la imagen del contenedor.

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

a un Kubernetes más "maduro" en


el tiempo.

OpenShift 3.0 fue la primera versión en la que Red Hat usó Docker para la

tiempo de ejecución del contenedor y Kubernetes para la capa de orquestación.

OpenShift 3.11 fue la última versión menor de OpenShift 3 y la última


versión en la que se utilizó Docker como tiempo de ejecución del contenedor.

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

de ejecución de contenedor donde cualquier contenedor de bajo nivel


Se puede usar el tiempo de ejecución.

OpenShift ha madurado para convertirse en la orquestación de contenedores líder

plataforma para la empresa y, por lo tanto, se ha convertido en el producto de

orquestación de contenedores número uno para muchas organizaciones. La inversión

continua de Red Hat continúa aumentando las nuevas funcionalidades y adquisiciones de OpenShift.

Seguridad avanzada de clústeres (StackRox), Gestión avanzada de clústeres,

el monitoreo, el registro y muchas otras características de nivel empresarial hacen de

OpenShift el producto de referencia para cualquier organización de nube híbrida seria.

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

espacios de nombres en Kubernetes se denominan proyectos en

198
Machine Translated by Google

Capítulo 6 Contenedores

OpenShift. El comando kube con Kubernetes es el comando "oc" con OpenShift,


pero lo más importante son algunos de los principales
diferencias

Producto

OpenShift es un producto, no un proyecto como Kubernetes. Kubernetes es un


proyecto comunitario en el que cualquiera puede contribuir. Estos cambios sí llegan a
OpenShift si Red Hat los considera útiles.

Empresa

Nuevamente, el argumento de la empresa frente a la comunidad, OpenShift es un


producto empresarial donde Kubernetes es un proyecto comunitario. Hay opciones de
asistencia empresarial de pago que proporcionan empresas como Google, pero que aún
se basan en el proyecto de la comunidad.

Seguridad

OpenShift se ha creado teniendo en cuenta la seguridad, lo que abre la adopción para


organizaciones más conscientes de la seguridad. La reciente adquisición de StackRox
solo ha fortalecido aún más este argumento.

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,

cómo construir un contenedor y cómo son los contenedores


personalizado

• Algunos usos prácticos de los contenedores y cómo crear un registro


local de contenedores

• Qué significa nativo de la nube y las diversas ventajas y desventajas


prácticas de uso de contenedores

• Diferentes herramientas de contenedor junto con DevSecOps y


prácticas de GitOps

• Orquestación de contenedores y qué opciones están disponibles para


su uso

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

sido utilizado en los últimos cinco años.


Finalmente, discutiremos qué requieren los desarrolladores y las aplicaciones desde
el punto de vista del monitoreo, cómo se pueden monitorear mejor las aplicaciones y cómo
iniciar discusiones con los desarrolladores sobre cómo desarrollar aplicaciones para
respaldar esto. Este capítulo no le dará todas las respuestas a todos los diferentes casos
de uso de monitoreo. Le dará ideas sobre lo que podría estar haciendo y qué herramientas
podrían ayudarlo con algunas de sus preguntas de monitoreo actuales. Incluso puede crear
algunas preguntas que no sabía que necesitaba hacer.

© Kenneth Hitchcock 2022 K.


203
Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_7
Machine Translated by Google

Capítulo 7 Monitoreo

Herramientas de monitoreo de Linux

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

De forma predeterminada, en la mayoría de las distribuciones de Linux, si no en todas, encontrará

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

eliminar un proceso inactivo o colgado.

Si no está seguro de que se esté ejecutando un proceso en particular, por ejemplo, el


servicio web de Apache, puede ejecutar un comando similar al siguiente:

# 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.

Nota Durante el Capítulo 2, vimos "superior" y algunas otras herramientas


que podrían usarse para encontrar procesos en ejecución en su sistema.
También discutimos cómo matar procesos y cómo identificar zombies
procesos.

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

Procesos hambrientos de recursos


El comando "ps" es útil por otra razón. Estoy seguro de que ha experimentado
un proceso que ha sido intensivo en CPU o memoria. Encontrar ese proceso
ofensivo a veces puede ser un poco complicado si está tratando de averiguar cómo
los procesos consumen recursos de los comandos "superiores" o similares. Los
siguientes son dos comandos "ps" que puede usar para encontrar los cinco
principales procesos que hacen un uso intensivo de la CPU y la memoria.

Procesos intensivos en memoria

# ps-auxf | ordenar -nr -k 4 | cabeza -5

205
Machine Translated by Google

Capítulo 7 Monitoreo

Procesos intensivos en CPU

# ps-auxf | ordenar -nr -k 3 | cabeza -5

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

Linux 5.13.4-200.fc34.x86_64 (host local.


dominio local) _x86_64_ 22/11/21 (4 CPU)

avg-cpu: %usuario %agradable %sistema %esperar %robar %inactivo


0,06 12,21
28,17 0,00 59,46 0.11

Dispositivo tps kB_lectura/ kB_wrtn / s kB_dscd/s


kB_leer kB_wrtn s kB_dscd
dm-0 1.16 1.79 59.42 24.16
16712024 554638596 225476964
nvme0n1 1.15 1.79 59.43 24.24
16724756 554741532 226295700
zram0 0.20 0.16 0,64 0.00
1482776 6013392 0

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 %

cromo --tipo=utilidad --utilidad-sub-tipo=red.mojom.


Servicio de red --field-trial-han~be2ad25, --shared-files=v8_
context_snapshot_data:100 --enable-crashpad [ThreadPoolForeg]
729143 be/4 raíz 0,00 B/s 51,11 K/s 0,00 % 0,00 %
[kworker / u8: 6-btrfs-endio-escribir]
1 be/4 raíz 0.00 B/s 0,00 B/s 0,00 % 0,00 %

systemd rhgb --sistema --deserializar 51


2 be/4 raíz 0.00 B/s [kthreadd] 0,00 B/s 0,00 % 0,00 %

3 ser/0 raíz 0.00 B/s 0,00 B/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

Sistema de Tamaño utilizado % de uso disponible Montado en

archivos 12G 0 12G 0% /desv.

devtmpfs 12G 181M 12G 2% /desv/shm

tmpfs tmpfs / 4,7 G 2,0 M 4,7 G 1 %/funcionamiento


dev/dm-0 238G 93G 144G 40% /

tmpfs / 12G 61M 12G 1% /mp


dev/dm-0 238G 93G 144G 40% /casa

207
Machine Translated by Google

Capítulo 7 Monitoreo

/dev/nvme0n1p1 976M 272M 638M 30% /arranque


tmpfs 2.4G 216K 2.4G 1% /ejecutar/usuario/1000

# 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

siguientes son dos de las herramientas más comunes utilizadas.

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".

Esto dará una salida similar a la siguiente:

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

USUARIO PID PR NI VIRTUAL RES SHR S %CPU %MEM


TIEMPO+ COMANDO

2021 ken 20 0 1448452 123008 73736 S 18,2 0,5


252: 05.89 Xorg
728039 ken 20 0 749048 52472 36696 S 6.9 0.2 6:54.61 gnome-sistema-mo

En el resultado anterior, puede ver que tengo cuatro núcleos en mi computadora


portátil. Se puede ver que el promedio de carga es de alrededor de 1,33, lo que significa que
alrededor de 1,33 de mis cuatro CPU se están utilizando actualmente para ejecutar procesos.

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

Utilidad básica que brinda toda la información requerida sobre la memoria


de su sistema:

# libre -h
total utilizado Buff/caché compartido gratuito disponible
Memoria: 23Gi Intercambio de 1.2Gi 7.2Gi 8.8Gi

12Gi 3.2Gi: 8.0Gi 1.9Gi 6.1Gi

Tamaño de página

Si necesita averiguar el tamaño de página de su sistema, puede usar los siguientes


comandos:

# getconf TAMAÑO DE PAGINA

210
Machine Translated by Google

Capítulo 7 Monitoreo

Tamaño de página enorme

Al realizar el ajuste del servidor de aplicaciones, es posible que se le solicite que


habilite o verifique si se ha habilitado el tamaño de HugePage. Puedes comprobar esto en el /
archivo proc/meminfo:

# cat /proc/meminfo |grep Página enorme


Tamaño de página enorme: 2048 kB

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

le dará el siguiente resultado, que se explica en la Tabla 7-1:

procs -----------memoria---------- ---intercambio-- -----io---- -sistema-- ------cpu


-----
rb swpd gratis us sy id wa caché de beneficio si tan bi bo y cs

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

Tabla 7-1. salida de vmstat explicada


Columna vmstat Descripción

r El número de procesos en espera de tiempo de ejecución.

b El número de procesos en suspensión ininterrumpida

lote memoria virtual utilizada

gratis memoria inactiva

fuerte Memoria utilizada como búfer

cache Memoria utilizada como caché

y Memoria intercambiada desde el disco

asi que
Memoria intercambiada a disco

con un Bloques recibidos de un dispositivo de bloques

bo Bloques enviados a un dispositivo de bloques

en Interrupciones por segundo

cs Número de cambios de contexto por segundo

a nosotros
Porcentaje de tiempo de ejecución de código no kernel

sí Porcentaje de tiempo ejecutando el código del 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

solucionar problemas o confirmar que un puerto está escuchando el tráfico.

Las siguientes son algunas herramientas que he usado en el pasado.

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".

El comando "netstat" le mostrará conexiones de red, estadísticas de


interfaz y más. Los comandos más comunes que uso para verificar qué puertos están
escuchando son los siguientes:

# nestat-siesta | agarre LISTA


# netstat-planeta

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.

La Figura 7-1 es lo que se le presenta cuando abre iptraf-ng.


Esta herramienta me ha ayudado en algunas ocasiones en las que necesitaba monitorear
el tráfico de una interfaz en particular. No está instalado de forma predeterminada, pero
definitivamente vale la pena usarlo si aún no lo está.
Desde la pantalla principal, puede seleccionar monitorear el tráfico IP; a partir de ahí,
selecciona la interfaz que desea monitorear y luego observa la conectividad a través de esa
interfaz.

volcado de tcp

La mayoría, si no todos, los ingenieros de red usarán wireshark para monitorear el


tráfico en su red. El comando "tcpdump" permite que el administrador del sistema de
Linux descargue el tráfico en una interfaz de red en particular, todas las interfaces o para
un servicio en particular como DHCP o DNS.

214
Machine Translated by Google

Capítulo 7 Monitoreo

Si quisiera monitorear todo el tráfico en la interfaz eth0 para cualquier cosa


que envíe tráfico al puerto 80, en el caso de un servidor web, podría ejecutar un
comando similar:

# tcpdump -n -i eth0 -s 0 -w tcpdumpoutput.txt src o dst puerto 80

El archivo de salida del comando anterior se puede abrir con la herramienta


wireshark (Figura 7-2).

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.

NetHogs agrupa el ancho de banda por nombre de proceso, como Firefox y


Chrome, como puede ver en la Figura 7-3.

si arriba

Este es un comando simple muy similar a “top” pero para información de la


interfaz (Figura 7-4).

# si arriba

216
Machine Translated by Google

Capítulo 7 Monitoreo

Figura 7-4.

En la Figura 7-4, puede ver que el diseño de iftop es similar al normal


Salida superior, excepto que se centra más en los datos de red.

Herramientas gráficas

Monitor del sistema Gnome


Los escritorios de Linux como Gnome no carecen de sus propias herramientas de monitoreo
que puede usar. Quienes estén familiarizados con Windows conocerán el "administrador de
tareas", una herramienta simple que le brinda un resumen básico de los procesos que se están
ejecutando y el rendimiento actual de su sistema. El monitor del sistema Gnome no es muy
diferente. La primera pestaña le brinda una lista de procesos, la segunda pestaña enumera los
recursos de CPU y memoria que se están utilizando, y la última pestaña le brinda un desglose
de sus sistemas de archivos montados (Figura 7-5).

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.

Datos históricos de seguimiento

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

que haya ocurrido un problema lo dejará con opciones limitadas.

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

iostat, mpstat y nfsiostat, por nombrar algunas.

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

sar se pueden encontrar en la siguiente ubicación:

/var/log/sa/

Los parámetros sar comunes se explican en la Tabla 7-2.

Tabla 7-2. opciones de sar

Descripción del interruptor

d Bloquear estadísticas de dispositivos

r Utilización de la memoria

en utilización de la CPU

F Estadísticas del sistema de archivos

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

Tabla 7-3. herramientas pcp

Nombre Descripción

pmstat Información en vivo sobre su sistema, CPU, memoria, etc.

pminfo Enumera las métricas que se pueden consultar

pmval Ve los datos de la métrica

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

la interfaz o interfaces seleccionadas.

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

"Nagios no va a insistir en la santidad".

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

proveedor si alguna vez decide usar el producto pagado.

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

para obtener ayuda y soporte.

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

en torno a los agentes que se pueden usar.

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

mediante el complemento check_nrpe.

222
Machine Translated by Google

Capítulo 7 Monitoreo

NRPE también puede comunicarse con complementos de agentes de Windows, lo que permite

Nagios para ejecutar scripts y verificar métricas en Windows remoto


máquinas.

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

en lugar de NSCA (aceptador de comprobación de servicios de Nagios).

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.

NSClient++ es similar a NRPE, ya que permite a Nagios monitorear la memoria

uso, carga de CPU, uso de disco, etc.

NCPA

El agente final que se puede utilizar es el agente NCPA. El NCPA o Nagios Cross Platform Agent

es un proyecto de código abierto mantenido por Nagios Enterprises.

NCPA se puede instalar en Windows y Linux. A diferencia de otros agentes, NCPA utiliza la

API para recopilar información y métricas para Nagios.

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

Nagios son las siguientes:

• 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

La instalación de Nagios se puede realizar de varias maneras y está bien documentada

en el sitio de documentación de Nagios:

• Siga la documentación oficial y ejecute los pasos uno por uno.

• Cree una máquina virtual y ejecute scripts de automatización.

• Extraiga una imagen de contenedor de Nagios y ejecute un contenedor.

El enfoque recomendado sería usar herramientas de automatización como Ansible para

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

proporcionar una solución de monitoreo general.

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.

Se pueden utilizar múltiples exportadores en sistemas cliente o servidor. Hay exportadores

dedicados a diferentes propósitos; en el caso de obtener información del nodo, hay un

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

utilizar para activar alertas basadas en las métricas de Prometheus.

Tablero
Aunque Prometheus tiene una interfaz de usuario web que se puede usar para consultar

métricas, tiene más sentido enviar métricas a una herramienta de tablero.

Grafana, por ejemplo, es una buena opción para esto y es una de las herramientas de

código abierto más populares disponibles en la actualidad.

Lenguaje de consulta

PromQL es el lenguaje de consulta utilizado para crear paneles y alertas.

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

simples si desea hacerlo manualmente, pero aún recomendaría el método automatizado.

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

Las plataformas como Kubernetes u OpenShift también pueden implementar


Prometheus, pero tienden a usarse para la plataforma en sí. Necesitará crear un
nuevo espacio de nombres e implementar su propio Prometheus y Grafana para usarlos
para el monitoreo del sistema externo.

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

La sección global es para la configuración global de Prometheus. Configuración


general para decirle a Prometheus con qué frecuencia raspar, por ejemplo.

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

puede leer datos para consultarlos o cargarlos en el almacenamiento en la nube.

Puerta de enlace de la tienda

Esto permite la consulta de datos métricos dentro de un depósito de almacenamiento

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

Este es el componente responsable de recibir datos de la función de escritura remota de Prometheus.

El receptor también puede exponer métricas o cargarlas en el almacenamiento en la nube.

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

PromQL en todas las instancias a la vez.

228
Machine Translated by Google

Capítulo 7 Monitoreo

Diseño básico de Thanos

La Figura 7-7 es una ilustración muy básica de cómo los diversos


componentes de Thanos se comunican entre sí.

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

La instalación es relativamente simple y está bien documentada en el sitio web de Zabbix.


Tienen una forma muy agradable de presentar los pasos de instalación a través de una serie
de cuadros de selección basados en sus preferencias.

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

Se admiten las principales distribuciones empresariales de Linux, y la documentación


de CheckMk tiene pasos bien documentados para cualquier distribución que esté
utilizando.

Características útiles

CheckMk ha estado construyendo su plataforma pensando en el futuro. Han incorporado las


instalaciones para monitorear Docker, Kubernetes y Azure, para
nombrar unos pocos.

La solución general es escalable y funcionará bien en organizaciones


grandes con un diseño distribuido (múltiples centros de datos).
La automatización ha sido uno de los principales puntos de desarrollo para garantizar que la
configuración y la configuración sean lo más simples posible.

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

Las versiones de OpenNMS son las siguientes:

• Horizon: El proyecto impulsado por la comunidad y


versión compatible

• Meridian: el servicio basado en suscripción que proporciona la versión

empresarial estable más reciente

Instalación

La instalación de OpenNMS no es tan simple como quizás algunas de las otras herramientas

disponibles, pero tampoco es tan difícil de instalar. La documentación oficial es lo suficientemente

clara y lo guía a través de todo lo que necesita hacer. También hay un buen foro comunitario

para preguntas si te quedas atascado.

Características útiles

Una característica que realmente salta a la vista es que OpenNMS usa Grafana como una

herramienta de tablero, lo que, en mi opinión, fue un movimiento excelente, en gran parte

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

incluyendo JMX, WMI, HTML, XML y más.

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

de tablero son vitales.

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.

Parece que no fui el único en sufrir con estas herramientas, y algunos

personas inteligentes han comenzado a desarrollar herramientas de tablero dedicadas que pueden integrarse

con una variedad de herramientas.

Herramientas de tablero
La Tabla 7-4 enumera algunas herramientas de tablero que se pueden usar hoy.

Tabla 7-4. herramientas de tablero

Nombre Descripción

Grafana La herramienta de tablero más popular disponible en la actualidad. Originalmente

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

push y pull para la visualización de métricas

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?

Grafana es una herramienta de panel de control basada en complementos de código abierto


que tiene una amplia gama de opciones de fuentes de datos que se pueden usar para mostrar
métricas sin duplicar ningún dato. Grafana se puede implementar en casi todas las plataformas
que se usan hoy en día, desde Windows hasta Debian (Figura 7-8).

Figura 7-8.

En la Figura 7-8 se puede ver un ejemplo básico de un tablero Grafana.

Usando Grafana
Hay algunas formas de usar Grafana:

• Instale su propio entorno en las instalaciones.

• Utilice el servicio en la nube gestionado de Grafana.

234
Machine Translated by Google

Capítulo 7 Monitoreo

Servicio de almacenamiento en la nube

Si no desea ejecutar su propia instancia de Grafana en las instalaciones, puede ejecutar


su tablero en la nube. El plan gratuito para siempre incluye Grafana, la serie 10K
Prometheus, registros de 50 GB y más.

Instalación en las instalaciones

Grafana se puede implementar de varias maneras:

• Instalación manual siguiendo la documentación oficial


en la página de documentación de Grafana.

• Use podman para extraer una imagen de contenedor de Grafana con


Grafana preconstruido y ejecutar un contenedor de Grafana.

Recomendación Utilice una herramienta de automatización como Ansible y

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

• Base de datos de entrada

• 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

Los paneles se pueden duplicar para una configuración rápida y se pueden


personalizado para usar diferentes colores para sus datos de series de tiempo
como se muestra en la Figura 7-9.

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

Las herramientas de seguimiento se utilizan para "rastrear" la ruta de ejecución de una


aplicación y su transacción mediante el uso de registros especializados. Por lo general, los
desarrolladores los utilizan para ayudar a identificar dónde ocurre un problema en particular.
El rastreo no debe confundirse con el monitoreo de eventos. Evento
los administradores de sistemas de Linux utilizan principalmente el monitoreo
para la resolución de problemas de alto nivel y normalmente no es demasiado
"ruidoso". Donde, con el ruido de "rastreo" es bueno. Cuanta más información, más
precisa puede ser la solución de problemas para reducir la causa raíz.

237
Machine Translated by Google

Capítulo 7 Monitoreo

Hay algunas herramientas de rastreo disponibles en la actualidad que se pueden utilizar.

Las plataformas propietarias como AppDynamics son herramientas excelentes con

características ricas pero vienen con etiquetas de precio considerables. Afortunadamente,

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

Dapper utilizados para monitorear y solucionar problemas de sistemas distribuidos basados en

microservicios. Con eso, Jaeger promete ayudar a resolver los siguientes problemas:

• Monitoreo de transacciones distribuidas

• Optimización de rendimiento y latencia

• Análisis de raíz de la causa

• Análisis de dependencia del servicio

• Propagación de contexto distribuida

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.

Zipkin puede implementarse como un contenedor o ejecutarse localmente descargando


los últimos binarios. Todos estos pasos están bien documentados en el sitio oficial de Zipkin.

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

agente de monitoreo pueda pasar los datos a la plataforma de monitoreo.

Desde allí, las alertas se pueden configurar junto con cualquier tablero.

Cómo hablar "desarrollador"


Como administradores de sistemas de Linux, necesitamos construir sistemas de monitoreo que

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

pueden rastrear utilizando un software de rastreo como Jaeger.

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:

• ¿Qué herramientas de monitoreo se pueden ejecutar desde un estándar?


distribución de Linux

• Herramientas gráficas de monitoreo alternativas que se pueden usar desde un

escritorio Linux

239
Machine Translated by Google

Capítulo 7 Monitoreo

• Qué herramientas se pueden usar para almacenar datos métricos históricos


en una distribución estándar de Linux

• Soluciones de monitoreo central como Nagios, Prometheus,


y thanos

• Herramientas de código abierto de monitoreo empresarial como

OpenNMS y CheckMk

• Herramientas de tablero que se pueden usar para mostrar métricas


datos de una manera agradable y ordenada

• Herramientas de monitoreo de aplicaciones utilizadas para el seguimiento

y cuán importantes son las métricas de la aplicación para la

administración del estado

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

problemas como administradores de sistemas de Linux: los registros.

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.

Sistemas de registro de Linux

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.

© Kenneth Hitchcock 2022 K.


241
Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_8
Machine Translated by Google

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:

# dnf instalar rsyslog

También puede ejecutar un contenedor rsyslog si elige que podría usarse


como un sistema de registro central. Será necesario reflexionar más sobre el almacenamiento
y la conectividad.

Servicio
El servicio rsyslog está habilitado e iniciado de manera predeterminada, pero se puede detener o
deshabilitar de la manera estándar de systemd:

# systemctl estado rsyslog

Archivos de configuración

Los archivos de configuración para rsyslog se manejan a través de dos ubicaciones de


configuración:

• El archivo de configuración central general “/etc/

rsyslog.conf”

• El directorio “.d” para los archivos de configuración personalizada que se

almacenado “/etc/rsyslog.d/”

242
Machine Translated by Google

Capítulo 8 Registro

La configuración de Rsyslog tiene tres secciones principales que debe tener


familiar con:

• Directivas globales

• Plantillas

• Reglas y acciones

Directivas globales

Configuración global general para rsyslog. Los ejemplos incluyen la activación y


desactivación de módulos adicionales y ubicaciones de biblioteca.

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

se registrará y dónde se enviarán los registros.

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,

aviso, advertencia, err, crit, alerta, emerg.

243
Machine Translated by Google

Capítulo 8 Registro

El carácter comodín de "*" se puede utilizar para sustituir uno o ambos

la facilidad y prioridad del campo del sector.


Ejemplos del campo selector pueden ser "*.*", "auth.*" y "auth.debug".

Campo de acción

El campo de acción generalmente se compone de donde estará la ubicación del archivo


de registro. Sin embargo, también se pueden aplicar otras acciones a un selector en
particular si lo desea. Ejemplos de esto podrían ser escribir en una base de datos o enviar
los archivos de registro a un sistema de registro remoto.
Las acciones también pueden ser bastante flexibles; Se pueden configurar
diferentes protocolos, puertos e interfaces para enviar registros a sistemas remotos. Es
útil si ejecuta una red de registro dedicada para no afectar una red de producción.

Sugerencia Utilice diferentes selectores para monitorear los sistemas en busca de

errores críticos en archivos separados. Estos registros luego se pueden exportar a un

sistema remoto para recibir alertas inmediatas en los tableros.

fluido
Fluentd es un proyecto de código abierto que fue creado originalmente por una empresa
llamado Datos del Tesoro.

Basado en complementos

Escrito en C y Ruby, Fluentd le brinda al usuario la capacidad de ser flexible en la forma


en que se puede usar Fluentd. Con más de 125 complementos para entrada y salida, Fluentd
se puede usar con casi cualquier sistema o proveedor de nube disponible.

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

Antes de instalar Fluentd, se requieren algunos requisitos previos:

• Configurar NTP.

• Aumente los descriptores máximos de archivos a 65535.

• Optimice los parámetros del núcleo de la red para el rendimiento


entornos sensibles.

• Utilice protección de enlace simbólico/hardlink de bit pegajoso.

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

Dependiendo de su sistema, la instalación de Fluentd se puede realizar ejecutando


un script que coincida con su distribución o instalando las gemas de Ruby
requeridas. La recomendación es usar la instalación de gemas para plataformas
no compatibles y para plataformas compatibles como RHEL, para instalar usando los
scripts proporcionados por Fluentd.
Siempre se debe seguir la documentación oficial para los pasos detallados.

245
Machine Translated by Google

Capítulo 8 Registro

Despliegue de contenedores

Fluentd también se puede implementar como un contenedor y, a menudo, se implementa de


esta manera. La documentación oficial destaca todos los pasos en detalle que deben seguirse
para una implementación exitosa.
Los pasos básicos de alto nivel son los siguientes:

1. Extraiga la imagen del contenedor Fluentd de una fuente confiable o


fuente confiable.

2. Cree un archivo de configuración básico fluentd.conf.

3. Ejecute el contenedor y envíe registros.

Nota Habrá más pasos además de los pasos anteriores. Además,


no olvide sus cortafuegos.

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 **>

@tipo de salida estándar

</coincidencia>

246
Machine Translated by Google

Capítulo 8 Registro

Comprender los registros


Tener registros disponibles es el primer paso para encontrar o prevenir un problema.

Comprender lo que los registros realmente le dicen es otro paso muy importante.

¿Dónde están los archivos de registro?

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.

Sugerencia /var/log siempre debe estar en una partición separada si está


siguiendo las pautas de endurecimiento.

Cómo leer archivos de registro

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

cualquier editor de texto con el que se sienta más cómodo.

Advertencia No abra archivos de registro grandes que tengan muchos


gigabytes usando herramientas como vim en un sistema de producción. El contenido
del archivo consumirá grandes porciones de memoria y podría causarle problemas.
Copie los registros grandes en un sistema diferente para evitar problemas.

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

pueden usar para buscar problemas antes de que ocurran.

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

Este es bastante sencillo en su propósito. Esto se utiliza para solucionar problemas

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

historial de todos los paquetes agregados, actualizados o eliminados.

/var/registro/cron

Este es un registro simple para capturar todas las tareas relacionadas con cron que se

ejecutaron correctamente o fallaron.

Registros de aplicaciones

Dependiendo de su aplicación o del servidor de aplicaciones que utilice, los archivos de registro podrían

almacenarse en cualquier lugar. Los desarrolladores de aplicaciones deben asegurarse de que la

información importante se registre para solucionar problemas o realizar un seguimiento de los eventos.

También se debe incluir la capacidad de aumentar o disminuir la verbosidad.

Buena práctica

Algunas buenas prácticas para el registro de aplicaciones deben incluir lo siguiente.

Utilice el directorio /var/log para registros

Asegúrese de que todos los registros terminen en el directorio /var/log, preferiblemente en un

subdirectorio dedicado a la aplicación. Las aplicaciones pueden tener sus directorios vinculados al

directorio /var/log si la aplicación no puede ajustar dónde se envían los registros.

249
Machine Translated by Google

Capítulo 8 Registro

Seguridad

Los registros que contienen información confidencial deben protegerse al mantener un


historial extenso. Los permisos para el directorio de registro deben estar bloqueados para
usuarios y grupos autorizados para leer los registros. El uso de ACL podría ayudar a mantener
seguros los registros.

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.

Advertencia La depuración en producción nunca es una buena idea. Si la necesidad


de hacer esto es frecuente, su aplicación no se está probando correctamente y se
debe recomendar que no implemente nuevas versiones a menos que se pruebe
rigurosamente.

Aumento de la verbosidad

Cuando ocurren problemas, puede ser necesario obtener más información de la que se ha
proporcionado.

Registrar niveles de verbosidad

Todas las aplicaciones o plataformas bien escritas tienden a tener la capacidad de

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

La configuración predeterminada para una aplicación o plataforma de producción debe


normalmente se establece en "Advertencia" o "Error". Como se indicó anteriormente,
no se recomienda depurar en producción por dos razones:

1. Activar la depuración a menudo requiere un


reiniciar la aplicación o la plataforma, algo que no se hace
fácilmente mientras el tráfico en vivo está en la plataforma.

2. La depuración aumentará el uso del disco y agregará una


carga adicional al sistema. Si la aplicación o plataforma tiene
un problema importante, los registros de depuración pueden
crecer rápidamente y potencialmente llenar cualquier disco
de registro.

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

cuando no se utilizan. Un gran administrador de sistemas de Linux incorpora el mantenimiento de registros

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

Si nunca antes ha administrado registros, lo más probable es que uno de los


siguientes sea cierto:

• Has tenido suerte hasta ahora.

• La plataforma que admite no registra suficiente información


para que sea un problema.

• Los registros se envían a una plataforma de registro dedicada


manejado por otra persona.

Herramientas de gestión de registros

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.

Logrotate es administrado por el siguiente archivo de configuración y directorios:

• /etc/logrotate.conf

• Utilizado para la configuración global

• /etc/logrotate.d

• Archivos de configuración personalizados

Instalación
Logrotate se instala de forma predeterminada en todas las distribuciones empresariales de Linux y en la mayoría de

las distribuciones comunitarias.

Logrotate proporciona documentación a través de sus páginas man que le darán


información más que suficiente para empezar, incluidos ejemplos.

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

reduce la huella del disco.

Sistemas de registro central


Hay algunos sistemas de registro central que se pueden usar hoy en día, tanto propietarios como de

código abierto. Los grandes nombres en el registro central durante la última década han sido Splunk, SolarWinds,

Rsyslog, ElasticStack y Fluentd.

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.

Tabla 8-1. Herramientas de pila elástica

Herramienta
Descripción

Elasticsearch Utilizado para análisis de registros y búsqueda

kibana Una interfaz de usuario para Elasticsearch

Logstash Se utiliza para la ingestión de registros

Latidos Agentes que se utilizan para enviar información de registro a Logstash

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

una plataforma de registro central, debe tener dos elementos en su red.

253
Machine Translated by Google

Capítulo 8 Registro

Reenviadores de registro

Un reenviador de registros supervisa los registros en un sistema local, filtra la información


necesaria y luego envía la información a un sistema central. En el caso de Fluentd, sería un
agregador de registros.
Fluentd tiene un reenviador de registros llamado Fluent Bit que Fluentd recomienda
usar.
Un ejemplo de una configuración de reenviador de Fluentd sería similar al siguiente:

<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>

flush_interval 60s </


buffer> </match>

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.

Un ejemplo de configuración de agregado de registros de Fluentd podría ser similar al siguiente:

<fuente>

@escriba adelante

puerto 24224
</fuente>

# Producción

<ejemplo de coincidencia.**>

# Hacer algunas cosas con la información de registro


</coincidencia>

Rsyslog
Si no desea usar nada fuera de lo que se proporciona en una distribución de Linux

empresarial estándar, puede seguir usando Rsyslog para el registro centralizado.

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

de forma segura mediante certificados.

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:

1. Cortafuegos deshabilitado o configurado para permitir tcp/


puertos udp 514 o 6514 dependiendo de si está utilizando el
método de certificado para reenviar registros.

2. Si SELinux está habilitado, deberá configurar SELinux para


permitir que el tráfico de rsyslog registre mensajes en su
sistema central:

semanage -a -t syslogd_port_t -p tcp 514


semanage -a -t syslogd_port_t -p udp 514

3. Configurar NTP.

4. Configure rsyslog.conf para permitir que los módulos


recibir registros:

$ModLoad imtcp
$InputTCPServerEjecutar 514

5. Reinicie el servicio rsyslog.

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.

conf se ha actualizado, será necesario reiniciar el servicio rsyslog:

# systemctl reiniciar rsyslog

Resumen
En este capítulo, se le presentó lo siguiente:

• Diferentes sistemas de registro de Linux, incluido cómo rsyslog

puede ser reemplazado por Fluentd

• Cómo entender los registros y dónde encontrarlos

• Cuáles son los registros importantes en un sistema Linux y para qué se utilizan

estos registros

• Mantenimiento de registros y qué herramientas se pueden usar para evitar

que los registros llenen su sistema Linux

• Qué se puede usar para enviar registros a un sistema de

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á

garantizar que los sistemas se endurezcan hasta el enésimo grado.

Este capítulo se centrará en cómo se puede hacer cumplir la seguridad y cómo se

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.

Finalmente, discutiremos DevSecOps y cómo el cambio en la cultura puede

mejorar la seguridad Veremos cómo las prácticas actuales de DevSecOps han mejorado el

proceso de protección de los sistemas Linux.

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.

© Kenneth Hitchcock 2022 K. 259


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_9
Machine Translated by Google

Capítulo 9 Seguridad

Hoy, sin embargo, tenemos más que solo sistemas Linux estándar implementados en

nuestras propiedades. Hay imágenes de contenedores, imágenes de máquinas virtuales e

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

proceso y garantizar que todo lo que se libera en su patrimonio esté seguro?

Comencemos observando la seguridad estándar de Linux que se puede configurar en sus

distribuciones de Linux sin demasiado esfuerzo. Luego, observe cómo el cambio cultural y las nuevas

herramientas pueden optimizar este proceso para nuevas construcciones e implementaciones.

Herramientas de seguridad estándar de Linux

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

comunes son el cortafuegos, SELinux y alguna detección de intrusos.

cortafuegos

La descripción básica de un firewall de Linux es que es el conjunto de herramientas Netfilter que


permite el acceso a la pila de red en el nivel del módulo del kernel de Linux.

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

La mayoría de las distribuciones de Linux tienen iptables o firewalld instalados como su

herramienta de conjunto de reglas. Ambas opciones tienen un alto grado de configuración que se

puede usar para asegurar su sistema Linux.

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).

Tabla 9-1. Comandos básicos de iptables

Comando LVM Descripción

iptables -L -n Enumere todas las reglas en todas las cadenas en forma numérica

formato

iptables --ayuda Ayuda sobre qué parámetros están disponibles

iptables -A ENTRADA -p tcp --dport 22 -j ACEPTAR Ejemplo de agregar el puerto tcp 22

iptables -F Vacíe todas las reglas de la

configuración de iptables

iptables-guardar > /etc/iptables/ Guarde la configuración de iptables en Debian/


reglas.v4 ubuntu

iptables-guardar > /etc/sysconfig/ Guarde la configuración de iptables en RHEL

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

reglas para Netfilter.

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.

Tabla 9-2. Comandos básicos de cortafuegos

Comando LVM Descripción

cortafuegos-cmd --listar-todos Listar todas las reglas actualmente configuradas

firewall-cmd --add-port=80/tcp --permanente Abrir puerto tcp 80

cortafuegos-cmd --add-service=ssh Abra el puerto 22 haciendo referencia al

--permanente nombre del servicio

cortafuegos-cmd --ayuda Ayudar

firewall-cmd --recargar Vuelva a cargar el firewall para habilitar las nuevas reglas

Sugerencia Cuando sea posible, use firewall-cmd y nunca deshabilite el


servicio de firewall. En su lugar, comprenda qué puertos se requieren y
ábralos en lugar de dejar abierto un sistema completo.

SELinux

Otra medida de seguridad utilizada en la mayoría de las distribuciones de Linux es

SELinux, originalmente conceptualizado y desarrollado por la Agencia de Seguridad

Nacional de EE. UU.

262
Machine Translated by Google

Capítulo 9 Seguridad

En resumen, SELinux es un módulo de seguridad del kernel de Linux que permite

acceso a partes del sistema operativo Linux.

Si imagina que su sistema Linux es un edificio seguro, el exterior

cercas y paredes, portones, puertas principales y ventanas actúan como su cortafuegos.

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

actuando como SELinux.

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

cómo habilitar, deshabilitar y restaurar la configuración básica.

La configuración más complicada vendrá con la experiencia.

Tabla 9-3. Comandos básicos de SELinux

Comando LVM Descripción

hacer cumplir Muestra el estado actual de SELinux

setenforce 0 Deshabilitar temporalmente SELinux

setenforce 1 Habilitar temporalmente SELinux

/etc/selinux/config Configurar el estado permanente de SELinux

restaurarcon -Rvv /ruta/ Restaurar la configuración de SELinux establecida por las

archivar etiquetas actuales en el directorio

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

Detección de intrusiones basada en host

A menudo, la mayoría de los administradores de sistemas de Linux pasan por alto y no

configuran alguna forma de detección de intrusos basada en el host. En la mayoría de las

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.

Tabla 9-4. Opciones de detección de intrusos

Nombre de la herramienta Descripción

Ayudante El entorno de detección de intrusos avanzado está disponible con

repositorios estándar

Fail2ban Otra solución de detección de intrusos popular, pero debe instalarse

desde los repositorios de EPEL en ciertas distribuciones

samhaín Tanto un verificador de integridad como un sistema de detección de intrusos en el host

Advertencia Al instalar desde un repositorio comunitario, siempre


consulte con su proveedor de Linux si admitirá la plataforma si instala
herramientas de terceros.

Configuraciones de seguridad de Linux recomendadas


Si necesita construir rápidamente un sistema Linux y desea asegurarse de que sea lo más

seguro posible, al menos debe configurar lo siguiente.

264
Machine Translated by Google

Capítulo 9 Seguridad

Deshabilitar inicio de sesión raíz

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

modo de usuario único.

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

construir un servidor Linux seguro.

Particiones de disco

La Tabla 9-5 enumera todas las particiones de disco separadas que deben configurarse con las

opciones de montaje respectivas.

Tabla 9-5. Disposición del disco y opciones de montaje

Disco Opciones de montaje

/era

/var/registro

/var/log/auditoría

/var/tmp Montar en el mismo disco que /tmp

/tmp nodev, nosuid, noexec

/casa nodev

/dev/shm nodev, nosuid, noexec

media removible nodev, nosuid, noexec

265
Machine Translated by Google

Capítulo 9 Seguridad

Cifrado de disco

Solo considere el uso de cifrado de disco si el servidor se puede sacar fácilmente de un


centro de datos o sala de servidores. Esto se aplicaría a las computadoras portátiles o
cualquier sistema portátil. Una herramienta de cifrado de disco común que se puede utilizar
es LUKS.

sin escritorio

No instale un escritorio Linux o un “Sistema X Windows”. Si está instalado, elimine tanto


el escritorio como los paquetes "X Windows System".

Recuerde Establezca su nivel de ejecución en 3 antes de intentar


eliminar paquetes.

Cifrar comunicaciones de red

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.

Eliminar y deshabilitar servicios inseguros o no utilizados

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.

Aplicar actualizaciones y parchear el kernel

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

configuraciones necesarias en su lugar.

Configuración de autenticación mejorada

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.

Si es posible, haga uso de un servicio de autenticación de usuario central como un

Servidor LDAP que utiliza la autenticación Kerberos.

Compruebe si hay puertos abiertos

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:

# nmap -sT -O servidor local

Archivos de escritura mundial

Verifique que no haya archivos o directorios editables en todo el mundo. Un útil

El comando para verificar esto es el siguiente:

# encontrar /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Archivos que no pertenecen a nadie

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:

# buscar /dir -xdev \( -nouser -o -nogroup \) -print

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.

Enviar registros al servicio de registro central


Configure todos sus sistemas Linux para enviar registros a un servicio de registro central.
Esto asegurará que realice un seguimiento de todos los intentos de inicio de sesión antes de que se puedan

borrar los registros.

Detección de intrusos

Instale y configure una herramienta de detección de intrusos como Aide o Fail2ban. Si


usa Aide, asegúrese de copiar la base de datos a una ubicación segura fuera del servidor
que se está monitoreando. Esto se puede utilizar más tarde para propósitos de comparación.

Seguridad del servidor de aplicaciones

Si el sistema Linux se utilizará como servidor web o servidor de aplicaciones,


asegúrese de que los certificados estén configurados para una comunicación segura.

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?

De la misma manera que DevOps es un conjunto de prácticas y herramientas


diseñadas para unir a los equipos operativos y de desarrollo mediante la
adopción de prácticas de desarrollo, DevSecOps tiene como objetivo alinear a
todos dentro de una organización con prácticas y herramientas de seguridad (Figura
9-1). Básicamente, representa que todos son responsables de la seguridad.

Figura 9-1. Diagrama de Venn donde se reúnen los diferentes equipos para
crear DevSecOps

Todos son responsables de la seguridad


Así como todos deben estar atentos a posibles atacantes a través de la ingeniería
social y la comprensión de prácticas de seguridad simples para la seguridad física,
DevSecOps se esfuerza por hacer que todos piensen en la seguridad en todos los
aspectos de su trabajo técnico.

269
Machine Translated by Google

Capítulo 9 Seguridad

Desde implementar código nuevo o construir nuevos sistemas, todo necesita


para fluir a través de las puertas de seguridad antes de ser liberado. Tirando de terceros
el contenido de Internet debe escanearse y probarse antes de su lanzamiento.

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.

Figura 9-2. El ciclo de la seguridad

Se escanean los entornos, se revisan los escaneos, se solucionan los problemas, se

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

posición en la que la seguridad se desliza hacia un lado.

Todos estos controles de seguridad deben realizarse de forma automatizada.

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

desperdiciar almacenamiento. Lo mejor es detenerse, solucionar el problema y volver a ejecutar la

compilación.

Puertas de seguridad

Una buena manera de incorporar las prácticas de DevSecOps sería construir puertas de seguridad

en herramientas de canalización como Jenkins o Tekton (Figura 9-3).

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

de implementarse. Si la puerta de seguridad encuentra una vulnerabilidad, el proceso se detiene y la

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

tiene un proceso de compilación automatizado que también podría usarse.

271
Machine Translated by Google

Capítulo 9 Seguridad

Herramientas de terceros

Se recomienda encarecidamente el uso de herramientas de terceros para escanear y verificar el código

para sus puertas de seguridad. El uso de productos como SonarQube tiene la capacidad de buscar

vulnerabilidades y verificar el código en busca de problemas de sintaxis.

Cumplimiento del sistema


Hay numerosas razones para que los sistemas sean compatibles. La capacidad de poder

almacenar los detalles de la tarjeta de crédito dicta cómo se deben proteger los sistemas dentro

de las organizaciones financieras. De lo contrario, significaría sanciones financieras o algo peor.

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.

Endurecimiento del sistema

Reforzar un sistema Linux es un proceso de eliminación de cualquier superficie de ataque potencial

que pueda tener su sistema.

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

a un usuario no root la capacidad de explotar una vulnerabilidad en el comando sudoedit. Esta

vulnerabilidad permite al usuario ejecutar comandos privilegiados sin autorización.

Encontrar este tipo de vulnerabilidades y corregirlas antes de que queden expuestas es lo

más importante que podemos hacer como administradores de sistemas de Linux.

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

seguros posible antes de su puesta en marcha.

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.

Centro de Seguridad en Internet

Si ha dedicado algún tiempo a fortalecer el sistema en el pasado, es posible que ya esté


familiarizado con los estándares de CIS. CIS es una organización sin fines de lucro que
tiene como objetivo mantener el mundo conectado lo más seguro posible. CIS proporciona
sus guías de seguridad de forma gratuita a cualquier persona que las necesite y también
proporciona un servicio de pago en el que CIS puede proporcionar recursos ya reforzados,
como imágenes del sistema.
Como administradores de sistemas Linux, basta con descargar las guías de
fortalecimiento y seguir los pasos para asegurar su plataforma. Las guías están bastante
bien escritas; explican para qué sirve la configuración de seguridad y cómo remediar su
plataforma si se descubre que es vulnerable. Las guías incluso te dan los comandos para
correr.
En el pasado, escribí scripts de shell copiando y pegando los comandos de estas
guías. Hoy en día, hay formas mucho mejores de hacer esto, que trataré en breve en este
capítulo.

273
Machine Translated by Google

Capítulo 9 Seguridad

Guías de implementación técnica de seguridad


Al igual que CIS, también hay guías STIG que puede seguir para fortalecer sus plataformas.
Estas guías también están disponibles de forma gratuita, pero están un poco más
estructuradas y tienen más en cuenta los requisitos del gobierno de EE. UU.
Las guías STIG tampoco son tan variadas como las guías CIS. Las guías STIG no pueden
tienen guías para plataformas o aplicaciones basadas en la comunidad en comparación con
CIS. El uso de guías genéricas tendría que usarse donde CIS tiene guías dedicadas que
pueden usarse.

Endurecimiento de Linux

Hay algunas formas de fortalecer sus sistemas 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.

Cada una de las diferentes guías de endurecimiento disponibles viene con


comandos para determinar si un sistema es vulnerable y, si la vulnerabilidad está de hecho
presente, también proporciona los comandos de remediación. Tu amigo en este caso sería

copiar y pegar hasta llegar al final de la extensa guía.

Mi consejo sería empujar hacia atrás lo más fuerte posible en hacer


cualquier cosa manualmente. El tiempo que llevaría superaría con creces el tiempo que
llevaría configurar el siguiente método de endurecimiento de un sistema.

274
Machine Translated by Google

Capítulo 9 Seguridad

Automatización

La automatización es tu amiga. Internet está inundado de contenido escrito por


administradores de sistemas Linux como usted que necesitan fortalecer los sistemas.
Lo más probable es que encuentre algún Ansible o Puppet que haga exactamente lo
que desea. También tendrá el beneficio adicional de que el proceso sea repetible, lo
que podría ser muy útil cuando su jefe le diga que fortalezca otros cinco sistemas.

Sugerencia Recuerde buscar contenido en esas galaxias de recursos


de Internet como Ansible Galaxy o Puppet Forge.

OpenSCAP

Donde la automatización descargada de Internet puede fallar levemente es si necesita


replicar la configuración de un sistema diferente ya reforzado.
Puede haber un sistema particular que tenga un endurecimiento específico que no tenga
aplicado todo el endurecimiento por una buena razón.
Entonces, ¿cómo haría para ejecutar su endurecimiento estándar para
adaptarse a la misma configuración?
Para este caso de uso, puede utilizar OpenSCAP. OpenSCAP tiene la
capacidad de escanear un sistema o sistemas y generar un informe de la
configuración del sistema. Esta configuración se puede comparar con otro sistema y se
puede ejecutar un informe posterior para enumerar las diferencias.
Lo absolutamente sorprendente de OpenSCAP es que también puede generar
código Ansible o Puppet para remediar las diferencias por usted, evitando que
tenga que escribir su propia automatización.
OpenSCAP se puede ejecutar con perfiles CIS listos para usar y también puede
usar otros perfiles. La mayoría, si no todos, le presentarán la corrección de
vulnerabilidades a través de Ansible o Puppet.

275
Machine Translated by Google

Capítulo 9 Seguridad

OpenSCAP requerirá que tenga la herramienta OpenSCAP Workbench


instalado en el escritorio de Linux para permitirle configurar perfiles.

Sugerencia Antes de comenzar a escribir código de automatización, verifique si OpenSCAP

no puede hacerlo por ti.

Escaneo de vulnerabilidades
Vigilar su patrimonio y asegurarse de que no haya vulnerabilidades es vital
para garantizar que no tenga sorpresas desagradables esperando.

Herramientas de escaneo de Linux

OpenVAS

Una herramienta de la que muchos administradores de sistemas habrían oído hablar en


algún momento de su carrera es Nessus. OpenVAS es una bifurcación de Nessus antes
de que Nessus fuera contratado por Tenable. OpenVAS (Open Vulnerability Assessment
System) es el componente del escáner de un conjunto más grande de herramientas llamado
Greenbone Vulnerability Manager.
OpenVAS también obtiene las pruebas necesarias para detectar vulnerabilidades de una
fuente en vivo que tiene un buen historial y se actualiza diariamente.

OpenSCAP

OpenSCAP es otra muy buena herramienta de exploración de vulnerabilidades que es más


que una simple herramienta de exploración como se mencionó anteriormente. OpenSCAP
tiene la capacidad de usar múltiples perfiles y se puede personalizar completamente para
escanear según los requisitos de su organización.

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

configuración adicional con trabajos cron.

Herramientas de escaneo de imágenes de contenedores

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

Técnicamente, un repositorio de imágenes de contenedores. Harbor es un proyecto de

código abierto que brinda acceso basado en roles a su registro de contenedores con la

capacidad de escanear imágenes en busca de vulnerabilidades. VMware ha adoptado Harbour

como su registro de contenedores para su plataforma Tanzu Kubernetes.

Acceso basado en roles

Harbour protege los artefactos con políticas y control de acceso basado en funciones, lo

que garantiza que las imágenes se escaneen y estén libres de vulnerabilidades.

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

vulnerabilidades. Al conectar Harbor a más de un escáner, amplía el alcance de su protección

contra vulnerabilidades.

Imágenes únicas o múltiples

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

todas las imágenes a intervalos específicos.

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

dependencias de paquetes o artefactos en Artifactory, antes de lanzarlo para implementaciones en

vivo.

clara

Clair (de un término francés que significa claro) es un proyecto de código abierto que ofrece

seguridad estática y análisis de vulnerabilidades para imágenes de contenedores y contenedores de

aplicaciones.

278
Machine Translated by Google

Capítulo 9 Seguridad

Imágenes compatibles

Las imágenes admitidas actualmente que Clair puede escanear en busca de


vulnerabilidades incluyen todas las principales distribuciones empresariales analizadas en este
libro. Son los siguientes:

• Ubuntu

• Debian

• RHEL

• SUSE

• Oráculo

Clair también admite las siguientes imágenes que se utilizan actualmente en


diferentes ambientes:

• Alpino

• AWSLinux

• Fotones de VMware

• Pitón

Versión empresarial

Clair es actualmente la herramienta de exploración de vulnerabilidades que se utiliza dentro

del producto Red Hat Quay (pronunciado “kway” y no “clave”). Clair proporciona una herramienta

de exploración de vulnerabilidades de nivel empresarial para el registro de contenedores

compatible con Red Hat.

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.

Herramientas de escaneo de plataformas de contenedores

Red Hat Advanced Cluster Security para


Kubernetes (StackRox)

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.

El equivalente empresarial de Red Hat de StackRox proporciona las siguientes


funciones.

Escaneo de vulnerabilidades

La capacidad de encontrar y corregir vulnerabilidades en contenedores que se ejecutan


en plataformas Kubernetes u OpenShift.

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

permitido dentro y fuera de los entornos de Kubernetes u OpenShift.

Perfil de riesgo
Todos los riesgos detectados a partir de implementaciones dentro de Kubernetes u OpenShift se

pueden ver en una lista de prioridades para su corrección.

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

del clúster a través de la gestión de la configuración.

Detección y Respuesta
Mediante el uso de una combinación de reglas, listas de permitidos y líneas base, Red Hat ACS puede

identificar actividades sospechosas y tomar medidas para prevenir ataques.

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

aplicaciones y le alerta sobre las amenazas en tiempo de ejecución.

Falco tiene las siguientes características.

Motor de reglas flexible


Al usar una sintaxis similar a tcpdump, Falco puede crear reglas usando las bibliotecas libscap y libsinsp

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

metadatos en espacios de nombres específicos o imágenes de contenedores.

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.

Reglas de detección actuales

Reglas de detección actualizadas basadas en las últimas CVE o 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

utilizando contenedores nativos de la nube y que se implementan en una infraestructura


de nube híbrida como Kubernetes u OpenShift.

Aqua Security tiene las siguientes características.

Guía para desarrolladores

Aqua Security guía a los desarrolladores en la creación de imágenes de contenedores que

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

hacer que esas imágenes sean vulnerables.

Tablero Informativo
Aqua Security tiene un tablero claro y útil que brinda información en tiempo real sobre

la plataforma que se administra con todos los problemas descubiertos. Si se encuentra

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:

• Herramientas de seguridad estándar de Linux que deben usarse y


nunca deshabilitarse

• Configuración de Linux que debe usarse como mínimo


al asegurar un nuevo sistema

• La comprensión de lo que es DevSecOps y cómo esta nueva práctica


debe ser adoptada por todos dentro de una organización.

• Cumplimiento del sistema y fortalecimiento de Linux

• Guías que se pueden usar para fortalecer los sistemas Linux para
cumplir con los requisitos de cumplimiento

• Herramientas de análisis de vulnerabilidades

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

diversos trabajos de mantenimiento que se deben realizar al administrar un estado de Linux.


Veremos qué trabajo de mantenimiento real se debe realizar, cuándo se deben ejecutar los trabajos

de mantenimiento y cómo planificar el mantenimiento para causar la menor cantidad de tiempo de


inactividad.

Este capítulo también analizará brevemente cómo las tareas de mantenimiento y

las tareas burocráticas se pueden sincronizar para reducir el dolor general que a veces

puede traer el mantenimiento de rutina. Finalmente, discutiremos cómo se debe usar la

automatización para mejorar la experiencia general de mantenimiento para todos los

involucrados.

Qué mantenimiento se debe hacer


Hay una serie de comprobaciones que deben realizarse en un servidor Linux. Algunos

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

ejecutar un mantenimiento de emergencia.

© Kenneth Hitchcock 2022 K. 285


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_10
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Nota Para determinar si el mantenimiento es crítico, preste atención a su


monitoreo en busca de signos de posibles problemas que se avecinan.
Ejemplos de esto podrían ser discos a punto de llenarse.

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

debe ser descuidado. La aplicación de parches no solo contiene actualizaciones y correcciones

de paquetes, sino que también proporciona reparación de vulnerabilidades.

Puesta en escena

Nunca es una buena idea parchear sus entornos de producción/en vivo o orientados al cliente

antes de confirmar que nada se romperá con la ronda actual de actualizaciones.

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.

La figura 10-1 es un ejemplo de un orden de aplicación de parches que solía usar en el

pasado.

Figura 10-1. orden de parcheo

286
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

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

Si es posible, utilice pruebas automatizadas para demostrar que las actualizaciones


o la configuración de parches no han interrumpido la funcionalidad de su aplicación de
prueba. Existen numerosas opciones disponibles, tanto de código abierto como
patentadas, que se pueden usar para automatizar las pruebas de aplicaciones. Hable
con los desarrolladores de su organización o comuníquese con quién proporciona sus
aplicaciones. Lo más probable es que le den recomendaciones sobre lo que debe usar.
Aquí hay algunas opciones que también puede considerar que podrían ayudar:

• Selenio

• Estudio Catalán

• Appium (para aplicaciones móviles)

• Robotio

Aplicación de parches automatizada

Si su proceso de aplicación de parches está bien planificado y las pruebas de la

plataforma se pueden automatizar, realmente hay pocas cosas que le impidan automatizar su

trabajo de aplicación de parches real.

287
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Utilice herramientas de automatización como Ansible Tower o Jenkins o

cualquier cosa que le permita ejecutar etapas o flujos de trabajo. De esta manera, puede ejecutar

lo siguiente en etapas:

• Comprobaciones previas

• Confirmar que se han producido conmutaciones por error

• Parchear archivos del sistema operativo

• reinicios

• Pruebas automatizadas

Retroceder

Las canalizaciones o las herramientas de flujo de trabajo también pueden aplicar

reversiones si se detectan problemas, asegurando que cuando se cierre la ventana de

mantenimiento, nada quede en un estado problemático. La automatización es excelente, pero

incorporar tanta gestión de riesgos le ahorrará tener que explicar por qué su automatización

rompió un entorno.

Sugerencia Desea asegurarse de tener implementada la mayor cantidad de reducción de

riesgos para asegurarse de que no se culpe a su automatización por las interrupciones del sistema.

Esto es lo que hace tu vida más fácil y debe protegerse de


los detractores.

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

archivos antes de que se conviertan en un problema es crucial para no tener interrupciones

evitables.

288
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Limpiar
Durante el mantenimiento de su sistema, definitivamente vale la pena ejecutar los siguientes

sistemas de archivos diferentes y verificar si hay archivos que ya no son necesarios. Se

recomienda eliminar estos archivos y cualquier archivo temporal.

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

posibles problemas subyacentes antes de que se conviertan en un problema más adelante.

Comandos de verificación del sistema de archivos

Los comandos de la Tabla 10-1 son muy útiles cuando se ejecuta el mantenimiento del

sistema de archivos o, en general, cuando se busca resolver problemas de disco.

Tabla 10-1. Comandos básicos de verificación del sistema de archivos

Comando Linux Descripción

du-k/var/log | ordenar -n | cola -10 Buscar los diez archivos más grandes en

un directorio

encontrar Encuentre cualquier archivo en el directorio


. -tipo f -tamaño +100M -ls
actual de más de 100 MB

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

.tar.gz /var/log/*.log registro en el directorio /var/log

289
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

cortafuegos

Las verificaciones de firewall están ahí para garantizar que no se hayan introducido nuevas reglas

inesperadas en su sistema Linux. Técnicamente, estos deben administrarse mediante herramientas

de administración de configuración, pero en el caso de que no tenga SaltStack o Puppet en ejecución,

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.

Los arquitectos internos que han diseñado la plataforma siempre deben


recomendar reglas importantes de firewall. Si ha aparecido alguna regla que no
tiene sentido, consulte los diseños originales para confirmar que debería estar allí.

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

específicos respaldados según la función del servidor.

Durante su ventana de mantenimiento, vuelva a verificar que todas las copias de seguridad tengan

se ha estado ejecutando y que existe una copia de seguridad reciente.

Importante Antes de parchear o hacer cualquier cosa en su sistema que podría


dejarlo en un estado de inactividad, asegúrese de tener una copia de seguridad
reciente para restaurar.

290
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

La frecuencia con la que se debe realizar el mantenimiento de su patrimonio dependerá de un


pocos factores:

1. ¿Con qué frecuencia desea parchear su entorno?

2. ¿Tiene problemas con los discos que se llenan o los discos

corromperse?

3. ¿Tienen configuraciones inesperadas que aparecen en sus

plataformas?

Dos de los puntos anteriores indicarían que tienes problemas mayores

en su patrimonio que el mantenimiento; tratarlos primero sería la recomendación antes de

intentar solucionar los síntomas.

Tan seguido como sea posible

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

días. En mi opinión, noventa días es demasiado tiempo y debería reducirse a un mínimo de 30

días, pero eso también es un poco largo.

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

planteado por una vulnerabilidad recién descubierta.

Sin parches en vivo sin pruebas


La aplicación regular de parches también le permitirá utilizar un enfoque por etapas para

su proceso de aplicación de parches, lo que reducirá los posibles problemas con

configuraciones o actualizaciones no probadas.

291
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

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.

¿Cómo se debe hacer el mantenimiento?


Bastante simple, el mantenimiento automatizado es el camino a seguir hoy. Es necesario reducir
el factor humano en la forma en que mantenemos y construimos

plataformas Esta es la única forma en que realmente puede escalar. Tener una persona o un equipo

de personas a cargo del mantenimiento es una locura, y mucho menos si el mantenimiento se va a

realizar de manera regular como se debe hacer.

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.

Para decir lo obvio, la automatización del mantenimiento es tan importante como la

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

• Configuración de cortafuegos y SELinux

• Eliminación de programas

292
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Algunos de los elementos anteriores deben administrarse mediante herramientas de

administración de configuración, pero si no está usando ninguna, entonces su mantenimiento


la automatización debería ocuparse de ellos.

Su automatización también debe ejecutarse en un orden similar al siguiente:

1. Verifique y confirme que se haya realizado una copia de seguridad reciente.

2. Aplique cualquier actualización del sistema.

3. Ejecute pruebas automatizadas para confirmar que las actualizaciones no

roto cualquier cosa.

4. Limpiezas de disco.

5. Comprobaciones de configuración.

6. Revertir las actualizaciones si la prueba falla.

7. Actualizar el seguimiento o generar informes para


reflejar el estado.

Entornos sin tiempo de inactividad


Si sus entornos se consideran críticos y no pueden permitirse ningún tiempo de inactividad,

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.

El enfoque azul/verde le brinda la capacidad de actualizar directamente en sus entornos en vivo si

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

cambiar, nunca debería experimentar una interrupción.

293
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Una vez que haya completado el mantenimiento en un lado, puede aplicar el


mismo mantenimiento al segundo. Como ya ha demostrado que no hay ningún
problema, debería estar perfectamente bien para continuar con su segundo sitio.
Personalmente, aún recomendaría adoptar un enfoque por etapas, pero si tiene
poco tiempo, al menos tiene la protección de su segundo entorno al que puede volver.

conmutación por error

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

a su centro de datos primario y parcheando su sitio secundario.

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.

Aceptar ventana de mantenimiento


Encuentre un intervalo de tiempo regular para el mantenimiento por entorno. Automatice
los trámites burocráticos para garantizar que el mantenimiento pueda ejecutarse en
estos tiempos regulares. Al encontrar y planificar un intervalo de tiempo conocido con
su organización, siempre podrá aplicar actualizaciones y cambios sin necesidad de
discutir por qué cada vez.
Esto no significa que tenga que ejecutar el mantenimiento cada vez, simplemente
tiene la libertad de hacerlo cuando sea necesario.

294
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Si ha automatizado el proceso, entonces aún mejor. tu entorno

puede mantenerse constantemente actualizado y funcionar de la mejor manera posible, lo

que reduce la necesidad de solucionar problemas constantemente y le permite tener más tiempo

para concentrarse en las cosas más emocionantes.

Trozos del tamaño de un bocado

Si tiene una gran cantidad de mantenimiento que hacer y aún no ha automatizado el proceso, divida

su mantenimiento en partes pequeñas.

Mejor ejecute varias ventanas de mantenimiento pequeñas que una ventana grande.

Recuerda que los ojos cansados no ayudan a nadie.

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.

Proceso de automatización y tarea juntos


La automatización no se trata solo de la implementación de tareas técnicas. Hoy en día,

también es posible automatizar los procesos de "burocracia" dentro de su organización.

En el caso del mantenimiento del sistema, esta funcionalidad puede ser muy bien

vinculado con la automatización de tareas. Todas las aprobaciones se pueden automatizar

y alimentar a su plataforma de automatización técnica para continuar cuando llegue la

ventana de mantenimiento. No solo ya no tiene que hacer las implementaciones técnicas manuales,

sino que también puede evitar el trabajo burocrático.

295
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

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.

Sombrero rojo 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

incluso ayudar a resolver problemas de optimización complejos mediante el uso de la herramienta de

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

con el apoyo de la comunidad.

Advertencia Red Hat PAM es la herramienta que necesitará para


desarrollar sus tareas de proceso, tal como lo haría con Ansible al
automatizar tareas técnicas.

296
Machine Translated by Google

Capítulo 10 Tareas de mantenimiento y planificación

Resumen
En este capítulo, se le presentó lo siguiente:

• Qué mantenimiento del sistema Linux debe hacerse

• Cuándo se debe ejecutar el mantenimiento de Linux

• Métodos para ejecutar el mantenimiento sin tiempo de inactividad

• Cómo planificar el mantenimiento de Linux

• Cómo automatizar procesos de mantenimiento y tareas técnicas en


conjunto

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.

Finalmente, abordaremos las formas no tan buenas de solucionar problemas que


debes tratar de evitar.

Ver, analizar, luego actuar


El arte de convertirse en un solucionador de problemas efectivo es
convertirse en un investigador. Sigue las pistas y haz las preguntas correctas. Preste
atención a cada pequeño detalle y, lo que es más importante, comprenda por qué el problema

© Kenneth Hitchcock 2022 K. 301


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_11
Machine Translated by Google

Capítulo 11 Solución de problemas

ocurrió en primer lugar. Con demasiada frecuencia, se aplican vendajes a los


síntomas y los problemas subyacentes no se solucionan. Solucione la causa raíz y
se ahorrará todo el dolor posterior.

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.

Sepa por dónde empezar

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

Capítulo 11 Solución de problemas

Preguntas estándar para hacer al comenzar

Cuando es nuevo en un problema, necesita comprender el problema desde la


perspectiva de la persona que informó el problema. Para eso, debe hacer las
preguntas estándar que todos aprendimos en la escuela de TI. Preguntas similares
a las siguientes:

• ¿Me puede mostrar lo que está pasando?


• ¿El problema es repetible o intermitente?

• ¿Ha cambiado algo?

Nota No hay nada de malo en hacerse estas preguntas.


En todo caso, puede permitirle profundizar su comprensión del
problema.

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

Hace décadas que sabemos que explicarnos un problema a nosotros mismos


puede aumentar enormemente nuestras posibilidades de resolverlo. Al
explicarte el problema a ti mismo, obtienes nuevos conocimientos sobre el
tema, te haces preguntas y te desafías a lo que entiendes sobre el tema. Habla
en voz alta contigo mismo si te ayuda y sigue hablando contigo mismo sobre el
problema. No te quedes en silencio, encuentra una habitación tranquila si es
necesario y resuelve el problema.

303
Machine Translated by Google

Capítulo 11 Solución de problemas

pato de goma

Si después de explicarte el problema aún no tienes algo tangible, toma un objeto


inanimado (pato de goma) y explícale tu problema. Solo el proceso de explicar por
segunda vez puede ayudar.

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

Los problemas complejos involucrarán muchas partes móviles diferentes.


Comprender estas partes pieza por pieza no solo le dará más claridad sobre el
problema, sino que también le permitirá comenzar a eliminar las posibles causas.

Divida el problema en partes individuales y comience a explicarse qué hacen


estas partes, pregúntese si el problema podría existir dentro de cada parte y luego
elimine lo que no podría ser el problema.
Usar una pizarra o una hoja de papel es una excelente manera de visualizar su
problema en los diferentes componentes.

304
Machine Translated by Google

Capítulo 11 Solución de problemas

Cebollas, Tienen Capas


Mientras analiza el problema, recuerde considerar todas las capas involucradas. Si
experimenta un problema con la aplicación, mire todo, desde la aplicación hasta el
hardware físico. Al eliminar todo lo imposible, te quedas con lo más probable.

Los cinco porqués

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

Capítulo 11 Solución de problemas

La intranet está caída. ¿Por qué? Se aplicaron actualizaciones y se reinició el sistema.

¿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

que se aplicaron las actualizaciones del sistema, el verdadero problema se manifestó.

En este ejemplo, el problema se debió a un cambio no documentado que ocurrió en el

servidor web de la intranet. El cambio nunca se probó en una verificación de sintaxis y el servicio

nunca se reinició para aplicar el cambio.

Después de que el servidor se actualice y reinicie, el servidor web intentó iniciarse en el

arranque pero falló debido a un error de sintaxis.

Teorizar basado en evidencia


Durante el viaje de resolución de problemas difíciles o intermitentes, es posible que deba

encontrar diferentes vías para investigar.

Cada vía deberá investigarse y requerirá evidencia para demostrar que es la prueba irrefutable

antes de que la solución pueda aplicarse al entorno de vida afectado.

306
Machine Translated by Google

Capítulo 11 Solución de problemas

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

mediante la construcción de una serie de hipótesis.

Figura 11-2. Flujo que se debe seguir al construir una


hipótesis de solución de problemas

Sugerencia Antes de construir su hipótesis, no se apresure a descartar lo


improbable a menos que esté 100% seguro de que no puede ser el
problema.

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

ayudarlo a reproducir el problema experimentado en el entorno en vivo.

307
Machine Translated by Google

Capítulo 11 Solución de problemas

Causalidad

Al construir su hipótesis, evite caer en la trampa de no comprender la causa y


el efecto de un componente, por ejemplo, culpar a la versión del kernel porque una nueva
tarjeta gráfica no se pudo cargar. Aunque el núcleo es responsable de los controladores de
dispositivos, aún requiere el controlador del hardware fabricado compilado en el núcleo.

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

Para probar su teoría, primero debe reproducir el problema. Con su evidencia


recopilada, debe intentar replicar las mismas condiciones que el entorno en vivo y ver si puede
experimentar los mismos problemas. Si no puede reproducir el problema, es posible que tenga
una teoría incorrecta o que no haya reunido toda la evidencia.

Corrección en el entorno de prueba

Si puede reproducir el problema, puede probar su solución potencial y demostrar que el


problema se ha resuelto. Idealmente, todo el proceso debería ser repetible.

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

Capítulo 11 Solución de problemas

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

tener la respuesta con la que puede estar luchando.

Qué hacer antes de pedir ayuda


Cuando pides ayuda, le estás pidiendo a alguien que dedique parte de su tiempo para ayudarte

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

explicárselo de una manera que usted pueda entender.

Para ese esfuerzo, usted como solicitante debería haber hecho al menos el

siguiente antes incluso de hacer la pregunta:

• Trató de solucionar el problema y falló

• Lea la documentación proporcionada por el software o


proveedor de hardware

• Buscó en Internet ejemplos de lo que otros han intentado y verificó que nadie

ya haya hecho la pregunta sobre la que desea ayuda.

Capacitación

Si tiene la suerte de tener acceso a los materiales de capacitación, verifique si hay algo que le

hayan enseñado en los ejercicios que pueda ayudarlo.

309
Machine Translated by Google

Capítulo 11 Solución de problemas

Si nunca recibió capacitación, hable con el gerente de su organización para que lo


oriente a los cursos de capacitación adecuados. De lo contrario, hay muchos recursos en
línea que también puede utilizar para aprender.

Cómo pedir ayuda


Los siguientes son algunos puntos muy importantes que debe tener en cuenta al solicitar
ayuda.

Gramática correcta

Use la gramática y la ortografía correctas cuando sea posible. Si el inglés no es su primer


idioma, haga lo mejor que pueda y comience su pregunta con algo similar a esto:

“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.

Escriba o copie su pregunta en un nuevo documento y compruebe si hay errores


gramaticales y ortográficos.

Cómo formular sus preguntas

Ahora, con el uso correcto de la ortografía y la comprensión de la gramática, debe comprender


la importancia de cómo deben formularse sus preguntas.
Simplemente preguntando "¿Alguien sabe por qué mi tarjeta gráfica no
trabajar en mi escritorio Linux? no es suficiente ni está bien escrito.

310
Machine Translated by Google

Capítulo 11 Solución de problemas

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.

Cambiar su pregunta para incluir los siguientes fragmentos de información


obtendrá una respuesta mucho mejor:

• Indique lo que ha probado.

• Proporcione los detalles de todos los componentes, como la marca


y el modelo de la tarjeta gráfica. Dile a los lectores qué
distribución de Linux estás usando.

• Explique que ha leído la documentación y ha visto otros ejemplos.

• Sea muy específico sobre su problema en el cuerpo principal


de su pregunta y proporcione una sola línea en la parte
superior que resuma su problema.

Una pregunta mejor

El controlador Radeon RX 5700xt no funcionará con Fedora 34

Actualmente estoy tratando de instalar la tarjeta gráfica Radeon RX 5700XT en mi


nueva instalación de Fedora 34. Después de leer la documentación oficial en el sitio de
AMD y verificar la ayuda del comando de instalación, todavía no puedo encontrar una
solución.
He intentado ejecutar los comandos.

./ 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”

Aquí está la salida de mi archivo de registro.

“Entradas de archivos de registro”

311
Machine Translated by Google

Capítulo 11 Solución de problemas

Cualquier ayuda sería muy apreciada o cualquier documentación que pueda


tener que me puede haber perdido también sería muy útil.

Sugerencia No apresure su pregunta; tómese el tiempo para hacer la pregunta


de una manera clara y no vaga. Las personas responderán a una pregunta que
haya sido formulada por alguien que se tomó el tiempo y el esfuerzo de hacerla
correctamente.

Dónde hacer preguntas


Cómo hacer preguntas es vital para obtener una respuesta positiva, pero dónde hacer
las preguntas correctamente redactadas es igualmente importante.

Á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

Si tiene un problema con un producto o proyecto en particular, verifique si tienen un


foro en el que pueda hacer preguntas. Asegúrese de verificar primero si su pregunta
aún no se ha hecho.

312
Machine Translated by Google

Capítulo 11 Solución de problemas

GitHub, desbordamiento de pila

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

como GitHub también pueden ofrecer algunas buenas ideas.

Casos de soporte

Si su problema está relacionado con un producto empresarial por el que usted o su

organización están pagando suscripciones, plantee un caso de soporte con sus mesas de

ayuda. Esto es después de todo lo que estás pagando.

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

archivos relevantes, a veces puede resolver su problema más rápido.

Cosas a evitar al solucionar problemas


Solucionar problemas no suele ser algo que hacemos por diversión; normalmente tiene presión de

tiempo asociada para que usted resuelva el problema lo antes posible.

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

archivo de configuración en modo de depuración para provocar una interrupción.

Hay una razón por la que se crean entornos de prueba y entornos que no son de

producción. Úselos para encontrar la causa raíz, no su entorno en vivo.

313
Machine Translated by Google

Capítulo 11 Solución de problemas

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.

Con el caso de que un servicio no arranque, no pierdas el tiempo buscando


en el archivo de servicio si no ha verificado primero la configuración de la aplicación. No
estoy diciendo que no verifique el archivo de servicio en busca de problemas de sintaxis o
posibles cambios, simplemente no lo priorice.

Ser un lobo solitario


No sufras en silencio; pedir ayuda y trabajar en parejas. Dos pares de ojos siempre van a
ser mejores que uno. Dos cerebros piensan de manera diferente y abordarán los problemas
desde diferentes ángulos. No pases horas peleando solo.

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.

Reconocer un error a menudo se tratará simplemente como eso, "un error".


Mentir sobre el problema y causar demoras con su falta de honestidad probablemente no
terminará bien para usted. Acepta tu error y
aprender de ello.

314
Machine Translated by Google

Capítulo 11 Solución de problemas

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.

Todas las cosas pequeñas

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í.

Mantenga un registro de lo que ha intentado

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.

Mida dos veces, corte una vez

Este viejo dicho también se aplica a la aplicación de soluciones. Aplicar soluciones


sucias para que las cosas funcionen al instante, pero luego tener que solucionar el
mismo problema en un corto período de tiempo es una tontería.
Encontrar la causa raíz y aplicar una solución permanente debe ser su primera prioridad.

315
Machine Translated by Google

Capítulo 11 Solución de problemas

Si su entorno en vivo está inactivo, idealmente debería estar ejecutándose en su


sitio de recuperación ante desastres o dentro de su sitio secundario. Si este no es el
caso, entonces hay problemas más grandes que una interrupción.
preocupado por.
¿Qué tiene más sentido?

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

mejor que explicar por qué el entorno en vivo volvió a fallar.

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.

Documente el problema y cómo se resolvió el problema. Tener


algo a lo que referirse si el problema volviera a ocurrir de alguna manera le ahorrará tiempo.

Resumen
En este capítulo, exploramos lo siguiente sobre la solución de problemas:

• Aprenda a entender su problema, explicándoselo a usted mismo ya


los “otros”.

• Divida su problema hasta los componentes más pequeños


y trabajar desde allí.

• 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

Capítulo 11 Solución de problemas

• Cómo construir una teoría sobre lo que podría estar causando su


problema y probar su teoría antes de aplicar cualquier solución a
su entorno en vivo.

• Las formas correctas de pedir ayuda, incluyendo lo que


debe hacer antes de pedir ayuda.

• Cosas que se deben evitar al solucionar problemas.

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.

Cuando las herramientas y técnicas de análisis de sistemas no le brindan toda la


información que necesita, se requiere el uso de herramientas adicionales para obtener más.
Dedicaremos el resto de este capítulo a ver cómo puede extraer las últimas gotas de
información de su sistema operativo Linux.

Análisis del sistema


Como administrador del sistema Linux, habrá dedicado tiempo a revisar los archivos de
configuración y el estado general del sistema para tratar de identificar el origen del problema
de un usuario. Este proceso normalmente puede ser doloroso y puede llevar un tiempo que
no desea gastar. Tener las herramientas correctas puede ser de gran ayuda para llegar al
fondo de un problema y permitirle concentrarse en cosas más interesantes.

© Kenneth Hitchcock 2022 K. 319


Hitchcock, Administración de sistemas Linux para la década de
2020, https://doi.org/10.1007/978-1-4842-7984-7_12
Machine Translated by Google

Capítulo 12 Administración avanzada

Aquí hay algunas herramientas rápidas que puede usar para obtener información sobre

un sistema Linux.

Herramientas para el administrador de sistemas

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

empresarial a menudo solicitan el resultado de Sosreport cuando se presentan casos de soporte y

siempre vale la pena cargarlo cada vez que se presenta un nuevo caso de soporte.

Sosreports son un archivo de la configuración del sistema problemático

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

investigar el problema de un usuario desde su propio sistema de prueba.

Si la extracción manual de sosreports no te interesa, existen herramientas

que se puede utilizar para extraer y resumir la configuración dentro de los informes.

320
Machine Translated by Google

Capítulo 12 Administración avanzada

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:

# curl -Lo ./xsos bit.ly/xsos-direct; chmod +x ./xsos; ./


xsos-ya

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:

• Salida dmidecode resumida

• Detalles del sistema operativo

• Configuración de volcado

• Detalles de la CPU

• Interrupciones y softirq

• Memoria

• Almacenamiento

• LSCI

• Información de la red, incluido el cortafuegos

• Configuración de ajuste del kernel

321
Machine Translated by Google

Capítulo 12 Administración avanzada

Sugerencia Automatice sus sistemas Linux para generar automáticamente estos informes

de forma regular y cargue el resultado en un recurso compartido central.

Si alguna vez tiene un problema importante, puede consultar estos informes sos para

obtener pistas sobre lo que podría haber salido mal.

Información del sistema

Toda la información del dispositivo sobre su sistema Linux se puede encontrar en el

directorio "/proc". En el "/proc", hay diferentes archivos como "meminfo" o "cpuinfo" que le

mostrarán la información relevante sobre cada componente. El archivo "cpuinfo", por

ejemplo, le mostrará toda la información sobre todas las CPU conectadas a su sistema Linux,

incluidas las banderas de CPU.

Herramientas de acceso directo

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

dispositivo cuando necesite diagnosticar cualquier problema rápidamente.

Tabla 12-1. Herramientas básicas del sistema Linux para información de hardware

Descripción del comando de Linux

lshw Enumerará un resumen completo de todo el hardware reconocido por su sistema

lscpu Resumen de toda la información de la CPU, similar a ejecutar

# gato /proc/cpuinfo

lsblk Lista rápida de todos los dispositivos de almacenamiento conectados

susb Lista de todos los dispositivos USB conectados a su sistema Linux

lspci Enumera todos los controladores y dispositivos PCI conectados a las ranuras PCI

lsscsi Enumera todos los dispositivos scsi y sata conectados a su sistema

322
Machine Translated by Google

Capítulo 12 Administración avanzada

Más detalles
Si los detalles no son suficientes en las herramientas de acceso directo, puede usar las

herramientas enumeradas en la Tabla 12-2 para obtener un poco más.

Tabla 12-2. Herramientas para un poco más de detalles

Descripción del comando de Linux

hdparm Imprime detalles como la geometría de un dispositivo de almacenamiento

dmicode Se puede utilizar para proporcionar información más detallada

sobre sus sistemas. El uso del parámetro "-t" seguido de "memoria",

"procesador", "sistema" o "bios" le dará más


detalles alrededor de cada uno

Seguimiento del sistema

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

de Linux a obtener estos detalles de nivel inferior.

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

y también se puede adjuntar a un "pid" en ejecución.

Instalación
Strace está disponible en los repositorios más comunes en casi todas las distribuciones de Linux.

En el caso de Fedora, strace se puede instalar de la siguiente manera:

# dnf instalar strace -y

323
Machine Translated by Google

Capítulo 12 Administración avanzada

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:

# strace -o archivo de prueba.txt libre -h

El archivo de salida se puede ver en un editor de texto y, en algunos casos,


incluso puede mostrar diferentes llamadas en diferentes colores para facilitar un poco la
interpretación.

Qué buscar
Las siguientes son algunas cosas útiles para buscar con strace:

• Cualquier archivo que intente abrirse pero no exista o muestre


un posible permiso denegado -13 errores

• Archivos en los que se escriben que tienen problemas de permisos

• Tráfico de red de un proceso o aplicación que se transmite a


través de la red

Parámetros útiles de Strace


La tabla 12-3 enumera algunos parámetros útiles que puede usar con strace.

324
Machine Translated by Google

Capítulo 12 Administración avanzada

Tabla 12-3. Parámetros de seguimiento

Parámetro Descripción

-pag Permite que strace se adjunte a un pid en ejecución

-C Crea un resumen de todas las diferentes llamadas al sistema que se

ejecutaron para el proceso

-t Muestra una marca de tiempo de cuándo se ejecutó cada línea

-e trace=open Filtra todas las llamadas del sistema para incluir solo las llamadas abiertas. Otras opciones

incluyen todo, escritura, señal, abreviatura, detallado, sin formato y lectura

-q -e rastrear= Permite que el seguimiento se establezca en archivo, proceso, memoria, red

y señal

toque del sistema

Otra buena herramienta para extraer información de su sistema Linux es "systemtap".

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

plataformas Linux basadas en kernel.

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

sistema RHEL, el siguiente comando instalará sus paquetes:

# yum install systemtap systemtap-runtime -y

325
Machine Translated by Google

Capítulo 12 Administración avanzada

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".

Una vez que haya instalado el paquete systemtap-devel, ejecute el comando


stap-prep. Se instalarán los archivos necesarios para el kernel en ejecución actual.

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

Cualquier usuario en el grupo "stapdev" y "stapusr" podrá ejecutar systemtap


como si tuviera privilegios de root. Los usuarios en "stapusr" solo pueden iniciar (con
"staprun") módulos de prueba precompilados.
A los usuarios del grupo "stapusr" también se les puede permitir crear
scripts systemtap sin privilegios propios.

Scripts de toque del sistema

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

Capítulo 12 Administración avanzada

Ejecución de secuencias de comandos Systemtap

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

en busca de operaciones de disco.

Para probar esto, ejecute un comando DD similar al siguiente en un


nueva ventana:

# dd if=/dev/cero of=file.txt count=1024 bs=1048576

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

y ejecutarlos con solo instalar el paquete systemtap-runtime.

Esto permitiría usar un sistema como el compilador que puede ser

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

versiones, simplemente reinicie el sistema de compilación en un kernel diferente.

327
Machine Translated by Google

Capítulo 12 Administración avanzada

Para crear un módulo iotop de instrumentación cruzada, puede ejecutar el


dominio:

# paso -p 4 -m iotop /usr/share/systemtap/examples/io/iotop.stp

Una vez creados, estos módulos deben ser copiados por un administrador de sistemas a /

lib/modules/`uname -r`/systemtap del sistema en el que desea ejecutar el módulo.

Ajuste del sistema


Otro aspecto importante de la administración del sistema Linux es comprender cómo ajustar un

sistema Linux para la tarea que debe realizar.

Este proceso puede resultar difícil si no cuenta con la orientación de ninguno de los

proveedores o si es nuevo en la gestión de sistemas Linux.

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:

# yum instalación sintonizada

Tuned también necesitará tener el servicio habilitado e iniciado:

# systemctl habilitar sintonizado

# systemctl inicio sintonizado

328
Machine Translated by Google

Capítulo 12 Administración avanzada

Usando Tuned

Tuned tiene una serie de perfiles que se proporcionan durante la instalación. Para ver el

perfil activo actual, puede ejecutar el siguiente comando:

# tuned-adm activo

Para enumerar todos los perfiles disponibles, puede ejecutar el comando

# lista de administradores sintonizados

Finalmente, para cambiar a un perfil diferente, puede ejecutar

# tuned-adm profile <nombre del perfil>

Resumen
En este capítulo, se le presentó lo siguiente:

• Herramientas de análisis del sistema Linux como sosreports y cómo leerlos

de manera rápida y fácil

• Herramientas estándar del sistema que se pueden usar para extraer

información del sistema

• Herramientas de seguimiento del sistema como strace y systemtap

• Ajuste del sistema de forma sencilla utilizando la utilidad tuned

329

También podría gustarte