Артём Ерошенко «Рецепт приготовления облачных...

  • View
    15.234

  • Download
    9

  • Category

    Software

Preview:

Citation preview

Рецепт приготовления облачных тестингов

Артем Ерошенко

Немного истории

Железный тестинг

512 мб

2 ядра

нет sudo

автотестов росло

Количество

Увеличить мощность

2024 мб

4 ядра

Растет количество

компонент

В комнате стало тесно

Растет количество

релизов

Проблемы железа

Облачные платформы

Когда это нужно?

Когда это нужно?

очереди на тестирование

Когда это нужно?

очереди на тестирование

зависимость тестингов

Рецепт приготовления

Ингредиенты

dockeransiblejenkins

Что такое docker?

Что такое docker?

инструмент, предоставляющий удобный интерфейс для

работы с LXC (LinuX Container)

Так что же это такое?

инструмент виртуализации на основе ядра Linux

Так что же это такое?

Какую задачу решает?

Настройка окружения

docker run -it ubuntu /bin/bash

Запускаем контейнер

apt-get install mysql-server-5.5

Устанавливаем mysql

Усиленно работаем :)

Стоп контейнер

docker stop <container-name>

Удаляем контейнер

docker rm <container-name>

Когда это полезно?

Разные версии

языка разработки

Разные версии

внешних сервисов

Разные версии

окружения

Основные сущности

Docker образ

hub.docker.com

myservice образ

Docker контейнер

docker run -it <image> /bin/bash

Docker контейнер

myservicebackendcontainer

Docker контейнер

myservicebackendcontainer

mysqlcontainer

Docker контейнер

myservicebackendcontainer

mysqlcontainer

myservicefrontendcontainer

Docker контейнер

Основные принципы

Основные принципы

Изолированность

Основные принципы

Изолированность1 контейнер - 1 процесс

Ингредиенты

dockeransiblejenkins

Зачем нужен?

Настроить окружение

mysql

nginx

service

Устанавливаем пакеты

ssh username@server.com

Устанавливаем пакеты

ssh username@server.com

apt-get install mysql-server

Устанавливаем пакеты

ssh username@server.com

apt-get install mysql-server

apt-get install nginx

Устанавливаем пакеты

ssh username@server.com

apt-get install mysql-server

apt-get install nginx

apt-get install server

Конфигурируем

vi /etc/mysql/my.conf

Конфигурируем

vi /etc/mysql/my.conf

vi /etc/nginx/nginx.conf

Конфигурируем

vi /etc/mysql/my.conf

vi /etc/nginx/nginx.conf

vi /etc/server/server.conf

Результат

mysql

nginx

service

Настрой еще одну?

Пишем скрипт

install.sh

install.bat

install.sh

Пишем скрипт

install.bat

install.sh

install2.sh

Пишем скрипт

Скрипты это неудобно

Система управленияконфигурациями

конфигурация вместо кода

Ansible

описывает желаемое состояние системы

Ansible

Ansible

Преимущества

легко читается

не зависит от платформы

легче переиспользовать

Ansible playbook

Ansible playbook

это набор yaml файлов

Ингредиенты

dockeransiblejenkins

Ингредиенты

dockeransiblejenkins

Рецепт приготовления

backend

Несколько

компонент

backend mysql

Несколько

компонент

backend mysqlfrontend

Несколько

компонент

Где размещаем?

Кто запускает?

Как собираем?

Где размещаем?

Кто запускает?

Как собираем?

Жизненный цикл

одной компоненты

Жизненный цикл

build

clean

start

stop

одной компоненты

Жизненный цикл

одной компоненты

build

clean

start

stop

Build

docker build -t «component»

Жизненный цикл

одной компоненты

build

clean

start

stop

Start

docker run -it «component» bash

Жизненный цикл

одной компоненты

build

clean

start

stop

Stop

docker stop «component»

Жизненный цикл

одной компоненты

build

clean

start

stop

Clean

docker rm «component»

Как организовать

совместную работу?

build

clean

start

stop

Жизненный цикл

всех компонент

Build.yml

генерация конфигов

Build.yml

генерация конфигов

сборка docker образов

Start.yml

создание баз данных

Start.yml

создание баз данных

накатка тестовых данных

Start.yml

запуск docker контейнеров

накатка тестовых данных

создание баз данных

Stop.yml

остановка docker контейнеров

Stop.yml

остановка docker контейнеров

удаление баз данных

Clean.yml

удаление docker образов

работает локально

что получили?

работает локально

чистое окружение

что получили?

работает локально

изолированность

чистое окружение

что получили?

Где размещаем?

Кто запускает?

Ansible + Docker

Где размещаем?

Кто запускает?

Ansible + Docker

Железные машинки

Облачные платформы

build

clean

start

stop

Ansible playbook

build

clean

start

stop

Ansible playbook

init

Init.yml

установка docker

установка библиотек

Получили тестинг по требованию

Облачный тестинг

создаем виртуалку

выполняем ansible

Кто запускает?

Ansible + Docker

Digitalocean

Кто запускает?

Ansible + Docker

Digitalocean

Сконфигурировать

джобы

Запуск автотестов

на входверсии

компонент

создает виртуалку

создает виртуалкувыкачивает playbook

создает виртуалкувыкачивает playbookустанавливает docker

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестинг

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотесты

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотестыстопает тестинг

создает виртуалкувыкачивает playbookустанавливает dockerподнимает тестингзапускает автотестыстопает тестинг

удаляет виртуалку

Аренда тестинга

на входверсии

компоненти время

Jenkins

Ansible + Docker

Digitalocean

Рецепт коронногоблюда

Вопросы?

Aртем Ерошенкоeroshenkoam@me.com

Recommended