mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
homework 15.2: fix part 2 of task 1
This commit is contained in:
@@ -31,7 +31,7 @@
|
|||||||
* Назначить сервисному аккаунту роль `editor`
|
* Назначить сервисному аккаунту роль `editor`
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
resource "yandex_resourcemanager_folder_iam_member" "os-editor" {
|
resource "yandex_resourcemanager_folder_iam_member" "os-storage-editor" {
|
||||||
folder_id = var.yandex_folder_id
|
folder_id = var.yandex_folder_id
|
||||||
role = "storage.editor"
|
role = "storage.editor"
|
||||||
member = "serviceAccount:${yandex_iam_service_account.os-service-account.id}"
|
member = "serviceAccount:${yandex_iam_service_account.os-service-account.id}"
|
||||||
@@ -111,7 +111,7 @@ resource "yandex_storage_object" "cute-cat-picture" {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
* Для создания виртуальных маши необходимо, чтобы сервисному аккаунту была назначена роль `editor`:
|
* Для создания виртуальных машин необходимо, чтобы сервисному аккаунту была назначена роль `editor`:
|
||||||
|
|
||||||
```terraform
|
```terraform
|
||||||
resource "yandex_resourcemanager_folder_iam_member" "os-global-editor" {
|
resource "yandex_resourcemanager_folder_iam_member" "os-global-editor" {
|
||||||
@@ -128,16 +128,16 @@ resource "yandex_resourcemanager_folder_iam_member" "os-global-editor" {
|
|||||||
Таким образом, для начала необходимо создать файл конфигурации [cloud-config.yaml](./terraform/cloud-config.yaml) с содержимым:
|
Таким образом, для начала необходимо создать файл конфигурации [cloud-config.yaml](./terraform/cloud-config.yaml) с содержимым:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
#cloud-config
|
||||||
write_files:
|
write_files:
|
||||||
- content: |
|
- content: |
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
...
|
...
|
||||||
</html>
|
</html>
|
||||||
path: "/var/www/html/index.html"
|
path: "/var/www/html/index2.html"
|
||||||
owner: ubuntu:www-data
|
owner: root:root
|
||||||
permissions: '0774'
|
permissions: 0o664
|
||||||
```
|
```
|
||||||
|
|
||||||
Здесь в content расположено содержимое html-файла, которое будет показано при запросе к web-серверу.
|
Здесь в content расположено содержимое html-файла, которое будет показано при запросе к web-серверу.
|
||||||
@@ -151,8 +151,6 @@ metadata = {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
// TODO `[PERMISSION_DENIED] Permission denied to folder b1gktcsaacdrp521naiv, folder b1gktcsaacdrp521naiv`
|
|
||||||
|
|
||||||
> - Настроить проверку состояния ВМ.
|
> - Настроить проверку состояния ВМ.
|
||||||
|
|
||||||
Для настройки проверки состояния ВМ необходимо в конфигурацию группы добавить объект `healthcheck`:
|
Для настройки проверки состояния ВМ необходимо в конфигурацию группы добавить объект `healthcheck`:
|
||||||
@@ -171,11 +169,52 @@ health_check {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Для проверки будет использована практика из [предыдущего домашнего задания](/src/homework/15-cloud-providers/15.1),
|
||||||
|
когда для подключения к машинам, которые не имеют выделенного внешнего ip-адреса используется дополнительная виртуальная машина,
|
||||||
|
доступная из-вне.
|
||||||
|
|
||||||
|
Таким образом, необходимо выполнить команды и убедиться, что html-файл был создан и доступен:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ssh -J ubuntu@<public-ips.external> ubuntu@<lamp-ips.internalLamp>
|
||||||
|
curl http://localhost/index2.html
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
...
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
> 3. Подключить группу к сетевому балансировщику:
|
> 3. Подключить группу к сетевому балансировщику:
|
||||||
> - Создать сетевой балансировщик;
|
> - Создать сетевой балансировщик;
|
||||||
|
|
||||||
// todo
|
// todo
|
||||||
|
|
||||||
|
```terraform
|
||||||
|
resource "yandex_lb_network_load_balancer" "os-lamp-balancer" {
|
||||||
|
name = "os-lamp-balancer"
|
||||||
|
|
||||||
|
listener {
|
||||||
|
name = "os-lamp-balancer-listener"
|
||||||
|
port = 80
|
||||||
|
}
|
||||||
|
|
||||||
|
attached_target_group {
|
||||||
|
target_group_id = yandex_compute_instance_group.os-lamp-group.id
|
||||||
|
healthcheck {
|
||||||
|
name = "os-lamp-balancer-healthcheck"
|
||||||
|
http_options {
|
||||||
|
port = 80
|
||||||
|
path = "/index2.html"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
> - Проверить работоспособность, удалив одну или несколько ВМ.
|
> - Проверить работоспособность, удалив одну или несколько ВМ.
|
||||||
|
|
||||||
// todo
|
// todo
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
---
|
#cloud-config
|
||||||
write_files:
|
write_files:
|
||||||
- content: |
|
- content: |
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
@@ -18,6 +18,8 @@ write_files:
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
path: "/var/www/html/index.html"
|
path: "/var/www/html/index2.html"
|
||||||
owner: ubuntu:www-data
|
owner: root:root
|
||||||
permissions: '0774'
|
permissions: 0o664
|
||||||
|
runcmd:
|
||||||
|
- mkdir /run/mydir
|
||||||
|
|||||||
@@ -66,7 +66,27 @@ resource "yandex_compute_instance_group" "os-lamp-group" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output "ips" {
|
resource "yandex_lb_network_load_balancer" "os-lamp-balancer" {
|
||||||
|
name = "os-lamp-balancer"
|
||||||
|
|
||||||
|
listener {
|
||||||
|
name = "os-lamp-balancer-listener"
|
||||||
|
port = 80
|
||||||
|
}
|
||||||
|
|
||||||
|
attached_target_group {
|
||||||
|
target_group_id = yandex_compute_instance_group.os-lamp-group.id
|
||||||
|
healthcheck {
|
||||||
|
name = "os-lamp-balancer-healthcheck"
|
||||||
|
http_options {
|
||||||
|
port = 80
|
||||||
|
path = "/index2.html"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "lamp-ips" {
|
||||||
value = {
|
value = {
|
||||||
internalLamp = yandex_compute_instance_group.os-lamp-group.instances.*.network_interface.0.ip_address
|
internalLamp = yandex_compute_instance_group.os-lamp-group.instances.*.network_interface.0.ip_address
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// Назначение роли сервисному аккаунту
|
// Назначение роли сервисному аккаунту
|
||||||
resource "yandex_resourcemanager_folder_iam_member" "os-editor" {
|
resource "yandex_resourcemanager_folder_iam_member" "os-storage-editor" {
|
||||||
folder_id = var.yandex_folder_id
|
folder_id = var.yandex_folder_id
|
||||||
role = "storage.editor"
|
role = "storage.editor"
|
||||||
member = "serviceAccount:${yandex_iam_service_account.os-service-account.id}"
|
member = "serviceAccount:${yandex_iam_service_account.os-service-account.id}"
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
resource "yandex_compute_instance" "os-public-instance" {
|
||||||
|
name = "public-instance"
|
||||||
|
|
||||||
|
resources {
|
||||||
|
cores = 2
|
||||||
|
memory = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_disk {
|
||||||
|
initialize_params {
|
||||||
|
image_id = "fd8kdq6d0p8sij7h5qe3" # ubuntu-20-04-lts-v20220822
|
||||||
|
size = "10"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
network_interface {
|
||||||
|
subnet_id = yandex_vpc_subnet.os-subnet.id
|
||||||
|
nat = true
|
||||||
|
}
|
||||||
|
|
||||||
|
metadata = {
|
||||||
|
ssh-keys = "ubuntu:${file("~/.ssh/id_rsa.pub")}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "public-ips" {
|
||||||
|
value = {
|
||||||
|
external = yandex_compute_instance.os-public-instance.network_interface.0.nat_ip_address
|
||||||
|
internal = yandex_compute_instance.os-public-instance.network_interface.0.ip_address
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user