Рубрики
Uncategorized

Примеры автоматизации DevOps на практике

Оригинальный пост от: Адам Дювандер Облачный Инжиниринг — гибкая дисциплина. Тем не менее, человек … с меткой облака, DevOps.

Оригинальный пост По: Адам Дювандер

Cloud Native Engineering — гибкая дисциплина. Тем не менее, многие варианты инструмента DevOps и методы интеграции могут быть запутанными. Более сложность часто означает больше сложности автоматизации задач. Программы DevOps должны развиваться в направлении улучшения процесса. Улучшения в доставке кода приведут к повышению прозрачности в коммуникации проекта, разумном внедрении общих ресурсов и создаст больше возможностей для обеспечения качества.

В этом посте мы рассмотрим три примера для автоматизации DevOps. Они используют Jira, Jenkins и Docker-но концепции рабочих процессов, вызванных событиями, будут переходить на любые инструменты, которые вы используете.

Создавать ресурсы (и прозрачность) От рабочих билетов

Прозрачность является ключом к открытию общения в командах DevOps. Представьте себе мир, в котором любой менеджер проекта может видеть и создавать информацию в контексте, благоприятного для бизнеса. Например, потребуется некоторое время, чтобы синхронизировать ваши трубопроводы Jenkins с помощью JIRA, даст PM в реальном времени представление о работах EC2 по развертыванию и предотвратит проверки по шторм статуса. Следующие шаги будут продвигать JIRA с 2D Digital Cork Poard в интерфейс управления миссией, предоставляя заказы и получая квитанции. Вы можете использовать аналогичный подход с управлением проектами и инструментами построения.

Чтобы настроить автоматизацию, подготовьте свой проект JIRA к обмену информации на Дженкинс через веб -крючок. Допустим, ваш проект является миграцией приложения, и вам необходимо многократно предоставить набор услуг AWS для тестирования. Вместо ручной загрузки сценариев CloudFormation добавьте пользовательские поля в консоли конфигурации выпуска, которые расскажут Дженкинсу, где найти эти сценарии и какие параметры для их предоставления. Затем создайте поле состояния сборки, которое будет управлять обновлениями от Jenkins. Убедитесь, что эти новые поля теперь появляются в ваших билетах. Затем, в меню «Расширенная конфигурация» создайте соединение с Jenkins, подключив его сервер к форме конфигурации Webhooks. Выберите «Создано» и «обновлен» в качестве триггеров событий.

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

  • Джира
  • Джира трубопровод шаги
  • Плагин Джира Триггер
  • Плагин JIRA-EXT

Это позволит Дженкинсу выслушать соответствующие обновления от JIRA, а также разоблачить функциональность, чтобы связаться с билетом запуска из сборки.

С оба приложения теперь заперты друг в друге, обновите свой трубопровод, чтобы обработать полезную нагрузку JIRA и передайте ее на сборку. Напишите фильтр JQL в конфигурации трубопровода, чтобы его можно было запустить только с помощью событий WebHook «Создать» и «Обновление». Затем отобразите местоположение шаблона CloudFormation и другие параметры в качестве пользовательских полей и убедитесь, что ключ билета JIRA также фиксирован в качестве поля атрибута. Шаблон и параметр CloudFormation теперь доступны в качестве переменных окружающей среды для руководства этой сборкой. Кроме того, значение ключа билета доступно для новых функций, выявленных плагинами JIRA для создания обновлений статуса и входа в систему непосредственно в билет для всех заинтересованных сторон.

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

Опросить свой Docker создает с помощью динамических переменных

Docker, как и CloudFormation, является мощным инструментом для восстановления приложений и инфраструктуры по требованию. Здесь мы собираемся расширить мощность параметризации на сборки трубопровода на основе Docker. В идеале вы можете транспортировать контейнер Docker As I-It в любую среду. На практике, однако, будут различия. Может быть, у вас есть разные конечные точки базы данных для разработки, тестирования и производства. Если тесты интеграции вашего приложения полагаются на попадание правой конечной точки на среду, мы можем использовать специфические для сборки параметры, чтобы сохранить окружающую среду контейнеров Docker.

Вот как вы можете направить параметры для сборки тестовой среды:

