added: Добавлены вопросы в темы terraform, databases
This commit is contained in:
@@ -66,4 +66,17 @@ SHOW SLAVE STATUSG
|
||||
|
||||
Prometheus использует TSDB (time series database).
|
||||
|
||||
</details>
|
||||
|
||||
3. Что такое VACUUM в PostgreSQL?
|
||||
|
||||
<details>
|
||||
<summary>Ответ</summary>
|
||||
|
||||
VACUUM высвобождает пространство, занимаемое «мёртвыми» кортежами. При обычных операциях PostgreSQL кортежи, удалённые или устаревшие в результате обновления, физически не удаляются из таблицы; они сохраняются в ней, пока не будет выполнена команда VACUUM. Таким образом, периодически необходимо выполнять VACUUM, особенно для часто изменяемых таблиц.
|
||||
|
||||
Без параметра команда VACUUM обрабатывает все таблицы в текущей базе данных, которые может очистить текущий пользователь. Если в параметре передаётся имя таблицы, VACUUM обрабатывает только эту таблицу.
|
||||
|
||||
Простая команда VACUUM (без FULL) только высвобождает пространство и делает его доступным для повторного использования. Эта форма команды может работать параллельно с обычными операциями чтения и записи таблицы, так она не требует исключительной блокировки. Однако освобождённое место не возвращается операционной системе (в большинстве случаев); оно просто остаётся доступным для размещения данных этой же таблицы. VACUUM FULL переписывает всё содержимое таблицы в новый файл на диске, не содержащий ничего лишнего, что позволяет возвратить неиспользованное пространство операционной системе. Эта форма работает намного медленнее и запрашивает исключительную блокировку для каждой обрабатываемой таблицы.
|
||||
|
||||
</details>
|
||||
@@ -25,15 +25,17 @@
|
||||
|
||||
Зависит от требованиям к хранению состояния.
|
||||
|
||||
- AWS S3 — Standard (с locking через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
|
||||
- AWS S3 — Standard (с блокировкой через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
|
||||
|
||||
- terraform enterprise — Standard (без блокировки).
|
||||
|
||||
- etcd — Standard (без лока). Сохраняет состояние в etcd 2.x по заданному пути.
|
||||
- etcd — Standard (без блокировки). Сохраняет состояние в etcd 2.x по заданному пути.
|
||||
|
||||
- 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.
|
||||
|
||||
@@ -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 возможно управлять несколькими средами инфраструктуры.
|
||||
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user