Проблема с использованием списка, возвращенного из модуля ansible find - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу создать файл в каждом домашнем каталоге пользователя. Основываясь на результатах отладки, похоже, что он возвращает dict, содержащий список, называемый «файлы», в котором есть вся необходимая информация, включая пользователя и группу, которые нужно установить для вновь созданного файла. Тем не менее, он не ведет себя так, как я ожидал, и, исходя из всего, что я читаю, я, должно быть, неправильно понимаю, как правильно обращаться к переменной. Вот что я делаю:

    - name: Get Directory Listing Using Find
      find:
        file_type: directory
        paths: /home
      register: find_user_dirs

    - name: Create Test File in Each Directory
      file:
        status: touch
        path: "{{ item.path }}/test.file"
        owner: root
        group: root
      with_items: "{{ find_user_dirs.files }}"

В документации кратко упоминаются диктанты против списков, но, похоже, есть еще кое-что. Мне нужна помощь, чтобы указать правильное направление, чтобы понять, как правильно использовать эту переменную.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Хорошо, я чувствую себя глупо. Возможно, потому что я работал над этим в 4 часа утра, но все еще глупый простой надзор с моей стороны. У меня там была опечатка с «status» вместо «state».

После некоторого отдыха и отладки с информацией, предоставленной Ростом, которая, кстати, была полезна для других приложений, я обратил более пристальное внимание и нашел моя ошибка Теперь это на самом деле работает так, как задумано:

    - name: Get Directory Listing Using Find
      find:
        file_type: directory
        paths: /home
      register: find_user_dirs

    - name: Create Test File in Each Directory
      file:
        state: touch
        path: "{{ item.path }}/test.file"
        owner: "{{ item.uid }}"
        group: "{{ item.gid }}"
      with_items: "{{ find_user_dirs.files }}"

Ошибка classi c rook ie - видеть то, что, по вашему мнению, вы видите вместо того, что вы на самом деле видите. Извините всех, кто впустую потратил на это время.

0 голосов
/ 28 апреля 2020

Ну, для меня такое поведение тоже довольно неожиданно.

Но я нашел обходной путь, это работает:

- name: Create Test File in Each Directory
  file:
      status: touch
      path: "{{ item }}/test.file"
      owner: root
      group: root
  with_items: "{{ find_user_dirs | map(attribute='path') | list }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...