Logo de Ansible (Wikipedia https://commons.wikimedia.org/wiki/File:Ansible_Logo.png)

Ansible: instalación de git en un servidor remoto

Download PDF

Ansible es una herramienta que permite administrar de manera masiva todos nuestros servidores remotos. La historia de Ansible y su Colectivo o Galaxia (comunidad de usuarios) está muy bien explicado en este artículo: esencialmente podemos contribuir de manera sistematizada a compartir nuestro trabajo con otros usuarios y viceversa. Esto es poderoso, sí. Es muy bueno, sin embargo nuestras necesidades específicas pueden ser muy singulares: por ejemplo instalar un programa como Pandora FMS, su Agente Software (el artículo tiene un ejemplo práctico para ello, incluidos curl y figlet). En esta entrada damos la alta y bienvenida a nuestros propios guiones Ansible para poder cumplir con la premisa del administrador de sistemas perezoso: hacer un esfuerzo inicial para escribir guiones para tareas repetitivas. Esta entrada va de eso. 

Para evitar el reinventar la rueda, hemos hecho una bifurcación del repositorio de libretos Ansible de la Comunidad de la empresa DigitalOcean. Está regida por la licencia del MIT y fue creado para las versión LTS 18.04 de Ubuntu, pero acá está nuestra contribución: la traducción al castellano,  probar y comprobar esos guiones y agregar nuevo material e incluir más aplicaciones y distribuciones GNU/Linux.

Al momento de escribir estas líneas estamos bien alojados (relación entre precio y servicio) con DigitalOcean pero también existen otros proveedores como UpCloud y Linode los cuales estamos evaluando. Mientras tanto estimadas y estimados lectores, pueden crear una cuenta nueva en DigitalOcean con nuestro código de referido para que tengan un crédito de USD 100$ ¡y poder así practicar con todos estos artículos!

Digitalocean Sammy green heart balloon
Digitalocean Sammy green heart balloon

Tabla de contenido:

Estilo de repositorio

El estilo de repositorio -aparte de las traducciones correspondientes- lo pueden observar -y utilizar- en el capítulo de instalación de Docker y Docker-compose. Justo ahora al escribir esto, solo tenemos una variable en el archivo vars.yml que contiene el nombre del usuario que va a utilizar el docker-compose (o la aplicación deseada, aquí en esta entrada git). Para nosotros siempre será «ks7000«, para ustedes coloquen vuestro nombre con el cual administran los servidores remotos.

Artículos consultados

Acostumbramos colocar al final de la entrada la bibliografía y/o fuentes consultadas, sin embargo como el 90% de todo esto es un trabajo original (en idioma inglés) y un 10% de personalización es nuestro deber colocarlos por delante:

Este último artículo presenta un estilo de repositorio más complejo, con el uso intensivo de variables, lo dejamos a futuro para tocar instalaciones parecidas, que contengan sistemas completos.

Instalando git y figlet

Agregamos a figlet, un sencillo programa al cual le podemos pasara cualquier texto y lo mostrará desplegado como una pancarta (a esto creo que le llaman «Arte ASCII»).

sudo apt install figlet
sudo apt install figlet

Libreto Ansible para git y figlet

Destacamos el uso de una lista de renglones con la instrucción with_items:

- hosts: all
  become: yes
  vars_files:
    - vars.yml
  gather_facts: false
  tasks:
  - name: Instalación de git y figlet con apt en Ubuntu 20.04 .
    apt:
      name: "{{ item }}"
      state: present
      update_cache: yes
    with_items:
      - git
      - figlet
    tags:
      - git
      - figlet
  - name: Agregando usuario al grupo "git" .
    user:
      name: "{{ ans_usuario }}"
      group: "git"
      append: yes
    tags:
      - git

Observen que también le ordenamos a apt que actualice el catálogo de los repositorios con la instrucción update_cache: yes .

Por favor, lea también   SSH keygen y fail2ban.

Y el comando para instalar (fíjense en cuál directorio estén ubicados, el indicador de comando muestra la ruta):

ansible-playbook playbook.yml -l flor.fcia.com.ve -u ks7000

A futuro le agregaremos otras opciones como el verificar si la distro es Debian o sucedánea. Para ello es útil la instrucción gather_facts que por consumir más tiempo de ejecución debemos buscar la manera de «preguntar» de dicho estado una sola vez y almacenar dichos valores en nuestro nodo controlador.

Noten también que usamos el parámetro -l para especificar un solo servidor remoto, sino Ansible utilizaría el valor almacenado en /etc/ansible/hosts . Con el parámetro -u indicamos con cuál usuario conectamos con el servidor remoto, esto es independiente del usuario que usamos en vars.yml .

ansible-playbook playbook.yml -l flor.fcia.com.ve -u ks7000
ansible-playbook playbook.yml -l flor.fcia.com.ve -u ks7000

En la imagen anterior mostramos nuestro resultado práctico , tenemos una advertencia y un error.

  • La advertencia es el ciclo que usamos para instalar gitfiglet ya que a partir de la versión Ansible 2.11 será desactivada para adaptarse al uso de listas en Python (hagan clic en la imagen anterior para ver de manera ampliada en una ventana nueva).
  • El error es que no existe el grupo git, ese es el usuario que me refiero en el archivo vars.yml.

Aunque también podemos hacer un guión para mostrar la versión git que fue instalada, simplemente colocamos la captura de conexión normal:

git version (salida para figlet)
git version (salida para figlet)

<Eso es todo, por ahora>.

Download PDF