corriendo ansible-libro de jugadas de java

blo0old:

He estado tratando de ejecutar anisble-libros de jugadas utilizando Java (tiempo de ejecución (). Exec () y ProcessBuilder), y en ambos casos veo que las variables adicionales que desean pasar usando la línea de comandos nunca llegan ejecutado o eso parece.

ProcessBuilder builder = new ProcessBuilder("ansible-playbook", "/root/playbooks/script-ilo.yml", "-e", "'@/tmp/vars.yml'");

y

String[] ansible_run = {"ansible-playbook", "/root/playbooks/script-ilo.yml", "-e", "'@/tmp/vars.yml'"};
Process p = Runtime.getRuntime().exec(ansible_run,null);

Metí el código como un frasco y se ejecutan en el sistema de prueba y en ambos casos, pistas ansibles el libro de jugadas y genera un error.

# java -jar /home/admin/test-script.jar

PLAY [esxi] ********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.50.100]

TASK [Set XML with new secrets] ************************************************
fatal: [192.168.50.100]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'change_user' is undefined\n\nThe error appears to have been in '/root/playbooks/script-ilo.yml': line 3, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n  tasks:\n    - name: Set XML with new secrets\n      ^ here\n"}
        to retry, use: --limit @/root/playbooks/script-ilo.retry

PLAY RECAP *********************************************************************
192.168.50.100             : ok=1    changed=0    unreachable=0    failed=1

Cuando ejecuto el comando ansible-playbook /root/playbooks/script-ilo.yml -e '@/tmp/vars.yml'en la cáscara, que funcione perfecta.

Necesito ayuda con conseguir desbloqueado aquí. Si hay una forma mejor de hacer esto, soy todo oídos.

mdaniel:

String[] ansible_run = {"ansible-playbook", "/root/playbooks/script-ilo.yml", "-e", "'@/tmp/vars.yml'"};

No ponga comillas simples en ese -evalor; las comillas simples sólo son necesarios para el shell, pero ProcessBuilderno pasa por su cáscara, por lo que los argumentos no necesitan ser escapado.

En realidad estaba esperando ansible a quejarse cuando me daba de comer una falsa descaradamente -e, pero resulta que tal valor se pasa a la hostvarsque _raw_params, por lo que en su caso, hubiera establecido un valor como:

"hostvars": {
    "192.168.50.100": {
        "_raw_params": "'@/tmp/vars.yml'",

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=212476&siteId=1
Recomendado
Clasificación