es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasar una lista/arreglo de cadenas desde mi script de bash a un script de Ansible.

Estoy tratando de pasar una lista/arreglo de cadenas desde mi script de bash a mi script de ansible:

Extracto del script de bash:

configureChrony() {
ntpServer=”initVal”
ntpServers=()
while ! [[ -z “$ntpServer” ]]; do
read -e -p “Por favor ingrese la dirección IP o el nombre de dominio del servidor TP que desea agregar: ” ntpServer
if ! [[ -z “$ntpServer” ]]; then
ntpServers+=($ntpServer)
fi
done

ansible-playbook -i localhost, test.yml –extra-vars=”ntp_list = $ntpServers”

}

test.yml


  • name: “Esto es una prueba”
    hosts: all
    gather_facts: no
    tasks:

    • name: imprimir variable – con ítems
      debug:
      msg: “{{ item.name }}”
      with_items:

      • “{{ ntp_list }}”

Al probar el script de bash, recibo este error:

¿Qué servicio de sincronización de tiempo desea utilizar [ntp/chrony]: chrony
Por favor, ingrese la dirección IP o el nombre de dominio del servidor TP que desea agregar: Test1
Por favor, ingrese la dirección IP o el nombre de dominio del servidor TP que desea agregar: Test2
Por favor, ingrese la dirección IP o el nombre de dominio del servidor TP que desea agregar:

PLAY [Esto es una prueba] ****************************************************************************************************************************************

TASK [imprimir variable – con ítems] ***************************************************************************************************************************
fatal: [localhost]: FAILED! => {“msg”: “‘ntp_list’ is undefined”}

PLAY RECAP ***************************************************************************************************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

El problema es la forma en que estoy pasando la lista/arreglo desde el script de bash al script de ansible ya que ambos se ejecutan dados los datos requeridos.

El resultado deseado es que cada elemento de la lista sea mostrado en la pantalla.

Test1
Test2

Cualquier ayuda es bienvenida.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes pasar la lista/array desde tu script de bash a tu script de Ansible usando la bandera --extra-vars. Esta bandera te permite pasar variables a tu script de Ansible desde la línea de comandos.

    En tu script de bash, puedes pasar la lista/array de cadenas a tu script de Ansible de la siguiente manera:

    ansible-playbook -i localhost, test.yml --extra-vars="ntp_list = $ntpServers"

    En tu script de Ansible, puedes acceder a la lista/array de cadenas de la siguiente manera:

    - name: imprimir variable - con ítems
      debug:
        msg: "{{ item.name }}"
      with_items:
      - "{{ ntp_list }}"
    

    Esto debería mostrar cada elemento de la lista en la pantalla.

Comments are closed.