Skip to content

Commit 3c2a0fc

Browse files
committed
add terraform questions
1 parent 39041ee commit 3c2a0fc

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed

imgs/Block_state.png

11.8 KB
Loading

imgs/condition_and_lookup.png

17.6 KB
Loading

imgs/folder_struct_best_practice.png

7.09 KB
Loading

interview.md

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,15 @@
231231
- [Что такое cherry pick ?](#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-cherry-pick-)
232232
- [Какие пратики работы с гитом вы знаете? Форки](#%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-%D0%BF%D1%80%D0%B0%D1%82%D0%B8%D0%BA%D0%B8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%B3%D0%B8%D1%82%D0%BE%D0%BC-%D0%B2%D1%8B-%D0%B7%D0%BD%D0%B0%D0%B5%D1%82%D0%B5-%D1%84%D0%BE%D1%80%D0%BA%D0%B8)
233233
- [Что такое GitFlow?](#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-gitflow)
234+
- [Terraform](#Terraform)
235+
- [Отличие ansible и terraform](#Отличие-ansible-и-terraform)
236+
- [Что такое провайдер в terraform?](#Что-такое-провайдер-в-terraform)
237+
- [что такое ресурс в terraform?](#что-такое-ресурс-в-terraform)
238+
- [что такое tfstate?](#что-такое-tfstate)
239+
- [configure drift что такое?](#configure-drift-что-такое)
240+
- [как блокировать tfstate?](#как-блокировать-tfstate)
241+
- [как можно ресурс созданный в GUI перенести в код terraform?](#как-можно-ресурс-созданный-в-GUI-перенести-в-код-terraform)
242+
- [отличие contidion от look up](#отличие-contidion-от-look-up)
234243

235244

236245
<!-- /TOC -->
@@ -5180,4 +5189,137 @@ overlays - тип сетей которые пересекают несколь
51805189
![gitflow-img](https://github.com/Swfuse/devops-interview/blob/main/imgs/Untitled%2022.png)
51815190
51825191
5192+
---
5193+
5194+
## Terraform
5195+
5196+
### Отличие ansible и terraform
5197+
5198+
- Ответ
5199+
5200+
Terraform - Предназначен для представления инфраструктуры как код и автоматизации ее развертывания.
51835201
5202+
Ansible - Предназначен для автоматизации развертывания и конфигурации приложений
5203+
5204+
Тоесть Terraform используется что бы предаставлять инфру, допустим, виртулаки и тд, а ansible предназначен что бы устанавливать и настраивать ПО на этих виртуалках.
5205+
5206+
---
5207+
5208+
### Что такое провайдер в terraform
5209+
5210+
- Ответ
5211+
5212+
Это утилита, которая позволяет Terraform взаимодействовать с определенным API облачного провадйера. Провайдеры используются для настройки и управления ресурсами, которые разворачиваются в облаке этого провайдера.
5213+
5214+
---
5215+
5216+
### что такое ресурс в terraform
5217+
5218+
- Ответ
5219+
5220+
5221+
Это какой то блок кода, который описывает обЪект в инфраструктуре. Каждый ресурс имеет свои какие то аргументы, свои параметры, свою конфигурацию. Ресурс имеет свой какой то уникальный идентификатор. ID, ARN и тд
5222+
5223+
допустим какая то виртуалка, сеть и тд
5224+
5225+
5226+
---
5227+
5228+
### что такое tfstate
5229+
5230+
- Ответ
5231+
5232+
Это файл, котоорые хранит определенное состяние инфраструктуры на момент последнего запуска и используется для отслеживания состояния инфраструктуры терраформом.
5233+
5234+
---
5235+
5236+
### configure drift что такое
5237+
5238+
- Ответ
5239+
5240+
Это ситуация, когда фактическое состояние инфры в облаке отличается от ожидаемого состояния, прописанного в terraform файлах.
5241+
5242+
Может возникать при изменении ресурсов вне терраформа, либо правки tfstate файла вручную.
5243+
5244+
Может привести к удалению ресурсов, либо нежелательно изменения.
5245+
5246+
---
5247+
5248+
### как блокировать tfstate
5249+
5250+
- Ответ
5251+
5252+
в AWS облаке tfstate блокируется с помощью dynamoDB.
5253+
5254+
При создании DynamoDB в поле Primary key указывается значение LockID типа String.
5255+
5256+
В коде это выглядит вот так
5257+
5258+
![block_state](./imgs/Block_state.png)
5259+
5260+
5261+
5262+
Посмотреть как это делается можно тут -> https://www.youtube.com/watch?v=R9so36Uob8c
5263+
5264+
5265+
---
5266+
5267+
### как можно ресурс созданный в GUI перенести в код terraform
5268+
5269+
- Ответ
5270+
5271+
можно использовать terraform import прописав сначала куда импортировать, а затем id ресурса который нужно импортировать
5272+
5273+
Пример:
5274+
5275+
```bash
5276+
5277+
terraform import aws_instance.instance_to_import
5278+
5279+
```
5280+
5281+
Либо можно в коде прописать секцию import указав id ресурса и куда импортировать
5282+
5283+
```HCL
5284+
5285+
import {
5286+
id = "your_resource_id"
5287+
to = aws_instance.instance_for_import
5288+
}
5289+
5290+
```
5291+
5292+
Затем terraform plan для того, что бы посмотреть как terraform будет импортировать ресурсы
5293+
5294+
Потом Apply для того что бы импортировать ресурсы и обновить state file.
5295+
5296+
Можно прописать terraform plan -generate-config-out=generated.tf если в конфигурации нету ресурса для импорта и после = написать ваше название файла .tf
5297+
5298+
5299+
Почитать поподробнее можно здесь -> https://developer.hashicorp.com/terraform/language/import
5300+
5301+
5302+
---
5303+
5304+
### отличие contidion от look up
5305+
5306+
- Ответ
5307+
5308+
lookup это функция которая принимает словарь переменных, который мы пишем обычно в variable.tf файле и ключ значения которое хотим от туда взять
5309+
5310+
функция с переменными выглядит как
5311+
5312+
**X = lookup(map, key)**
5313+
5314+
Conditions это условия выбора какой либо переменной
5315+
5316+
условие с переменными выглядит так
5317+
5318+
**X = CONDITION ? IF_TRUE : IF_FALSE**
5319+
5320+
Пример как это можно использовать в коде
5321+
5322+
![conditions_lookup](./imgs/condition_and_lookup.png)
5323+
5324+
5325+
----

0 commit comments

Comments
 (0)