Импорт и управление данными инфраструктуры Azure в Lucidscale

Автор:  Shanna S
Обновлено:  

Lucidscale позволяет импортировать данные облачной инфраструктуры из Microsoft Azure и генерировать на основе этих данных текстовые описания в документе Lucidscale.

Lucidscale доступен для Lucid Suite корпоративных учетных записей в качестве дополнения к Акселератору облаков. Чтобы узнать больше об Акселераторе облаков, обратитесь к нашей обзорной статьеАкселератор облаков .

Смотреть: Импорт Microsoft Azure облачной архитектуры

Поддерживаемые среды Microsoft Azure , ресурсы и линии

Полный список поддерживаемых сред, ресурсов и линий Microsoft Azure, доступных в Lucidscale, см. в статье Поддерживаемые среды, ресурсы и линии Microsoft Azure .

Импортируй инфраструктуру Azure

Вы можете импортировать данные Microsoft Azure облачной инфраструктуры одним из двух следующих способов:

  • Доверенный доступ: Этот метод использует одно корпоративное приложение (ранее Microsoft Azure AD), которое может быть назначено одной (или нескольким) Microsoft Azure группами управления или одной (или несколькими) индивидуальными Microsoft Azure подписками. Разрешения на импорт предоставляются с помощью роли только для чтения, назначенной этому приложению.
  • Загрузка файла: Этот метод использует предоставленный Lucid скрипт Python в настроенном терминале Microsoft Azure CLI для создания JSON-файла данных вашей инфраструктуры для ручной загрузки.

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

Способ импорта Описание Охват Типы поддержки ресурсов*
 
Обновление данных**
Доверенный доступ: группа управления Предоставьте одному корпоративному приложению назначение роли IAM для одной или нескольких групп управления. Централизованное управление импортом для нескольких подписок на Microsoft Azure в рамках одной группы управления с помощью одних учетных данных.

(1) и (2)

 

Автоматический и ручной
Доверенный доступ: индивидуальные подписки Предоставьте одному корпоративному приложению назначение роли IAM для одной или нескольких подписок. Зарегистрируйте учетные данные для одной или нескольких подписок на индивидуальные Microsoft Azure . (1) и (2) Автоматический и ручной
Загрузка файла Запустите скрипт Python, предоставленный Lucid, в настроенном терминале Microsoft Azure CLI, а затем загрузите сгенерированный JSON-файл в Lucid. До 50 подписок на один файл JSON. (1) Только

Вручную

Обновите данные, отправив только что созданный файл JSON.

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

Lucid сохраняет доверенные учетные данные доступа, поэтому вы можете обновить свои данные или начать новый импорт, не вводя информацию заново. Эта возможность хранения данных позволяет Lucid автоматически обновлять информацию. Учетные данные можно удалить на вкладке «Учетные данные» в центре обработки данных Microsoft Azure .

Если вы работаете с очень большой средой, воспользуйтесь информацией из статьи «Оптимизация производительности в Lucidscale» , чтобы уменьшить объем импортируемых данных или сократить количество вызовов API, которые Lucid выполняет к Microsoft Azure. После завершения каждого импорта вы можете начать новый.

Импорт через доверенный доступ

Этот метод обеспечивает безопасный непрерывный доступ за счет регистрации корпоративного приложения с разрешениями только на чтение. Благодаря доверенному доступу Lucid сохраняет ваши учетные данные, что позволяет выполнять как ручное, так и запланированное автоматическое обновление данных.

Шаг 1: Создайте и зарегистрируйте корпоративное приложение в Microsoft Azure

