|
241 | 241 | - [Как блокировать tfstate](#%D0%BA%D0%B0%D0%BA-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-tfstate)
|
242 | 242 | - [Как можно ресурс созданный в GUI перенести в код terraform](#%D0%BA%D0%B0%D0%BA-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D0%B2-gui-%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B5%D1%81%D1%82%D0%B8-%D0%B2-%D0%BA%D0%BE%D0%B4-terraform)
|
243 | 243 | - [Отличие contidion от look up](#%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%B8%D0%B5-contidion-%D0%BE%D1%82-look-up)
|
| 244 | + - [Ты накидал код в тераформе, запустил план, вышел. После этого твой коллега накидал свой код, выполнил план, вышел. далее тебе нужно зааплаить свою инфру, будут ли какие-то ошибки](#%D1%82%D1%8B-%D0%BD%D0%B0%D0%BA%D0%B8%D0%B4%D0%B0%D0%BB-%D0%BA%D0%BE%D0%B4-%D0%B2-%D1%82%D0%B5%D1%80%D0%B0%D1%84%D0%BE%D1%80%D0%BC%D0%B5-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D0%BB-%D0%BF%D0%BB%D0%B0%D0%BD-%D0%B2%D1%8B%D1%88%D0%B5%D0%BB-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%8D%D1%82%D0%BE%D0%B3%D0%BE-%D1%82%D0%B2%D0%BE%D0%B9-%D0%BA%D0%BE%D0%BB%D0%BB%D0%B5%D0%B3%D0%B0-%D0%BD%D0%B0%D0%BA%D0%B8%D0%B4%D0%B0%D0%BB-%D1%81%D0%B2%D0%BE%D0%B9-%D0%BA%D0%BE%D0%B4-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D0%BB-%D0%BF%D0%BB%D0%B0%D0%BD-%D0%B2%D1%8B%D1%88%D0%B5%D0%BB-%D0%B4%D0%B0%D0%BB%D0%B5%D0%B5-%D1%82%D0%B5%D0%B1%D0%B5-%D0%BD%D1%83%D0%B6%D0%BD%D0%BE-%D0%B7%D0%B0%D0%B0%D0%BF%D0%BB%D0%B0%D0%B8%D1%82%D1%8C-%D1%81%D0%B2%D0%BE%D1%8E-%D0%B8%D0%BD%D1%84%D1%80%D1%83-%D0%B1%D1%83%D0%B4%D1%83%D1%82-%D0%BB%D0%B8-%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-%D1%82%D0%BE-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8) |
| 245 | + - [У вас есть 20 серверов, созданных с помощью Terraform, но вы хотите удалить один из них. Можно ли уничтожить один ресурс из нескольких ресурсов без правки в самих файлах?](#%D1%83-%D0%B2%D0%B0%D1%81-%D0%B5%D1%81%D1%82%D1%8C-20-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-terraform-%D0%BD%D0%BE-%D0%B2%D1%8B-%D1%85%D0%BE%D1%82%D0%B8%D1%82%D0%B5-%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C-%D0%BE%D0%B4%D0%B8%D0%BD-%D0%B8%D0%B7-%D0%BD%D0%B8%D1%85-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D0%BB%D0%B8-%D1%83%D0%BD%D0%B8%D1%87%D1%82%D0%BE%D0%B6%D0%B8%D1%82%D1%8C-%D0%BE%D0%B4%D0%B8%D0%BD-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81-%D0%B8%D0%B7-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2-%D0%B1%D0%B5%D0%B7-%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8-%D0%B2-%D1%81%D0%B0%D0%BC%D0%B8%D1%85-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%D1%85) |
| 246 | + - [Какие есть best practice для ухаживания за tfstate file?](#%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-%D0%B5%D1%81%D1%82%D1%8C-best-practice-%D0%B4%D0%BB%D1%8F-%D1%83%D1%85%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B7%D0%B0-tfstate-file) |
| 247 | + - [У вас есть несколько сред — dev, stage, prod для вашего приложения, и вы хотите использовать один и тот же код для всех этих сред. Как ты можешь это сделать?](#%D1%83-%D0%B2%D0%B0%D1%81-%D0%B5%D1%81%D1%82%D1%8C-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%81%D1%80%D0%B5%D0%B4--dev-stage-prod-%D0%B4%D0%BB%D1%8F-%D0%B2%D0%B0%D1%88%D0%B5%D0%B3%D0%BE-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%B2%D1%8B-%D1%85%D0%BE%D1%82%D0%B8%D1%82%D0%B5-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%BE%D0%B4%D0%B8%D0%BD-%D0%B8-%D1%82%D0%BE%D1%82-%D0%B6%D0%B5-%D0%BA%D0%BE%D0%B4-%D0%B4%D0%BB%D1%8F-%D0%B2%D1%81%D0%B5%D1%85-%D1%8D%D1%82%D0%B8%D1%85-%D1%81%D1%80%D0%B5%D0%B4-%D0%BA%D0%B0%D0%BA-%D1%82%D1%8B-%D0%BC%D0%BE%D0%B6%D0%B5%D1%88%D1%8C-%D1%8D%D1%82%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C) |
244 | 248 |
|
245 | 249 | <!-- /TOC -->
|
246 | 250 |
|
@@ -5382,3 +5386,109 @@ https://github.com/pixelb/ps_mem
|
5382 | 5386 | ```
|
5383 | 5387 |
|
5384 | 5388 | ----
|
| 5389 | +
|
| 5390 | +### Ты накидал код в тераформе, запустил план, вышел. После этого твой коллега накидал свой код, выполнил план, вышел. далее тебе нужно зааплаить свою инфру, будут ли какие-то ошибки |
| 5391 | +
|
| 5392 | +- Ответ |
| 5393 | + |
| 5394 | + Нет, ведь при **terraform plan** файл tfstate не меняется, а только показывается как будет применяться новые изменения к текущей инфраструктуре. |
| 5395 | +
|
| 5396 | +--- |
| 5397 | +
|
| 5398 | +### У вас есть 20 серверов, созданных с помощью Terraform, но вы хотите удалить один из них. Можно ли уничтожить один ресурс из нескольких ресурсов без правки в самих файлах? |
| 5399 | +
|
| 5400 | +- Ответ |
| 5401 | +
|
| 5402 | + Да можно с помощью команды terraform destroy и флага --target |
| 5403 | +
|
| 5404 | + ```bash |
| 5405 | +
|
| 5406 | + terraform destroy -target=aws_instance.my_instance |
| 5407 | + |
| 5408 | + ``` |
| 5409 | +--- |
| 5410 | +
|
| 5411 | +### Какие есть best practice для ухаживания за tfstate file? |
| 5412 | +
|
| 5413 | +- Ответ |
| 5414 | +
|
| 5415 | + - Хранить фалй удаленно, например в s3 backet, для обеспечения совместной работы |
| 5416 | + и безопасности. |
| 5417 | + - Блокирования состояния на время применения инфраструктуры, для того что бы предотвратить конфликтов между изменениями. |
| 5418 | + - Ограничения доступа. Доступ к стейт файлу доступ мог получить только авторизованный пользователь. |
| 5419 | + - Настройка автоматических бэкапов, для того что бы не потерять состояние инфры |
| 5420 | +
|
| 5421 | +--- |
| 5422 | +
|
| 5423 | +### У вас есть несколько сред — dev, stage, prod для вашего приложения, и вы хотите использовать один и тот же код для всех этих сред. Как ты можешь это сделать? |
| 5424 | +
|
| 5425 | +- Ответ |
| 5426 | +
|
| 5427 | + Есть два вариант как это можно сделать. |
| 5428 | +
|
| 5429 | + Через модули: |
| 5430 | + |
| 5431 | + - Ты пишешь код инфраструктуры, в variable файл выносишь все нужные параметры, что бы их потом можно было заменить, в outputs файл выносишь все нужные выходные данные. |
| 5432 | +
|
| 5433 | + - Создаешь рядом с папкой с модулем создаешь уже папку проекта с папками под каждое окружение. |
| 5434 | + В них уже создаешь условно файлик main.tf и в нем прописываешь блок кода module, и в коде проекта в среде прод этот блок кода может выглядить как: |
| 5435 | +
|
| 5436 | + ```HCL |
| 5437 | + |
| 5438 | + module "vpc_prod" { |
| 5439 | + source = "../../modules/vpc_and_network" |
| 5440 | + env = "production" |
| 5441 | + cidr_block = "10.100.1.0/24" |
| 5442 | + |
| 5443 | + publick_cidr_subntet = [ |
| 5444 | + "10.100.12.0/24", |
| 5445 | + "10.100.13.0/24", |
| 5446 | + "10.100.14.0/24", |
| 5447 | + ] |
| 5448 | + private_cidr_subnets = [ |
| 5449 | + "10.100.21.0/24", |
| 5450 | + "10.100.22.0/24" |
| 5451 | + ] |
| 5452 | + } |
| 5453 | + #так же это могут быть модули, которые хранятся удаленно |
| 5454 | + |
| 5455 | + ``` |
| 5456 | + |
| 5457 | + Структура папок может выглядить вот так: |
| 5458 | +
|
| 5459 | +  |
| 5460 | +
|
| 5461 | + Env по папкам это часто используется, но на деле это противоречит DRY. |
| 5462 | + Тут в качестве бест практис лучше иметь конфиги террагрунта под каждый env со своими переменными под окружени. |
| 5463 | + |
| 5464 | + Структура папок по бестпрактис может выглядить вот так: |
| 5465 | +
|
| 5466 | +  |
| 5467 | +
|
| 5468 | +
|
| 5469 | +
|
| 5470 | + - Есть метод через workspace который почти нигде не используется. |
| 5471 | +
|
| 5472 | + - Так же в качестве best practice разграничение по аккам используется, с точки зрения тф нужно будет деплоиться на разных акках |
| 5473 | +
|
| 5474 | + В коде это будет выглядить как: |
| 5475 | +
|
| 5476 | + ```HCL |
| 5477 | +
|
| 5478 | + provider "aws" { |
| 5479 | + region = "eu-central-2" |
| 5480 | + |
| 5481 | + |
| 5482 | + assume_role { |
| 5483 | + role_arn = "arn:aws:iam::1234567890:role/RemoteAdministrator" |
| 5484 | + session_name = "terraform session" |
| 5485 | + |
| 5486 | + } |
| 5487 | +
|
| 5488 | + ``` |
| 5489 | +
|
| 5490 | + На аккаунте на котором будет происходить деплой должна быть соответсвующая роль которая позволяет это делать, либо нужно вводить access_key и secret_key |
| 5491 | +
|
| 5492 | +
|
| 5493 | +--- |
| 5494 | +
|
0 commit comments