No puedes hacer GitOps hasta que puedas agregar git

Este artículo explica cómo resolví algunos problemas al obtener mi entorno y configuraciones iniciales en Git: los primeros pasos para usarlo. GitOps.

Hace tiempo que quería adoptar GitOps, pero siempre es difícil saber por dónde empezar. ¿Estoy usando tareas de Jenkins? Conozco bien a Jenkins. Todavía es un poco de la vieja escuela. tal vez debería usar Torre Ansible. Escuché cosas buenas sobre ArgoCD y muchos otros proyectos similares. La verdad es que no puedo hacer nada hasta que mi entorno y configuración estén almacenados en Git.

Al final de este artículo, espero que tome algunos de mis consejos para empezar.

Índice

    ¿Qué obtendré al usar Git para configuraciones de servidor?

    1. Todos los cambios se registran y rastrean - Quién hizo este cambio, cuándo, etc. ?
    2. Todos los cambios están versionados - Si la edición más reciente rompió algo, es fácil revertirla.
    3. copia de seguridad gratuita - Simplemente clone el repositorio en varias ubicaciones.
    4. Configuraciones fáciles de reutilizar - ¿Acaba de instalar un nuevo servidor y desea utilizar el 90 % de una configuración actual de apache? Simplemente clone el repositorio y copie el archivo.

    Cree un repositorio de Git: privado, pero accesible

    Mi intención es almacenar todos mis archivos de configuración para dnsmasq, httpd, etc., todo en Git. La configuración es confidencial, incluidos los nombres de usuario y las contraseñas, por lo que, obviamente, un repositorio público de GitHub no es la mejor idea. Si está dispuesto a pagar por un repositorio privado, hágalo. Elegí crear un repositorio en un servidor dedicado que tengo en la Internet pública para que todos los demás servidores puedan conectarse a él.

    $ cd /opt/ 
    $ sudo git init --bare ServerConfiguration.git

    Nombres de directorio basados ​​en DNS: fácil de navegar

    Quiero que sea más fácil ordenar y estructurar mi configuración. Decidí usar nombres DNS de servidor para los directorios.

    $ sudo git clone ssh://[email protected]/opt/ServerConfiguration.git
    $ cd ServerConfiguration.git
    $ sudo mkdir -p example.com/server1/{httpd,dnsqmasq}

    ¿Por qué guardarlo en /opt? Usualmente uso este directorio para archivos almacenados en un servidor propio. Tiene la ventaja de que la mayoría de las veces es el mismo sistema de archivos que /, lo que facilita la creación de enlaces duros a archivos.

    Configuraciones de servicio de conexión directa en su repositorio de Git

    Podría tener un repositorio de Git separado por servidor, o incluso por servicio, pero eso se volverá rápidamente inmanejable. En cambio, este repositorio de "Configuración del servidor" para todo su entorno puede almacenar fácilmente configuraciones para varios servicios diferentes.

    Entonces, ¿cómo hace que Apache, dnsmasq y todos esos otros servicios lo usen? Los enlaces duros son el camino a seguir. la sintaxis es ln [existing file] [new link].

    $ sudo ln /opt/ServerConfiguration/example.com/server1/httpd.conf /etc/httpd/conf/httpd.conf

    ¿Por qué no enlaces simbólicos, dices? Bueno, comencé usando enlaces simbólicos, pero descubrí que las políticas de SELinux para cosas como dnsmasq realmente se quejan de usar un archivo de configuración fuera de un directorio esperado. Parece que SELinux permite que dos enlaces duros separados tengan dos contextos SELinux separados.

    Enlace simbólico a una configuración de servicio común

    Tengo un montón de servidores que comparten los mismos archivos de configuración. Un directorio común con enlaces simbólicos relativos funciona bien aquí.

    $ cd /opt/ServerConfiguration 
    $ sudo mkdir -p example.com/common
    $ sudo cp /etc/httpd/conf/httpd.conf common/httpd.conf
    $ sudo ln -s "../common/httpd.conf" server1/httpd.conf
    $ sudo ln -s "../common/httpd.conf" server2/httpd.conf

    Obtener compromiso de git

    Una vez que haya vinculado sus archivos de configuración, no olvide git add y git commit su progreso.

    cd /opt/ServerConfiguration
    $ sudo git add -A
    $ sudo git commit 'Made some changes...'
    $ sudo git push

    Adquiera el hábito de cambiar configuraciones, luego agregar y confirmar cambios. Envíe periódicamente estos cambios a su servidor de origen y extraiga/actualice según sea necesario. Encuentro que el uso de Git es infeccioso y cuando encuentro un servidor que no está bajo el control de versión de configuración de Git, rápidamente agrego las configuraciones necesarias al repositorio.

    Esta será la base para algunos GitOps más sofisticados más adelante. Pero por ahora, este proceso ya tiene muchas ventajas.

    Si está buscando un tutorial para comenzar con Git, le recomiendo el Libro Git.

    ¿Adónde puedo ir desde aquí?

    1. Almacene la producción, las pruebas y la configuración en diferentes sucursales y combínelas.
    2. Realice revisiones de código cuando las personas envían: ¿quién necesita una junta asesora de cambios?
    3. Explore las diferentes opciones para aplicar automáticamente esta configuración al guardar: Jenkins Jobs, Ansible Tower, ArgoCD, etc.

    Este artículo fue publicado originalmente en jread.com/blog.

    Artículos de interés

    Subir