无法在Ansible shell模块中设置超时

无法在Ansible shell模块中设置超时,ansible,Ansible,我试图在Ansible shell模块中设置TIM,但它不起作用。如果我在终端中执行相同的操作,它就会工作。下面是我的代码 - name: Timeout shell: "timeout 30s {{ execute_path_nityo }}/execute.sh" 如果要在playbook中为特定任务设置更长的超时限制,请使用async,并将轮询设置为正值。Ansible仍将阻止playbook中的下一个任务,等待异步任务完成、失败或超时。但是,任务只有在超过您使

我试图在Ansible shell模块中设置TIM,但它不起作用。如果我在终端中执行相同的操作,它就会工作。下面是我的代码

- name: Timeout
  shell: "timeout 30s {{ execute_path_nityo }}/execute.sh"

如果要在playbook中为特定任务设置更长的超时限制,请使用async,并将轮询设置为正值。Ansible仍将阻止playbook中的下一个任务,等待异步任务完成、失败或超时。但是,任务只有在超过您使用async参数设置的超时限制时才会超时

    - name: Execute the script
      shell: "/tmp/script.sh 60" # Run for 60 seconds 
      async: 120 # Maximum allowed time in Seconds
      poll: 10 # Polling Interval in Seconds

如果您想暂停执行
playbook
,然后运行脚本,我建议您使用两个任务:一个运行,另一个使用
shell
命令执行脚本。问题是,有时执行execute.sh时,它会挂起。所以我计划如果它挂起超过30秒,它应该退出并失败。我确实看到了ANSIBLE_TIMEOUT,但不确定如何在角色级别使用它。如果我在linux服务器上手动执行该命令,则该命令工作正常。如果使用ansible,它将不起作用。我想知道为什么会有我观察到的这种行为,任务没有执行。我是说execute.sh不工作了。如果我删除了超时30秒,它工作正常。但是如果我设置超时30秒,execute.sh不执行,但是正在执行超时30秒,它正在等待30秒,这会影响设置轮询5和异步30的效果。它会在30秒内重试5次相同的命令吗?。我在的文档中不太清楚)。async是任务允许的最长时间,poll将在您定义的每x秒检查任务是否完成。因此,要再次确认,poll将只检查状态。它不会再次正确执行。它与Ansible中的重试和直到不同。我的理解正确吗?除此之外,我还看到了一些页面,声明如果我们声明asynch并轮询>肯定否,其他任务将不会执行。它将等待首先执行此任务。这是真的吗?是的,你是对的。当您提到async时,它将只检查作业的状态,它将在后台运行任务,轮询将每x秒检查一次作业是否完成。在完成当前任务后,它将移动到下一个任务,如果出现一些问题并且达到时间限制,它可能会抛出错误。您甚至可以使用示例脚本进行测试。它是否按预期工作。如果有任何问题,请告诉我。
    - name: Execute the script
      shell: "/tmp/script.sh 60" # Run for 60 seconds 
      async: 120 # Maximum allowed time in Seconds
      poll: 10 # Polling Interval in Seconds