在 Windows 上成功输出之前的任务后,使用 playbook 运行任务

在 Windows 上成功输出之前的任务后,使用 playbook 运行任务

我正在使用 Jenkins 执行以下 YAML(ansible) 文件。我想仅在成功执行/输出 task2 后才执行 task3,并且仅在成功执行/输出 task1 后才执行 task2,我的 YAML 文件如下所示。如何为每个任务添加依赖项/条件?

例如 application.yml

-name: task1
 win_command: "C:\Windows\Microsoft.NET\FRAMEWORK\V3.9.3013\MSBuild.exe" "E:\ApplicationFolder\App.xml" -target:Execute /p:ApplicationName="appname"
 register: executeapp1

-name: task2
 win_command: "C:\Windows\Microsoft.NET\FRAMEWORK\V3.9.3013\MSBuild.exe" "E:\ApplicationFolder\App.xml" -target:Execute /p:ApplicationName="appname1"
 register: executeapp2

-name: task3
 win_command: "C:\Windows\Microsoft.NET\FRAMEWORK\V3.9.3013\MSBuild.exe" "E:\ApplicationFolder\App.xml" -target:Execute /p:ApplicationName="appname1"
 register: executeapp3

答案1

当任务失败时,Ansible 的默认行为是停止剧本:

当 Ansible 从命令收到非零返回代码或从模块收到故障时,默认情况下它会停止在该主机上执行并在其他主机上继续执行。 Ansible playbooks 错误处理

如果这还不够,你可以添加基于注册变量的条件像这样:

-name: task3
 win_command: "C:\Windows\Microsoft.NET\FRAMEWORK\V3.9.3013\MSBuild.exe" "E:\ApplicationFolder\App.xml" -target:Execute /p:ApplicationName="appname1"
 register: executeapp3
 when: executeapp2 is succeeded

相关内容