Сначала вы создадите и зарегистрируете приложение на своем Microsoft Azure портале. Это приложение будет выступать в качестве субъекта-сервиса, который Lucid использует для аутентификации.

  1. Перейдите на главную страницу сайта Lucid.
  2. Нажмите Концентратор данных в нижней части меню навигации в левой части страницы.
  3. В списке поставщиков в концентраторе данных щелкните Microsoft Azure
  4. Выберите Импорт Microsoft Azure данных.
  5. Выберите «Доверенный доступ».
    azure_import_method_selection
     
  6. В разделе «Область учетных данных» выберите «Группа управления» или «Индивидуальная подписка». Если вы ранее зарегистрировали учетные данные, вы будете перенаправлены на страницу выбора учетных данных.
  7. Нажмите «Зарегистрировать новые учетные данные » в верхней части этой страницы.
  8. После выбора области учетных данных выберите Зарегистрировать приложение AD. Это направит вас на новую вкладку со страницей регистрации приложения в Microsoft Azure (если вы уже вошли в Microsoft Azure). Оставьте вкладку браузера Lucid открытой. 
    • Для сред в Microsoft Azure Government выберите ссылку непосредственно под ней.
      azure_application_registration_button
  9. На странице регистрации в Microsoft Azureдобавьте название приложения и оставьте настройки по умолчанию для всех остальных полей.
  10. Нажмите «Зарегистрироваться », чтобы завершить регистрацию Корпоративного приложения.
  11. Перейдите в раздел Регистрация приложений в Microsoft Entra ID и выберите приложение, которое вы только что зарегистрировали.
  12. В разделе «Свойства» скопируйте «Идентификатор приложения (клиента)», щелкнув значок копирования в буфер обмена.
    • Вернитесь во вкладку Lucid, вставьте это значение в поле "Application (client) ID".
    • Повторите этот процесс для идентификатора каталога (клиента).
      azure_ad_application_fields
  13. На вкладке Microsoft Azure выберите Управление в меню навигации слева.
  14. Выберите «Сертификаты и секреты». 
  15. Нажмите + Новый секрет клиента.
  16. Введите описание, выберите срок действия и нажмите кнопку Добавить
  17. Немедленно скопируйте значение нового секрета, так как это значение отображается только один раз. Вернитесь во вкладку Lucid, вставьте это значение в поле Шага 3 "Секретное значение клиента". 

Примечание: Microsoft Azure требует истечения срока действия секретов клиента. Как только срок действия секрета клиента истечет, Lucid не сможет импортировать или обновить данные Microsoft Azure . Вы можете установить этот срок действия на срок до двух лет, хотя Microsoft Azure рекомендует шесть месяцев. Чтобы продолжить импорт после истечения срока его действия, вам нужно будет создать новый секрет клиента в Microsoft Azure , а затем обновить учетные данные в концентраторе данных Lucid, указав новое значение.

Шаг 2: Назначьте роль корпоративному приложению

После создания приложения необходимо предоставить ему разрешения на чтение метаданных Microsoft Azure среды. У вас есть два варианта: назначить встроенную роль, доступную только для чтения (рекомендуется) или создать пользовательскую роль с минимальными необходимыми разрешениями. Эти два варианта перечислены в разделе Шаг 2: "Назначение роли приложению AD". 

azure_ad_application_roles

Вариант А. Используйте роль только для чтения для всех ресурсов (рекомендуется)

Lucid рекомендует использовать встроенную роль Microsoft Azureдля доступа только для чтения, так как новые ресурсы Microsoft Azure автоматически добавляются и становятся доступными для импорта Lucid. Этот подход предоставляет приложению доступ только для чтения ко всем ресурсам в указанной области (либо группе управления, либо определенной подписке).

  1. На портале Microsoft Azure перейдите к подписке или группе управления , которую вы хотите импортировать.
  2. Выберите Управление доступом (IAM) в меню навигации.
  3. Нажмите + Добавить.
  4. Выберите Добавить назначение ролей.
  5. На вкладке Роль найдите и выберите встроенную роль Читатель .
  6. Перейдите на вкладку «Участники ».
  7. Нажмите + Выбрать участников и найдите название корпоративного приложения, которое вы зарегистрировали ранее.
  8. Выберите приложение.
  9. Нажмите «Сохранить».
  10. Нажмите кнопку Просмотреть + создать , чтобы завершить назначение роли.

Вариант Б. Создание и назначение пользовательской роли

