当前位置: 首页 > 知识库问答 >
问题:

如何在Ansible中处理每个任务在一个游戏中的不同主机?

景国兴
2023-03-14

我刚接触Ansible(Ansible2.9.6),最近开始研究一个项目的设计/目录结构。我的任务是配置测试实验室中的设备(特别是不同的思科设备)以支持测试用例。

我希望有一个site.yml文件,包含所有20+测试用例。这个想法是,用户可以根据参数,通过site.yml针对特定的供应商设备类型(Cisco4507、Cisco3850等)执行所有、多个或单个测试用例。

Ansible-Playbook-i Inventories/network_staging site.yml--tags=ntp-e type=C4507

~/site.yml

---
- name: Test Cases
  hosts: all
  gather_facts: false
  connection: local
  tasks:
    - name: ntp role
       hosts: "{{type}}_ntpTC"
       include_role:
         name: ntp
       tags:
         - ntp
    - name: vlan role
       hosts: "{{type}}_vlanTC"
       include_role:
         name: vlan
       tags:
         - vlan

我当前的site.yaml有多个播放器,每个播放器表示一个测试用例,并使用适当的主机。然而,我将需要使用不同的设备来执行任务,来自主机组,这取决于角色/测试用例。下面是一个例子:

---
- name: NTP Test Case
  hosts: "{{type}}_ntpTC"
  gather_facts: false
  connection: local

  tasks:
    - name: ntp role
      include_role:
        name: ntp
      tags:
        - ntp

- name: VLAN Test Case
  hosts: "{{type}}_vlanTC"
  gather_facts: false
  connection: local

  tasks:
    - name: vlan role
      include_role:
        name: vlan
      tags:
        - vlan
###main.yml inventory list
## IPs defined in ~/inventories/network_staging/host_vars/SW6.yml   SW7.yml and SW8.yml

##Cisco 4507 Test Cases
#NTP Test Case
[C4507_ntpTC]
SW8
#VLAN Test Case
[C4507_vlanTC]
SW7
SW6
---
# Tasking for NTP Test Case
- name: import ntp.yml
  tags:
    - ntp

~/roles/ntp/tasks/ntp.yml

---
- name: show NTP
  ios_command:
    commands:
      - <insert ntp show status commands on SW8 here….>

~/roles/vlan/tasks/main.yml

---
# Tasking for VLAN Test Case
- name: import vlan.yml
  tags:
    - vlan

~/roles/vlan/tasks/vlan.yml

---
- name: configure VLAN SW7
  ios_command:
    commands:
      - <insert vlan access switchport configuration here for SW7….>

- name: configure VLAN SW6
  ios_command:
    commands:
      - <insert vlan access switchport configuration here for SW6….>
      - <insert ping SW7 here>

共有1个答案

路昆杰
2023-03-14

您可以尝试包含when语句。例如:

tasks:
  - name: ntp role
    include_role:
      name: ntp
    tags:
      - ntp
    when: ansible_hostname in groups['group_name']
 类似资料:
  • 例如,如果我有10台主机,我的串行参数是3,那么这3个任务将如何执行这些任务?这些任务是否会一次一个主机地一个接一个地执行?或者像默认执行策略一样执行,每个主机将执行第一个任务,然后再执行下一个任务。 我没有找到任何文件提到这一点。

  • 我有一个Servlet,它接收请求,必须处理5个任务(从外部服务器获取数据),并将所有数据发送回客户机。

  • 我有3个不同的游戏levels.So会有三个不同的高分需要在谷歌游戏服务上发布排行榜。我不明白这个。我所做的是我创建了一个方法 对于submitcore(),我只是在游戏中的每个级别调用此方法,并从那里发送高分。 但是当我调用getLeaderboardGPGS()时,它只显示最后一级的高分。 所以我不知道如何实现这个多重排行榜。

  • 每个人 都。我一直在寻找这个问题,但我在这里没有找到它,所以我想它真的很简单。 我正在用JavaFX创建一个非常简单的应用程序,只需一个按钮。现在我想处理它的事件(如按下或释放),但当我在互联网上看到示例时,它们都使用匿名类(每个事件都有一个不同的类),这在我看来让代码变得肮脏。这就是为什么我想将事件处理程序放在一个单独的类中,并将它们添加到按钮中。 问题是我不知道我是否必须为每个事件创建一个不同