# Роли

**Структура роли и добавление в playbook**

1. Создается папка roles, внутри папки с названиями ролей, внутри каждой папки - defaults files handlers meta templates tasks vars
2. в playbook добавляется   
    ```yaml
       roles:
        - имя
    ```

**Назначения папок**

<table border="1" id="bkmrk-%D0%9F%D0%B0%D0%BF%D0%BA%D0%B0-%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-def" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 19.5587%;"></col><col style="width: 80.4413%;"></col></colgroup><thead><tr><td class="align-center">Папка</td><td class="align-center">Назначение</td></tr></thead><tbody><tr><td>defaults</td><td>позволяет устанавливать переменные по умолчанию для включенных или зависимых ролей.</td></tr><tr><td>files</td><td>содержит статические файлы и файлы сценариев, которые могут быть скопированы на удалённый сервер или выполнены на нём.</td></tr><tr><td>handlers</td><td>все обработчики, которые ранее были в вашем плейбуке, теперь могут быть добавлены в каталог.</td></tr><tr><td>meta</td><td>для метаданных роли, которые используются для управления зависимостями. Например, вы можете определить список ролей, которые должны быть применены до вызова текущей роли.</td></tr><tr><td>templates</td><td>для шаблонов, которые генерируют файлы на удалённых хостах. </td></tr><tr><td>tasks</td><td>содержит один или несколько файлов с задачами, которые определяются в разделе tasks обычного плейбука Ansible. Эти задачи могут напрямую ссылаться на файлы и шаблоны, содержащиеся в соответствующих каталогах внутри роли, без необходимости указывать полный путь к файлу.</td></tr><tr><td>vars</td><td>переменные для роли могут быть указаны в файлах внутри каталога, а затем ссылаться на них в другом месте роли.</td></tr></tbody></table>

**Ссылки:**

[Пример преобразования одного файла в роль](https://habr.com/ru/companies/slurm/articles/706920/)