解决方案 1:2 次播放

解决方案 1:2 次播放

我试图在完成另一组主机上的一组任务之前,在远程主机上运行一个脚本。具体来说,我试图在本地 yum 存储库上执行一个脚本,以同步存储库,然后在一组主机上运行 yum 更新。本地存储库服务器不能与要更新的主机位于同一清单列表中,那么我该如何实现这一点?如能得到任何帮助,我将不胜感激。

答案1

我会查看可能的答案。选择最适合您情况的答案

解决方案 1:2 次播放

ansible playbook 可以包含多个按顺序运行的 play。您可以将操作分成两个 play。如果您有多个任务要执行,或者有多个主机需要进行同步(即集群...),那么这可能会更方便。

- name: sync my local yum repo
  hosts: my_local_yum_repo_host

  tasks:
    - name: dummy task to sync repo
      debug:
        msg: sync repo

- name: update my hosts
  hosts: my_hosts_to_upgrade

  tasks:
    - name: run the upgrade
      yum:
        name: '*'
        state: latest

解决方案 2:委托和 run_once

在这种情况下,我们将所有内容放在同一个剧本中,并使用代表团run_once播放一次以更新列表中的所有主机

- name: update my hosts
  hosts: my_hosts_to_upgrade

  tasks:

    - name: dummy task to sync repo
      debug:
        msg: sync repo
      delegate_to: my_local_yum_repo_host
      run_once: true

    - name: run the upgrade
      yum:
        name: '*'
        state: latest

相关内容