При таком подходе создается роль с минимальными разрешениями, необходимыми для импорта.

  1. Во вкладке Lucid перейдите к шагу 2 и выберите опцию «Пользовательская роль».
  2. Нажмите кнопку Скачать файл JSON , чтобы сохранить файл базовых разрешений роли.
  3. На портале Microsoft Azure перейдите к подписке или группе управления , которую вы хотите импортировать.
  4. Перейдите в раздел Контроль доступа (IAM).
  5. Выберите + Добавить > Добавить пользовательскую роль.
  6. Рядом с полем Базовое разрешение.
  7. Выберите «Запустить из JSON» и загрузите файл, который вы скачали из Lucid.
  8. Присвойте роли описательное имя пользовательской роли, например Lucid Minimum Read Access.
  9. На вкладке Назначаемые области убедитесь, что в списке указана целевая подписка или группа управления. Если нет, выберите + Добавить назначаемые области. 
    • Для импорта данных на уровне групп управления укажите тип. Перейдите в раздел "Группа управления" и выберите каждую группу, которую хотите импортировать. 
    • Для импорта уровня подписки «Индивидуальный» установите тип Перейдите в раздел «Подписки» и выберите каждую подписку, которую хотите импортировать. 
  10. Нажмите Проверить + создать.
  11. Нажмите кнопку Создать , чтобы завершить работу над пользовательской ролью.
  12. В параметрах Управление доступом (IAM) подписки или группы управления.
  13. Нажмите + Добавить.
  14. Выберите Добавить назначение ролей.
    • В поле Роль найдите и выберите только что созданную пользовательскую роль.
    • В поле Назначить доступ оставьте значение по умолчанию (Пользователь, группа или субъект-служба).
    • В поле «Выбрать» найдите и выберите зарегистрированное корпоративное приложение.
    • Нажмите кнопку Сохранить, чтобы применить назначение роли.

Шаг 3: Добавьте учетные данные и импортируйте подписки в центр данных.

Наконец, вы предоставите учетные данные приложения Lucid для проверки соединения.

  1. Вернитесь на вкладку Lucid, которую вы ранее оставили открытой.
    • Если ваше приложение было создано в Microsoft Azure государственных учреждениях, измените поле "Тип приложения AD" на "Microsoft Azure правительственное приложение". 
  2. Введите отображаемое имя для учетных данных, чтобы впоследствии их можно было идентифицировать. Это будет указано в поле "Отображаемое имя приложения AD".
  3. Нажмите «Далее».
  4. Отметьте блок для подписок, которые вы хотите импортировать.
  5. Нажмите «Далее».
    azure_choose_subscriptions_to_import_page
  6. Выберите типы ресурсов, которые вы хотите импортировать.
    • При импорте подписок в хаб данных Lucid у вас есть возможность исключить выбранные типы ресурсов или метаданные из импорта. Это дает вам возможность визуализировать только те типы ресурсов, которые вас интересуют, и, в некоторых случаях, может увеличить скорость импорта. Выбранные типы ресурсов и метаданные не будут импортированы или визуализированы в схеме. 
    • Чтобы узнать о подписках с большим количеством ресурсов, ознакомьтесь с разделом Оптимизация производительности в Lucidscale для улучшения работы с продуктами.
    • Для учетных данных с более чем 1 подпиской конфигурация для пропущенных метаданных и типов ресурсов будет применяться ко всем подпискам, перечисленным в разделе "Сводка по импорту".
  7. (Дополнительный) Настройте имя каждой Microsoft Azure подписки. Кроме того, вы можете добавить текст префикса ко всем перечисленным подпискам.
    azure_ad_import_config_page
  8. Нажмите «Импортировать подписки Microsoft Azure .

Загрузка файла

Чтобы импортировать Microsoft Azure инфраструктуру с помощью загрузки файла JSON, выполните следующие действия:

  1. На главной странице Lucid нажмите Data Hub в меню навигации слева.
  2. Выберите Импорт Microsoft Azure данных.
  3. Выберите Загрузить файл.
  4. Выберите Global Microsoft Azure Application или Microsoft Azure Government Application в зависимости от того, где находится ваш Microsoft Azure экземпляр. Оставьте эту вкладку открытой, чтобы вернуться к ней позже.
  5. Нажмите Скачать requirements.txt и Скачать скрипт
  6. Настройте интерфейс командной строки Microsoft Azure с помощью файла requirements.txt и инструкций, приведенных в начале файла azurecliscript.py .
    1. Дополнительные инструкции по настройке см. Microsoft Azure разделе Описание скрипта File Upload ниже.
  7. Выполните скрипт Python в вашем Microsoft Azure CLI. Будет сгенерирован файл Microsoft Azure.json
  8. На вкладке Хаб данных Lucid выберите Выбрать файл и загрузите файл Microsoft Azure.json
  9. Нажмите «Далее».
  10. Укажите псевдоним для каждой подписки, которую вы хотите импортировать.
  11. Выберите Импортировать Microsoft Azure подписки.

