with_nested не работает, как ожидалось, для цикла в массиве

#ansible

#ansible

Вопрос:

Я пытаюсь создать новый Ansible playbook, который управляет некоторыми сервисами приложений.

Идея моей пьесы такова :

  • Найдите службы для управления.
  • Добавьте эти сервисы в массив.
  • Перебирать этот массив, чтобы остановить и запустить мои разные службы.

Я сделал этот сборник пьес :

 - hosts: MyHost
  gather_facts: no
  vars:
    Services: []
  tasks:
  - name: "Search for service to manage"
    find:
      path: "/data/mgwroot/applications"
      file_type: directory
      patterns: '*{{ ELD }}*'
    register: FoundServices

  - name: "Add found services to array"
    no_log: true
    set_fact:
      Services: "{{ Services   [item.path | basename] }}"
    with_items: "{{ FoundServices.files }}"

  - name: "Display array content"
    debug:
      msg: "{{ Services }}"

  - name: "- TASK A -"
    shell: "echo {{ item.0 }} {{ item.1 }}"
    with_nested:
    - [ 'stop', 'start' ]
    - [ "{{ Services }}" ]

  - name: "- TASK B -"
    shell: "echo {{ item.0 }} and {{ item.1 }}"
    with_nested:
      - ['stop', 'start']
      - ['serviceA', 'serviceB']
 

И результат работает не так, как ожидалось 🙁 :

  • » — TASK B -«, цикл которого из статического списка работает корректно, но
  • » — TASK A -«, который выполняет цикл над моим динамическим массивом, не работает.

Это результат :

 PLAY [MyHost] *************************************************************************************************************************************************************************

TASK [Search for service to manage] ******************************************************************************************************************************************************
Thursday 19 November 2020  13:25:46  0100 (0:00:00.109)       0:00:00.109 *****
ok: [MyHost]

TASK [Add found service to array] ********************************************************************************************************************************************************
Thursday 19 November 2020  13:25:48  0100 (0:00:01.260)       0:00:01.370 *****
ok: [MyHost] => (item=None)
ok: [MyHost] => (item=None)
ok: [MyHost]

TASK [Display array content] *************************************************************************************************************************************************************
Thursday 19 November 2020  13:25:48  0100 (0:00:00.058)       0:00:01.429 *****
ok: [MyHost] => {
    "msg": [
        "PREPRO_MVZV14_batch",
        "PREPRO_MVZV14_tp"
    ]
}

TASK [- TASK A -] ************************************************************************************************************************************************************************
Thursday 19 November 2020  13:25:48  0100 (0:00:00.038)       0:00:01.467 *****
changed: [MyHost] => (item=[u'stop', u'PREPRO_MVZV14_batch', u'PREPRO_MVZV14_tp'])
changed: [MyHost] => (item=[u'start', u'PREPRO_MVZV14_batch', u'PREPRO_MVZV14_tp'])

TASK [- TASK B -] ************************************************************************************************************************************************************************
Thursday 19 November 2020  13:25:49  0100 (0:00:01.116)       0:00:02.583 *****
changed: [MyHost] => (item=[u'stop', u'serviceA'])
changed: [MyHost] => (item=[u'stop', u'serviceB'])
changed: [MyHost] => (item=[u'start', u'serviceA'])
changed: [MyHost] => (item=[u'start', u'serviceB'])
 

Ожидаемый результат :

  • остановить PREPRO_MVZV14_batch
  • запустите PREPRO_MVZV14_batch
  • остановить PREPRO_MVZV14_tp
  • запустите PREPRO_MVZV14_tp

Кто-нибудь может объяснить мне, что я делаю неправильно?

Спасибо за все!

Ответ №1:

Я нашел решение,

Замените — [ «{{ Services }}» ] на — «{{ Services }}»

..

🙂