{"id":337696,"date":"2022-08-30T21:00:19","date_gmt":"2022-08-30T21:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=337696"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=337696","title":{"rendered":"<span>Terraform \u0437\u0430 15 \u0434\u043d\u0435\u0439 (AWS\/Yandex cloud). \u0414\u0435\u043d\u044c 3: data source \u0438 outputs<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/984\/365\/389\/9843653899b735ae0e303e992c4b2bdf.jpg\" width=\"780\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/984\/365\/389\/9843653899b735ae0e303e992c4b2bdf.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h3>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/684964\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c 1: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/685062\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c 2: \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/685520\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c 3: Data source \u0438 outputs<\/a><\/p>\n<\/li>\n<\/ol>\n<h3>\u0421\u0441\u044b\u043b\u043a\u0438<\/h3>\n<p><em>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 VPN<\/em><\/p>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-welcome.html\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043c\u0430\u043d\u0434 CLI aws<\/a><\/p>\n<p><a href=\"https:\/\/cloud.yandex.ru\/docs\/cli\/cli-ref\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043c\u0430\u043d\u0434 CLI yc<\/a><\/p>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\" rel=\"noopener noreferrer nofollow\">Terraform provider aws<\/a><\/p>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\" rel=\"noopener noreferrer nofollow\">Terraform provider Yandex<\/a><\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 <strong>data source<\/strong> \u0438 <strong>output<\/strong>; \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435.<\/p>\n<h3>Data source<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437 \u0434\u043b\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cli (\u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438), \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e subnet_id \u0438 id \u043e\u0431\u0440\u0430\u0437\u0430 \u041e\u0421. \u0427\u0442\u043e \u0431\u044b \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0438 \u0447\u0442\u043e \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u041e\u0421) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <strong>data source.<\/strong> \u042d\u0442\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0438 \u043a\u0430\u043a \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 (\u0442\u043e\u0439 \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435)<\/p>\n<p>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0443 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430:<\/p>\n<pre><code class=\"json\">data \"&lt;\u041d\u0410\u0417\u0412\u0410\u041d\u0418\u0415>\" \"&lt;\u0418\u041c\u042f\u042e>\" { &lt;\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420> = &lt;\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0415> &lt;\u0414\u0420\u0423\u0413\u041e\u0419_\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420> = { &lt;\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420> = &lt;\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0415> } }<\/code><\/pre>\n<p><em>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0447\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u0438 \u0434\u0430\u0442\u0430 \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435, \u043d\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u043c\u044b \u0441\u0430\u043c\u0438, \u0430 \u0434\u0430\u0442\u0430 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/em><\/p>\n<h4>Yandex<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\/data-sources\/datasource_compute_image\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u041e\u0421 Yandex<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\/data-sources\/datasource_vpc_subnet\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 Yandex<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c id \u0434\u043b\u044f Ubuntu 22.04, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 family &#8212; <code>ubuntu-2204-lts<\/code>; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0435 id &#8212; <code>default-ru-central1-a<\/code><\/p>\n<p><em>yandex\/main.tf<\/em><\/p>\n<pre><code class=\"bash\">... data \"yandex_compute_image\" \"last_ubuntu\" {   family = \"ubuntu-2204-lts\"  # \u041e\u0421 (Ubuntu, 22.04 LTS) }  data \"yandex_vpc_subnet\" \"default_a\" {   name = \"default-ru-central1-a\"  # \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 } ... <\/code><\/pre>\n<h4>aws<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/data-sources\/ami\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u041e\u0421 aws<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/data-sources\/subnet\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 aws<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0421 aws \u0447\u0443\u0442\u044c \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435: \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f id \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 ubuntu \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c id \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 \u0438 \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 (\u044d\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 cli \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438):<\/p>\n<ul>\n<li>\n<p>owner_id &#8212; <strong>099720109477<\/strong><\/p>\n<\/li>\n<li>\n<p>name &#8212; <strong>ubuntu\/images\/hvm-ssd\/ubuntu-jammy-22.04-amd64-server<\/strong>*<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f: \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>most_recent = true<\/code><\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f id \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0443\u043a\u0430\u0436\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0437\u043e\u043d\u0443 (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 &#8212; \u201c\u0430\u201d)<\/p>\n<p>\u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f: \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>most_recent = true<\/code><\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f id \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0443\u043a\u0430\u0436\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0437\u043e\u043d\u0443 (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 &#8212; \u201c\u0430\u201d)<\/p>\n<p><em>aws\/main.tf<\/em><\/p>\n<pre><code class=\"json\">... data \"aws_ami\" \"last_ubuntu\" {   most_recent      = true # \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u0435\u0439\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f   owners           = [\"099720109477\"] # id \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043e\u0431\u0440\u0430\u0437\u0430    filter {     name   = \"name\" # \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 - \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u0438\u0441\u043a\u0430\u0442\u044c     values = [\"ubuntu\/images\/hvm-ssd\/ubuntu-jammy-22.04-amd64-server*\"] # \u0447\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u044c   } }  data \"aws_subnet\" \"default_a\" {   filter {     name   = \"availability-zone\"     values = [\"eu-north-1a\"]   } } ...<\/code><\/pre>\n<h3>Outputs \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0435\u0441\u0442\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0430. \u041d\u043e, \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u0445 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043c\u044b \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0438\u0445 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>output.<\/strong><\/p>\n<p>\u0412\u044b\u0432\u043e\u0434\u044b (\u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0437 \u0442\u0430\u043a) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043d\u043e \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0432\u044b\u0432\u043e\u0434 id \u043e\u0431\u0440\u0430\u0437\u0430 \u041e\u0421 \u0438 id \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c ip \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u043d\u044f\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0427\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043a \u043d\u0438\u043c \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e:<\/em> <em>terraform \u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <\/em><strong><em>.tf<\/em><\/strong><em> \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u043a \u043e\u0434\u043d\u043e \u0446\u0435\u043b\u043e\u0435 &#8212; \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445, \u043a\u0430\u043a \u0432\u0430\u043c \u0443\u0433\u043e\u0434\u043d\u043e (\u043f\u043e \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0435 \u0432\u0430\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435).<\/em><\/p>\n<pre><code class=\"bash\">touch outputs.tf<\/code><\/pre>\n<h4>Yandex<\/h4>\n<p><em>yandex\/outputs.tf<\/em><\/p>\n<pre><code class=\"json\">output \"default_instance_public_ip\" {     value = yandex_compute_instance.default.network_interface[0].nat_ip_address }  output \"subnet_id\" {     value = data.yandex_vpc_subnet.default_a.subnet_id }  output \"last_ubuntu\" {     value = data.yandex_compute_image.last_ubuntu.id }<\/code><\/pre>\n<p><em>yandex\/main.tf<\/em><\/p>\n<pre><code class=\"json\">terraform {   required_providers {     yandex = {       source = \"yandex-cloud\/yandex\"     }   } }  provider \"yandex\" {   token     = \"...\" # OAuth-\u0442\u043e\u043a\u0435\u043d \u044f\u043d\u0434\u0435\u043a\u0441\u0430   cloud_id  = \"b1gos1rh49bip4rnmrmg\"   folder_id = \"b1gjju43i1pr11i5c4ic\"   zone      = \"ru-central1-a\" }   data \"yandex_compute_image\" \"last_ubuntu\" {   family = \"ubuntu-2204-lts\"  # \u041e\u0421 (Ubuntu, 22.04 LTS) }  data \"yandex_vpc_subnet\" \"default_a\" {   name = \"default-ru-central1-a\"  # \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 }   # \u0440\u0435\u0441\u0443\u0440\u0441 \"yandex_compute_instance\" \u0442.\u0435. \u0441\u0435\u0440\u0432\u0435\u0440 # Terraform \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0435\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \"yandex_compute_instance.default\" resource \"yandex_compute_instance\" \"default\" {    name = \"test-instance\" platform_id = \"standard-v1\" # \u0442\u0438\u043f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (Intel Broadwell)    resources {     core_fraction = 5 # \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u044f vCPU     cores  = 2 # vCPU     memory = 1 # RAM   }    boot_disk {     initialize_params {       image_id = data.yandex_compute_image.last_ubuntu.id     }   }    network_interface {     subnet_id = data.yandex_vpc_subnet.default_a.subnet_id     nat = true # \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 ip   } }<\/code><\/pre>\n<h4>aws<\/h4>\n<p><em>aws\/outputs.tf<\/em><\/p>\n<pre><code class=\"json\">output \"default_instance_public_ip\" {     value = aws_instance.default.public_ip }  output \"subnet_id\" {     value = data.aws_subnet.default_a.id }  output \"last_ubuntu\" {   value = data.aws_ami.last_ubuntu.id }<\/code><\/pre>\n<p><em>aws\/main.tf<\/em><\/p>\n<pre><code class=\"json\">provider \"aws\" {   access_key = \"AK...\"   secret_key = \"2X...\"   region = \"eu-north-1\" }  data \"aws_ami\" \"last_ubuntu\" {   most_recent      = true   owners           = [\"099720109477\"]    filter {     name   = \"name\"     values = [\"ubuntu\/images\/hvm-ssd\/ubuntu-jammy-22.04-amd64-server*\"]   } }  data \"aws_subnet\" \"default_a\" {   filter {     name   = \"availability-zone\"     values = [\"eu-north-1a\"]   } }  #\u0440\u0435\u0441\u0443\u0440\u0441 \"aws_instance\" \u0442.\u0435. \u0441\u0435\u0440\u0432\u0435\u0440 #terraform \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0435\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \"aws_instance.default\" resource \"aws_instance\" \"default\" {   ami           = data.aws_ami.last_ubuntu.id # \u041e\u0421 (Ubuntu, 22.04 LTS)   instance_type = \"t3.micro\" # \u0442\u0438\u043f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u043c\u0430\u0448\u0438\u043d\u044b (CPU \u0438 RAM) subnet_id = data.aws_subnet.default_a.id # \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439   associate_public_ip_address = true # \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 ip tags = {     Name = \"test-instance\" } }<\/code><\/pre>\n<h3>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 <code>terraform apply<\/code> \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"json\">Outputs:  # yandex default_instance_public_ip = \"51.250.95.35\" last_ubuntu = \"fd8v0s6adqu3ui3rsuap\" subnet_id = \"e9bdgo95ucmut6r7pioq\"  # aws default_instance_public_ip = \"16.16.64.183\" last_ubuntu = \"ami-0a2b8744b4fe77f92\" subnet_id = \"subnet-82b67deb\"<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>plan<\/code> (\u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 <code>apply<\/code> \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c), \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"json\">Changes to Outputs:  # yandex   + default_instance_public_ip = (known after apply)   + last_ubuntu                = \"fd8v0s6adqu3ui3rsuap\"   + subnet_id                  = \"e9bdgo95ucmut6r7pioq\"  # aws + default_instance_public_ip = (known after apply)   + last_ubuntu                = \"ami-0a2b8744b4fe77f92\"   + subnet_id                  = \"subnet-82b67deb\"<\/code><\/pre>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u043d\u0430\u0447\u0430\u043b\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438: <strong>data source<\/strong> \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0449\u0435 \u0434\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435: <strong>last_ubuntu<\/strong> \u0438 <strong>subnet_id;<\/strong> \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <strong>default_instance_public_ip,<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443\u0437\u043d\u0430\u0435\u043c \u043c\u044b \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 <code>apply.<\/code><\/p>\n<h3>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/h3>\n<p>\u0414\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0441 \u043d\u0443\u043b\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441 ssh \u043a\u043b\u044e\u0447\u043e\u043c, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 terraform.<\/p>\n<p>\u0427\u0442\u043e \u0431\u044b \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0444\u0430\u0439\u043b (\u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0438 \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f), \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>file()<\/code> \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043b\u044e\u0431\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<h4>Yandex<\/h4>\n<p>\u0412 \u042f\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f ssh \u043a\u043b\u044e\u0447\u0430 \u043d\u0443\u0436\u043d\u0430 <a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\/data-sources\/datasource_compute_instance#metadata\" rel=\"noopener noreferrer nofollow\"><strong>metadata<\/strong><\/a>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u044e\u0447 \u0434\u0430\u0441\u0442 \u0434\u043e\u0441\u0442\u0443\u043f: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <em>ubuntu<\/em> \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p><em>yandex\/main.tf<\/em><\/p>\n<pre><code class=\"json\">... resource \"yandex_compute_instance\" \"default\" {    name = \"test-instance\"   ...   metadata = {     ssh-keys = \"ubuntu:${file(\"~\/.ssh\/id_rsa.pub\")}\"   } }<\/code><\/pre>\n<h4>aws<\/h4>\n<p>\u0412 aws \u0432\u0441\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 &#8212; <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-key-pairs.html\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442 \u043a\u043b\u044e\u0447 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c<\/a>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0440\u0435\u0441\u0443\u0440\u0441: <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/key_pair\" rel=\"noopener noreferrer nofollow\">aws_key_pair<\/a> \u0438 \u0435\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043b\u044f <code>aws_instance<\/code>.<\/p>\n<p><em>aws\/main.tf<\/em><\/p>\n<pre><code class=\"json\">... resource \"aws_instance\" \"default\" {   ...   key_name = aws_key_pair.test_key.key_name }  resource \"aws_key_pair\" \"test_key\" {   key_name   = \"test-key\"   public_key = \"${file(\"~\/.ssh\/id_rsa.pub\")}\" }<\/code><\/pre>\n<h4>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/h4>\n<p><code>terraform plan<\/code> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c \u043f\u043b\u0430\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 terrafrom:<\/p>\n<h4>Yandex<\/h4>\n<p>\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044f\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0431\u0435\u0437 ssh \u043a\u043b\u044e\u0447\u0430 (\u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0443 \u043d\u0430\u0441 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e), \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c, terraform \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u0443. <strong>~ update in-place<\/strong> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"json\">Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:   ~ update in-place  Terraform will perform the following actions:    # yandex_compute_instance.default will be updated in-place   ~ resource \"yandex_compute_instance\" \"default\" {         id                        = \"fhm3kp62eahete5kofke\"       ~ metadata                  = {           + \"ssh-keys\" = &lt;&lt;-EOT ...<\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u0443, \u0447\u0442\u043e \u0431\u044b ssh \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u043e\u043b\u044c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c <a href=\"https:\/\/www.terraform.io\/cli\/state\/taint\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <\/a><code>replace<\/code> \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <code>apply -replace=yandex_compute_instance.default.<\/code> \u041c\u044b \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c. Terraform \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 &#8212; \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0432 <strong>Changes to Outputs.<\/strong><\/p>\n<pre><code class=\"json\">... # yandex_compute_instance.default will be replaced, as requested -\/+ resource \"yandex_compute_instance\" \"default\" { ... Changes to Outputs:   ~ default_instance_public_ip = \"51.250.95.35\" -> (known after apply) ...<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e ssh.<\/p>\n<pre><code class=\"json\">yc compute instance list +----------------------+---------------+---------------+---------+--------------+-------------+ |          ID          |     NAME      |    ZONE ID    | STATUS  | EXTERNAL IP  | INTERNAL IP | +----------------------+---------------+---------------+---------+--------------+-------------+ | fhmpng88a49dihen141a | test-instance | ru-central1-a | RUNNING | 62.84.117.26 | 10.128.0.17 | +----------------------+---------------+---------------+---------+--------------+-------------+ <\/code><\/pre>\n<h4>aws<\/h4>\n<p>\u0412 aws \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f &#8212; terraform \u0441\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442: \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <strong>key_name &#8212;<\/strong> # <strong>forces replacement<\/strong> \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"json\">Terraform will perform the following actions:  # aws_instance.default must be replaced -\/+ resource \"aws_instance\" \"default\" {      ...       + key_name                           = \"test-key\" # forces replacement  ... # aws_key_pair.test_key will be created + resource \"aws_key_pair\" \"test_key\" { ... Changes to Outputs:   ~ default_instance_public_ip = \"16.16.64.183\" -> (known after apply) ...<\/code><\/pre>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0430 aws &#8212; \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c <a href=\"https:\/\/docs.aws.amazon.com\/vpc\/latest\/userguide\/VPC_SecurityGroups.html\" rel=\"noopener noreferrer nofollow\"><strong>security group<\/strong><\/a> (\u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439). \u041d\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043e\u0437\u0434\u0430\u043d.<\/p>\n<pre><code class=\"json\">aws ec2 describe-instances \\ --region eu-north-1 \\ --query \"Reservations[*].Instances[*].{Instance:InstanceId,KeyName:KeyName,Address:PublicIpAddress,Name:Tags[?Key=='Name']|[0].Value}\" \\ --output table ---------------------------------------------------------------------------- |                             DescribeInstances                            | +--------------+-----------------------+-----------------+-----------------+ |    Address   |       Instance        |     KeyName     |      Name       | +--------------+-----------------------+-----------------+-----------------+ |  13.49.23.154|  i-075afc37d4775ccb0  |  test-key       |  test-instance  | +--------------+-----------------------+-----------------+-----------------+  aws ec2 describe-key-pairs \\ --region eu-north-1 \\ --query=\"KeyPairs[*].{KeyName:KeyName,CreateTime:CreateTime}\" \\ --output table ------------------------------------------------- |               DescribeKeyPairs                | +----------------------------+------------------+ |         CreateTime         |     KeyName      | +----------------------------+------------------+ |  2022-08-28T11:07:42+00:00 |  test-key        | +----------------------------+------------------+<\/code><\/pre>\n<p>\u0423\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u043c \u0432\u0441\u0435 c <code>terraform destroy<\/code><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>Data source \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. Outputs \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438, \u043d\u043e \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041b\u044e\u0431\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 <a href=\"mailto:v.valentinvolkov@gmail.com\" rel=\"noopener noreferrer nofollow\"><strong><em>v.valentinvolkov@gmail.com<\/em><\/strong><\/a><strong><em>.<\/em><\/strong> \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043f\u043e\u043c\u043e\u0447\u044c!<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/685520\/\"> https:\/\/habr.com\/ru\/post\/685520\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h3>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h3>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/684964\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c 1: \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/685062\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c 2: \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/685520\/\" rel=\"noopener noreferrer nofollow\">\u0414\u0435\u043d\u044c 3: Data source \u0438 outputs<\/a><\/p>\n<\/li>\n<\/ol>\n<h3>\u0421\u0441\u044b\u043b\u043a\u0438<\/h3>\n<p><em>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 VPN<\/em><\/p>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-welcome.html\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043c\u0430\u043d\u0434 CLI aws<\/a><\/p>\n<p><a href=\"https:\/\/cloud.yandex.ru\/docs\/cli\/cli-ref\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043a\u043e\u043c\u0430\u043d\u0434 CLI yc<\/a><\/p>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\" rel=\"noopener noreferrer nofollow\">Terraform provider aws<\/a><\/p>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\" rel=\"noopener noreferrer nofollow\">Terraform provider Yandex<\/a><\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 <strong>data source<\/strong> \u0438 <strong>output<\/strong>; \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435.<\/p>\n<h3>Data source<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437 \u0434\u043b\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cli (\u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438), \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e subnet_id \u0438 id \u043e\u0431\u0440\u0430\u0437\u0430 \u041e\u0421. \u0427\u0442\u043e \u0431\u044b \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0438 \u0447\u0442\u043e \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u041e\u0421) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 <strong>data source.<\/strong> \u042d\u0442\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0438 \u043a\u0430\u043a \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 (\u0442\u043e\u0439 \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435)<\/p>\n<p>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0443 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430:<\/p>\n<pre><code class=\"json\">data \"&lt;\u041d\u0410\u0417\u0412\u0410\u041d\u0418\u0415>\" \"&lt;\u0418\u041c\u042f\u042e>\" { &lt;\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420> = &lt;\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0415> &lt;\u0414\u0420\u0423\u0413\u041e\u0419_\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420> = { &lt;\u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420> = &lt;\u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0415> } }<\/code><\/pre>\n<p><em>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0447\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u0438 \u0434\u0430\u0442\u0430 \u044d\u0442\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e\u0436\u0435, \u043d\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u043c\u044b \u0441\u0430\u043c\u0438, \u0430 \u0434\u0430\u0442\u0430 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/em><\/p>\n<h4>Yandex<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\/data-sources\/datasource_compute_image\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u041e\u0421 Yandex<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\/data-sources\/datasource_vpc_subnet\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 Yandex<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c id \u0434\u043b\u044f Ubuntu 22.04, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 family &#8212; <code>ubuntu-2204-lts<\/code>; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0435 id &#8212; <code>default-ru-central1-a<\/code><\/p>\n<p><em>yandex\/main.tf<\/em><\/p>\n<pre><code class=\"bash\">... data \"yandex_compute_image\" \"last_ubuntu\" {   family = \"ubuntu-2204-lts\"  # \u041e\u0421 (Ubuntu, 22.04 LTS) }  data \"yandex_vpc_subnet\" \"default_a\" {   name = \"default-ru-central1-a\"  # \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 } ... <\/code><\/pre>\n<h4>aws<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/data-sources\/ami\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u041e\u0421 aws<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/data-sources\/subnet\" rel=\"noopener noreferrer nofollow\">data source \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 aws<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0421 aws \u0447\u0443\u0442\u044c \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435: \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f id \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 ubuntu \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c id \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 \u0438 \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 (\u044d\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 cli \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438):<\/p>\n<ul>\n<li>\n<p>owner_id &#8212; <strong>099720109477<\/strong><\/p>\n<\/li>\n<li>\n<p>name &#8212; <strong>ubuntu\/images\/hvm-ssd\/ubuntu-jammy-22.04-amd64-server<\/strong>*<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f: \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>most_recent = true<\/code><\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f id \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0443\u043a\u0430\u0436\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0437\u043e\u043d\u0443 (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 &#8212; \u201c\u0430\u201d)<\/p>\n<p>\u0417\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f: \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>most_recent = true<\/code><\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f id \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0443\u043a\u0430\u0436\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u0437\u043e\u043d\u0443 (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0432 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 &#8212; \u201c\u0430\u201d)<\/p>\n<p><em>aws\/main.tf<\/em><\/p>\n<pre><code class=\"json\">... data \"aws_ami\" \"last_ubuntu\" {   most_recent      = true # \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u0435\u0439\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f   owners           = [\"099720109477\"] # id \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043e\u0431\u0440\u0430\u0437\u0430    filter {     name   = \"name\" # \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 - \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u0438\u0441\u043a\u0430\u0442\u044c     values = [\"ubuntu\/images\/hvm-ssd\/ubuntu-jammy-22.04-amd64-server*\"] # \u0447\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u044c   } }  data \"aws_subnet\" \"default_a\" {   filter {     name   = \"availability-zone\"     values = [\"eu-north-1a\"]   } } ...<\/code><\/pre>\n<h3>Outputs \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0435\u0441\u0442\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0430. \u041d\u043e, \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u0445 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043c\u044b \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0438\u0445 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>output.<\/strong><\/p>\n<p>\u0412\u044b\u0432\u043e\u0434\u044b (\u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0437 \u0442\u0430\u043a) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043d\u043e \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0432\u044b\u0432\u043e\u0434 id \u043e\u0431\u0440\u0430\u0437\u0430 \u041e\u0421 \u0438 id \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c ip \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0434\u043d\u044f\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u0427\u0442\u043e \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043a \u043d\u0438\u043c \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e:<\/em> <em>terraform \u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c <\/em><strong><em>.tf<\/em><\/strong><em> \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u043a \u043e\u0434\u043d\u043e \u0446\u0435\u043b\u043e\u0435 &#8212; \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445, \u043a\u0430\u043a \u0432\u0430\u043c \u0443\u0433\u043e\u0434\u043d\u043e (\u043f\u043e \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0435 \u0432\u0430\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435).<\/em><\/p>\n<pre><code class=\"bash\">touch outputs.tf<\/code><\/pre>\n<h4>Yandex<\/h4>\n<p><em>yandex\/outputs.tf<\/em><\/p>\n<pre><code class=\"json\">output \"default_instance_public_ip\" {     value = yandex_compute_instance.default.network_interface[0].nat_ip_address }  output \"subnet_id\" {     value = data.yandex_vpc_subnet.default_a.subnet_id }  output \"last_ubuntu\" {     value = data.yandex_compute_image.last_ubuntu.id }<\/code><\/pre>\n<p><em>yandex\/main.tf<\/em><\/p>\n<pre><code class=\"json\">terraform {   required_providers {     yandex = {       source = \"yandex-cloud\/yandex\"     }   } }  provider \"yandex\" {   token     = \"...\" # OAuth-\u0442\u043e\u043a\u0435\u043d \u044f\u043d\u0434\u0435\u043a\u0441\u0430   cloud_id  = \"b1gos1rh49bip4rnmrmg\"   folder_id = \"b1gjju43i1pr11i5c4ic\"   zone      = \"ru-central1-a\" }   data \"yandex_compute_image\" \"last_ubuntu\" {   family = \"ubuntu-2204-lts\"  # \u041e\u0421 (Ubuntu, 22.04 LTS) }  data \"yandex_vpc_subnet\" \"default_a\" {   name = \"default-ru-central1-a\"  # \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 }   # \u0440\u0435\u0441\u0443\u0440\u0441 \"yandex_compute_instance\" \u0442.\u0435. \u0441\u0435\u0440\u0432\u0435\u0440 # Terraform \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0435\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \"yandex_compute_instance.default\" resource \"yandex_compute_instance\" \"default\" {    name = \"test-instance\" platform_id = \"standard-v1\" # \u0442\u0438\u043f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (Intel Broadwell)    resources {     core_fraction = 5 # \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u044f vCPU     cores  = 2 # vCPU     memory = 1 # RAM   }    boot_disk {     initialize_params {       image_id = data.yandex_compute_image.last_ubuntu.id     }   }    network_interface {     subnet_id = data.yandex_vpc_subnet.default_a.subnet_id     nat = true # \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 ip   } }<\/code><\/pre>\n<h4>aws<\/h4>\n<p><em>aws\/outputs.tf<\/em><\/p>\n<pre><code class=\"json\">output \"default_instance_public_ip\" {     value = aws_instance.default.public_ip }  output \"subnet_id\" {     value = data.aws_subnet.default_a.id }  output \"last_ubuntu\" {   value = data.aws_ami.last_ubuntu.id }<\/code><\/pre>\n<p><em>aws\/main.tf<\/em><\/p>\n<pre><code class=\"json\">provider \"aws\" {   access_key = \"AK...\"   secret_key = \"2X...\"   region = \"eu-north-1\" }  data \"aws_ami\" \"last_ubuntu\" {   most_recent      = true   owners           = [\"099720109477\"]    filter {     name   = \"name\"     values = [\"ubuntu\/images\/hvm-ssd\/ubuntu-jammy-22.04-amd64-server*\"]   } }  data \"aws_subnet\" \"default_a\" {   filter {     name   = \"availability-zone\"     values = [\"eu-north-1a\"]   } }  #\u0440\u0435\u0441\u0443\u0440\u0441 \"aws_instance\" \u0442.\u0435. \u0441\u0435\u0440\u0432\u0435\u0440 #terraform \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0435\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \"aws_instance.default\" resource \"aws_instance\" \"default\" {   ami           = data.aws_ami.last_ubuntu.id # \u041e\u0421 (Ubuntu, 22.04 LTS)   instance_type = \"t3.micro\" # \u0442\u0438\u043f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u043c\u0430\u0448\u0438\u043d\u044b (CPU \u0438 RAM) subnet_id = data.aws_subnet.default_a.id # \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439   associate_public_ip_address = true # \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 ip tags = {     Name = \"test-instance\" } }<\/code><\/pre>\n<h3>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 <code>terraform apply<\/code> \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"json\">Outputs:  # yandex default_instance_public_ip = \"51.250.95.35\" last_ubuntu = \"fd8v0s6adqu3ui3rsuap\" subnet_id = \"e9bdgo95ucmut6r7pioq\"  # aws default_instance_public_ip = \"16.16.64.183\" last_ubuntu = \"ami-0a2b8744b4fe77f92\" subnet_id = \"subnet-82b67deb\"<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>plan<\/code> (\u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 <code>apply<\/code> \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c), \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"json\">Changes to Outputs:  # yandex   + default_instance_public_ip = (known after apply)   + last_ubuntu                = \"fd8v0s6adqu3ui3rsuap\"   + subnet_id                  = \"e9bdgo95ucmut6r7pioq\"  # aws + default_instance_public_ip = (known after apply)   + last_ubuntu                = \"ami-0a2b8744b4fe77f92\"   + subnet_id                  = \"subnet-82b67deb\"<\/code><\/pre>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u043d\u0430\u0447\u0430\u043b\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438: <strong>data source<\/strong> \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0449\u0435 \u0434\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435: <strong>last_ubuntu<\/strong> \u0438 <strong>subnet_id;<\/strong> \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <strong>default_instance_public_ip,<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443\u0437\u043d\u0430\u0435\u043c \u043c\u044b \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 <code>apply.<\/code><\/p>\n<h3>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/h3>\n<p>\u0414\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0441 \u043d\u0443\u043b\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441 ssh \u043a\u043b\u044e\u0447\u043e\u043c, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 terraform.<\/p>\n<p>\u0427\u0442\u043e \u0431\u044b \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0444\u0430\u0439\u043b (\u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0438 \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f), \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>file()<\/code> \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043b\u044e\u0431\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<h4>Yandex<\/h4>\n<p>\u0412 \u042f\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f ssh \u043a\u043b\u044e\u0447\u0430 \u043d\u0443\u0436\u043d\u0430 <a href=\"https:\/\/registry.terraform.io\/providers\/yandex-cloud\/yandex\/latest\/docs\/data-sources\/datasource_compute_instance#metadata\" rel=\"noopener noreferrer nofollow\"><strong>metadata<\/strong><\/a>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u044e\u0447 \u0434\u0430\u0441\u0442 \u0434\u043e\u0441\u0442\u0443\u043f: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <em>ubuntu<\/em> \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p><em>yandex\/main.tf<\/em><\/p>\n<pre><code class=\"json\">... resource \"yandex_compute_instance\" \"default\" {    name = \"test-instance\"   ...   metadata = {     ssh-keys = \"ubuntu:${file(\"~\/.ssh\/id_rsa.pub\")}\"   } }<\/code><\/pre>\n<h4>aws<\/h4>\n<p>\u0412 aws \u0432\u0441\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 &#8212; <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ec2-key-pairs.html\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442 \u043a\u043b\u044e\u0447 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c<\/a>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0440\u0435\u0441\u0443\u0440\u0441: <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/key_pair\" rel=\"noopener noreferrer nofollow\">aws_key_pair<\/a> \u0438 \u0435\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043b\u044f <code>aws_instance<\/code>.<\/p>\n<p><em>aws\/main.tf<\/em><\/p>\n<pre><code class=\"json\">... resource \"aws_instance\" \"default\" {   ...   key_name = aws_key_pair.test_key.key_name }  resource \"aws_key_pair\" \"test_key\" {   key_name   = \"test-key\"   public_key = \"${file(\"~\/.ssh\/id_rsa.pub\")}\" }<\/code><\/pre>\n<h4>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/h4>\n<p><code>terraform plan<\/code> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c \u043f\u043b\u0430\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 terrafrom:<\/p>\n<h4>Yandex<\/h4>\n<p>\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044f\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0431\u0435\u0437 ssh \u043a\u043b\u044e\u0447\u0430 (\u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0443 \u043d\u0430\u0441 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e), \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c, terraform \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u0443. <strong>~ update in-place<\/strong> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"json\">Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:   ~ update in-place  Terraform will perform the following actions:    # yandex_compute_instance.default will be updated in-place   ~ resource \"yandex_compute_instance\" \"default\" {         id                        = \"fhm3kp62eahete5kofke\"       ~ metadata                  = {           + \"ssh-keys\" = &lt;&lt;-EOT ...<\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u0443, \u0447\u0442\u043e \u0431\u044b ssh \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u043e\u043b\u044c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c <a href=\"https:\/\/www.terraform.io\/cli\/state\/taint\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <\/a><code>replace<\/code> \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:  <code>apply -replace=yandex_compute_instance.default.<\/code> \u041c\u044b \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c. Terraform \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 &#8212; \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0432 <strong>Changes to Outputs.<\/strong><\/p>\n<pre><code class=\"json\">... # yandex_compute_instance.default will be replaced, as requested -\/+ resource \"yandex_compute_instance\" \"default\" { ... Changes to Outputs:   ~ default_instance_public_ip = \"51.250.95.35\" -> (known after apply) ...<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e ssh.<\/p>\n<pre><code class=\"json\">yc compute instance list +----------------------+---------------+---------------+---------+--------------+-------------+ |          ID          |     NAME      |    ZONE ID    | STATUS  | EXTERNAL IP  | INTERNAL IP | +----------------------+---------------+---------------+---------+--------------+-------------+ | fhmpng88a49dihen141a | test-instance | ru-central1-a | RUNNING | 62.84.117.26 | 10.128.0.17 |<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-337696","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/337696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=337696"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/337696\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=337696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=337696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=337696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}