Ansible-run连续播放,而不是线性播放
我有一个主机和角色列表,每个主机和角色都要应用。它们托管在hypvervisor(XenServer/ESX)上 在执行ansible播放之前,我正在尝试将每台机器还原到快照。我的行动流程如下所示:Ansible-run连续播放,而不是线性播放,ansible,Ansible,我有一个主机和角色列表,每个主机和角色都要应用。它们托管在hypvervisor(XenServer/ESX)上 在执行ansible播放之前,我正在尝试将每台机器还原到快照。我的行动流程如下所示: 从文件(machines.txt)中获取VM名称 连接虚拟机监控程序并通过CLI还原机器快照 一旦SSH为机器启动,连接并执行其余的播放 一次执行一台机器 到目前为止,我做的最好的事情是在一个游戏中对虚拟机监控程序执行恢复任务,然后在另一个游戏中应用角色。我的剧本就是这样的: --- - nam
---
- name: Reverting
hosts: xenhost
tasks:
- include_tasks: tasks/vms/revert_snap.yml
with_lines: cat "machines.txt"
- name: Ensure NTP is installed
hosts: temp
roles:
- ntp
到目前为止我找到的解决办法是
有更好的解决方案吗它将还原一台计算机,应用所有角色,拍摄快照,然后继续到下一台计算机。
有更好的解决方案吗?-它将还原一台机器,应用所有角色,拍摄快照,然后继续到下一台机器。
您可以将所有这些任务分组到一个角色中,并使用serial:1
- hosts: hostgroup
serial: 1
roles:
- {role: rolename }
我的问题是第一个播放需要在一个主机组上运行,然后其他任务需要在另一个组上运行。在我的工作中没有使用过它,也不能肯定,但也许你的问题的答案是
delegate\u to
选项。您可以删除与快照相关的任务,并将其集成到角色中,方法是使用delegate\u to
。当ansible将角色运行到您的每台计算机时,它将尝试将快照管理任务委托给虚拟机监控程序。将serial 1
添加到图片中,即可获得所需内容。我认为值得一试。听起来是一个值得尝试的想法。我会检查文件和更新不起作用。我已尝试委派任务或角色本身,但ansible仍尝试从当前库存机器执行任务。我尝试了基本委派任务,从主机a(ansible节点)运行到主机B,委派到主机C,并按预期工作(“shell:hostname”任务)。我不知道tasks/vms/revert\u snap.yml
中的代码如何对您的问题进行更多的评论,但我想您更清楚。