|
231 | 231 | - [Что такое cherry pick ?](#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-cherry-pick-)
|
232 | 232 | - [Какие пратики работы с гитом вы знаете? Форки](#%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)
|
233 | 233 | - [Что такое 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) |
234 | 243 |
|
235 | 244 |
|
236 | 245 | <!-- /TOC -->
|
@@ -5180,4 +5189,137 @@ overlays - тип сетей которые пересекают несколь
|
5180 | 5189 | 
|
5181 | 5190 |
|
5182 | 5191 |
|
| 5192 | +--- |
| 5193 | +
|
| 5194 | +## Terraform |
| 5195 | +
|
| 5196 | +### Отличие ansible и terraform |
| 5197 | +
|
| 5198 | +- Ответ |
| 5199 | +
|
| 5200 | + Terraform - Предназначен для представления инфраструктуры как код и автоматизации ее развертывания. |
5183 | 5201 |
|
| 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 | +  |
| 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 | +  |
| 5323 | +
|
| 5324 | +
|
| 5325 | +---- |
0 commit comments