Подайте запрос на сохранение внесенных изменений.
Убедитесь, что соблюдаются рекомендации по написанию кода
Выполнение автоматических тестов
Тесты выполняются на CI-сервере.
Модульные тесты.
Интеграционные тесты.
Сквозные тесты.
Статический анализ
Тесты выполняются на CI-сервере.
Модульные тесты.
Интеграционные тесты.
Сквозные тесты.
Статический анализ.
terraform plan
Слияние и выпуск новой версии
git tag
Создайте неизменяемый артефакт с поддержкой версионирования
git tag
Используйте репозиторий в качестве неизменяемого артефакта с поддержкой версионирования
Развертывание
Развертывайте с помощью Terraform, средства оркестрации (такого как Kubernetes, Mesos), скриптов.
Множество стратегий развертывания: скользящие, «сине-зеленые», канареечные обновления.
Выполняйте развертывание на CI-сервере.
Выделите CI-серверу ограниченные права доступа.
Продвигайте неизменяемые артефакты с поддержкой версионирования по разным средам
Развертывайте с помощью Terraform, Atlantis, Terraform Enterprise, Terragrunt, скриптов.
Ограниченный набор стратегий развертывания. Не забудьте об обработке ошибок: повторные попытки, errored.tfstate!
Выполняйте развертывание на CI-сервере.
Выделите CI-серверу администраторские права доступа.
Продвигайте неизменяемые артефакты с поддержкой версионирования по разным средам
Следуя этому процессу, вы сможете выполнить и протестировать свой прикладной и инфраструктурный код, провести его разбор, упаковать его в неизменяемые артефакты с поддержкой версионирования и затем продвинуть эти артефакты от одного окружения к другому, как показано на рис. 8.6.
Рис. 8.6. Продвижение неизменяемого версионируемого артефакта с кодом Terraform от одной среды к другой
Резюме
Если вы дочитали до этого места, у вас есть все необходимые знания для использования Terraform в реальных условиях, включая написание кода, управление состоянием, создание универсальных модулей, эмуляцию циклов и условных выражений, выполнение развертывания, создание кода промышленного уровня, тестирование и работу с Terraform в команде. Мы рассмотрели примеры доставки и администрирования серверов, кластеров, балансировщиков нагрузки, баз данных, планируемых действий, оповещений CloudWatch, пользователей IAM, универсальных модулей, развертываний с нулевым временем простоя, автоматических тестов и т. д. Уф! Главное, когда закончите, не забудьте сделать terraformdestroy для каждого модуля.
В случае корректного применения Terraform ваша команда сможет быстрее развертывать свой код и реагировать на изменения. Надеюсь, процесс развертывания станет для вас рутинным и скучным, что в мире системного администрирования считается большим плюсом. Если вы делаете свою работу как следует, а не тратите все время на ручное управление ресурсами, ваша команда сможет уделять все больше внимания улучшению инфраструктуры, что позволит вам работать еще быстрее.
На этом книга подходит к концу, но ваше путешествие в мир Terraform только начинается. Чтобы узнать больше о Terraform, IaC и DevOps, переходите дальше — к приложению, в котором содержится список рекомендуемой литературы. Если вы хотите оставить отзыв или задать вопрос, обязательно свяжитесь со мной по адресу jim@ybrikman.com. Спасибо за прочтение!
58 The Standish Group, CHAOS Manifesto 2013: Think Big, Act Small. 2013. www.versionone.com/assets/img/files/CHAOSManifesto2013.pdf.
59 Milstein D. How To Survive a Ground-Up Rewrite Without Losing Your Sanity // OnStartups.com, 8 апреля 2013 года. onstartups.com/tabid/3339/bid/97052/How-To-Survive-a-Ground-Up-Rewrite-Without-LosingYour-Sanity.aspx.
60 GruntworkInfrastructureasCodeLibrary (gruntwork.io/infrastructure-as-code-library/) — это коллекция более чем из 300 000 строк универсального инфраструктурного кода промышленного уровня с коммерческой поддержкой, который был проверен в реальных условиях сотнями компаний.
61 Написание README в первую очередь называется Readme-ориентированной разработкой (bit.ly/1p8QBor).
62 Идея продвижения кода Terraform по разным средам принадлежит Кифу Моррису: Using Pipelines to Manage Environments with Infrastructure as Code (bit.ly/2lJmus8).
Приложение. Дополнительные ресурсы
Ниже перечислены одни из лучших ресурсов о DevOps и IaC, которые мне удалось найти, включая книги, статьи, информационные рассылки и доклады.
Книги
•Morris K. Infrastructure as Code: Managing Servers in the Cloud. — O’Reilly, 2016.
• Бейер Б., Джоунс К., Петофф Д., Мёрфи Н.Р. Site Reliability Engineering. Надежность и безотказность как в Google. — СПб.: Питер, 2019.
• Хамбл Д., Уиллис Д., Дебуа П., Ким Д. Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях. — М.: Манн, Иванов и Фербер, 2018.
• Клеппман М. Высоконагруженные приложения. Программирование, масштабирование, поддержка. — СПб.: Питер, 2019.
• Humble J., Farley D. Continuous Delivery: Reliable Software Releases through Build, Test and Deployment Automation. — Addison-Wesley Professional, 2010.
• Нейгард М. Release it! Проектирование и дизайн ПО для тех, кому не все равно. — СПб.: Питер, 2016.
• Лукша М. Kubernetes в действии Action. — М.: ДМК-Пресс, 2019.
• Gruver G., Mouser T. Leading the Transformation: Applying Agile and DevOps Principles at Scale. — IT Revolution Press, 2015.
• Behr K., Kim G., SpaffordG. Visible Ops Handbook. — Information Technology Process Institute, 2004.
• Дэвис Д., Дэниелс К. Философия DevOps. Искусство управления IT. — СПб.: Питер, 2017.
• Humble J., Molesky J., O’Reilly B. Lean Enterprise. — O’Reilly, 2014.
• Brikman Y. Hello, Startup: A Programmer’s Guide to Building Products, Technologies and Teams. — O’Reilly, 2015.
Блоги
• High Scalability (highscalability.com).
• Code as Craft (codeascraft.com).
• dev2ops (dev2ops.org).
• Блог AWS (aws.amazon.com/blogs/aws).
• Kitchen Soap (www.kitchensoap.com).
• Блог Пола Хамманта (paulhammant.com).
• Блог Мартина Фаулера (martinfowler.com/bliki).
• Блог Gruntwork (blog.gruntwork.io).
• Блог Евгения Брикмана (www.ybrikman.com/writing).
Лекции
• Евгений Брикман. Reusable, composable, battle-tested Terraform modules (bit.ly/32b28JD).
• Евгений Брикман. 5 Lessons Learned From Writing Over 300,000 Lines of Infrastructure Code (bit.ly/2ZCcEfi).
• Евгений Брикман. Infrastructure as code: running microservices on AWS using Docker, Terraform and ECS (bit.ly/30TYaVu).
• Евгений Брикман. Agility Requires Safety (bit.ly/2YJuqJb).
• Джез Хамбл. Adopting Continuous Delivery (youtu.be/ZLBhVEo1OG4).
• Майкл Рембетси и Патрик Макдоннел. Continuously Deploying Culture (vimeo.com/51310058).
• Джон Оллспой и Пол Хаммонд. 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr (youtu.be/LdOe18KhtT4).
• Рэйчел Потвин. Why Google Stores Billions of Lines of Code in a Single Repository (youtu.be/W71BTkUbdqE).
• Рич Хикки. The Language of the System (youtu.be/ROor6_NGIWU).
• Бен Кристенсен. Don’t Build a Distributed Monolith (youtu.be/-czp0Y4Z36Y).
• Глен Вандербург. Real Software Engineering (youtu.be/NP9AIUT9nos).
Информационные рассылки
• DevOps Weekly (www.devopsweekly.com).
• DevOpsLinks (devopslinks.com).
• Gruntwork Newsletter (www.gruntwork.io/newsletter).
• Terraform: Up & Running Newsletter (bit.ly/32dnRAW).
Онлайн-форумы
• Terraform Google Group (bit.ly/2L5mazu).
• DevOps subreddit (www.reddit.com/r/devops).
Об авторе
Евгений (Джим) Брикман обожает программировать, писать и путешествовать. Он соучредитель компании Gruntwork, которая предоставляет DevOps в качестве услуги, и автор еще одной книги, опубликованной издательством O’Reilly Media под названием Hello, Startup: A Programmer’s Guide to Building Products, Technologies and Teams. Ранее он работал программистом в LinkedIn, TripAdvisor, Cisco Systems и Thomson Financial. Свои степени бакалавра и магистра наук он получил в Корнеллском университете. Больше о нем можно узнать по адресу ybrikman.com.
Об обложке
На обложке этой книги изображен летучий дракон (Draco volans) — небольшая рептилия, получившая имя из-за способности планировать в воздухе за счет широких кожистых складок, натянутых между шестью «ложными» ребрами. Летучий дракон водится во многих странах Юго-Восточной Азии, включая Индонезию, Вьетнам, Таиланд, Филиппины и Сингапур.
Летучий дракон питается насекомыми и может достигать 20 сантиметров в длину. Он в основном обитает в лесистых регионах, планируя с дерева на дерево в поисках добычи и держась подальше от хищников. Самки спускаются с деревьев только для того, чтобы отложить яйца в скрытых норах в земле. Самцы ревностно охраняют свою территорию, преследуя соперников по деревьям.
Когда-то летучие драконы считались ядовитыми, но в реальности они не представляют опасности для человека и иногда выступают в роли домашних животных.
Многие животные на обложках издательства O’Reilly находятся под угрозой исчезновения; все они важны для нашей планеты. О том, как им помочь, можно узнать на сайте animals.oreilly.com.