Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible-run连续播放,而不是线性播放_Ansible - Fatal编程技术网

Ansible-run连续播放,而不是线性播放

Ansible-run连续播放,而不是线性播放,ansible,Ansible,我有一个主机和角色列表,每个主机和角色都要应用。它们托管在hypvervisor(XenServer/ESX)上 在执行ansible播放之前,我正在尝试将每台机器还原到快照。我的行动流程如下所示: 从文件(machines.txt)中获取VM名称 连接虚拟机监控程序并通过CLI还原机器快照 一旦SSH为机器启动,连接并执行其余的播放 一次执行一台机器 到目前为止,我做的最好的事情是在一个游戏中对虚拟机监控程序执行恢复任务,然后在另一个游戏中应用角色。我的剧本就是这样的: --- - nam

我有一个主机和角色列表,每个主机和角色都要应用。它们托管在hypvervisor(XenServer/ESX)上

在执行ansible播放之前,我正在尝试将每台机器还原到快照。我的行动流程如下所示:

  • 从文件(machines.txt)中获取VM名称
  • 连接虚拟机监控程序并通过CLI还原机器快照
  • 一旦SSH为机器启动,连接并执行其余的播放
  • 一次执行一台机器
  • 到目前为止,我做的最好的事情是在一个游戏中对虚拟机监控程序执行恢复任务,然后在另一个游戏中应用角色。我的剧本就是这样的:

    ---
      - 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
    

    到目前为止我找到的解决办法是

  • 执行从CLI还原快照的任务,并在虚拟机监控程序上执行该任务
  • 在机器上执行我的整个维护工作 2.1在每个服务器上等待SSH 2.2应用角色

  • 清理并在虚拟机监控程序上创建新快照

  • 我在这个场景中的缺点是,首先它还原所有机器,然后应用所有角色,然后批量还原所有角色。 我不能将这些任务合并到一个游戏中,因为它们在不同的主机上执行


    有更好的解决方案吗它将还原一台计算机,应用所有角色,拍摄快照,然后继续到下一台计算机。

    有更好的解决方案吗?-它将还原一台机器,应用所有角色,拍摄快照,然后继续到下一台机器。

    您可以将所有这些任务分组到一个角色中,并使用
    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
    中的代码如何对您的问题进行更多的评论,但我想您更清楚。