小编blo*_*old的帖子

从 java 运行 ansible-playbook

我一直在尝试使用 Java(runtime().exec() 和 ProcessBuilder)运行 anisble-playbooks,在这两种情况下,我发现我希望使用命令行传递的额外变量永远不会被执行,或者看起来是这样。

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

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

我将代码打包为 jar 并在测试系统中执行,在这两种情况下,ansible 都会运行 playbook 并抛出错误。

# 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, …
Run Code Online (Sandbox Code Playgroud)

java ansible

5
推荐指数
1
解决办法
7766
查看次数

标签 统计

ansible ×1

java ×1