繁体   English   中英

为多个客户端使用 playbook 中的注册

[英]Using register in playbook for multiple clients

大家好。

我的剧本中的第一个任务将在服务器中执行。 第二个任务将在客户端执行。 ##

第一项任务:为清单中列出的所有客户生成令牌编号

- hosts: Server
  vars:
    clients:
      - clientA
      - ClientB
  tasks:
   - name: generate ticket on server and save it as a variable
     shell: /path/to/bin ticket {{ clients }} 
     register: ticket

第二个任务:让客户端使用生成的特定于他们的令牌。

(例如:ClientA 应该取票 {{ hostvars['server']['ticket'][0]['stdout'] }}

一个客户端的输出示例:“stdout”:“9338e126e8dd454820870b3ba19f5344334c8b1d”##

注意:下面的播放是针对一个客户端的
- hosts: ClientA tasks: shell: /path/to/bin --key /path/to/store-key/ticket.key --ticket {{ hostvars['server']['ticket']['stdout'] }}

以上播放对于一个客户端完全正常,但不知道为多个客户端编写播放(循环)

需要输入来为下面的游戏写入 shell 值(对于多个客户端)##

 - hosts: "{{ clients }}" vars: clients: - clientA - ClientB tasks: shell: /path/to/bin --key /path/to/store-key/ticket.key --ticket !!!!!!!!Please your input here !!!!!!!!!

我们怎样才能实现它?

##

可能的解决方案之一是

  1. 在主机的clients组索引中添加到主机
clients:
  hosts:
    clientA:
      uid: 0
      <etc>
    clientB:
      uid: 1
      <etc>
  1. 将循环添加到服务器部分(见下文)
  2. 通过uid作为ticket变量中的数组索引来寻址客户端的令牌
- hosts: serverA
  tasks:
   - name: generate ticket on server and save it as a variable
     shell: /path/to/bin ticket {{ item }} 
     register: ticket
     with_items:
      - "{{ groups['clients'] }}"

- hosts: clients
  tasks:
   - name: checkticket
     shell: /path/to/bin --key /path/to/store-key/ticket.key --ticket {{ hostvars['serverA']['ticket']['results'][uid]['stdout'] }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM