Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Chef по обе стороны Bamboo / Артем Семенов (Align Technology)

386 views

Published on

Строим CI/CD в Bamboo, используя Chef
-----
Мы покажем эволюционный путь нашего CI/CD-процесса от маленького скрипта на python, до фреймворка на ruby:
+ рассмотрим типичные трудности, возникающие при построении CI/CD процесса с помощью CI-движка и Configuration management tools.
+ покажем реализованные решения на примере связки Chef + Bamboo:
o унификация деплоймент-процесса компании;
o деплойменты на гетерогенные environment'ы, включая Linux/Windows системы;
o инструментарий для построения CD-процесса в Bamboo.

Управление билд-фермой Bamboo с помощью Chef
-----
Для поддержки SDLC-процесса компании мы эксплуатируем большую географически распределенную гетерогенную билд-ферму агентов (80+ агентов на базе Windows, Linux и MacOS). С ростом количества билд-конфигураций и агентов мы столкнулись с задачей управления конфигурациями билд-агентов, с которой успешно справляемся с помощью решения на базе Chef.
Примеры решаемых задач:
+ настройка Bamboo-агентов с нуля;
+ сapability management при помощи ohai;
+ повышение эффективности использования билд-фермы.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Chef по обе стороны Bamboo / Артем Семенов (Align Technology)

  1. 1. Chef по обе стороны Bamboo Сергей Валиев Артем Семенов
  2. 2. О Нас Артем Семенов Manager, DevOps Tooling @tema_typuct Сергей Валиев Sr. Enginer, DevOps Toolin @va1iev
  3. 3. Align Technology Международная медицинская компания
  4. 4. Деплоим из Bamboo
  5. 5. Наше решение
  6. 6. Деплоим из Bamboo
  7. 7. Деплоим из Bamboo • Что для этого нужно? – Запускать chef-client на нужных нодах – Получать результат выполнения chef-client – Параметризовать запуск – Синхронизоваться с другими деплойментами и тестами – Запуск тестовых планов – Маркировать билд-планы и артефакты по результатам деплоймента
  8. 8. Начало – call_chef_client.py • subprocess.Popen, если вы понимаете о чем я • login_win, password_win в коде • knife ssh, потом knife winrm • print '<<<<<Knife stderr below>>>>>' • Все работает!
  9. 9. Аппетит приходит во время еды • Определение проблем на Windows: knife winrm --returns 0 • Анализ вывода knife при помощи регулярных выражений: re.compile(r"STDERR:.*?DeploymentsFailed.*?WLSTException.*? $", re.I | re.M | re.S) • Управление credentials для разных сред: if args.env.lower() == 's3'
  10. 10. Advance usage • Обросли функциональностью для CD (like a boss!) – validate_ids_deploy_params.py – wait_for_previous_builds.py – check_build_green.py – run_test_plan.py – set_label.py – set_parent_label.py – check_build_label.py
  11. 11. Next step • Стали делать CI для cookbooks • Cхожие задачи с call_chef_client.py • Нужно было название получше • Решили перейти на фреймворк для интеграции в CI:
  12. 12. Chef-CI-helpers: Functionality • Deploy App – Удаленный синхронный платформонезависимый вызов chef-client • Поддержка разных workflow – Передача версий через CLI или Databags – Manual vs On-schedule chef runs • Windows remote support – WinRM – PsExec / RemCom • Управление секретами – Поддержка ключей – Chef-Vault • Upload артефактов на chef-server – На разные сервера
  13. 13. Chef-CI-helpers: Functionality #2 • Тестирование chef-кода – Chef-spec – Foodcritic – Валидация JSON • Bamboo CI management – Запуск билд планов / конфигураций (параметризованный) – Синхронизация при доступе к разделяемым ресурсам – Маркировка билд-планов и артефактов
  14. 14. Особенности решения • Все в одном месте – нет дублирования кода • Релиз процесс – Gem – Тестирование (в том числе unit) • Прозрачное версионирование – Фрейморк версионируется вместе с инфраструктурой и приложениями • Простое переиспользование сторонних компонентов – Ruby Gems FTW! • Быстро добавляем новую функциональность – Так как модульная структура
  15. 15. Что получилось 1. Собираем 2. Синхронизируем 3. Деплоим 4. Тестируем 5. … 6. Profit
  16. 16. • Реализовать поддержку динамических сред/энвайроментов – Привет, облака! • Убрать всю Bamboo-функциональность в отдельный модуль Дальнейшее развитие
  17. 17. • «Более лучшее» Продвинутое управление секретами – Key rotation – JumpCloud? • ChatOps? Дальнейшее развитие 2
  18. 18. CM для Bamboo фермы
  19. 19. CM для Bamboo • В портфолио компании софт, с основанный на разных стеках технологий: Ruby, .NET, C++, Python, Java, R – Даже R, Карл! • Все собирается на CI ферме • По мере организации CI процесса росло количество агентов и конфигураций – (80+ агентов, 130+ конфигураций)
  20. 20. CM для Bamboo #2 • Отнимающий много времени процесс настройки нового агента – Настройка/конфигурация нового билд-агента – Установка необходимого софта – Регистрация capability в bamboo
  21. 21. • Нужно – упростить выкатку нового софта. – автоматически регистрировать софт, который уже есть – собирать custom capability автоматически (location, os, cpu2+, cpu4+) – автоматический обновять информацию на сервере Bamboo • Универсальный агент? Не, не слышал. #тыжпрограммист
  22. 22. • упростить выкатку нового софта. Chef • собирать custom capability автоматически (location, os, cpu2+, cpu4+) Ohai-plugin • автоматически регистрировать legacy-софт Chef recipe • автоматический обновять информацию на сервере Bamboo Chef_handler report #тыжпрограммист 2 Use the Chef, Luke
  23. 23. Proof of Concept • cookbook: – собирает список установленного софта (attributes, recipe ) – capability-format support (library) – gentle build agent service management (chef_handler) – report capabilities to Bamboo server (chef_handler) – Linux / Windows support – Support of legacy agents Align Agency
  24. 24. Дальнейшее развитие • Создание и конфигурация Windows build-агентов c нуля • Ohai-плагин для сбора вспомогательных данных • Избавление от костылей • Миграция конфигурирования всех агентов с помощью align-agency • Going public?
  25. 25. Q&A
  26. 26. Q&A • Спасибо за внимание! • asemenov@aligntech.com • svaliev@aligntech.com

×