#devops #otus #terraform #infrastructureascode #iac Infrastructure as Code
Идея Infrastructure as Code заключается в таком же отношении к разработке инфраструктуры, как к разработке программного продукта. Родилась эта практика в ответ на проблемы надежности и повторяемости ручного управления конфигурацией:
- Серверы, настроенные вручную, отличаются друг от друга как снежинки, падающие с неба. И как бы не старался инженер, при настройке очередного сервера, нет-нет, да пропустит точку с запятой. Хорошо, если приложение просто не запустится, а если оно запуститься, но будет вести себя некорректно? Сколько неправильных биржевых ставок оно успеет сделать?
Решение: Иметь один источник изменений. В IaC это описание конфигурации в виде кода.
- Ручная настройка одного сервера - это время инженера. При увеличении количества серверов линейно растут трудозатраты инженера.
Решение: Автоматизировать все действия производимые с инфраструктурой и хранить их вместе с конфигурацией.
- Часто ручные изменения нигде не документируются. Зайдя на окружение можно с удивлением обнаружить старую версию библиотеки от которой зависит приложение, новую версию СУБД или измененную конфигурацию приложения. И никто уже на расскажет кто и зачем это все менял.
Решение: Хранить конфигурацию в системе контроля версий. При изменении конфигурации делать ссылки на тикеты и документацию.
- Как протестировать изменение инфраструктуры? Создать среду максимально похожую на целевую, внести изменение, проверить работоспособность, перенести изменение, не забыть написать о сделанных изменениях в документацию. В контексте описанных выше проблем сразу видны места в которых процесс может дать сбой.
Решение: Создать CI-процесс запускающийся при внесении изменений в репозиторий с кодом инфраструктуры состоящий из уже автоматизированного подъема окружения и прогона автоматических тестов.
Узнать подробнее об IaC и попробовать подход на практике вы можете на курсе “DevOps практики и инструменты” http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deepdevops&utm_term=31.07
Идея Infrastructure as Code заключается в таком же отношении к разработке инфраструктуры, как к разработке программного продукта. Родилась эта практика в ответ на проблемы надежности и повторяемости ручного управления конфигурацией:
- Серверы, настроенные вручную, отличаются друг от друга как снежинки, падающие с неба. И как бы не старался инженер, при настройке очередного сервера, нет-нет, да пропустит точку с запятой. Хорошо, если приложение просто не запустится, а если оно запуститься, но будет вести себя некорректно? Сколько неправильных биржевых ставок оно успеет сделать?
Решение: Иметь один источник изменений. В IaC это описание конфигурации в виде кода.
- Ручная настройка одного сервера - это время инженера. При увеличении количества серверов линейно растут трудозатраты инженера.
Решение: Автоматизировать все действия производимые с инфраструктурой и хранить их вместе с конфигурацией.
- Часто ручные изменения нигде не документируются. Зайдя на окружение можно с удивлением обнаружить старую версию библиотеки от которой зависит приложение, новую версию СУБД или измененную конфигурацию приложения. И никто уже на расскажет кто и зачем это все менял.
Решение: Хранить конфигурацию в системе контроля версий. При изменении конфигурации делать ссылки на тикеты и документацию.
- Как протестировать изменение инфраструктуры? Создать среду максимально похожую на целевую, внести изменение, проверить работоспособность, перенести изменение, не забыть написать о сделанных изменениях в документацию. В контексте описанных выше проблем сразу видны места в которых процесс может дать сбой.
Решение: Создать CI-процесс запускающийся при внесении изменений в репозиторий с кодом инфраструктуры состоящий из уже автоматизированного подъема окружения и прогона автоматических тестов.
Узнать подробнее об IaC и попробовать подход на практике вы можете на курсе “DevOps практики и инструменты” http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deepdevops&utm_term=31.07
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков
#devops #otus #terraform #infrastructureascode #iac
Мониторим изменения с Terraform
Применение практики Infrastructure as Code становится проще вместе с использованием инструментов класса Terraform, которые позволяют декларативно описать инфраструктуру в виде кода и тиражировать окружения.
Непосредственно сам Terraform обладает функцией планирования изменений, которая примечательна еще и тем, что с ее помощью можно следить за вручную сделанными изменениями в инфраструктуре или изменениями, сделанными злоумышленником. Для этого достаточно периодически выполнять команду terraform plan -detailed-exitcode, рекомендуется создать регулярно запускаемую автоматически задачу в CI-системе. Если код выхода команды:
0, то команда завершилась успешно, изменений нет;
1 - команда завершилась с ошибкой;
2 - команда завершилась успешно, есть изменения.
А что делать если у вас уже есть вручную настроенная инфраструктура, но вы не используете terraform? Начните с описания наиболее важных компонент и используйте terraform import, он сохранит текущее состояние описанной инфраструктуры относительно которого уже можно будет мониторить изменения.
Научиться использовать Terraform и практике Infrastructure as Code вам помогут эксперты из Экспресс 42 на курсе” DevOps практики и инструменты” http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deppost&utm_term=04.08
Проходите вступительное тестирование и присоединяйтесь!.
Мониторим изменения с Terraform
Применение практики Infrastructure as Code становится проще вместе с использованием инструментов класса Terraform, которые позволяют декларативно описать инфраструктуру в виде кода и тиражировать окружения.
Непосредственно сам Terraform обладает функцией планирования изменений, которая примечательна еще и тем, что с ее помощью можно следить за вручную сделанными изменениями в инфраструктуре или изменениями, сделанными злоумышленником. Для этого достаточно периодически выполнять команду terraform plan -detailed-exitcode, рекомендуется создать регулярно запускаемую автоматически задачу в CI-системе. Если код выхода команды:
0, то команда завершилась успешно, изменений нет;
1 - команда завершилась с ошибкой;
2 - команда завершилась успешно, есть изменения.
А что делать если у вас уже есть вручную настроенная инфраструктура, но вы не используете terraform? Начните с описания наиболее важных компонент и используйте terraform import, он сохранит текущее состояние описанной инфраструктуры относительно которого уже можно будет мониторить изменения.
Научиться использовать Terraform и практике Infrastructure as Code вам помогут эксперты из Экспресс 42 на курсе” DevOps практики и инструменты” http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deppost&utm_term=04.08
Проходите вступительное тестирование и присоединяйтесь!.
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков
#devops #otus #terraform #infrastructureascode #iac
Разработка приложений с использованием Docker
При разработке цифрового продукта часто одной из самых больных тем является выкатка его обновлений и новых версий. Связано это обычно с тем, что среда, где пишется код, отличается от той, где происходит его тестирование, которая в свою очередь может отличаться от боевой среды, где этот код должен работать и приносить прибыль компании. Примерами таких отличий могут быть разные версии зависимых библиотек, установленных программ и самого языка программирования.
Технология контейнеризации предлагает решение проблемы “ничего не знаю, работает на моей машине”. При помощи контейнеров мы можем упаковать сам код и все его зависимости в единый пакет, который затем будет запускаться и работать одинаково на всех средах. Достигается это за счет изоляции работы контейнеров в операционной системе на различных уровнях. В частности, изоляция на уровне файловой системы позволяет нам избежать постоянных конфликтов версий.
Docker является ведущей платформой по созданию и управлению контейнерами. Начать пользоваться контейнерами очень просто. Docker имеет свое публичное хранилище имиджей DockerHub, которые используются для запуска контейнеров. Там можно найти нужный вам имидж и воспользоваться командой docker run <image-name> для запуска контейнера. Естественно, что перед запуском команды, нужно установить сам Docker.
Чтобы запустить собственное приложение в Docker контейнере, используйте Dockerfile. Например, вот такой простой Dockefile может содержать описание приложения, его зависимостей и требуемую команду для запуска.
FROM python:3.6.0-alpine
RUN pip install flask pymongo
ADD python/ src/
WORKDIR /src
EXPOSE 5000
CMD ["python3", "app.py"]
Если хотите узнать больше о работе с Docker контейнерами, то приходите к нам на курс “DevOps практики и инструменты”. http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deeppost&utm_term=09.08
Там мы детально изучим процессы разработки с использованием Docker и Docker Compose, оркестрацию с Kubernetes и Docker Swarm и еще многое другое!
Разработка приложений с использованием Docker
При разработке цифрового продукта часто одной из самых больных тем является выкатка его обновлений и новых версий. Связано это обычно с тем, что среда, где пишется код, отличается от той, где происходит его тестирование, которая в свою очередь может отличаться от боевой среды, где этот код должен работать и приносить прибыль компании. Примерами таких отличий могут быть разные версии зависимых библиотек, установленных программ и самого языка программирования.
Технология контейнеризации предлагает решение проблемы “ничего не знаю, работает на моей машине”. При помощи контейнеров мы можем упаковать сам код и все его зависимости в единый пакет, который затем будет запускаться и работать одинаково на всех средах. Достигается это за счет изоляции работы контейнеров в операционной системе на различных уровнях. В частности, изоляция на уровне файловой системы позволяет нам избежать постоянных конфликтов версий.
Docker является ведущей платформой по созданию и управлению контейнерами. Начать пользоваться контейнерами очень просто. Docker имеет свое публичное хранилище имиджей DockerHub, которые используются для запуска контейнеров. Там можно найти нужный вам имидж и воспользоваться командой docker run <image-name> для запуска контейнера. Естественно, что перед запуском команды, нужно установить сам Docker.
Чтобы запустить собственное приложение в Docker контейнере, используйте Dockerfile. Например, вот такой простой Dockefile может содержать описание приложения, его зависимостей и требуемую команду для запуска.
FROM python:3.6.0-alpine
RUN pip install flask pymongo
ADD python/ src/
WORKDIR /src
EXPOSE 5000
CMD ["python3", "app.py"]
Если хотите узнать больше о работе с Docker контейнерами, то приходите к нам на курс “DevOps практики и инструменты”. http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deeppost&utm_term=09.08
Там мы детально изучим процессы разработки с использованием Docker и Docker Compose, оркестрацию с Kubernetes и Docker Swarm и еще многое другое!
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков