added: Добавлены вопросы в темы terraform, databases

This commit is contained in:
Roman Travin
2023-09-25 23:58:04 +04:00
parent ec78bcbcd0
commit 808b803b38
2 changed files with 66 additions and 3 deletions

View File

@@ -66,4 +66,17 @@ SHOW SLAVE STATUSG
Prometheus использует TSDB (time series database). Prometheus использует TSDB (time series database).
</details>
3. Что такое VACUUM в PostgreSQL?
<details>
<summary>Ответ</summary>
VACUUM высвобождает пространство, занимаемое «мёртвыми» кортежами. При обычных операциях PostgreSQL кортежи, удалённые или устаревшие в результате обновления, физически не удаляются из таблицы; они сохраняются в ней, пока не будет выполнена команда VACUUM. Таким образом, периодически необходимо выполнять VACUUM, особенно для часто изменяемых таблиц.
Без параметра команда VACUUM обрабатывает все таблицы в текущей базе данных, которые может очистить текущий пользователь. Если в параметре передаётся имя таблицы, VACUUM обрабатывает только эту таблицу.
Простая команда VACUUM (без FULL) только высвобождает пространство и делает его доступным для повторного использования. Эта форма команды может работать параллельно с обычными операциями чтения и записи таблицы, так она не требует исключительной блокировки. Однако освобождённое место не возвращается операционной системе (в большинстве случаев); оно просто остаётся доступным для размещения данных этой же таблицы. VACUUM FULL переписывает всё содержимое таблицы в новый файл на диске, не содержащий ничего лишнего, что позволяет возвратить неиспользованное пространство операционной системе. Эта форма работает намного медленнее и запрашивает исключительную блокировку для каждой обрабатываемой таблицы.
</details> </details>

View File

@@ -25,15 +25,17 @@
Зависит от требованиям к хранению состояния. Зависит от требованиям к хранению состояния.
- AWS S3 — Standard (с locking через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB. - AWS S3 — Standard (с блокировкой через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
- terraform enterprise — Standard (без блокировки). - terraform enterprise — Standard (без блокировки).
- etcd — Standard (без лока). Сохраняет состояние в etcd 2.x по заданному пути. - etcd — Standard (без блокировки). Сохраняет состояние в etcd 2.x по заданному пути.
- etcdv3 — Standard (с блокировкой). Сохраняет состояние в хранилище etcd в виде K/V с заданным префиксом. - etcdv3 — Standard (с блокировкой). Сохраняет состояние в хранилище etcd в виде K/V с заданным префиксом.
- gcs — Standard (с локом). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния. - gcs — Standard (с блокировкой). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния.
- Gitlab Terraform state (с блокировкой). Хранит состояние в Gitlab Terraform state хранилище, используя HTTP протокол и права Gitlab для доступа.
Существуют также и другие Backend для Terraform. Существуют также и другие Backend для Terraform.
@@ -131,3 +133,51 @@ echo 'yamldecode(file("filename.yaml"))' | terraform console
[Workspaces](https://developer.hashicorp.com/terraform/language/state/workspaces#using-workspaces) в Terraform - это возможность управления state файлами. Workspace содержит все что необходимо для управления набором инфраструктуры, а отдельные рабочие области функционируют как полностью отдельные рабочие каталоги. С помощью Workspaces возможно управлять несколькими средами инфраструктуры. [Workspaces](https://developer.hashicorp.com/terraform/language/state/workspaces#using-workspaces) в Terraform - это возможность управления state файлами. Workspace содержит все что необходимо для управления набором инфраструктуры, а отдельные рабочие области функционируют как полностью отдельные рабочие каталоги. С помощью Workspaces возможно управлять несколькими средами инфраструктуры.
</details> </details>
11. Для чего нужен terragrunt?
<details>
<summary>Ответ</summary>
Terragrunt — это обертка для Terraform, позволяющая решать проблемы, связанные с масштабированием и переиспользованием кода для настройки инфраструктуры. Он позволяет повторно использовать конфигурационные параметры и поддерживает многоуровневые конфигурации и зависимости.
</details>
12. Чем отличается `count` от `for_each`?
<details>
<summary>Ответ</summary>
`count` — это итерация по списку, который содержит целочисленные элементы, `for_each` — это итерация по корневым ключам словаря, которые могут содержать данные любого типа.
```
resource "aws_instance" "web" {
count = 3
instance_type = "t2.micro"
ami = data.aws_ami.debian_buster.id
tags = {
Name = "WebServer-${count.index + 1}"
}
}
```
Описание ресурса выше создаст 3 одинаковых EC2 инстанса, изменив имя с указанием номера текущего состояния счётчика. `count` начинает отсчет с 0, поэтому чтобы 1 EC2 инстанс был с индексом 1 в имени ему прибавили `1`.
```
resource "aws_instance" "server" {
for_each = {
web = { type = "t2.micro", public_ip = true },
db = { type = "m5.large", public_ip = false }
}
instance_type = each.value["type"]
ami = data.aws_ami.debian_buster.id
associate_public_ip_address = each.value["public_ip"]
tags = {
Name = "each.key"
}
}
```
Ресурс выше создаст 2 EC2 инстанса с итерацией по ключам `each.key` и использовав значения вложенных словарей в конфигурации EC2.
</details>