Описание скрипта Microsoft Azure File Upload 

Скрипт импорта azurecliscript.py, предоставленный Lucid. Использует интерфейс командной строки Microsoft Azure и SDK Microsoft Azure для Python для сбора конфигурации ресурсов Microsoft Azure . Для этого требуется надлежащая аутентификация и выбор конкретной подписки.

Скрипт использует AzureCliCredential для проверки подлинности, полагаясь на активный сеанс Microsoft Azure CLI, установленный с помощью az login. Ваши учетные данные из az login предоставляют доступ к клиенту Microsoft Entra ID (Active Directory).

  • Если вы извлекаете данные из облака Microsoft Azure государственных организаций, сначала задайте облачную среду: az cloud set --name AzureUSGovernment.
  • В противном случае для Global Microsoft Azureубедитесь, что для облачной среды задано значение AzureCloud: az cloud set --name AzureCloud.

Подробную документацию по управлению подписками Microsoft Azure и проверке подлинности с помощью интерфейса командной строки Microsoft Azure см. в документации Microsoft Azureпо управлению Microsoft Azure подписками с помощью интерфейса командной строки Microsoft Azure и входу с помощью Microsoft Azure интерфейса командной строки.

Требования:

  • Питон: Версии 3.0-3.9. Убедитесь, что во время установки выбран параметр "Добавить Python в PATH".
  • Microsoft Azure CLI: Установлен и настроен.
  • Microsoft Azure Пакеты SDK: Для скрипта требуются определенные пакеты SDK Microsoft Azure (например, Microsoft Azure.mgmt.compute, Microsoft Azure.mgmt.network, и т.д.). Они устанавливаются с помощью команды pip3 install -r requirements.txt после загрузки requirements.txt из концентратора данных.

Параметры:

  • -s, --subscriptions [ОБЯЗАТЕЛЬНО] 
    • Указывает один или несколько идентификаторов Microsoft Azure подписки, из которых импортируются ресурсы. Этот параметр можно повторить для импорта из нескольких подписок в рамках сеанса CLI, прошедшего проверку подлинности Microsoft Azure .
  • -o, --output
    • Указывает имя файла для созданного выходного JSON. Если не указано, будет использоваться имя файла по умолчаниюMicrosoft Azure.json.
  • -c, --count
    • Выводит файл JSON с именем count.json , содержащий количество ресурсов. При использовании этого флага сгенерированный JSON-файл не подходит для импорта Lucid.

