Tema:
Trabajando con archivos yaml
Introducción
En esta guia veremos el tipo de archivo mas comun a la hora de trabajar con herramientas de cicd. Yaml.
Objetivo
Objetivo General:
- El objetivo general es aprender a utilizar los archivos yaml, ya que son la base de la gran mayoria de herramientas devops que nos podemos encontrar
Objetivos secundarios
- Comprender la sintaxis de un archivo YAML
- Crear un archivo en formato YAML
Desarrollo del Tema
Un YAML es un tipo de archivo de texto donde escribimos configuraciones de una manera ordenada y fácil de leer. Lo realiza en un formato clave valor y es utilizado por herramientas como kubernentes, azure devops, gitlab ci, etc.
Laboratorio para el Estudiante
Acceder al laboratorio.
-
Ingresar al servidor de laboratorio con la llave proporcionada.
export LAB=X ssh student@lab-${LAB}-aio -
Cambiar al usuario root
sudo -i
Instalación de herramienta de procesamiento
- Descargue el binario
curl -Lo yq https://github.com/mikefarah/yq/releases/download/v4.24.2/yq_linux_amd64 - Asigne los permisos de ejecucion al binario
chmod +x ./yq - Mueva el binario al PATH de binarios
mv yq /bin/yq -
Compruebe que se instalo correctamente
yq -V -
Desde la terminal cree una carpeta llamada
intro-yamly acceda a ellamkdir intro-yaml ; cd intro-yaml
Indentación
-
Cree un archivo llamado
indent.yamly escriba el siguiente contenido:1 2 3 4 5 6 7
title: First YAML name: Estudiante profession: Software Developer hobbies: - code - coffee - swimming -
Validar la sintaxis con la herramienta de
yqejecutandoyq e indent.yaml -
Corregir la indentación del archivo indent.yaml en la línea que especifica el error
1 2 3 4 5 6 7
title: First YAML name: Estudiante profession: Software Developer hobbies: - code - coffee - swimming -
Validar nuevamente la sintaxis con la herramienta de
yqejecutandoyq e indent.yaml -
Cambiar el archivo indent.yaml la lista de hobbies, eliminar los guiones
1 2 3 4 5 6 7
title: First YAML name: Estudiante profession: Software Developer hobbies: code coffee swimming -
Validar la sintaxis
yq e indent.yaml -
Editar el archivo indent.yaml agregando un nuevo bloque despues de hobbies
1 2 3 4 5 6 7 8
title: First YAML name: Estudiante profession: Software Developer hobbies: principal: code coffee swimming -
Validar la sintaxis
yq e indent.yaml -
Agregar otro bloque al archivo indent.yaml debajo del bloque de
principalque contenga una lista de valores1 2 3 4 5 6 7 8 9 10 11 12
title: First YAML name: Estudiante profession: Software Developer hobbies: principal: code coffee swimming secundaries: - karaoke - travel - shopping -
Validar la sintaxis
yq e indent.yaml -
Agregar a cada hobby secundario una descripcion
1 2 3 4 5 6 7 8 9 10 11 12
title: First YAML name: Estudiante profession: Software Developer hobbies: principal: code coffee swimming secundaries: - karaoke: session with friends - travel: local turism - shopping: clothes and grocery -
Validar la sintaxis
yq e indent.yaml
Acciones con yq
-
Obtenga únicamente el título del yaml
indent.yamlyq '.title' indent.yaml -
Obtenga el valor del campo
professionyq '.profession' indent.yaml -
Obtenga el listado de strings de
hobbies.principalyq '.hobbies.principal' indent.yaml -
Verifique que el bloque de
hobbies.secundariestenga un key llamadokaraokeyq '.hobbies.secundaries[] | select(has("karaoke"))' indent.yaml -
Obtenga el numero de orden de los elementos de la lista
hobbies.secundariesyq '.hobbies.secundaries | keys' indent.yaml -
Actualice el valor del primer elemento de la lista
hobbies.secundariesyq '.hobbies.secundaries[0].karaoke = "more stuff"' indent.yaml
Linter
Esta parte se provee como sugerencia y reemplazo de la herramienta yq
!!! example note "Instalación de CLI yamllint"
Instalar la herramienta yamllint segun el OS a ocupar Installing yamllint
=== "CentOS based"
dnf install epel-release -y
dnf install yamllint -y
yamllint -v
-
Modifique el archivo indent.yaml quitando una indentacion a modo de probar la herramienta
1 2 3 4 5 6 7 8 9 10 11 12
title: First YAML name: Estudiante profession: Software Developer hobbies: principal: code coffee swimming secundaries: - karaoke: session with friends - travel: local turism shopping: clothes and grocery -
Valide la sintaxis del archivo indent.yaml con la herramienta yamllint
yamllint indent.yaml -
Corrija el archivo para que tenga una sintaxis valida y vuelva a validar
yamllint indent.yaml -
Cree un archivo llamado config en el path
~/.config/yamllintmkdir ~/.config/yamllint vi ~/.config/yamllint/config -
Edite el archivo indent.yaml agregando una linea en blanco al final
1 2 3 4 5 6 7 8 9 10 11 12 13
title: First YAML name: Estudiante profession: Software Developer hobbies: principal: code coffee swimming secundaries: - karaoke: session with friends - travel: local turism - shopping: clothes and grocery # dejar esta linea en blanco -
Valide la sintaxis del archivo indent.yaml con la herramienta yamllint
yamllint indent.yaml -
Agregue el siguiente contenido al archivo
~/.config/yamllint/config1 2 3 4 5 6 7
extends: relaxed rules: line-length: disable empty-lines: max: 1 max-end: 1 -
Valide la sintaxis del archivo indent.yaml con la herramienta yamllint
yamllint indent.yaml
Configurar vim para archivos YAML
-
Cree un archivo llamado
.vimrcen la carpeta home\touch ~/.vimrc -
Edite el archivo
~/.vimrcagregando el siguiente contenidoset number autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab let g:indentLine_char = '⦙' -
Instale el plugin
indentLineejecutandogit clone https://github.com/Yggdroot/indentLine.git ~/.vim/pack/vendor/start/indentLine vim -u NONE -c "helptags ~/.vim/pack/vendor/start/indentLine/doc" -c "q" -
Abra el archivo
indent.yamly verifique que se muestra de la siguiente manera1 title: First YAML 2 name: Estudiante 3 profession: Software Developer 4 hobbies: 5 principal: 6 ⦙ code 7 ⦙ coffee 8 ⦙ swimming 9 secundaries: 10 ⦙ - karaoke: session with friends 11 ⦙ - travel: local turism 12 ⦙ - shopping: clothes and grocery -
Edite el archivo
indent.yamldejando una línea mal escrita1 2 3 4 5 6 7 8 9 10 11 12
title: First YAML name: Estudiante profession: Software Developer hobbies: principal: code coffee swimming secundaries: - karaoke: session with friends - travel: local turism - shopping: clothes and grocery -
Guarde los cambios
-
Instale el plugin ALE
mkdir -p ~/.vim/pack/git-plugins/start git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/git-plugins/start/ale -
Edite el archivo
~/.vimrcagregando las siguientes líneaslet g:ale_echo_msg_format = '[%linter%] %s [%severity%]' let g:ale_sign_error = '✘' let g:ale_sign_warning = '⚠' -
Edite el archivo
indent.yamlcon VimObserve que ahora muestra la línea errónea junto con un símbolovi indent.yaml -
En el editor Vim ubíquese sobre la línea con errores y observe que muestra un mensaje en la parte de abajo con el error
-
Corrija el error indentando correctamente
-
Guarde los cambios
-
Limpiar ambiente
cd ~ rm indent.yaml