ansible是否具有允许调试/暂停的功能?

ansible是否具有允许调试/暂停的功能?,ansible,ansible-playbook,Ansible,Ansible Playbook,我想在远程测试机器上运行我的ansible playbook,但作为一种测试方式,我想在每一步之间验证我期望完成的事情是否完成了 我想在每个任务命令之后或多或少地添加一个“暂停”任务,但实际上没有将其放入yaml脚本中。ansible是否有允许这种情况的“调试”模式 我使用的是ansible 1.5,但我对使用新版本功能的答案持开放态度。我认为ansible没有提供这样的功能。一种方法是在播放之间暂停,并使其有条件。执行playbook时,定义一个决定是否暂停的变量 - pause: whe

我想在远程测试机器上运行我的ansible playbook,但作为一种测试方式,我想在每一步之间验证我期望完成的事情是否完成了

我想在每个任务命令之后或多或少地添加一个“暂停”任务,但实际上没有将其放入yaml脚本中。ansible是否有允许这种情况的“调试”模式


我使用的是ansible 1.5,但我对使用新版本功能的答案持开放态度。

我认为ansible没有提供这样的功能。一种方法是在播放之间暂停,并使其有条件。执行playbook时,定义一个决定是否暂停的变量

- pause:
  when: PAUSE is defined
执行剧本时,如果不想暂停,请不要定义暂停。但是,如果您想在播放之间暂停,请定义它

ansible-playbook -v .... --extra-vars "PAUSE=yes" ... myplay.yml
是的,ansible具有,这将使它在每个任务之前暂停,并等待用户确认以执行任务

只需使用step标志调用您的剧本:

ansible-playbook ... --step
从任务开始 为了获得时间,您可以使用--start at task只执行最后的命令,这些命令可能是正在安装窃听器的命令。但为此,您必须将您的任务命名为:

shell
任务没有名称

- shell: vagrant provision; vagrant up;
  args:
    chdir: /vm/vagrant
这个是:

- name: start vagrant
  shell: vagrant provision; vagrant up;
  args:
    chdir: /vm/vagrant
然后运行:

ansible-playbook playbook.yml --start-at-task="start vagrant" 
标签 另一个有用的提示是使用标记。例如,您只想尝试一个命令

- shell: vagrant provision; vagrant up;
  args:
    chdir: /linux/{{item.name}}
  tags: [shell, debug]
现在,您可以通过执行以下操作来调试此程序:

ansible-playbook playbook.yml --tags="debug"
并且它将只启动接收到标记debug的任务

冗长的 如果你想要更多的信息,你可以要求Ansible使用-v、-vv、-vvv或-vvv更详细

ansible-playbook -vvvv playbook.yml --tags="debug"

这将告诉您指定任务的所有信息

,而其他答案本身都很好,这是正确的答案。谢谢<代码>从任务开始非常有用。标记也很有用,但是在调试标记中编辑它很烦人,因为调试标记只执行一个步骤,这完全不是Ansible的目标,所以是的,它需要一些注意。