DevOps. Системный инженер 10

Содержание

Слайд 2

01 Содержание 1. Подход Infrastructure as Code (IaC). Цели, варианты реализации,

01

Содержание

1. Подход Infrastructure as Code (IaC). Цели, варианты реализации, минусы, инструменты.
2.

Terraform. Описание, основные функции, best practices.
3. Демо: разворачивание и настройка виртуальных машин (Virtualbox) с помощью Terraform
Слайд 3

02 Подход IaC Цель подхода IaC - управления ИТ-инфраструктурой, при котором

02

Подход IaC

Цель подхода IaC - управления ИТ-инфраструктурой, при котором для управления

ресурсами облачной (и не только) инфраструктуры применяются рекомендации из методологий и практик DevOps.

ПРИМЕР

Слайд 4

03 Подход IaC Варианты реализации подхода IaC: Semi-automation – какая-то часть

03

Подход IaC

Варианты реализации подхода IaC:
Semi-automation – какая-то часть инфраструктуры создается и

поддерживается с помощью инструмента IaC, остальное – руками;
IaC – вся инфраструктура создается и поддерживается с помощью инструмента IaC, код хранится в Git, запуск автоматизирован;
Shared IaC – так же как и при реализации IaC + разные департаменты имеют доступ только к своей части (например, сетевые инженеры имеют доступ только к сетевой части кода).
Слайд 5

04 Подход IaC Минусы подхода IaC: Описание происходит на языке программирования;

04

Подход IaC

Минусы подхода IaC:
Описание происходит на языке программирования;
Отсутствия адекватной логики;
Сложность внедрения

на больших проектах.
Слайд 6

05 Подход IaC Инструменты IaC: Terraform – инструмент HashiCorp, позволяет подготовить

05

Подход 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.
Слайд 7

06 Terraform Terraform - IaC инструмент компании HashiCorp, главная цель которого

06

Terraform

Terraform - IaC инструмент компании HashiCorp, главная цель которого - уменьшение

времени и затрат на развертывание инфраструктуры, единое описание всей инфраструктуры, понятное всем и контроль изменений в инфраструктуре. Описание инфраструктуры происходит на языке HCL (HashiCorp Language) - domain-specific язык, работает на провайдерах – это набор файлов, которые предоставляют доступ к API облаков и не только.
Слайд 8

07 Структура Terraform файлы с расширением tf - файлы конфигурации файлы

07

Структура Terraform

файлы с расширением tf - файлы конфигурации
файлы с расширением tfvars

- файлы переменных
файлы с расширением tfstase - файлы текущего состояния инфраструктуры
.terraform.lock.hcl - файл, где описываются зависимости модулей и провайдеров
папка .terraform - скачанные провайдер (может быть несколько), которые указаны в конфигурации
Слайд 9

08 Установка Terraform Скачать пакет https://www.terraform.io/downloads Вывести на экран PATH: Windows

08

Установка Terraform

Скачать пакет https://www.terraform.io/downloads
Вывести на экран PATH:
Windows https://stackoverflow.com/questions/1618280/where-can-i-set-path-to-make-exe-on-windows
Unix-like системы - echo

$PATH
Переместить пакет в одну из папок, указанную выше
Проверить версию terraform командой
terraform -help
https://learn.hashicorp.com/tutorials/terraform/install-cli
Слайд 10

09 Основные команды Terraform Init – инициализация работы Plan – просмотр

09

Основные команды Terraform

Init – инициализация работы
Plan – просмотр изменений
Apply – применение

изменений
Destroy – удаление инфраструктуры

Fmt – приведение к каноническому виду
Validate – проверка синтаксиса и противоречивостей
Taint – пометка на пересоздание ресурса

Слайд 11

10 Демо: Terraform + VirtualBox Создаем кастомную сеть NatNetwork в VirtualBox

10

Демо: Terraform + VirtualBox

Создаем кастомную сеть NatNetwork в VirtualBox
Поднимаем 3 виртуальные

машины с помощью Terraform
Меняем сетевые настройки на нашу кастомную сеть
Слайд 12

11 Terraform + Docker terraform { required_providers { docker = {

11

Terraform + Docker

terraform {
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
}
}

Слайд 13

11 Terraform Best practices Remote state - храните файл состояния где-то

11

Terraform Best practices

Remote state - храните файл состояния где-то в удаленном

месте;
Lock table - блокируйте файл состояния при запуске terraform;
DRY - пишите код так, чтобы потом его можно было использовать в другом месте;
Используйте модули и workspaces.
Слайд 14

13 Почитать/посмотреть Бесплатные (и платные) курсы на Udemy https://www.udemy.com/topic/terraform/free/ Портал HasiCorp https://learn.hashicorp.com

13

Почитать/посмотреть

Бесплатные (и платные) курсы на Udemy https://www.udemy.com/topic/terraform/free/
Портал HasiCorp https://learn.hashicorp.com