From 8e728e9609468dff71a70935e7b37f531bc49c1e Mon Sep 17 00:00:00 2001 From: Fanis Zinnurov <131813746+qobz1e@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:10:04 +0000 Subject: [PATCH 1/3] Lab04 Terraform Part --- .gitignore | 8 ++- labs/app_python/terraform/.terraform.lock.hcl | 22 ++++++++ labs/app_python/terraform/main.tf | 55 +++++++++++++++++++ labs/app_python/terraform/outputs.tf | 3 + labs/app_python/terraform/variables.tf | 9 +++ labs/authorized_key.json | 8 +++ 6 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 labs/app_python/terraform/.terraform.lock.hcl create mode 100644 labs/app_python/terraform/main.tf create mode 100644 labs/app_python/terraform/outputs.tf create mode 100644 labs/app_python/terraform/variables.tf create mode 100644 labs/authorized_key.json diff --git a/.gitignore b/.gitignore index 30d74d2584..0e4c95c492 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ -test \ No newline at end of file +**/.terraform/* +*.tfstate +*.tfstate.* +*.tfvars +yc-key.json +id_rsa +id_rsa.pub \ No newline at end of file diff --git a/labs/app_python/terraform/.terraform.lock.hcl b/labs/app_python/terraform/.terraform.lock.hcl new file mode 100644 index 0000000000..4322722cec --- /dev/null +++ b/labs/app_python/terraform/.terraform.lock.hcl @@ -0,0 +1,22 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/yandex-cloud/yandex" { + version = "0.190.0" + hashes = [ + "h1:AYCj4pxRSXXzuQnb28QhLj/XqbfFuUiFrQgEXLZnm14=", + "zh:39577304131502f989bf3a97d5de8417898e14ea69a92002c5151c83ecb1e948", + "zh:476a84d42d45fd553213e2612b83d51165baa8ea59b80dc3143a5f6745e26432", + "zh:57d92fb9424013c1ce01a1a0977ee4adedfa4f2ab5dafb3d0de890317629120a", + "zh:648db15d880cbfd93473dd3a642ede1f91977ec5c7147cdf23d3343ddff2299c", + "zh:774ebd4f7ea8d4cc6df36840e0b65a10f60a4157e6842fd026a633a985978255", + "zh:80f0b68f28e61f6a843962c80e341bf2bfb7bb3943c261f36e3a896ab6162eff", + "zh:8e14d20dcff177d9b6bcac07b6c6650ec04fce56c53a0d5d4ed039b7971e4a36", + "zh:aef377dcea92d8045c1e6f4f76371c450a87b112918930c51c6ab640c6f5a403", + "zh:c06d3e888f38990684c8acac4385402fbddb8f4bb41076575345aba0866a30d5", + "zh:c1c32d292f2d0fca549adf83e4e6b974493a56c752c6e95a20e35df65d3cf845", + "zh:c2538900499b1025827d34ffb7f6616c3e2e2ba8aa12a8f11030d276d7a4e4d5", + "zh:e954a17935e7489a2c13e110af2b6a09387c9c3d57e4bc6f596993f5f398d3ef", + "zh:f0767078524982d45e6cc679a57cd40d11e28d4d1ec0e33d04b0adba4dc5253c", + ] +} diff --git a/labs/app_python/terraform/main.tf b/labs/app_python/terraform/main.tf new file mode 100644 index 0000000000..9bb4f31da9 --- /dev/null +++ b/labs/app_python/terraform/main.tf @@ -0,0 +1,55 @@ +terraform { + required_providers { + yandex = { + source = "yandex-cloud/yandex" + } + } +} + +provider "yandex" { + service_account_key_file = var.service_account_key_file + cloud_id = var.cloud_id + folder_id = var.folder_id + zone = var.zone +} + +# --- Network --- +resource "yandex_vpc_network" "lab_network" { + name = "lab-network" +} + +# --- Subnet --- +resource "yandex_vpc_subnet" "lab_subnet" { + name = "lab-subnet" + zone = var.zone + network_id = yandex_vpc_network.lab_network.id + v4_cidr_blocks = ["10.0.0.0/24"] +} + +# --- VM --- +resource "yandex_compute_instance" "vm" { + name = "lab04-vm" + platform_id = "standard-v2" + + resources { + cores = 2 + memory = 1 + core_fraction = 20 + } + + boot_disk { + initialize_params { + image_id = "fd80qm01ah03dkqb14lc" + size = 30 + } + } + + network_interface { + subnet_id = yandex_vpc_subnet.lab_subnet.id + nat = true + } + + metadata = { + ssh-keys = "ubuntu:${file(var.ssh_public_key_path)}" + } +} \ No newline at end of file diff --git a/labs/app_python/terraform/outputs.tf b/labs/app_python/terraform/outputs.tf new file mode 100644 index 0000000000..032c54474c --- /dev/null +++ b/labs/app_python/terraform/outputs.tf @@ -0,0 +1,3 @@ +output "public_ip" { + value = yandex_compute_instance.vm.network_interface[0].nat_ip_address +} \ No newline at end of file diff --git a/labs/app_python/terraform/variables.tf b/labs/app_python/terraform/variables.tf new file mode 100644 index 0000000000..91492d86ef --- /dev/null +++ b/labs/app_python/terraform/variables.tf @@ -0,0 +1,9 @@ +variable "cloud_id" {} +variable "folder_id" {} + +variable "zone" { + default = "ru-central1-a" +} + +variable "service_account_key_file" {} +variable "ssh_public_key_path" {} \ No newline at end of file diff --git a/labs/authorized_key.json b/labs/authorized_key.json new file mode 100644 index 0000000000..1760d07804 --- /dev/null +++ b/labs/authorized_key.json @@ -0,0 +1,8 @@ +{ + "id": "ajeldc1qp3hrg70bvsa0", + "service_account_id": "aje15t05ldfdfnb55dpf", + "created_at": "2026-03-04T20:34:01.78029446Z", + "key_algorithm": "RSA_4096", + "public_key": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqBASRQwDa+FTdD2QP93X\nKlH1whUBeD23QdLh4vLzb6BWyHtC8ZDt4oZ8kYCctvaGHK6m+OzC8PFwXnWj1ImE\nWnQsv7fJKw1XuJ5hqI+F51a/GzSJHppPZ08DNrwEe8chw6TquFZEuDw44tAD6Lr/\nkYpZs5FIsTgNqtQUzzy/5v+KC2sZkKNQotJb6gpumZXW6g6i9tsqtEpmUWezIqae\nMku6QI/Vkq+mR3SLepmD2Ue5B1jsJPlKl5LU/OC4BkchTAjR1qScxtt4e+5RQFar\nm+5FrSuTpgSkm67nLEN6rLQ8RG9NXnvLLSaXoTi8iEYNEO3CMK59U756lQpFb3YD\nO+qEtXc0qpoW6qWYs2DZP2itKyOZs1JfSiNUjhBNbcM901RglyUr3BQ+cevwi3ti\nAk2FqE3lwv2gSxfbpxPsVxjYU65eWEqRQybsPvL0CTb3/KoexNyIxDr1LcXBloF8\nHzbherXYKaZzXeBmI4PgOAbeFigQmFYhoDp9Ngyemmxke+Y5GA0LcoRXiYXpZvgk\n+faCAf+PBE6hfC6hbIPapVGpJGZwCJOF5B1iI5FDAFCklCFq37UmvDQ5P4IsoWP7\ny2EI6gOlyd6JXgMbPmrssrT7LowGBwrtl8szwCtUD9T3H937WOEcRVRIDnMBrAyl\nG4QFwwbYHl1uhVa08Tb6ucUCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "private_key": "PLEASE DO NOT REMOVE THIS LINE! Yandex.Cloud SA Key ID \n-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCoEBJFDANr4VN0\nPZA/3dcqUfXCFQF4PbdB0uHi8vNvoFbIe0LxkO3ihnyRgJy29oYcrqb47MLw8XBe\ndaPUiYRadCy/t8krDVe4nmGoj4XnVr8bNIkemk9nTwM2vAR7xyHDpOq4VkS4PDji\n0APouv+RilmzkUixOA2q1BTPPL/m/4oLaxmQo1Ci0lvqCm6ZldbqDqL22yq0SmZR\nZ7Mipp4yS7pAj9WSr6ZHdIt6mYPZR7kHWOwk+UqXktT84LgGRyFMCNHWpJzG23h7\n7lFAVqub7kWtK5OmBKSbrucsQ3qstDxEb01ee8stJpehOLyIRg0Q7cIwrn1TvnqV\nCkVvdgM76oS1dzSqmhbqpZizYNk/aK0rI5mzUl9KI1SOEE1twz3TVGCXJSvcFD5x\n6/CLe2ICTYWoTeXC/aBLF9unE+xXGNhTrl5YSpFDJuw+8vQJNvf8qh7E3IjEOvUt\nxcGWgXwfNuF6tdgppnNd4GYjg+A4Bt4WKBCYViGgOn02DJ6abGR75jkYDQtyhFeJ\nhelm+CT59oIB/48ETqF8LqFsg9qlUakkZnAIk4XkHWIjkUMAUKSUIWrftSa8NDk/\ngiyhY/vLYQjqA6XJ3oleAxs+auyytPsujAYHCu2XyzPAK1QP1Pcf3ftY4RxFVEgO\ncwGsDKUbhAXDBtgeXW6FVrTxNvq5xQIDAQABAoICAEfnhGGNR8N2xtVjZ52jpOTC\n50JP6W6P/SGI/8MxTg0SzT5+WkBvURALmS1JmQNAy1VnNiInbipXKkwHyf3rjjiD\nHwgxsjycu0zOWpsbON+nAiG6IvZ4cAOTzxyyabqpkp0ZqKEQq9slTPNhq2J9601S\nI5nLzY2hHVva3EJkS/ihmWbUPj5fWWcoWFH0f6hvbuF6PKggUg+MC2XF1+M55VJA\niyIHSAm35A0LZIeiOcKTSKtHlNUm4Y6jMEQ3QxTQhwL4fQr4J+l+yfhAGPxNeKPA\n2IfELqonr2O6e8a44joU7Pocor4LefzJ17MPSr6FNh7pkp1wckeLpfexSs7q72uX\nvNI3Gk3MsyvyKbr/w/ZVri3FskaQ6kXL7iRMWgP4GK5nZ14fcBsRo45M+jOVi4lx\nTeCOYlsb3JbVeCtj3vJLkvMqQYMFQXVm1Bir6ITei8pxnJUwdLx9rQArztxDLpyF\n54Q3asiDt15mfmpEhPNuS+n3iIfN3rDAK0ircZgZo5n5yqnJR+AnhAALihijOFO8\nf9+ocOAkV3EaSobyDkH3dooBR62zjOzv73LwSJZ/1+yZY8RtbqAnW/meUNTf3XVy\nDgbjDZ/HGgD2LHVJ2Z5O92PxE0g3reKzZmlOInyrre3seFRoNifPof07NsX7y0BH\nBxmIDs9lhmX2omeaczkrAoIBAQDBqhem3skoOhNqT9Y2n1gGvi2MtROe18fU0CGf\n6b9b9Bfprrg2clnLJMcZeoEjl8bH3gFcwq19dbnglAizIN1wte8qAOnEv/CEuhKR\ndfjrW6BZeSzzOUhef6COxYeJtNmehfWrvEiVbitACZzwrxe/i6iUNvBR65XBSdVG\no1G+PIbBhiMl5MNjLpBsUWiWHVN9oMUIJNxkS7EMd4A/9jyhax3WifS0ReIqoy4Q\nvxylGfpA/na2fA+OnRAX6dUNoyxTa8GhVXyFOROrUJC6i7UwFZe3s/Xt5Epx1wlc\nZjr0TSyDJec4cXl5DKvb1FtNsVii/Gh2Qp3RqPP2mAjLGeJnAoIBAQDeKGirPX2l\nHAcqXFBZSXlenVwhqL4TMdhWLYpnVrWOR+DzB8BwrueGj+fVN+RfqK4Rd+v/qw+1\n0277iH0KJMmnSHQN7LqQWWrX+eRBA+8ZITKCfwxnq4hiPHtFhOzhd0TAH2zRecSV\n5P2ed/j6jzvZT84p/04lfD/UjztMG5ACu/6biJfEv3Tj8TA2dPSt79SgNMopyygX\nZ41DFKlefZUV5A332dpOM2+M4RaHD6crwR8LK9cM31lZhjWl8IIKUVwxuSREBAgn\nwOh491oPZTh5pZpCDBLijtHtbAcbJeHb4Pwz4zVjDhpVxGi4Loz8IUmHrGajQsRG\nDp8aINc7IV7zAoIBAQCLz9ENbk8I1IyJtqNugbDaBVf6+gr1JNCmSa/Ms8Krjtfo\no3NoEzvSFXYLZc5vNLaUOij/n6gCKAiOIjD5qONU6HOF/mzF1s+78l1PWDzhJR/p\nGDskSJl/Z2IxUFdeSgrFj+5hEifQgV2F+Kqtc6qQZTHJ9rOeYJaXmUb4nRV5Ylbi\nxYUAaVvJcadgG5GGths9WeCE1Z+qZJ6n4mnbQ1hYLG25IZVgxAbYQ0ARZPc4Fj39\nx/dKHNxaV/dzXCOsmb15aBS89WtU/nS9vAcQNaYT1bLXM3t7R9Gax+SBKWisUD6v\nW6DGtd09T7GOnYtg1oSn/dModUVcRD4EK5RFlCVHAoIBAFlwqVsvwXMEyrm6OrsH\nwq5d6ia++e9eZPulEBC0rxmeRKlzmH2FXT8mlq6X9wCwN4xe3IutQgDxI8Bu3fCE\niQ8pM1gb06yj40kamVO3kr5qSByTq9ndDGaIdRSzBG9thidXP4dCX+v9KkJviLTP\nj8fYwmbUG5Ep6cTY+YWVnzAKoeHaZ0fV0OioRMHX6l5QrSjmt/GFkhmCHjRAkEOz\niZ8rlpgPhD1xpdpxEJHFsocCFE56EvViwmUxjE3He4NN6DE4maoseWAP4Ug6RW7n\nUIphKq6mj7/Ywhm1IVNDuB++/6qgMfE0T1PyZDqquyYS/Lh7p0LZcY3G+zUYva5X\nrBMCggEBAJnMC3u0MHR+vhVDdJCpN7o+cRPbQjGYJlADgAdPZmDMaxwP4xT011Vk\nOnDiL+hzm/EZxGC6wQcuiSKdRor0r9e7d9i9gWLdNseZBzC3IsBXPydOnzacIxJk\nr3J+2tlVgH8GAlZN5cC5YuYvfFDILF5l++SsmbbwjvFpWkdlV8W0hK/c/OIKLqMv\ndH4gi2IJlQD2Fv+Ex8TBwWKP/KmQuhnjdKyLBqGy86ziiOJLdNWLX6EKM/JvKXoz\ngdTZkeSd1kJtJW+Fast5EcMbHkaZj/rxqaLu5G4vlq7S4v9NlSRh7AHB/Lks8moY\ne2Elbg7kS6L/dhXYuUySrBjRg0yCTvQ=\n-----END PRIVATE KEY-----\n" +} \ No newline at end of file From 65959c38d41cc708d49e0a07e2b53e488826c852 Mon Sep 17 00:00:00 2001 From: Fanis Zinnurov <131813746+qobz1e@users.noreply.github.com> Date: Wed, 11 Mar 2026 07:01:08 +0000 Subject: [PATCH 2/3] Lab04 Pulumi part --- labs/app_python/pulumi/.gitignore | 2 ++ labs/app_python/pulumi/Pulumi.dev.yaml | 6 +++++ labs/app_python/pulumi/Pulumi.yaml | 10 ++++++++ labs/app_python/pulumi/__main__.py | 32 +++++++++++++++++++++++++ labs/app_python/pulumi/requirements.txt | 2 ++ 5 files changed, 52 insertions(+) create mode 100644 labs/app_python/pulumi/.gitignore create mode 100644 labs/app_python/pulumi/Pulumi.dev.yaml create mode 100644 labs/app_python/pulumi/Pulumi.yaml create mode 100644 labs/app_python/pulumi/__main__.py create mode 100644 labs/app_python/pulumi/requirements.txt diff --git a/labs/app_python/pulumi/.gitignore b/labs/app_python/pulumi/.gitignore new file mode 100644 index 0000000000..a3807e5bdb --- /dev/null +++ b/labs/app_python/pulumi/.gitignore @@ -0,0 +1,2 @@ +*.pyc +venv/ diff --git a/labs/app_python/pulumi/Pulumi.dev.yaml b/labs/app_python/pulumi/Pulumi.dev.yaml new file mode 100644 index 0000000000..3fc954d2fc --- /dev/null +++ b/labs/app_python/pulumi/Pulumi.dev.yaml @@ -0,0 +1,6 @@ +encryptionsalt: v1:VOWYF2ib5ug=:v1:BMl6B+O3G1V2TCs2:j4xsbIEdJB7nG4SAFJrtGpT6EFZLsw== +config: + yandex:cloudId: b1gv84qp02od589u3le0 + yandex:folderId: b1g9bh9kbc2skuhht2de + yandex:zone: ru-central1-a + yandex:serviceAccountKeyFile: /workspaces/DevOps-Core-Course/labs/yc-key.json diff --git a/labs/app_python/pulumi/Pulumi.yaml b/labs/app_python/pulumi/Pulumi.yaml new file mode 100644 index 0000000000..9105928901 --- /dev/null +++ b/labs/app_python/pulumi/Pulumi.yaml @@ -0,0 +1,10 @@ +name: app-python +description: lab04 pulumi part +runtime: + name: python + options: + toolchain: pip +config: + pulumi:tags: + value: + pulumi:template: python diff --git a/labs/app_python/pulumi/__main__.py b/labs/app_python/pulumi/__main__.py new file mode 100644 index 0000000000..0637b0ec13 --- /dev/null +++ b/labs/app_python/pulumi/__main__.py @@ -0,0 +1,32 @@ +import pulumi +import pulumi_yandex as yandex + +network = yandex.VpcNetwork("lab-network") + +subnet = yandex.VpcSubnet( + "lab-subnet", + network_id=network.id, + zone="ru-central1-a", + v4_cidr_blocks=["10.0.0.0/24"] +) + +vm = yandex.ComputeInstance( + "lab-vm", + resources={ + "cores": 2, + "memory": 1, + "core_fraction": 20 + }, + boot_disk={ + "initialize_params": { + "image_id": "fd80qm01ah03dkqb14lc", + "size": 30 + } + }, + network_interfaces=[{ + "subnet_id": subnet.id, + "nat": True + }] +) + +pulumi.export("public_ip", vm.network_interfaces[0].nat_ip_address) \ No newline at end of file diff --git a/labs/app_python/pulumi/requirements.txt b/labs/app_python/pulumi/requirements.txt new file mode 100644 index 0000000000..ded3a4e88d --- /dev/null +++ b/labs/app_python/pulumi/requirements.txt @@ -0,0 +1,2 @@ +pulumi>=3.0.0,<4.0.0 +pulumi-yandex \ No newline at end of file From 741e49a3f1bdccf2f464fd4d6d365a6ca34460c1 Mon Sep 17 00:00:00 2001 From: Fanis Zinnurov <131813746+qobz1e@users.noreply.github.com> Date: Wed, 11 Mar 2026 07:05:08 +0000 Subject: [PATCH 3/3] remove cloud credentials --- labs/authorized_key.json | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 labs/authorized_key.json diff --git a/labs/authorized_key.json b/labs/authorized_key.json deleted file mode 100644 index 1760d07804..0000000000 --- a/labs/authorized_key.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "id": "ajeldc1qp3hrg70bvsa0", - "service_account_id": "aje15t05ldfdfnb55dpf", - "created_at": "2026-03-04T20:34:01.78029446Z", - "key_algorithm": "RSA_4096", - "public_key": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqBASRQwDa+FTdD2QP93X\nKlH1whUBeD23QdLh4vLzb6BWyHtC8ZDt4oZ8kYCctvaGHK6m+OzC8PFwXnWj1ImE\nWnQsv7fJKw1XuJ5hqI+F51a/GzSJHppPZ08DNrwEe8chw6TquFZEuDw44tAD6Lr/\nkYpZs5FIsTgNqtQUzzy/5v+KC2sZkKNQotJb6gpumZXW6g6i9tsqtEpmUWezIqae\nMku6QI/Vkq+mR3SLepmD2Ue5B1jsJPlKl5LU/OC4BkchTAjR1qScxtt4e+5RQFar\nm+5FrSuTpgSkm67nLEN6rLQ8RG9NXnvLLSaXoTi8iEYNEO3CMK59U756lQpFb3YD\nO+qEtXc0qpoW6qWYs2DZP2itKyOZs1JfSiNUjhBNbcM901RglyUr3BQ+cevwi3ti\nAk2FqE3lwv2gSxfbpxPsVxjYU65eWEqRQybsPvL0CTb3/KoexNyIxDr1LcXBloF8\nHzbherXYKaZzXeBmI4PgOAbeFigQmFYhoDp9Ngyemmxke+Y5GA0LcoRXiYXpZvgk\n+faCAf+PBE6hfC6hbIPapVGpJGZwCJOF5B1iI5FDAFCklCFq37UmvDQ5P4IsoWP7\ny2EI6gOlyd6JXgMbPmrssrT7LowGBwrtl8szwCtUD9T3H937WOEcRVRIDnMBrAyl\nG4QFwwbYHl1uhVa08Tb6ucUCAwEAAQ==\n-----END PUBLIC KEY-----\n", - "private_key": "PLEASE DO NOT REMOVE THIS LINE! Yandex.Cloud SA Key ID \n-----BEGIN PRIVATE KEY-----\n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\ne2Elbg7kS6L/dhXYuUySrBjRg0yCTvQ=\n-----END PRIVATE KEY-----\n" -} \ No newline at end of file