sábado, marzo 27, 2021

Probando Ansible Playbook en un Docker Container con Gitlab

 Estoy probando ansible y quería tener un setup sencillo para que gitlab hiciera pruebas del código en un contenedor de docker a través de un pipeline, por el momento aquí dejo algo sencillo, tengo este playbook:


simple_playbook.yml

---
- hosts: all
  connection: local
  tasks:
          - name: curl instalation
            apt: pkg=curl update_cache=yes

La conexión es local para ya que no es necesario trabajar con llaves ssh al estar aplicando las pruebas al contendor cada vez.

el archivo .gitlab-ci.yml es el siguiente:

image: "tonymoyoy/ubuntu_ansible:v2"

stages:
    - build
    - test

build:
    stage: build
    script:
        - echo $HOSTNAME > hosts
        - echo "Running ansible playbook"
        - ansible-playbook -i hosts local-playbook.yml

test:
    stage: test
    script:
        - echo "Test pending"

La forma que logre que se ejecutara en el contenedor fue agregando el hostname a un archivo y luego haciendo referencia al archivo hosts como variable del comando ansible-playbook

En este caso use la variable HOSTNAME de gitlab-ci (ver https://docs.gitlab.com/ee/ci/variables/) aunque también pude simplemente usar el comando hostname y enviar el resultado a el archivo, intente hacer la llamada después del comando ansible-playbook pero no encontré una forma de hacerlo funcionar.

Espero que este material puede servir de referencia para alguien


No hay comentarios: