не удалось выполнить блочный модуль в скрипте ansible yml - PullRequest
0 голосов
/ 09 октября 2019

Я использую блочный модуль в нижеследующей книге. В основном, если files существует, то только я хочу выполнить Play 2 и Play3, но по какой-то причине я получаю ошибку при выполнении ниже playbook.

---
- name: Play 1
  hosts: 127.0.0.1
  tasks:
  - name: find the latest file
    find: paths=/var/lib/jenkins/jobs/process/workspace/files
          file_type=file
          age=-1m
          age_stamp=mtime
    register: files

  - name: Play 2 & 3 if Play 1 has a file
    block:
      - name: Play 2
        hosts: all
        serial: 5
        tasks:
          - name: copy latest file
            copy: src=data_init/goldy.init.qa dest=/data01/admin/files/goldy.init.qa

          - name: copy latest file
            copy: src=data_init/goldy.init.qa dest=/data02/admin/files/goldy.init.qa

      - name: Play 3
        hosts: 127.0.0.1
        tasks:
          - name: execute command
            shell: ./data_init --init_file ./goldy.init.qa
    when: files != ""

Ниже приведена ошибка. Любая идея, что я делаю здесь неправильно?

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

The error appears to have been in '/var/lib/jenkins/jobs/process/workspace/test.yml': line 14, column 9, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

    block:
      - name: Play 2
        ^ here

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

в этом есть несколько неправильных вещей, и я предполагаю, что вы новичок в ansible. Вы не можете поместить имя в блок. ваша структура тоже неверна. файлы не определены. попробуй:

---
- name: Play 1
  hosts: 127.0.0.1



  tasks:
  - name: find the latest file
    find: paths=/var/lib/jenkins/jobs/process/workspace/files
          file_type=file
          age=-1m
          age_stamp=mtime
    register: files
  - debug:
      msg: "{{ files }}"
    when: files != ""

  - block:
    - name: copy latest file
      copy: src=data_init/goldy.init.qa dest=/data01/admin/files/goldy.init.qa

    - name: copy latest file
      copy: src=data_init/goldy.init.qa dest=/data02/admin/files/goldy.init.qa

    - name: execute command
      shell: ./data_init --init_file ./goldy.init.qa
    when: files != ""
0 голосов
/ 09 октября 2019

Я думаю, что путаница здесь связана с несоответствием Play и Block . Доступные пьесы могут содержать один или несколько пьес, а Play - это структура высшего порядка в Playbook (помните, что Playbook - это просто YAML, так что это фактически структура данных). Блоки приходят, когда вы хотите объединить серьезные задачи в единое целое, в котором вы можете выполнять групповые действия, такие как условия, а также для выявления ошибок и восстановления. Блоки являются частью Play, их можно поставить практически везде, где может задача. Однако в синтаксисе вы определили новые Plays, вложенные в другие, что недопустимо. Надеюсь, это поможет, счастливой автоматизации!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...