Пример:

  • Запустите python3 azurecliscript.py --subscriptions "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyy" --output my_azure_data.json
  • Приведенная выше команда запускает скрипт и создает JSON-файл с именем my_azure_data.json для ресурсов, находящихся в указанных Microsoft Azure подписках.

    Используйте центр обработки данных для управления данными и учетными данными инфраструктуры Microsoft Azure

    Импортированные подписки

    После импорта данных подписки Microsoft Azure она будет отображаться в списке источников данных с именем подписки, указанным вами в разделе « Microsoft Azure: Импортированные подписки» в центре данных. В этом разделе вы также можете нажать кнопку «+ Новая подписка», чтобы импортировать новую подписку вцентр данных.

    Подписки, перечисленные в этом разделе, представляют собой источники данных, которые можно использовать для создания новых документов Lucidscale. Источники данных («Подписки») содержат метаданные подписки Microsoft Azure , используемые для создания документов Lucidscale. Поле «Последнее обновление» указывает, когда ваш источник данных был в последний раз обновлен с учетом любых обновлений в подключенной подписке Microsoft Azure .

    azure_data_hub_overview_showing_all_subscription_options.png

    После выбора подписки из списка, справа можно увидеть облачный инвентарь каждой подписки. Этот список позволяет увидеть полное количество каждого типа ресурсов, импортированных перед созданием документа. Вы также можете загрузить CSV-файл для импорта учетных данных; этот файл содержит список ресурсов и количество непосредственно из центра данных, нажав кнопку «Загрузить CSV».

    В инвентаризации перечислены все ресурсы, доступ к которым возможен с помощью разрешений ролей, назначенных приложению AD. Если вы выберете "Использовать роль только для чтения для всех ресурсов", все ресурсы в вашей подписке, доступные по Microsoft Azure роли "Читатель" , будут отображаться в инвентаризации. Если вы создадите пользовательскую роль, в инвентаризации будут отображаться только типы ресурсов, указанные в разрешениях назначенной роли.

    Щелкни по меню с тремя точками, изображенному на подписке, чтобы получить доступ к следующим потенциальным опциям: 

    • Процесс создания нового документа запускает отображение инфраструктуры Microsoft Azure , связанной с подпиской, в виде схемы в рабочей области нового документа. Документ будет сгенерирован в фоновом режиме на вашей домашней странице Lucid, и мы уведомим вас о его завершении через модальное окно состояния, которое появится в правом нижнем углу страницы.
    • Функции «Обновить подписку из Microsoft Azure и «Запланировать обновление» позволяют вручную или автоматически обновлять данные подписки Microsoft Azure , импортированные в центр данных, чтобы отразить любые изменения в подключенной подписке Microsoft Azure . Новые документы, созданные на основе подписки после обновления, будут отражать любые изменения в подключенной подписке Microsoft Azure . 

    Подробнее: Для импортированных облачных источников данных автоматически включены запланированные обновления. Вы можете изменить это в любое время в центре обработки данных. Для получения более подробнойинформации обратитесь к нашей статье «Обновление и синхронизация данных в Lucidscale» .

    • Функция «Редактировать ресурсы» позволит вам редактировать ресурсы, включенные в каждый набор данных. Выбор этой опции откроет модальное окно, в котором вы сможете добавить или удалить любые ресурсы из существующих наборов данных. После завершения выбора нажмите « Сохранить и обновить подписку». Это обеспечит обновление набора данных и обновление документов, ссылающихся на этот набор данных, до самой актуальной информации.
      how_to_edit_azure_resources_in_lucidscale.png
    • Переименование подписки позволяет тебе изменить имя выбранного набора данных.
    • Функция «Удалить подписку» удаляет импортированную подписку из центра данных Lucid. Все документы, созданные на основе этой подписки, потеряют возможность обновления данных из Microsoft Azure. Вы можете импортировать одну и ту же подписку Microsoft Azure несколько раз — каждая создает независимый источник данных. Удаление существующей подписки перед повторным импортом не требуется.

    Примечание: Опции, отображаемые выше, будут отличаться в зависимости от метода импорта, который ты использовал для подписки. Опция update доступна только при импорте AD Application. Импорт CLI не поддерживает эту опцию. 

    Сохраненные учетные данные

    azure_saved_credentials_in_the_lucidscale_data_hub.png

    На странице«Сохраненные учетные данные» в центре данных вы найдете все приложения Active Directory, которые можно использовать для импорта подписок Microsoft Azure в центр данных. На этой странице нажмите «+ Новое приложение Active Directory», чтобы добавить новый набор учетных данных, которые можно использовать для импорта подписки Microsoft Azure .  

    Чтобы поделиться созданными тобой AD-приложениями с другими пользователями, нажми на меню с тремя точками, изображенное на AD-приложении. 

    Отсюда у тебя есть два потенциальных варианта: 

    • Функция «Предоставить учетные данные» открывает модальное окно, позволяющее поделиться созданным вами приложением Active Directory с другим пользователем вашей учетной записи Lucid, указав его адрес электронной почты. Предоставление ему доступа к приложению Active Directory позволит ему импортировать связанные подписки Microsoft Azure в центр данных и создавать документы Lucidscale. После того, как учетные данные были предоставлены другому пользователю, вы можете отозвать его доступ к ним, нажав на крестик рядом с его адресом электронной почты в том же модальном окне.
    • Удаление учетных данных удаляет ваше приложение Active Directory из центра данных. После удаления учетных данных все подписки, ранее импортированные с использованием этих учетных данных, а также документы, созданные на основе этих подписок, теряют возможность обновления данных из Microsoft Azure.  

    Подробнее: Вы можете делиться учетными данными только в том центре данных, который принадлежит вам. Только пользователи Lucidscale, которым назначена лицензия Creator, могут импортировать учетные записи и создавать документы. Для получения более подробной информации ознакомьтесь с разделом « Управление учетными данными и источниками данных». статья. 

    Информация о безопасности

    Приложение Azure AD

    Приложение Entra ID (ранее Azure AD) - это предпочтительный метод от Azure для управления цифровыми идентификаторами как для внешних, так и для локальных приложений. 

    Этот метод позволяет Lucidscale безопасно хранить учетные данные, которые позволяют тебе легко импортировать и обновлять свою диаграмму. 

    Смотри эти ресурсы для получения дополнительной информации:

    Безопасный, ограниченный доступ 

    Lucid запрашивает ограниченное разрешение на доступ только для чтения для созданного тобой приложения Azure AD Application. Разрешения определяются в рамках пользовательской роли, которую ты привязываешь к своему приложению. Пользовательская роль, созданная с такими разрешениями, не может изменять настройки в твоей архитектуре Azure или читать данные в твоих базах данных. Lucid использует приложение AD только для чтения структурных метаданных твоей инфраструктуры Azure. Lucid читает только из подписок, к которым ты предоставляешь нам доступ; ты можешь контролировать это, ограничивая область действия пользовательской роли, прикрепленной к приложению AD, назначенному Lucidscale. 

    Альтернатива сценарию CLI

    Чтобы просмотреть и контролировать действия, которые Lucid выполняет во время сканирования инфраструктуры Microsoft Azure , вы можете загрузить и использовать предоставленный нами скрипт на Python вместо создания приложения Microsoft Azure AD. В этом случае ваши учетные данные никогда не будут переданы в Lucidscale, и вы сможете просмотреть как код, который будет выполняться в вашей среде, так и результирующие метаданные, прежде чем загружать метаданные в Lucidscale. Импортированный вами JSON-файл будет доступен в центре данных Lucid для использования при создании документов Lucidscale.

    Безопасное хранение документов.

    Lucidscale хранит импортированные из Microsoft Azure метаданные и сгенерированные документы, используя стандартные отраслевые методы защиты конфиденциальных данных. Импортированные данные Microsoft Azure встраиваются в документ Lucidscale, поэтому вы можете контролировать доступ к данным, используя стандартные разрешения доступа Lucid. Для получения дополнительной информации о том, как Lucid защищает ваши документы, обратитесь к нашей странице «Безопасность контента» или свяжитесь с нашей командой продаж.

    Часто задаваемые вопросы

    Как Lucidscale получает доступ к нашей среде Azure? Какой уровень доступа у Lucidscale?

    Рекомендуемый метод от Lucidscale и Azure - через Azure AD Application. Мы предоставляем политику, которая дает нам доступ "описать и перечислить" к твоей среде, чтобы мы могли получить опись ресурсов.

    У нас также есть метод с использованием скрипта python, который ты можешь запустить через интерфейс командной строки (CLI), который генерирует JSON-файл. Затем пользователи могут загрузить этот JSON-файл в Lucidscale и не вводить в Lucidscale никакую учетную информацию.

    К каким API имеет доступ Lucidscale?

    В основном мы используем конечные точки API describe и list.

    Могу ли я выбрать, какие метаданные (поля и значения, отображаемые на панели данных) будут импортированы? Если нет, то какие метаданные импортируются?

    Нет, в настоящее время ты не можешь выбирать, какие метаданные будут импортированы. Однако мы стремимся создать некоторую возможность для этого в будущем. Все метаданные из вызова API describe импортируются.

    Оставьте отзыв об этой статье

    Хотите поделиться мнением об этой статье? Расскажи нам о своем опыте здесь

    Вы нашли то, что искали?

    Остались вопросы или хотите поделиться тем, что узнали? Посетите наше сообщество   для получения помощи и совместной работы с другими.