From 1197a661725bde8dedc8737803dad9558878658b Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Tue, 29 Nov 2022 00:42:29 +0100 Subject: [PATCH 1/5] Translated to Spanish the day16 file Signed-off-by: Manuel Vergara --- 2022/es/Days/day16.md | 134 ++++++++++++++++++++++++++---------------- 1 file changed, 83 insertions(+), 51 deletions(-) diff --git a/2022/es/Days/day16.md b/2022/es/Days/day16.md index abf19d8..af2094a 100644 --- a/2022/es/Days/day16.md +++ b/2022/es/Days/day16.md @@ -1,156 +1,188 @@ -## Managing your Linux System, Filesystem & Storage +## Gestión de tu sistema Linux, sistema de archivos y almacenamiento -So far we have had a brief overview of Linux and DevOps and then we got our lab environment set up using Vagrant [(Day 14)](day14.md), we then touched on a small portion of commands that will be in your daily toolkit when in the terminal and getting things done [(Day 15)](day15.md). +Hasta ahora hemos tenido una toma de contacto con Linux y DevOps. Tenemos nuestro entorno de laboratorio configurado con Vagrant [(Día 14)](day14.md) y tocamos una pequeña porción de comandos que estarán en nuestro kit de herramientas diarias para nuestras cositas en la terminal [(Día 15)](day15.md). -Here we are going to look into three key areas of looking after your Linux systems with updates, installing software, understanding what system folders are used for and we will also take a look at storage. +Hoy vamos a mirar en áreas clave a cuidar en los sistemas Linux con las actualizaciones, la instalación de software en general. También intentaremos explicar un poco sobre las carpetas del sistema y como se utilizan. Por último, echaremos un vistazo al almacenamiento. -## Managing Ubuntu & Software +## Gestión de Ubuntu y el Software -The first thing we are going to look at is how we update our operating system. Most of you will be familiar with this process in a Windows OS and macOS, this looks slightly different on a Linux desktop and server. +Lo primero que vamos a ver es cómo actualizar nuestro sistema operativo. Quizá estes familiarizado con este proceso en un sistema operativo Windows y macOS. Es ligeramente distinto en un Desktop o un servidor Linux. -We are going to be looking at the apt package manager, this is what we are going to use on our Ubuntu VM for updates and software installation. +Vamos a ver el gestor de paquetes apt, que es el que utilizaremos en nuestra MV Ubuntu para las actualizaciones y la instalación de software. -Generally, at least on dev workstations, I run this command to make sure that I have the latest available updates from the central repositories, before any software installation. +Generalmente, en las distribuciones derivadas de Debian, se ejecuta este comando para asegurarse de tener las últimas actualizaciones de los repositorios centrales, antes de cualquier instalación de software que pudiera provocar un conflicto de dependencias. -`sudo apt-get update` +```shell +sudo apt-get update +``` ![](Images/Day16_Linux1.png) -Now we have an updated Ubuntu VM with the latest OS updates installed. We now want to get some software installed here. +Ahora tenemos una MV Ubuntu actualizada con las últimas actualizaciones del sistema operativo instaladas. Ahora queremos instalar algún software. -Let's choose `figlet` which is a program that generates text banners. +Vamos a elegir `figlet` que es un programa que genera banners de texto. -If we type `figlet` in our terminal you are going to see that we do not have it installed on our system. +Si escribimos `figlet` en nuestro terminal vais a ver que no lo tenemos instalado en nuestro sistema. ![](Images/Day16_Linux2.png) -You will see from the above though that it does give us some `apt` install options that we could try. This is because in the default repositories there is a program called figlet. Let's try `sudo apt install figlet` +Sin embargo, verás que nos da algunas opciones de instalación `apt` que podríamos probar. Esto es porque en los repositorios por defecto hay un programa llamado figlet. Probemos con `sudo apt install figlet`. ![](Images/Day16_Linux3.png) -We can now use our `figlet` app as you can see below. +Instalado. Ahora ya lo podemos usar como puedes ver a continuación. ![](Images/Day16_Linux4.png) -If we want to remove that or any of our software installations we can also do that via the `apt` package manager. +Si queremos eliminar esa o cualquier otro software también podemos hacerlo a través del gestor de paquetes `apt`. -`sudo apt remove figlet` +```shell +sudo apt remove figlet +``` ![](Images/Day16_Linux5.png) -There are third party repositories that we can also add to our system, the ones we have access to out of the box are the Ubuntu default repositories. +⚠️ _Ten cuidado con borrar cosas que no debes. Normalmente, las distribuciones te avisarán, puedes borrar todos los programas incluidos los que aparentemente no usas, pero en realidad son dependencias de otros._ -If for example, we wanted to install vagrant on our Ubuntu VM we would not be able to right now and you can see this below on the first command issued. We then add the key to trust the HashiCorp repository, then add the repository to our system. +Si quieres asegurarte de borrar el programa y todas sus dependencias puedes usar la opción `--purge`: + +```shell +sudo apt --purge remove figlet +``` + +Podremos añadir repositorios de terceros, a los que tendremos acceso además de los repositorios por defecto de Ubuntu y de los oficiales. + +Si por ejemplo, quisiéramos instalar vagrant en nuestra MV de Ubuntu no podríamos ahora mismo y esto lo podéis ver a continuación en el primer comando emitido. Añadimos la clave para confiar en el repositorio de HashiCorp, y luego añadimos el repositorio a nuestro sistema. ![](Images/Day16_Linux6.png) -Once we have the HashiCorp repository added we can go ahead and run `sudo apt install vagrant` and get vagrant installed on our system. +Una vez que tenemos el repositorio de HashiCorp añadido podemos seguir adelante y ejecutar `sudo apt install vagrant` y conseguir instalarlo en nuestro sistema. ![](Images/Day16_Linux7.png) -There are so many options when it comes to software installation, different options for package managers, built into Ubuntu we could also use snaps for our software installations. +Hay tantas opciones cuando se trata de la instalación de software, existen diferentes opciones de gestores de paquetes. Por ejemplo, en Ubuntu también podríamos utilizar snaps para nuestras instalaciones de software. -Hopefully, this gives you a feel about how to manage your OS and software installations on Linux. +Esperemos que esto te dé una idea de cómo gestionar tu sistema operativo y las instalaciones de software en Linux. -## File System Explained +## Explicación del sistema de archivos -Linux is made up of configuration files, if you want to change anything then you change these configuration files. +Linux está hecho de archivos de configuración, si quieres cambiar algo entonces cambias estos archivos de configuración. ¡Una maravilla! -On Windows, you have C: drive and that is what we consider the root. On Linux we have `/` this is where we are going to find the important folders on our Linux system. +En Windows, tienes la unidad C: y eso es lo que consideramos la raíz. En Linux tenemos `/`, aquí es donde vamos a encontrar las carpetas importantes de nuestro sistema Linux. ![](Images/Day16_Linux8.png) -- `/bin` - Short for binary, the bin folder is where our binaries that your system needs, executables and tools will mostly be found here. +- `/bin` - Abreviatura de binario, en esta carpeta es donde se encuentran los binarios que nuestro sistema necesita, los ejecutables y las herramientas. ![](Images/Day16_Linux9.png) -- `/boot` - All the files your system needs to boot up. How to boot up, and what drive to boot from. +- `/boot` - Todos los archivos que tu sistema necesita para arrancar, los que indican cómo arrancar y los que definen desde qué unidad arrancar. ![](Images/Day16_Linux10.png) -- `/dev` - You can find device information here, this is where you will find pointers to your disk drives `sda` will be your main OS disk. +- `/dev` - Aquí puedes encontrar información de dispositivos, es donde encontrarás punteros a tus unidades de disco `sda` será tu disco principal del SO. ![](Images/Day16_Linux11.png) -- `/etc` Likely the most important folder on your Linux system, this is where the majority of your configuration files are. +- `/etc` Probablemente la carpeta que más navegarás de Linux. Es donde están la mayoría de archivos de configuración. ![](Images/Day16_Linux12.png) -- `/home` - this is where you will find your user folders and files. We have our vagrant user folder. This is where you will find your `Documents` and `Desktop` folders that we worked in for the commands section. +- `/home` - Aquí es donde encontrarás tus carpetas y archivos de usuario. Tenemos nuestra carpeta de usuario vagrant. Es donde te encontrarás las carpetas para tu Ubuntu Desktop como los `Documentos`, las `Descargas` y el `Escritorio`. ![](Images/Day16_Linux13.png) -- `/lib` - We mentioned that `/bin` is where our binaries and executables live, and `/lib` is where you will find the shared libraries for those. +- `/lib` - Hemos mencionado que `/bin` es donde viven nuestros binarios y ejecutables, pues en `/lib` es donde encontrarás las librerías compartidas para estos. ![](Images/Day16_Linux14.png) -- `/media` - This is where we will find removable devices. +- `/media` - Aquí es donde encontraremos los dispositivos extraíbles. ![](Images/Day16_Linux15.png) -- `/mnt` - This is a temporary mount point. We will cover more here in the next storage section. +- `/mnt` - Este es un punto de montaje temporal. Cubriremos más sobre este en el siguiente apartado de almacenamiento, tienen bastante miga. ![](Images/Day16_Linux16.png) -- `/opt` - Optional software packages. You will notice here that we have some vagrant and virtual box software stored here. +- `/opt` - Paquetes de software opcionales. Notarás que tenemos algunos programas de vagrant y virtual box almacenados aquí. ![](Images/Day16_Linux17.png) -- `/proc` - Kernel & process information, similar to `/dev` +- `/proc` - Información del kernel y de los procesos, similar a `/dev`. Es un sistema de archivos virtual que se crea sobre la marcha cuando el sistema arranca y se disuelve cuando se apaga. Me parece uno de los más importantes para trabajar si quieres dedicarte a la filosofía DevOps. La magía de la contenerización se entiende mejor si trabajas con el sistema de archivos que contiene `/proc`. + +Contiene información útil sobre los procesos que se están ejecutando en ese momento, y se considera un centro de control e información para el núcleo. Puedes configurar directamente el kernel desde aquí, pues proporciona un medio de comunicación entre el espacio del kernel y el espacio del usuario. + +En este [tutorial](https://prefapp.github.io/formacion/cursos/docker/es/#/./01_que_e_un_contedor_de_software/01_procesos_e_kernel) puedes trabajar con `/proc` ![](Images/Day16_Linux18.png) -- `/root` - To gain access you will need to sudo into this folder. The home folder for root. +- `/root` - Para acceder a esta carpeta necesitarás sudo. Es la carpeta home para root. ![](Images/Day16_Linux19.png) -- `/run` -Placeholder for application states. +- `/run` - Marcador de posición para los estados de la aplicación. ![](Images/Day16_Linux20.png) -- `/sbin` - Sudo bin, similar to the bin folder but these tools are intended for elevated superuser privileges on the system. +- `/sbin` - Sudo bin, similar a la carpeta bin pero estas herramientas están pensadas para privilegios elevados de superusuario en el sistema. ![](Images/Day16_Linux21.png) -- `/tmp` - temporary files. +- `/tmp` - archivos temporales. ![](Images/Day16_Linux22.png) -- `/usr` - If we as a standard user have installed software packages it would generally be installed in the `/usr/bin` location. +- `/usr` - Si como usuario estándar hemos instalado paquetes de software, generalmente se instalarán en la ubicación `/usr/bin`. ![](Images/Day16_Linux23.png) -- `/var` - Our applications get installed in a `bin` folder. We need somewhere to store all of the log files this is `/var` +- `/var` - Nuestras aplicaciones se instalan en una carpeta `bin`. Necesitamos un lugar para almacenar todos los archivos de registro, este es `/var`. ![](Images/Day16_Linux24.png) -## Storage +## Almacenamiento -When we come to a Linux system or any system we might want to know the available disks and how much free space we have on those disks. The next few commands will help us identify and use and manage storage. +Cuando llegamos a un sistema Linux o a cualquier sistema podemos querer saber los discos disponibles y cuánto espacio libre tenemos en esos discos. Los siguientes comandos nos ayudarán a identificar, utilizar y gestionar el almacenamiento. -- `lsblk` List Block devices. `sda` is our physical disk and then `sda1, sda2, sda3` are our partitions on that disk. +- `lsblk` Lista los dispositivos de bloque. `sda` es nuestro disco físico y luego `sda1, sda2, sda3` son nuestras particiones en ese disco. ![](Images/Day16_Linux25.png) -- `df` gives us a little more detail about those partitions, total, used and available. You can parse other flags here I generally use `df -h` to give us a human output of the data. +- `df` nos da un poco más de detalle sobre las particiones: el total, el usado y el disponible. Puedes usar opciones interesante como `df -h` para darnos una salida humana de los datos. ![](Images/Day16_Linux26.png) -If you were adding a new disk to your system and this is the same in Windows you would need to format the disk in disk management, in the Linux terminal you can do this by using the `sudo mkfs -t ext4 /dev/sdb` with sdb relating to our newly added disk. +Si usted estuviera añadiendo un nuevo disco a su sistema, y esto es lo mismo en Windows, necesitarías formatear el disco en la administración de discos. En la terminal de Linux puedes hacerlo usando +```shell +sudo mkfs -t ext4 /dev/sdb +``` +Nos deberemos asegurar que sdb es realmente nuestro disco recién añadido y el que queremos formatear, porque es lo que hará, borrarlo y darle un formato ext4 al disco. -We would then need to mount our newly formatted disk so that it was useable. We would do this in our `/mnt` folder previously mentioned and we would create a directory there with `sudo mkdir NewDisk` we would then use `sudo mount /dev/sdb newdisk` to mount the disk to that location. +A continuación, tendríamos que montar nuestro disco recién formateado para poderlo utilizar. Esto lo hacemos en nuestra carpeta `/mnt` que mencionamos anteriormente. Creamos un directorio allí con +```shell +sudo mkdir /mnt/NewDisk +``` +Para montar el disco en esa ubicación usaremos el siguiente comando. -It is also possible that you will need to unmount storage from your system safely vs just pulling it from the configuration. We can do this with `sudo umount /dev/sdb` +```shell +sudo mount /dev/sdb newdisk +``` -If you did not want to unmount that disk and you were going to be using this disk for a database or some other persistent use case then you want it to be there when you reboot your system. For this to happen we need to add this disk to our `/etc/fstab` configuration file for it to persist, if you don't it won't be useable when the machine reboots and you would manually have to go through the above process. The data will still be there on the disk but it won't automount unless you add the configuration to this file. +También es posible que necesites desmontar el almacenamiento del sistema de forma segura. Lo podemos hacer con +```shell +sudo umount /dev/sdb +``` -Once you have edited the `fstab` configuration file you can check your workings with `sudo mount -a` if no errors then your changes will now be persistent across restarts. +Si no quieres desmontar ese disco y vas a usarlo para, por ejemplo, una base de datos o algún otro uso persistente, querrás que esté ahí cuando reinicies tu sistema. Para que persista necesitamos añadir este disco a nuestro archivo de configuración `/etc/fstab`. Si no lo haces no estará dispobible cuando la máquina se reinicie y tendrás que pasar por el proceso manual de nuevo. Los datos seguirán estando en el disco pero no se montará automáticamente a menos que añadas la configuración al archivo mencionado. -We will cover how you would edit a file using a text editor in a future session. +Una vez que hayas editado el archivo de configuración `fstab` ppodrás comprobar su funcionamiento con `sudo mount -a`. Si no hay errores significa que los cambios serán persistentes a través de los reinicios. -## Resources +Veremos cómo editar un archivo usando un editor de texto en una futura sesión. + +## Recursos - [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70) - [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE) +- [Webminal](https://www.webminal.org/) -See you on [Day17](day17.md) +Nos vemos el [Día 17](day17.md). From 79e86f22c8bfd37d2b2193164bdcf7fe8407d421 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Tue, 29 Nov 2022 19:25:44 +0100 Subject: [PATCH 2/5] Translated to Spanish the day17 file Signed-off-by: Manuel Vergara --- 2022/es/Days/day17.md | 70 ++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/2022/es/Days/day17.md b/2022/es/Days/day17.md index 6825a5f..388ce05 100644 --- a/2022/es/Days/day17.md +++ b/2022/es/Days/day17.md @@ -1,76 +1,92 @@ -## Text Editors - nano vs vim +## Editores de texto - nano vs vim -The majority of your Linux systems are going to be servers and these are not going to have a GUI. I also mentioned in the last session that Linux is mostly made up of configuration files, to make changes you are going to need to be able to edit those configuration files to change anything on the system. +La mayoría de tus sistemas Linux van a ser servidores y estos no van a tener una GUI. El último día también mencioné que Linux se compone principalmente de archivos de configuración, para hacer cambios vas a necesitar ser capaz de editar esos archivos de configuración para cambiar cualquier cosa en el sistema. -There are lots of options out there but I think we should cover probably the two most common terminal text editors. I have used both of these editors and for me, I find `nano` the easy button when it comes to quick changes but `vim` has such a broad set of capabilities. +Hay muchas opciones por ahí pero creo que deberíamos cubrir probablemente los dos editores de texto de terminal más comunes. `nano` es más fácil de aprender a manejar pero cuando se trata de cambios rápidos y de posibilidades ilimitadas, tenemos que manejar `vim`. No obstante, el pico de aprendizaje de vim es mucho mayor, ya que tendrás que aprender muchísimos comandos. + +- Encuesta [nano vs vim](https://t.me/seguridadinformatic4/3635). ### nano -- Not available on every system. -- Great for getting started. +- No está disponible en todos los sistemas. +- Es genial para empezar con los editores en shell. -If you run `nano 90DaysOfDevOps.txt` we will create a new file with nothing in, from here we can add our text and we have our instructions below for what we want to do with that file. +Si ejecutamos +```shell +nano 90DaysOfDevOps.txt +``` +Crearemos un nuevo archivo vacío y entraremos directamente al editor. Desde aquí podemos añadir nuestro texto y, en la parte de abajo, tenemos las instrucciones básicas para la gestión del fichero. ![](Images/Day17_Linux1.png) -We can now use `control x + enter` and then run `ls` you can now see our new text file. +Ahora podemos utilizar `control x + enter` y luego ejecutar `ls` para ver nuestro primer archivo de texto. ![](Images/Day17_Linux2.png) -We can now run `cat` against that file to read our file. We can then use that same `nano 90DaysOfDevOps.txt` to add additional text or modify your file. +También podemos ejecutar `cat` con ese archivo como argumento para que muestre en pantalla lo que tenga. Luego podemos usar el mismo `nano 90DaysOfDevOps.txt` para volver a entrar en el editor y añadir texto adicional o modificar el archivo. -For me, nano is super easy when it comes to getting small changes done on configuration files. +`nano` es súper fácil cuando se trata de hacer pequeños cambios en los archivos de configuración. ### vim -Possibly the most common text editor around? A sibling of the UNIX text editor vi from 1976 we get a lot of functionality with vim. +Posiblemente el editor de texto más común. Un hermano del editor de texto de UNIX, vi, de 1976, con el que obtenemos muchas funcionalidades. -- Pretty much supported on every single Linux distribution. -- Incredibly powerful! You can likely find a full 7-hour course just covering vim. +- Es compatible con todas las distribuciones de Linux. +- Increíblemente potente. Es factible encontrar cursos completos de vim de 7 horas. +- Tiene muchas posibles extensiones. -We can jump into vim with the `vim` command or if we want to edit our new txt file we could run `vim 90DaysOfDevOps.txt` but you are going to first see the lack of help menus at the bottom. +Podemos entrar a vim con el comando `vim` o si queremos editar nuestro nuevo archivo txt anterior podemos ejecutar +```shell +vim 90DaysOfDevOps.txt +``` +Lo primero, comparando con `nano`, vas a ver la ausencia de menús de ayuda. Con lo que la primera pregunta podría ser "¿Cómo salgo de vim?" 😳 -The first question might be "How do I exit vim?" that is going to be `escape` and if we have not made any changes then it will be `:q` +Primero asegurate de que no has entrado en ningún modo con `escape` y, si no hemos hecho ningún cambio, entonces `:q` nos sacará sin problemas. Si tenemos algún cambio pero igual queremos salir podemos forzar con `:q!`. ![](Images/Day17_Linux3.png) -You start in `normal` mode, there are other modes `command, normal, visual, insert`, if we want to add the text we will need to switch from `normal` to `insert` we need to press `i` if you have added some text and would like to save these changes then you would hit escape and then `:wq` +Cuando entras estás en modo `normal` pero hay otros modos como `command, normal, visual, insert`. Si queremos añadir texto tendremos que cambiar de `normal` a `insert` y lo podemos hacer pulsando `i`. Añades el texto que quieras y para guardar estos cambios y salir del editor podemos utilizar `escape` para salir al modo normal y luego `:wq`. También se puede forzar con `:wq!`, por ejemplo, en el caso de que se este editando desde varios shells. ![](Images/Day17_Linux4.png) ![](Images/Day17_Linux5.png) -You can confirm this with the `cat` command to check you have saved those changes. +Puedes comprobar el texto introducido con el comando `cat`. -There is some cool fast functionality with vim that allows you to do menial tasks very quickly if you know the shortcuts which is a lecture in itself. Let's say we have added a list of repeated words and we now need to change that, maybe it's a configuration file and we repeat a network name and now this has changed and we quickly want to change this. I am using the word day for this example. +Hay algunas funcionalidades rápidas y geniales con vim que te permiten hacer tareas menores muy rápidamente si conoces los atajos. Digamos que hemos añadido una lista de palabras repetidas y ahora necesitamos cambiar eso, tal vez es un archivo de configuración y repetimos un nombre de red y ahora esto ha cambiado y queremos cambiarlo rápidamente. En la captura se ve un ejemplo con la palabra "Day"". ![](Images/Day17_Linux6.png) -Now we want to replace that word with 90DaysOfDevOps, we can do this by hitting `ESC` and typing `:%s/Day/90DaysOfDevOps` +Ahora queremos sustituir esa palabra por 90DaysOfDevOps, podemos hacerlo pulsando `ESC` y escribiendo `:%s/Day/90DaysOfDevOps`. ![](Images/Day17_Linux7.png) -The outcome when you hit enter is that the word day is then replaced with 90DaysOfDevOps. + Cuando pulsemos intro se efectuará la magía. El resultado es que todas las palabras "Day" se han sustituido por 90DaysOfDevOps. ![](Images/Day17_Linux8.png) -Copy and Paste was a big eye-opener for me. Copy is not copied it is yanked. we can copy using `yy` on our keyboard in normal mode. `p` paste on the same line, `P` paste on a new line. +Copiar y pegar es la clave para entender la potencia de este editor. Copiar no se copia sino que se tira. Podemos copiar usando `yy` en nuestro teclado en modo normal. `p` pegar en la misma línea, `P` pegar en una nueva línea. Así de fácil. -You can also delete these lines by choosing the number of lines you wish to delete followed by `dd` +También puedes borrar una línea fácilmente con `dd`. -There is also likely a time you will need to search a file, now we can use `grep` as mentioned in a previous session but we can also use vim. we can use `/word` and this will find the first match, to navigate through to the next you will use the `n` key and so on. +Y atención, si marcas un número y utilizas justo después `yy` o `dd`, respectivamente, se copiarán o borrarán el número de líneas que hayas elegido. Impresionante. -For vim this is not even touching the surface, the biggest advice I can give is to get hands-on and use vim wherever possible. +También es probable que alguna vez necesites buscar en un archivo, podemos usar `grep` como se mencionó en una sesión anterior pero también podemos usar vim usando `/palabra-a-buscar` y esto encontrará la primera coincidencia, para navegar a través de las siguientes coincidencias usarás la tecla `n`. -A common interview question is what is your favourite text editor in Linux and I would make sure you have at least this knowledge of both so you can answer, it is fine to say nano because it's simple. At least you show competence in understanding what a text editor is. But get hands-on with them to be more proficient. +Si utilizas vim siempre que sea posible, conseguirás ser todo un experto aprendiendo poco a poco. -Another pointer to navigate around in vim we can use `H,J,K,L` as well as our arrow keys. +Una pregunta común en las entrevistas es cuál es tu editor de texto favorito en Linux y yo me aseguraría de que tienes al menos el conocimiento de `vim` y `nano` poder responder con críterio. Existen muchos más, pero ya verás como estos son omnipresentes. -## Resources +Está bien decir `nano` porque es simple. Al menos demuestras competencia en la comprensión de lo que es un editor de texto. Pero ponte manos a la obra con ambos para ser más competente. + +Otro puntero que podemos utilizar para navegar en vim es `H,J,K,L`, además de nuestras teclas de dirección. Podrás ver algo más completo, aunque también básico, en el recurso en español ["Guía básica de Vim"](https://gitea.vergaracarmona.es/man-linux/Guia-VIM). + +## Recursos - [Vim in 100 Seconds](https://www.youtube.com/watch?v=-txKSRn0qeA) - [Vim tutorial](https://www.youtube.com/watch?v=IiwGbcd8S7I) - [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70) - [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE) +- [Guía básica de Vim](https://gitea.vergaracarmona.es/man-linux/Guia-VIM) -See you on [Day18](day18.md) +Nos vemos en el [Día 18](day18.md). From f85c0535e7b62f9cdc6ec8c1758330c499fe40c0 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Tue, 29 Nov 2022 22:46:58 +0100 Subject: [PATCH 3/5] Translated to Spanish the day18 file Signed-off-by: Manuel Vergara --- 2022/es/Days/day18.md | 242 +++++++++++++++++++++++++++--------------- 1 file changed, 159 insertions(+), 83 deletions(-) diff --git a/2022/es/Days/day18.md b/2022/es/Days/day18.md index 9a04cee..a556865 100644 --- a/2022/es/Days/day18.md +++ b/2022/es/Days/day18.md @@ -1,110 +1,145 @@ ## SSH & Web Server -As we have mentioned throughout you are going to most likely be managing lots of remote Linux servers, because of this, you will need to make sure that your connectivity to these remote servers is secure. In this section, we want to cover some of the basics of SSH that everyone should know that will help you with that secure tunnel to your remote systems. +Como hemos mencionado a lo largo de este artículo, lo más probable es que estés administrando muchos servidores Linux remotos. Debido a esto necesitarás asegurarte de que tu conectividad a estos servidores remotos sea la más segura posible. En esta sección, veremos algunos de los fundamentos de SSH que todo el mundo debería conocer y que te ayudarán con un túnel seguro a los sistemas remotos. -- Setting up a connection with SSH -- Transferring files -- Create your private key +- Estableciendo una conexión con SSH. +- Transferencia de archivos. +- Crear su clave privada. -### SSH introduction +### introducción a SSH -- Secure shell -- Networking Protocol -- Allows secure communications -- Can secure any network service -- Typically used for remote command-line access +- Shell seguro. +- Protocolo de red. +- Permite comunicaciones seguras. +- Puede asegurar cualquier servicio de red. +- Normalmente se utiliza para el acceso remoto a la línea de comandos. -In our environment, if you have been following along we have been using SSH already but this was all configured and automated through our vagrant configuration so we only had to run `vagrant ssh` and we gained access to our remote virtual machine. +Si has estado siguiendo los días anteriore recordarás que ya hemos utilizado SSH. Lo que pasa que fue configurado y automatizado a través de vagrant, por lo que sólo tuvimos que ejecutar `vagrant ssh` y obtuvimos acceso a la máquina virtual remota. -If our remote machine was not on the same system as our workstation and was in a remote location, maybe a cloud-based system or running in a data centre that we could only access over the internet we would need a secure way of being able to access the system to manage it. +Si nuestra máquina remota no estuviera en nuestro propio sistema y estuviera en una ubicación remota, por ejemplo, basado en la nube o ejecutado en un centro de datos al que sólo pudiéramos acceder a través de Internet, necesitaríamos una forma segura de poder acceder al sistema para gestionarlo. -SSH provides a secure tunnel between client and server so that nothing can be intercepted by bad actors. +Así que nos ayudaremos del protocolo SSH que proporcionará un túnel seguro entre el cliente y el servidor para que nada pueda ser interceptado por malos actores. ![](Images/Day18_Linux1.png) -The server has a server-side SSH service always running and listening on a specific TCP port (22). +El servidor tiene un servicio SSH del lado del servidor siempre en ejecución y escuchando en un puerto TCP específico (22). -If we use our client to connect with the correct credentials or SSH key then we gain access to that server. +Si usamos nuestro cliente para conectarnos con las credenciales correctas o la clave SSH, entonces obtendremos acceso a ese servidor. -### Adding a bridged network adapter to our system +### Añadiendo un adaptador de red puenteado a nuestro sistema -For us to use this with our current virtual box VM, we need to add a bridged network adapter to our machine. +Para poder simular esto con nuestra MV de VirtualBox, necesitamos añadir un adaptador de red puenteado a nuestra máquina. -Power down your virtual machine, right-click on your machine within Virtual Box and select settings. In the new window then select networking. +Asegurate de que la máquina virtual este apagada, haz clic con el botón derecho en sobre la máquina dentro de VirtualBox y selecciona configuración. En la nueva ventana, selecciona red. ![](Images/Day18_Linux2.png) -Now power your machine back on and you will now have an IP address on your local machine. You can confirm this with the `IP addr` command. +Ahora vuelva a encender su máquina y tendrá una dirección IP en su máquina local. Puedes confirmarlo con el comando `IP addr`. -### Confirming SSH server is running +### Confirmando que el servidor SSH está funcionando -We know SSH is already configured on our machine as we have been using it with vagrant but we can confirm by running +Sabemos que SSH ya está configurado en nuestra máquina ya que lo hemos estado usando con vagrant pero podemos confirmarlo ejecutando -`sudo systemctl status ssh` +```shell +sudo systemctl status ssh +``` ![](Images/Day18_Linux3.png) -If your system does not have the SSH server then you can install it by issuing this command `sudo apt install OpenSSH-server` +Si tu sistema no tiene el servidor SSH puedes instalarlo con este comando -You then want to make sure that our SSH is allowed if the firewall is running. We can do this with `sudo ufw allow ssh` this is not required on our configuration as we automated this with our vagrant provisioning. +```shell +sudo apt install OpenSSH-server +``` -### Remote Access - SSH Password +A continuación, debe asegurarse de que nuestro SSH está permitido por el firewall, si este se está ejecutando. Por ejemplo, en el caso de que el firewall sea ufw, tendríamos que habilitar el protocolo con el siguiente comando. -Now that we have our SSH Server listening out on port 22 for any incoming connection requests and we have added the bridged networking we could use putty or an SSH client on our local machine to connect to our system using SSH. +```shell +sudo ufw allow ssh +``` +En nuestra MV no es necesario ya que automatizamos esto con nuestro aprovisionamiento vagrant. + +### Acceso Remoto - Contraseña SSH + +Ahora que tenemos nuestro servidor SSH escuchando en el puerto 22 para cualquier solicitud de conexión entrante y hemos añadido la red puente, en Windows, podemos usar putty o cualquier otro cliente SSH en la máquina anfitriona para conectarnos a nuestro sistema usando SSH. ![](Images/Day18_Linux4.png) -Then hit open, if this is the first time you have connected to this system via this IP address you will get this warning. We know that this is our system so you can choose yes. +A continuación pulsamos abrir, si es la primera vez que nos conectamos a este sistema a través de esta dirección IP nos aparecerá este aviso. Sabemos que este es nuestro sistema, así que puedes elegir que sí. ![](Images/Day18_Linux5.png) -We are then prompted for our username (vagrant) and password (default password - vagrant) Below you will see we are now using our SSH client (Putty) to connect to our machine using username and password. +Ahora se nos pide nuestro nombre de usuario (vagrant) y contraseña (contraseña por defecto - vagrant). Después verás como nuestro cliente SSH (Putty) se conecta a nuestra MV. ![](Images/Day18_Linux6.png) -At this stage, we are connected to our VM from our remote client and we can issue our commands on our system. +¡All rigth! Estamos conectados a nuestra VM desde nuestro cliente remoto y podemos emitir nuestros comandos en nuestro sistema. -### Remote Access - SSH Key +Ahora, desde otro Linux podemos usar directamente la shell con el comando ssh. La sintaxis es la siguiente: -The above is an easy way to gain access to your systems however it still relies on username and password, if some malicious actor was to gain access to this information plus the public address or IP of your system then it could be easily compromised. This is where SSH keys are preferred. +```shell +ssh @ +``` -SSH Keys means that we provide a key pair so that both the client and server know that this is a trusted device. +En el caso de que la ip de nuestra MV fuese la 192.168.169.135 tendríamos que usar el siguiente comando: -Creating a key is easy. On our local machine (Windows) We can issue the following command in fact if you have an ssh-client installed on any system I believe this same command will work? +```shell +ssh vagrant@192.168.169.135 +``` -`ssh-keygen -t ed25519` +Nos pedirá la contraseña y luego nos pedirá que aceptemos el certificado automático de ssh. -I am not going to get into what `ed25519` is and means here but you can have a search if you want to learn more about [cryptography](https://en.wikipedia.org/wiki/EdDSA#Ed25519) +### Acceso remoto - Clave SSH + +El modo que hemos visto es una forma fácil y rápida de obtener acceso a sus sistemas, sin embargo, todavía se basa en el nombre de usuario y la contraseña. Con lo cual, si algún actor malicioso pudiese tener acceso a esta información y a la dirección pública o IP de su sistema, nuestra seguridad estaría comprometida. Para reducir este vector de vulnerabilidad podemos utilizar las claves SSH. + +Las claves SSH proporciona un par de claves, tanto para el cliente como para el servidor, así pueden saber con seguridad de que se trata de un dispositivo de confianza. + +Crear una clave es fácil. En nuestra máquina local (Tanto en Windows o Linux) podemos emitir los certificados con el siguiente comando. + +```shell +ssh-keygen -t ed25519 +``` + +No entraremos en lo que es `ed25519` pero puedes hacer una búsqueda si quieres aprender más sobre [criptografía](https://es.wikipedia.org/wiki/EdDSA#Ed25519). ¡Es apasionante! ![](Images/Day18_Linux7.png) -At this point, we have our created SSH key stored in `C:\Users\micha/.ssh/` +En este punto, tenemos nuestra clave SSH creada almacenada en `C:\sers\micha/.ssh/` en Windows o en `$HOME/.ssh` en el caso de Linux. -But to link this with our Linux VM we need to copy the key. We can do this by using the `ssh-copy-id vagrant@192.168.169.135` +Pero para enlazar esto con nuestra MV Linux necesitamos copiar la clave. Podemos hacerlo utilizando el `ssh-copy-id vagrant@192.168.169.135` en la shell. -I used Powershell to create my keys on my Windows client but there is no `ssh-copy-id` available here. There are ways in which you can do this on Windows and a small search online will find you an alternative, but I will just use git bash on my Windows machine to make the copy. +En Windows puedes utilizar Powershell para crear las claves en Windows pero no hay `ssh-copy-id` disponible aquí. Hay maneras de hacer esto en Windows y una pequeña búsqueda en línea le encontrará una alternativa, pero voy usaremos [git bash](https://gitforwindows.org/) en Windows para hacer la copia. ![](Images/Day18_Linux8.png) -We can now go back to Powershell to test that our connection now works with our SSH Keys and no password is required. +Ahora podemos volver a Powershell para probar que nuestra conexión funciona con nuestras Claves SSH y no se requiere ninguna contraseña, utilizando el comando que mencionamos antes para usar desde la shell de un Linux cliente. -`ssh vagrant@192.168.169.135` +```shell +ssh vagrant@192.168.169.135 +``` ![](Images/Day18_Linux9.png) -We could secure this further if needed by using a passphrase. We could also go one step further saying that no passwords at all meaning only key pairs over SSH would be allowed. You can make this happen in the following configuration file. +Podríamos asegurar esto aún más si fuera necesario usando una frase de contraseña. También podríamos ir un paso más allá diciendo que no hay contraseñas en absoluto, lo que significa que sólo se permitirían pares de claves a través de SSH. Puedes hacer esto en el siguiente archivo de configuración de la máquina remota, de nuestra MV. -`sudo nano /etc/ssh/sshd_config` +```shell +sudo nano /etc/ssh/sshd_config +``` -there is a line in here with `PasswordAuthentication yes` this will be `#` commented out, you should uncomment and change the yes to no. You will then need to reload the SSH service with `sudo systemctl reload sshd` +Encontrarás una línea con `PasswordAuthentication yes` esto tendrá un `#` por delante, estará comentado. Tan solo descomenta y cambia el sí a no. Entonces tendrá que recargar el servicio SSH con el siguiente comando: -## Setting up a Web Server +```shell +sudo systemctl reload sshd +``` -Not specifically related to what we have just done with SSH above but I wanted to include this as this is again another task that you might find a little daunting but it really should not be. +Y ya hemos mejorado la seguridad. Se podría mejorar más, hasta [niveles conspiranoicos](https://vidatecno.net/como-personalizar-la-configuracion-de-ssh-para-obtener-la-maxima-seguridad/), pero con esto tenemos suficiente para empezar. -We have our Linux playground VM and at this stage, we want to add an apache webserver to our VM so that we can host a simple website from it that serves my home network. Note that this web page will not be accessible from the internet, this can be done but it will not be covered here. +## Configuración de un servidor web -You might also see this referred to as a LAMP stack. +Ya que tenemos nuestra MV Linux para nuestro patio de recreo, vamos a aprovecharla un poco más. Vamos a añadirle un servidor web apache para que podamos alojar una página web simple que se podrá ver en la red local. Tenga en cuenta que esta página web no será accesible desde Internet, esto no se recomienda pero se puede hacer, pero no lo veremos aquí. Una [pista](https://www.noip.com/). + +También puedes ver esto como LAMP stack. - **L**inux Operating System - **A**pache Web Server @@ -113,83 +148,123 @@ You might also see this referred to as a LAMP stack. ### Apache2 -Apache2 is an open-source HTTP server. We can install apache2 with the following command. +Apache2 es un servidor HTTP de código abierto. Podemos instalar apache2 con el siguiente comando. -`sudo apt-get install apache2` +```shell +sudo apt-get install apache2 +``` -To confirm that apache2 is installed correctly we can run `sudo service apache2 restart` +Para confirmar que apache2 está instalado correctamente podemos ejecutar -Then using the bridged network address from the SSH walkthrough open a browser and go to that address. Mine was `http://192.168.169.135/` +```shell +sudo service apache2 restart +``` + +A continuación, utilizaremos la dirección de red de nuestra máquina remota que vimos en el apartado de SSH. Abre un navegador y comprueba la dirección. La del ejemplo que teníamos era `http://192.168.169.135/`. ![](Images/Day18_Linux10.png) ### mySQL -MySQL is a database in which we will be storing our data for our simple website. To get MySQL installed we should use the following command `sudo apt-get install mysql-server` +MySQL es una base de datos en la que vamos a almacenar nuestros datos para nuestro sencillo sitio web. Para instalar MySQL debemos utilizar el siguiente comando. + +```shell +sudo apt-get install mysql-server +``` ### PHP -PHP is a server-side scripting language, we will use this to interact with a MySQL database. The final installation is to get PHP and dependencies installed using `sudo apt-get install php libapache2-mod-php php-mysql` +PHP es un lenguaje de programación del lado del servidor. Lo utilizaremos para interactuar con la base de datos MySQL. La instalación final es conseguir instalar PHP y sus dependencias usando. -The first configuration change we want to make out of the box apache is using index.html and we want it to use index.php instead. +```shell +sudo apt-get install php libapache2-mod-php php-mysql +``` -We are going to use `sudo nano /etc/apache2/mods-enabled/dir.conf` and we are going to move index.php to the first item in the list. +El primer cambio de configuración que queremos hacer es que apache deje de usar `index.html` para usar en cambio `index.php`. + +Vamos a usar el comando. + +```shell +sudo nano /etc/apache2/mods-enabled/dir.conf +``` +Y en el listado moveremos `index.php` al primer elemento de la lista. ![](Images/Day18_Linux11.png) -Restart the apache2 service `sudo systemctl restart apache2` - -Now let's confirm that our system is configured correctly for PHP. Create the following file using this command, this will open a blank file in nano. - -`sudo nano /var/www/html/90Days.php` - -then copy the following and use control + x to exit and save your file. +Reiniciamos el servicio apache2 +```shell +sudo systemctl restart apache2 ``` + +Ahora vamos a confirmar que nuestro sistema está configurado correctamente para PHP. Cree el siguiente archivo usando este comando, esto abrirá un archivo en blanco en nano. + +```shell +sudo nano /var/www/html/90Days.php +``` + +Luego copie lo siguiente dentro del documento y, como ya aprendimos, usando control + x salimos y guardamos el archivo. + +```php ``` -Now navigate to your Linux VM IP again with the additional 90Days.php on the end of the URL. `http://192.168.169.135/90Days.php` you should see something similar to the below if PHP is configured correctly. +Ahora navega a la IP de tu MV Linux de nuevo con el adicional 90Days.php al final de la URL: `http://192.168.169.135/90Days.php`. Deberías ver algo similar a lo siguiente si PHP está configurado correctamente. ![](Images/Day18_Linux12.png) -### WordPress Installation +### Instalación de WordPress -I then walked through this tutorial to get WordPress up on our LAMP stack, some commands are shown below if not shown correctly in the walkthrough [How to install WordPress on Ubuntu with LAMP](https://blog.ssdnodes.com/blog/how-to-install-wordpress-on-ubuntu-18-04-with-lamp-tutorial/) +A continuación, he seguido este tutorial para instalar WordPress en nuestra LAMP stack. -`sudo mysql -u root -p` +```shell +sudo mysql -u root -p +``` -`CREATE DATABASE wordpressdb;` +```mysql +CREATE DATABASE wordpressdb; -`CREATE USER 'admin-user'@'localhost' IDENTIFIED BY 'password';` +CREATE USER 'admin-user'@'localhost' IDENTIFIED BY 'password'; -`GRANT ALL PRIVILEGES ON wordpressdb.* TO 'admin-user'@'localhost';` +GRANT ALL PRIVILEGES ON wordpressdb.* TO 'admin-user'@'localhost'; -`FLUSH PRIVILEGES;` +FLUSH PRIVILEGES; -`EXIT;` +EXIT; +``` -`sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip` +```shell +sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip +``` +```shell +sudo systemctl restart apache2 +``` -`sudo systemctl restart apache2` +```shell +cd /var/www +``` -`cd /var/www` +```shell +sudo curl -O https://wordpress.org/latest.tar.gz +``` -`sudo curl -O https://wordpress.org/latest.tar.gz` +```shell +sudo tar -xvf latest.tar.gz +``` -`sudo tar -xvf latest.tar.gz` +```shell +sudo rm latest.tar.gz +``` -`sudo rm latest.tar.gz` +En este punto se encuentra en el paso 4 del artículo ["How to install WordPress on Ubuntu with LAMP"](https://blog.ssdnodes.com/blog/how-to-install-wordpress-on-ubuntu-18-04-with-lamp-tutorial/), tendrá que seguir los pasos para asegurarse de que todos los permisos correctos están en su lugar para el directorio de WordPress. -At this point you are in Step 4 in the linked article, you will need to follow the steps to make sure all correct permissions are in place for the WordPress directory. +Debido a que esto es interno, no es necesario "generar claves de seguridad" en este paso. Vaya al paso 5 que es cambiar la configuración de Apache a WordPress. -Because this is internal only you do not need to "generate security keys" in this step. Move to Step 5 which is changing the Apache configuration to WordPress. +Entonces, si todo está configurado correctamente, podrá acceder a través de su dirección de red interna y ejecutar la instalación de WordPress. -Then providing everything is configured correctly you will be able to access via your internal network address and run through the WordPress installation. - -## Resources +## Recursos - [Client SSH GUI - Remmina](https://remmina.org/) - [The Beginner's guide to SSH](https://www.youtube.com/watch?v=2QXkrLVsRmk) @@ -197,5 +272,6 @@ Then providing everything is configured correctly you will be able to access via - [Vim tutorial](https://www.youtube.com/watch?v=IiwGbcd8S7I) - [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70) - [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE) +- [Webminal](https://www.webminal.org/) -See you on [Day19](day19.md) +Nos vemos en el [Día 19](day19.md). From caa6daf242d29f0ea439e7fde06c06237eee136a Mon Sep 17 00:00:00 2001 From: Michael Cade Date: Wed, 30 Nov 2022 16:27:14 +0000 Subject: [PATCH 4/5] Update 2023.md --- 2023.md | 1 + 1 file changed, 1 insertion(+) diff --git a/2023.md b/2023.md index 0ffcedb..d38ec99 100644 --- a/2023.md +++ b/2023.md @@ -26,6 +26,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - Serverless (Carlos Santana - @csantanapr) - Service Mesh (Marino W - @virtualized6ix) / (William Morgan - @wm) - **Another Topic** +- **Another Topic** ## Progress From 7fec5d237107c508e1801c5c2abee2564c294b2d Mon Sep 17 00:00:00 2001 From: michaelcade Date: Sun, 4 Dec 2022 16:11:41 +0000 Subject: [PATCH 5/5] add table of topics, authors & dates for 2023 --- 2023.md | 57 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/2023.md b/2023.md index d38ec99..39a9e6c 100644 --- a/2023.md +++ b/2023.md @@ -13,26 +13,31 @@ This repository is used to document my journey on getting a better foundational The quickest way to get in touch is going to be via Twitter, my handle is [@MichaelCade1](https://twitter.com/MichaelCade1) ## List of Topics -- DevSecOps - What is the importance of Security in a DevOps world? (Michael Cade - @MichaelCade1) -- Secure Coding (SAST, SCA, Secure Code Review) (Prateek Jain - @PrateekJainDev) -- Continuous Build, Integration, Testing (Container & Image scan, DAST, Fuzzing, IAST) (Anton Sankov - @a_sankov) + +|Topic |Author |Date | +|--------|-----------|---------| +|DevSecOps | Michael Cade | 1st Jan - 6th Jan | +|Secure Coding | Prateek Jain | 7th Jan - 13th Jan | +|Continuous Build, Integration, Testing | Anton Sankov | 14th Jan - 20th Jan | +|**Continuous Delivery & Deployment** | | 21st Jan - 27th Jan | +|**Runtime Defence & Monitoring** | | 28th Jan - 3rd Feb | +|Secrets Management | Bryan Krausen | 4th Feb - 10th Feb | +|Python | Rishab Kumar | 11th Feb - 17th Feb | +|AWS | Chris Williams | 18th Feb - 24th Feb | +|OpenShift | Dean Lewis | 25th Feb - 3rd Mar | +|Databases | Taylor Riggan & Andrew Pruski | 4th Mar - 10th Mar | +|Serverless | Carlos Santana | 11th Mar - 17th Mar | +|Service Mesh | Marino Wijay | 18th Mar - 24th Mar | +|Engineering for Day 2 Ops | Alistair Hey | 25th Mar - 31st Mar | + - **Continuous Delivery & Deployment (Sign, Image Repo scan, Systems, Containers, Network Vulnerability scan)** - **Runtime Defence & Monitoring (RASP, Pen Testing)** -- Secrets Management (Bryan Krausen - @btkrausen) -- Python (Rishab Kumar - @rishabk7) -- Cloud (Chris Williams - @mistwire) -- OpenShift (Dean Lewis - @saintdle) -- Database (Taylor & Andrew) -- Serverless (Carlos Santana - @csantanapr) -- Service Mesh (Marino W - @virtualized6ix) / (William Morgan - @wm) -- **Another Topic** -- **Another Topic** ## Progress -- [] ♾️ 1 > [Test](2023/day01.md) +- [] ♾️ 1 > [2022 Reflection & Welcome 2023](2023/day01.md) -### +### DevSecOps - [] ♾️ 2 > [](2023/day02.md) - [] ♾️ 3 > [](2023/day03.md) @@ -40,7 +45,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] ♾️ 5 > [](2023/day05.md) - [] ♾️ 6 > [](2023/day06.md) -### +### Secure Coding - [] ⌨️ 7 > [](2023/day07.md) - [] ⌨️ 8 > [](2023/day08.md) @@ -50,7 +55,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] ⌨️ 12 > [](2023/day12.md) - [] ⌨️ 13 > [](2023/day13.md) -### +### Continuous Build, Integration, Testing - [] 🐧 14 > [](2023/day14.md) - [] 🐧 15 > [](2023/day15.md) @@ -60,7 +65,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 🐧 19 > [](2023/day19.md) - [] 🐧 20 > [](2023/day20.md) -### +### Continuous Delivery & Deployment - [] 🌐 21 > [](2023/day21.md) - [] 🌐 22 > [](2023/day22.md) @@ -70,7 +75,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 🌐 26 > [](2023/day26.md) - [] 🌐 27 > [](2023/day27.md) -### +### Runtime Defence & Monitoring - [] ☁️ 28 > [](2023/day28.md) - [] ☁️ 29 > [](2023/day29.md) @@ -80,7 +85,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] ☁️ 33 > [](2023/day33.md) - [] ☁️ 34 > [](2023/day34.md) -### +### Secrets Management - [] 📚 35 > [](2023/day35.md) - [] 📚 36 > [](2023/day36.md) @@ -90,7 +95,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 📚 40 > [](2023/day40.md) - [] 📚 41 > [](2023/day41.md) -### +### Python - [] 🏗️ 42 > [](2023/day42.md) - [] 🏗️ 43 > [](2023/day43.md) @@ -100,7 +105,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 🏗️ 47 > [](2023/day47.md) - [] 🏗️ 48 > [](2023/day48.md) -### +### AWS - [] ☸ 49 > [](2023/day49.md) - [] ☸ 50 > [](2023/day50.md) @@ -110,7 +115,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] ☸ 54 > [](2023/day54.md) - [] ☸ 55 > [](2023/day55.md) -### +### OpenShift - [] 🤖 56 > [](2023/day56.md) - [] 🤖 57 > [](2023/day57.md) @@ -120,7 +125,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 🤖 61 > [](2023/day61.md) - [] 🤖 62 > [](2023/day62.md) -### +### Databases - [] 📜 63 > [](2023/day63.md) - [] 📜 64 > [](2023/day64.md) @@ -130,7 +135,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 📜 68 > [](2023/day68.md) - [] 📜 69 > [](2023/day69.md) -### +### Serverless - [] 🔄 70 > [](2023/day70.md) - [] 🔄 71 > [](2023/day71.md) @@ -140,7 +145,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 🔄 75 > [](2023/day75.md) - [] 🔄 76 > [](2023/day76.md) -### +### Service Mesh - [] 📈 77 > [](2023/day77.md) - [] 📈 78 > [](2023/day78.md) @@ -150,7 +155,7 @@ The quickest way to get in touch is going to be via Twitter, my handle is [@Mich - [] 📈 82 > [](2023/day82.md) - [] 📈 83 > [](2023/day83.md) -### +### Engineering for Day 2 Ops - [] 🗃️ 84 > [](2023/day84.md) - [] 🗃️ 85 > [](2023/day85.md)