如何让任务在 Ansible 中的远程主机上等待

时间:2021-04-06 14:58:55

标签: ansible

我正在使用 Ansible 和 PowerShell 脚本为 Windows 服务器上的软件设置集群。设置包括安装和配置。

我使用 Starfleet 门户来运行作业,我们将逗号分隔的主机名存储在 Jinja 文件 (InputHosts.j2) 中。例如主机名 1、主机名 2、主机名 3。主机名可以是 2 个或更多。截至目前,我只使用两个主机

我将主机名存储在 ansible 变量中

vars:
 file_contents: "{{lookup('file', './files/InputHosts.j2')}}"
 central: "{{ file_contents.split(',')[0] }}"
 rim: "{{ file_contents.split(',')[1] }
  1. 首先,安装应该只发生在主节点上,即 Jinja 文件中提到的第一个主机名
  2. Step1 完成后,许可证应仅应用于主节点
  3. 完成 Step2 后,安装应仅在剩余的从属节点上并行进行
  4. Step3 完成后,只需要在剩余的从节点上并行配置

我为上面提到的每个步骤创建了一个单独的剧本,每个剧本都在调用 powershell 脚本。

我为每个步骤 1、2、3 和 4 定义了角色,我在我的主要剧本中调用这些角色,如下所示。我在 InputHosts.j2 中提到的所有服务器上运行主剧本

- hosts: all
  vars_files:
   - vars/vault_vars.yml
   - vars/automation.yml

 roles:
    - { role: central, when: "ansible_nodename == central" }
    - { role: license, when: "ansible_nodename == central" }
    - { role: rim, when: ansible_nodename != central and ansible_nodename in file_contents }
    - { role: addrim, when: ansible_nodename != central and ansible_nodename in file_contents }

问题:

我不知道如何在从节点上等待安装,直到在步骤3中提到的主节点上启用许可证

0 个答案:

没有答案
相关问题