Chef по обе
стороны Bamboo
Сергей Валиев
Артем Семенов
О Нас
Артем Семенов
Manager, DevOps Tooling
@tema_typuct
Сергей Валиев
Sr. Enginer, DevOps Toolin
@va1iev
Align Technology
Международная медицинская компания
Деплоим из Bamboo
Наше решение
Деплоим из 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:.*?DeploymentsFailed.*?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: 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!
• Быстро добавляем новую функциональность
– Так как модульная структура
Что получилось
1. Собираем
2. Синхронизируем
3. Деплоим
4. Тестируем
5. …
6. Profit
• Реализовать поддержку динамических
сред/энвайроментов
– Привет, облака!
• Убрать всю Bamboo-функциональность в отдельный
модуль
Дальнейшее развитие
• «Более лучшее» Продвинутое управление секретами
– Key rotation
– JumpCloud?
• ChatOps?
Дальнейшее развитие 2
CM для Bamboo фермы
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
• автоматический обновять информацию на сервере
Bamboo
Chef_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
Q&A
• Спасибо за внимание!
• asemenov@aligntech.com
• svaliev@aligntech.com

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

  • 1.
    Chef по обе стороныBamboo Сергей Валиев Артем Семенов
  • 2.
    О Нас Артем Семенов Manager,DevOps Tooling @tema_typuct Сергей Валиев Sr. Enginer, DevOps Toolin @va1iev
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
    Деплоим из Bamboo •Что для этого нужно? – Запускать chef-client на нужных нодах – Получать результат выполнения chef-client – Параметризовать запуск – Синхронизоваться с другими деплойментами и тестами – Запуск тестовых планов – Маркировать билд-планы и артефакты по результатам деплоймента
  • 8.
    Начало – call_chef_client.py •subprocess.Popen, если вы понимаете о чем я • login_win, password_win в коде • knife ssh, потом knife winrm • print '<<<<<Knife stderr below>>>>>' • Все работает!
  • 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.
    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.
    Next step • Сталиделать CI для cookbooks • Cхожие задачи с call_chef_client.py • Нужно было название получше • Решили перейти на фреймворк для интеграции в CI:
  • 12.
    Chef-CI-helpers: Functionality • DeployApp – Удаленный синхронный платформонезависимый вызов chef-client • Поддержка разных workflow – Передача версий через CLI или Databags – Manual vs On-schedule chef runs • Windows remote support – WinRM – PsExec / RemCom • Управление секретами – Поддержка ключей – Chef-Vault • Upload артефактов на chef-server – На разные сервера
  • 13.
    Chef-CI-helpers: Functionality #2 •Тестирование chef-кода – Chef-spec – Foodcritic – Валидация JSON • Bamboo CI management – Запуск билд планов / конфигураций (параметризованный) – Синхронизация при доступе к разделяемым ресурсам – Маркировка билд-планов и артефактов
  • 14.
    Особенности решения • Всев одном месте – нет дублирования кода • Релиз процесс – Gem – Тестирование (в том числе unit) • Прозрачное версионирование – Фрейморк версионируется вместе с инфраструктурой и приложениями • Простое переиспользование сторонних компонентов – Ruby Gems FTW! • Быстро добавляем новую функциональность – Так как модульная структура
  • 15.
    Что получилось 1. Собираем 2.Синхронизируем 3. Деплоим 4. Тестируем 5. … 6. Profit
  • 16.
    • Реализовать поддержкудинамических сред/энвайроментов – Привет, облака! • Убрать всю Bamboo-функциональность в отдельный модуль Дальнейшее развитие
  • 17.
    • «Более лучшее»Продвинутое управление секретами – Key rotation – JumpCloud? • ChatOps? Дальнейшее развитие 2
  • 18.
    CM для Bambooфермы
  • 19.
    CM для Bamboo •В портфолио компании софт, с основанный на разных стеках технологий: Ruby, .NET, C++, Python, Java, R – Даже R, Карл! • Все собирается на CI ферме • По мере организации CI процесса росло количество агентов и конфигураций – (80+ агентов, 130+ конфигураций)
  • 20.
    CM для Bamboo#2 • Отнимающий много времени процесс настройки нового агента – Настройка/конфигурация нового билд-агента – Установка необходимого софта – Регистрация capability в bamboo
  • 21.
    • Нужно – упроститьвыкатку нового софта. – автоматически регистрировать софт, который уже есть – собирать custom capability автоматически (location, os, cpu2+, cpu4+) – автоматический обновять информацию на сервере Bamboo • Универсальный агент? Не, не слышал. #тыжпрограммист
  • 22.
    • упростить выкаткунового софта. Chef • собирать custom capability автоматически (location, os, cpu2+, cpu4+) Ohai-plugin • автоматически регистрировать legacy-софт Chef recipe • автоматический обновять информацию на сервере Bamboo Chef_handler report #тыжпрограммист 2 Use the Chef, Luke
  • 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.
    Дальнейшее развитие • Созданиеи конфигурация Windows build-агентов c нуля • Ohai-плагин для сбора вспомогательных данных • Избавление от костылей • Миграция конфигурирования всех агентов с помощью align-agency • Going public?
  • 25.
  • 26.
    Q&A • Спасибо завнимание! • asemenov@aligntech.com • svaliev@aligntech.com

Editor's Notes

  • #7 Артем
  • #8 Артем
  • #9 Серега
  • #10 Серега
  • #11 Тут все прекрасно. Можно просто по названиям наших скриптов пройтись : )
  • #12 Артем
  • #13 Артем
  • #14 Артем
  • #15 Артем
  • #16 Артем
  • #17 Артем + Еще chatops
  • #18 Артем + Еще chatops
  • #20 Артем
  • #21 Артем
  • #22 Серега
  • #23 Серега
  • #24 Серега
  • #25 Серега