Similar presentations:
Курс «DevOps. Системный инженер». Занятие 10. Подход Infrastructure as Code. Terraform
1.
Курс «DevOps. Системный инженер»Занятие 10.
Подход Infrastructure as
Code. Terraform
Преподаватель
Денис Сойка
www.belhard.academy
2.
Содержание1. Подход Infrastructure as Code (IaC). Цели, варианты реализации, минусы,
инструменты.
2. Terraform. Описание, основные функции, best practices.
3. Демо: разворачивание и настройка виртуальных машин (Virtualbox) с помощью
Terraform
01
3.
Подход IaC02
Цель подхода IaC - управления ИТ-инфраструктурой, при котором для управления
ресурсами облачной (и не только) инфраструктуры применяются рекомендации из
методологий и практик DevOps.
ПРИМЕР
4.
Подход IaCВарианты реализации подхода IaC:
Semi-automation – какая-то часть инфраструктуры создается и поддерживается с
помощью инструмента IaC, остальное – руками;
IaC – вся инфраструктура создается и поддерживается с помощью инструмента IaC,
код хранится в Git, запуск автоматизирован;
Shared IaC – так же как и при реализации IaC + разные департаменты имеют доступ
только к своей части (например, сетевые инженеры имеют доступ только к сетевой
части кода).
03
5.
Подход IaCМинусы подхода IaC:
Описание происходит на языке программирования;
Отсутствия адекватной логики;
Сложность внедрения на больших проектах.
04
6.
Подход IaCИнструменты IaC:
Terraform – инструмент HashiCorp, позволяет подготовить инфраструктуру к
разворачиванию в облаке/ЦОД с помощью HCL (yaml);
Pulumi – то же самое, что Terraform, только описание инфраструктуры на Node.js,
Python, Go, .NET Core;
AWS CloudFormation – инструмент Amazon для разворачивания инфраструктуры в
AWS Cloud (json/yaml);
Boto3 – библиотека для Python, позволяет разворачивать инфраструктуру в AWS
Cloud.
05
7.
Terraform06
Terraform - IaC инструмент компании HashiCorp, главная цель которого - уменьшение
времени
и
затрат
на
развертывание
инфраструктуры,
единое
описание
всей
инфраструктуры, понятное всем и контроль изменений в инфраструктуре. Описание
инфраструктуры происходит на языке HCL (HashiCorp Language) - domain-specific язык,
работает на провайдерах – это набор файлов, которые предоставляют доступ к API
облаков и не только.
8.
Структура Terraformфайлы с расширением tf - файлы конфигурации
файлы с расширением tfvars - файлы переменных
файлы с расширением tfstase - файлы текущего состояния инфраструктуры
.terraform.lock.hcl - файл, где описываются зависимости модулей и
провайдеров
папка .terraform - скачанные провайдер (может быть несколько), которые
указаны в конфигурации
07
9.
Установка TerraformСкачать пакет https://www.terraform.io/downloads
Вывести на экран PATH:
○ Windows https://stackoverflow.com/questions/1618280/where-can-i-set-pathto-make-exe-on-windows
○ Unix-like системы - echo $PATH
Переместить пакет в одну из папок, указанную выше
Проверить версию terraform командой
○ terraform -help
https://learn.hashicorp.com/tutorials/terraform/install-cli
08
10.
Основные команды TerraformInit – инициализация работы
Plan – просмотр изменений
Apply – применение изменений
Destroy
–
инфраструктуры
Fmt
09
–
приведение
к
каноническому виду
Validate – проверка синтаксиса и
противоречивостей
удаление
Taint – пометка на пересоздание
ресурса
11.
Демо: Terraform + VirtualBoxСоздаем кастомную сеть NatNetwork в VirtualBox
Поднимаем 3 виртуальные машины с помощью Terraform
Меняем сетевые настройки на нашу кастомную сеть
10
12.
Terraform + Dockerterraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.13.0"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name
= "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 8000
}
}
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = ">= 2.13.0"
}
}
}
provider "docker" {
host = "npipe:////.//pipe//docker_engine"
}
resource "docker_image" "nginx" {
name
= "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 8000
}
}
11
13.
Terraform Best practicesRemote state - храните файл состояния где-то в удаленном месте;
Lock table - блокируйте файл состояния при запуске terraform;
DRY - пишите код так, чтобы потом его можно было использовать в другом месте;
Используйте модули и workspaces.
11
14.
Почитать/посмотретьБесплатные (и платные) курсы на Udemy
https://www.udemy.com/topic/terraform/free/
Портал HasiCorp https://learn.hashicorp.com
13
15.
Спасибоза внимание!
www.belhard.academy