Рубрики
Uncategorized

Развернуть полную среду

Введение Непрерывная интеграция помогает командам работать параллельно по тому же проекту. … помеченные DevOps, Azure, DotnetCore.

Непрерывная интеграция помогает командам работать параллельно по тому же проекту. Наиболее распространенным сценарием является использование некоторых Git Server и интеграция работы в качестве запроса на тягу из филиала функции для разработки. Многие инструменты обеспечивают простой способ создания артефакта (установочный пакет) из объединенной базы кода. Непрерывное развертывание — это способ поддерживать состояние приложения с новейшей кодойной базой в нужной среде.

Представьте, что перед точностью выталкивать новые изменения в производстве, вы хотите сделать все тесты в специальной среде. Или, может быть, на каждой недавно созданной среде, которую вы хотите селить некоторые данные? Иногда на этой конкретной среде хранится/отсутствуют данные о среде могут вводить ненужные ошибки или нежелательные ситуации, которые требуют вашего внимания, прежде чем он будет считаться проверенным/использоваться.

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

Я использую Microsoft Azure Cloud, как это наиболее знакомо для меня. В простейшем случае я хочу создать хранилище (хранилище тазора Azure), пропустите его соединительную строку в ключ Vault (централизованное хранение для секретов), данные семян там и, наконец, развертывают приложение, которое потребляет данные.

1. Создать учетную запись хранения

Есть несколько способов создания учетной записи хранилища на облаке Microsoft Azure. Для начала есть Azure Portal — веб-интерфейс для управления вашими облачными ресурсами. Если вы более знакомы с работой DevOps, вы бы использовали Azure Powershell (кроссплатформа прямо сейчас) или Azure Cli Отказ

В моем сценарии я хочу интегрировать процесс создания учетной записи хранилища с постоянным процессом развертывания. Я мог бы написать скрипт PowerShell и добавить его как шаг к моему определению CD. Я также мог написать какое-то настраиваемое расширение для моего инструмента CI/CD, который дал бы мне хороший вид на создание новой учетной записи хранения:) Я работаю с Azure DevOps (который является преемником Visual Studio Team Services). После некоторых боев с дайвингом в Azure DevOps расширение расширения, я оказался чем-то, как описано на одном из моих предыдущих постов:

Создать учетную запись Azure Storage на выпуске трубопровода

Paweł Ruciński · 8 октября 18 · 2 мин прочитаны

Это выглядит как ниже. Хорошее право? Вместо того, чтобы сражаться с некоторыми PowerShell, вы можете потреблять хорошо разработанные пользовательские интерфейсы для создания необходимого вами ресурса.

2. Передать строку подключения к ключу

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

Счастливо, есть еще один способ, который мой любимый. Храните все необходимые учетные данные за пределами исходного управления и извлеките реальные значения (переопределите файл конфигурации) на CD-процессе. Это можно сделать в специальном централизованном хранении для секретов. Облако Microsoft Azure предоставляет компонент, который называется Azure Key Vault Отказ Портал Azure DEVOPOPS обеспечивает простой способ получить данные из ключевого хранилища, вы можете прочитать больше об этом на Microsoft Docs Отказ

Поэтому я придумал идею выдвинуть соединительную строку для моей недавно созданной учетной записи хранилища к выбранному виду ключа во время процесса CD, а только после завершения создания. Я не нашел никакого существующего способа сделать это, кроме встроенного скрипта PowerShell/CLI. Я решил создать еще одну задачу для Azure DEVOPS, также описанных в специальном посте:

Pass Storage School Connection String в Key Vault на выпускной трубопровод

Paweł Ruciński · 17 октября18 · 2 мин прочитаны

Как раньше, я считаю, что разработчики, работающие на базе кода, не должны заботиться о настройке сценариев развертывания. Похоже ниже:

3. Смещение семян стола

Вы когда-нибудь храняте данные, без какого продукта не будет работать на стороне базы данных? Данные, которые не являются постоянными, что мутируют во время жизни приложения, поэтому необходимо хранить в БД, но без какого приложения не начнется. Я представляю, что некоторые значения конфигурации пользователей, по умолчанию, которые обрабатываются администратором и т. Д. Для этого обычно отсутствующая часть — это функциональность семян. Опять же, я не могу найти ничего, что работает из коробки.

Чем больше я получаю в развитие расширения Azure DEVOPS, тем больше идеи для новых задач я нахожу. Теперь я создал тот, который помогает высевать данные в хранилище таблицы Azure. Смотри мой пост:

Смещение семян стола

Paweł Ruciński · 13 ноября 13,18 · 2 мин читать

4. Развертывание приложений

Способ по умолчанию для размещения приложения в области Azure — это развернуть его в приложению. Он поддерживает несколько языков, таких как C #/. Net, Java, PHP, статические сайты (угловые/реагирование/другие), даже node.js или python. Он способен использовать контейнер OS Windows OS, Linux или Docker. Просмотрите документацию Microsoft для изучения Больше Отказ Конфигурация довольно простая. Есть несколько полей, которые нуждаются в вашем внимании, например, Azure подписка, тип приложения и имя сервиса приложения. Для получения дополнительной информации, пожалуйста, посетите это Страница Отказ

С некоторыми усилиями, теперь я могу развернуть полную среду через Azure DevOps Release Consure. Учетная запись/таблица хранения создается как первый шаг. Строка подключения передается к ключу в тайне. Далее желаемый стол заполнен данными семян. Последнее, приложение развернуто с учетными данными, извлеченными из ключа хранилища, значения конфигурации перезаписываются. С точки зрения разработчика, это прозрачно в какую базу данных, на какую таблицу приложение пишут/чтение/от этой конкретной среды. Они могут сосредоточиться на доставке функциональности, а не борются с процессом развертывания, соединительными строками, валидацией, учетными данными и т. Д.

Для окончания я подготовил короткий демонстрационный проект ASP.NET Core, который читает все данные из таблицы хранения Azure Statile и представляет его на веб-сайте. База кода можно найти на моем github:

Значение/ASP-Net-Core-Azure-Storage-Account

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionString": "UseDevelopmentStorage=true",
  "DemoTableName": "MyTable"
}

Также включены файл SEED.JSON, который может быть извлечен из-за где-то еще, но Для простоты сохраняется в рамках кодовой базы.

[
  {
    "PartitionKey": "partitionKey1",
    "RowKey": "1",
    "OtherColumn": "value1",
    "FourthColumn": "123"
  }    ...
]

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

Нет, не Powershell;) Если у вас есть какие-либо необходимо продлить Azure DEVOPS, с некоторыми блестящими новыми задачами развертывания, вы можете связаться со мной:)

Оригинал: «https://dev.to/meanin/deploy-a-complete-environment-a12»