Использование регистрации в playbook для нескольких клиентов - PullRequest
1 голос
/ 04 марта 2020

Привет всем.

Первое задание в моей пьесе будет выполнено на сервере. Второе задание будет выполнено в клиентах. ##

Первая задача: сгенерировать номера токенов для всех клиентов, перечисленных в перечне

- 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

Вторая задача: настроить клиентов на использование сгенерированных токенов, указанных c.

(Пример: 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'] }}

Вышеописанное воспроизведение отлично работает с одним клиентом, но нет идеи написать игру для нескольких клиентов (в l oop)

Требуется входные данные для записи значения оболочки для воспроизведения ниже (для нескольких клиентов) ##

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

Как мы можем достичь этого?

##

1 Ответ

0 голосов
/ 10 марта 2020

Одним из возможных решений является

  1. Добавить к хостам в clients групповой индекс хоста
clients:
  hosts:
    clientA:
      uid: 0
      <etc>
    clientB:
      uid: 1
      <etc>
Добавление l oop к серверной части (см. Ниже) Адрес токена клиента по его 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'] }}

...