Upload
ontico
View
253
Download
3
Embed Size (px)
Citation preview
О НасАртем СеменовManager, DevOps Tooling @tema_typuct
Сергей ВалиевSr. Enginer, DevOps Toolin @va1iev
• Времена Chef 10 & Bamboo 4.x• Решили запускать деплойменты из CI (Bamboo)
• Что для этого нужно?– Запускать chef-client на нужных нодах– Получать результат выполнения chef-client– Параметризовать запуск– Синхронизоваться с другими деплойментами и тестами– Запуск тестовых планов– Маркировать билд-планы и артефакты по результатам
деплоймента
Деплоим из Bamboo
Деплоим из Bamboo• Что для этого нужно?
– Запускать chef-client на нужных нодах– Получать результат выполнения chef-client– Параметризовать запуск– Синхронизоваться с другими деплойментами
и тестами– Запуск тестовых планов– Маркировать билд-планы и артефакты по
результатам деплоймента
Начало – call_chef_client.py• subprocess.Popen, если вы понимаете о чем я• login_win, password_win в коде• knife ssh, потом knife winrm• print '<<<<<Knife stderr below>>>>>'
• Все работает!
Аппетит приходит во время еды
• Определение проблем на Windows: knife winrm --returns 0
• Анализ вывода knife при помощи регулярных выражений: re.compile(r"STDERR:.*?Deployment\sFailed.*?WLSTException.*?$", re.I | re.M | re.S)
• Управление credentials для разных сред: if args.env.lower() == 's3'
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
Next step• Стали делать CI для cookbooks• Cхожие задачи с call_chef_client.py• Нужно было название получше
• Решили перейти на фреймворк для интеграции в CI:
Chef-CI-helpers
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– На разные сервера
Chef-CI-helpers: Functionality #2
• Тестирование chef-кода– Chef-spec– Foodcritic– Валидация JSON
• Bamboo CI management– Запуск билд планов / конфигураций (параметризованный)– Синхронизация при доступе к разделяемым ресурсам– Маркировка билд-планов и артефактов
Особенности решения
• Все в одном месте – нет дублирования кода• Релиз процесс
– Gem– Тестирование (в том числе unit)
• Прозрачное версионирование – Фрейморк версионируется вместе с инфраструктурой и приложениями
• Простое переиспользование сторонних компонентов– Ruby Gems FTW!
• Быстро добавляем новую функциональность– Так как модульная структура
• Реализовать поддержку динамических сред/энвайроментов– Привет, облака!
• Убрать всю Bamboo-функциональность в отдельный модуль
Дальнейшее развитие
• «Более лучшее» Продвинутое управление секретами– Key rotation
– JumpCloud?
• ChatOps?
Дальнейшее развитие 2
CM для Bamboo• В портфолио компании софт, с основанный на
разных стеках технологий: Ruby, .NET, C++, Python, Java, R– Даже R, Карл!
• Все собирается на CI ферме• По мере организации CI процесса росло
количество агентов и конфигураций – (80+ агентов, 130+ конфигураций)
CM для Bamboo #2• Отнимающий много времени процесс настройки
нового агента– Настройка/конфигурация нового билд-агента– Установка необходимого софта– Регистрация capability в bamboo
• Нужно– упростить выкатку нового софта. – автоматически регистрировать софт, который уже есть– собирать custom capability автоматически (location, os,
cpu2+, cpu4+)– автоматический обновять информацию на сервере Bamboo
• Универсальный агент? Не, не слышал.
#тыжпрограммист
• упростить выкатку нового софта. Chef
• собирать custom capability автоматически (location, os, cpu2+, cpu4+)
Ohai-plugin• автоматически регистрировать legacy-софт
Chef recipe• автоматический обновять информацию на сервере
BambooChef_handler report
#тыжпрограммист 2
Use the Chef, Luke
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
Дальнейшее развитие
• Создание и конфигурация Windows build-агентов c нуля
• Ohai-плагин для сбора вспомогательных данных• Избавление от костылей• Миграция конфигурирования всех агентов с
помощью align-agency• Going public?
Q&A• Спасибо за внимание!