pipeline {
    // ...
    agent {
        dockerfile {
            filename "my-dockerfile"
            label "my-docker-label"
            args "-v DB_URL= ${env.DB_URL}" // set to 'test_db.example.com'
        }
    }
    // ...
}

Давайте предположим, что мы передаем контролируемый набор параметров из инициирующего действия в Дженкинс, как в предыдущем примере. Мы запускаем тестовый конвейер, поэтому Дженкинс получил конечные точки базы данных как Db_url = test_db.example.com от запуска действия. Мы можем получить доступ к этому значению в нашем Jenkinsfile из env объект.

Теперь мы должны направлять DB_URL ценность в сборку Docker. Мы начинаем с объявления агента сборки. Чтобы максимизировать использование программы Docker вашей команды, введите пользовательский DockerFile, объявив свой пользовательский DockerFile в качестве вашего агента. Далее мы должны передать переменную среды в качестве интерполированной строки в ARG: args "-v db_url = $ {env.db_url}" Анкет В вашем пользовательском Dockerfile, составьте DB_URL Арг инструкция для инструкции ENV. Теперь, когда URL -адрес будет доступен в качестве переменной в ваших тестовых сценариях в контейнер без необходимости изменений файла вообще.

Конечно, это те виды общей облачной проводки, которые Реле построен для поддержки. Все, что происходит часто, основанное на событиях, является хорошим совпадением, поэтому тестирование — еще одна область для автоматизации.

Сделайте процедуру тестирования внутри вашей контейнерной сборки

Тестирование-это не подлежащий обсуждению столп любой программы разработки программного обеспечения, но он может стать узким местом для развертывания. Команды Devops часто смягчают Logjam с менее чем компенсированным режимом испытаний. Например, комбинации функционального и модульного тестирования при обновлениях для API может быть достаточно для проверки функциональности CRUD с минимальной проходимой интеграцией в локально развернутый источник данных. Тем не менее, вы можете воспроизвести все зависимости API и запустить расширяемый набор тестов в одноразовой работе с докером с небольшим количеством накладных расходов.

Для этого примера давайте представим, что вы создаете небольшое приложение для узлов, которое читает и пишет MongoDB. Будет легко представить стек в файле скомплектования Docker. Файлы с композицией Docker-это сценарии YAML, которые рассказывают Docker, что вводить в сборку DockerFile. В этом случае мы собираемся построить изображение node.js в Dockerfile и объявить две услуги в нашем Docker-compose.yml: служба API и экземпляр Mondodb. Сохраните этот файл Docker-Compose и Node.js Dockerfile, чтобы превратить его в интеграция-тест Подкаталог в проекте репо.

Теперь вы можете выполнить некоторые проверки здравомыслия, выполнив Docker-Compose Complose против интеграция-тест Справочник, выполняя действия почтальона против местного API и проверяя MongoDB на тот порт, на который вы его обнажили. Что еще более важно, мы всего лишь несколько коротких файлов от автоматического тестирования полной интегрированной сборки. Создать index.js файл с помощью испытательных сценариев. Укажите свои вызовы API и операции базы данных на именах, которые вы предоставили своим услугам в файле Docker-Compose и возвращайте результаты в контейнере. Наконец, создайте сценарий оболочки для управления контейнерами Docker и вывода результатов теста. Теперь вы можете автоматически запустить тесты в других трубопроводах CI/CD, контролировать их и добавить больше услуг или тестов по мере развития бизнес -логики.

Быстро Развернуть рабочие процессы, управляемые событиями

Как вы можете видеть, ваши рабочие процессы более эффективны, когда вы создаете достаточно накладных расходов, чтобы уменьшить поведение, вызванное событием. Мы видели, как динамически оркестровая Docker сборка от Jira может начать расширяемые программы тестирования в Дженкинсе. Хороший принцип оптимизации, который сейчас рассмотрим, — это итерация. Некоторые из этих интеграций могут работать или колебаться для ваших потребностей. Возможность поменять и переключить ваши услуги без отключения трубопроводов, заставляет ваши рабочие процессы DevOps течь.

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

Оригинал: «https://dev.to/relay/devops-automation-examples-in-practice-4ocf»