我有一个应该运行SQL脚本列表的任务。如果在序列中执行ANY脚本期间发生错误,则该任务应该停止执行。Ansible - 在循环任务执行期间检查任务是否失败
给出以下任务,是否有方法可以修改它以查看当前迭代循环的寄存器stdout,以检查'ERROR'
是否在stdout中?
- name: Build and run SQLPlus commands
shell: 'echo @{{ item }} | {{ sqlplus }} {{ db_user }}/{{ db_pass }}@{{ environment }}'
register: sh1
with_items:
- ["a.sql", "b.sql"]
# failed_when: "'ERROR' in sh1.stdout_lines"
我在想沿着最后的注释行线的东西,但由于sh1
是一个循环任务寄存器变量,从每个SQL脚本的输出所在的列表sh1
results
内;所以我不确定如何访问刚刚执行的命令的特定标准输出。
如果shell命令返回非零退出代码,任务将自动失败。你不必做任何事情。 – helloV
@helloV这不是错误的命令,该命令使用sqlplus执行SQL脚本,如果脚本没有正确运行,sqlplus的输出包含单词“ERROR”。我知道shell命令执行成功,因为在使用'echo $?'跟踪sqlplus命令后,我得到退出码0“ –