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