Выполнить несколько шагов в одной именованной задаче - PullRequest
0 голосов
/ 29 октября 2019

Я новичок в Ansible и сейчас строю свои первые пьесы, в одной из моих пьес я хочу убедиться, что все предварительные условия для приложения находятся перед установкой, один из этих предварительных требований включает в себя несколько пользовательских сценариев, которые понадобятсячтобы присутствовать в домашнем каталоге пользователя приложения, я хочу знать, могу ли я составлять несколько задач (надеясь, что это правильный термин), например так:

 - name: Check for file and move to /home/user with correct owner and permission
   stat: path=/path/to/{{ item }}
   register: {{ item }}_stat
   command: mv /path/to/{{ item }}  /home/user/{{ user }}
   file: path=/home/user/{{ item }} state=file mode=0755 owner=user group=group
   when {{ item }}.stat.exists
   with_items:
      - file1
      - file2
      - file3 

Я могу разбить это на несколько задач/ шаги и есть, но я хотел бы сохранить пост Playbook как можно меньше, когда я перехожу к соответствующей роли. Заранее спасибо

1 Ответ

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

Каждая задача может обслуживать только один модуль.

Можно поместить задачи «подфункции» в отдельный файл и выполнить цикл include_tasks . Например

- name: Check for file and move to /home/user with correct owner and permission
  include_tasks: loop-tasks.yml
  loop:
    - file1
    - file2
    - file3 

$ cat loop-tasks.yml
- stat:
    path: "/path/to/{{ item }}"
    register: result
- block:
    - command: "mv /path/to/{{ item }} /home/user/{{ user }}"
    - file:
        path: "/home/user/{{ item }}"
        state: "file"
        mode: "0755"
        owner: "user"
        group: "group"
  when result.stat.exists

(не тестировалось)

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