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