{"id":23564158,"url":"https://github.com/selectel/selectel-infra-examples","last_synced_at":"2026-01-23T07:06:50.250Z","repository":{"id":214474643,"uuid":"736580022","full_name":"selectel/selectel-infra-examples","owner":"selectel","description":"Selectel some examples of terraform modules","archived":false,"fork":false,"pushed_at":"2025-06-27T09:18:41.000Z","size":35410,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-27T10:28:13.886Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selectel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-28T09:39:34.000Z","updated_at":"2025-06-20T11:47:47.000Z","dependencies_parsed_at":"2024-02-13T14:25:12.718Z","dependency_job_id":"ddb57fe2-85d2-4c6f-ad3d-553362e77bcd","html_url":"https://github.com/selectel/selectel-infra-examples","commit_stats":null,"previous_names":["selectel/selectel-infra-examples"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/selectel/selectel-infra-examples","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fselectel-infra-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fselectel-infra-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fselectel-infra-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fselectel-infra-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selectel","download_url":"https://codeload.github.com/selectel/selectel-infra-examples/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selectel%2Fselectel-infra-examples/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28682302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T05:48:07.525Z","status":"ssl_error","status_checked_at":"2026-01-23T05:48:07.129Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-26T17:13:11.459Z","updated_at":"2026-01-23T07:06:50.244Z","avatar_url":"https://github.com/selectel.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Selectel Terraform Modules Example\n\n|                   | Pipeline Status                                                                                                                                                                         | Version                                                                                                                       |\n|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|\n| Terraform Latest | [![](https://github.com/selectel/selectel-infra-examples/actions/workflows/modules.yml/badge.svg)](https://github.com/selectel/selectel-infra-examples/actions/workflows/modules.yml)   | [![version](https://img.shields.io/badge/Terraform-Latest-green.svg)](https://github.com/hashicorp/terraform/releases/latest) |\n| OpenTofu Latest   | [![](https://github.com/selectel/selectel-infra-examples/actions/workflows/opentofu.yml/badge.svg)](https://github.com/selectel/selectel-infra-examples/actions/workflows/opentofu.yml) | [![version](https://img.shields.io/badge/OpenTofu-Latest-green.svg)](https://github.com/opentofu/opentofu/releases/latest)    |\n\n- [Selectel Terraform Modules Example](#selectel-terraform-modules-example)\n  - [Использование](#использование)\n    - [1. .terraformrc/.tofurc](#1-terraformrctofurc)\n    - [2. State File](#2-state-file)\n    - [3. Init](#3-init)\n  - [Пример использования](#пример-использования)\n  - [Структура репозитория](#структура-репозитория)\n    - [Modules](#modules)\n\nВ [данном репозитории](https://github.com/selectel/selectel-infra-examples) находятся примеры Terraform модулей, используемых для создания инфраструктуры в \nоблаке Selectel. Также в репозитории еженедельно запускаются пайплайны с тестовым созданием ресурсов с помощью \n**Terraform** и **OpenTofu**.\n\n**P.S.** Если вы не нашли пример для создания определенного ресурса - можете оставить issue и мы примем во \nвнимание необходимость его добавления.\n\nПеред началом работы с облачными ресурсами Selectel через Terraform/OpenTofu рекомендуем ознакомиться с \n[документацией по провайдеру Selectel/OpenStack](https://docs.selectel.ru/terraform/).\n\n## Использование\n\n\u003e Все последующие команды terraform-cli могут быть заменены на opentofu.\n\u003e \n\u003e Убедитесь, что в вашем env нет лишних переменных вида \"OS_*\", их наличие повлияет на провайдер Openstack.\n\n### 1. .terraformrc/.tofurc\n\nДля доступа к Terraform Registry из РФ можно воспользоваться кеширующим прокси Selectel, для этого отредактируем \nфайл .terraformrc (или .tofurc для OpenTofu):\n\n```bash\ncat \u003c\u003cEOS \u003e\u003e $HOME/.terraformrc\nprovider_installation {\n    network_mirror {\n      url = \"https://tf-proxy.selectel.ru/mirror/v1/\"\n    }\n}\nEOS\n```\n\n### 2. State File\n\nПо умолчанию в репозитории стейт хранится в s3, для локального запуска потребуется изменить поле `backend` на \n`local` в файле [versions.tf](https://github.com/selectel/selectel-infra-examples/blob/main/versions.tf#L12):\n\n```terraform\nterraform {\n  backend \"local\" {}\n}\n```\n\nПример передачи `backend` для хранения стейта в S3:\n\n```terraform\nterraform {\n  backend \"s3\" {\n    bucket     = \"\u003cназвание бакета s3\u003e\"\n    key        = \"\u003cназвание стейт-файла\u003e.tfstate\"\n    access_key = \"\u003caccess_key\u003e\"\n    secret_key = \"\u003csecret_key\u003e\"\n    endpoints  = { s3 = \"https://s3.ru-1.storage.selcloud.ru\" }\n    region     = \"ru-1\"\n    \n    skip_region_validation      = true\n    skip_credentials_validation = true\n    skip_requesting_account_id  = true\n    skip_s3_checksum            = true\n    skip_metadata_api_check     = true\n  }\n}\n```\n\n### 3. Init\n\nДля начала работы необходимо создать в Панели Управления проект, в котором будут впоследствии создаваться ресурсы,\nа также сервисного пользователя с ролью Администратор проекта для вышеупомянутого проекта. Далее необходимо \nотредактировать `main.tf`, оставив в нём необходимые ресурсы, после чего:\n\n\n1. Инициализируем Terraform Backend командой:\n\n```bash\nterraform init\n```\n\n2. Для проверки вносимых изменений выполняем команду:\n\n```bash\nterraform plan\n```\n\n3. Для применения изменений выполняем команду:\n\n```bash\nterraform apply\n```\n\n## Пример использования\n\nВ репозитории можно найти пример использования модулей. В корне репозитория созданы `*.tf` файлы, которые можно \nиспользовать как пример вызова модулей.\n\nДля их использования достаточно перейти в корень репозитория и инициализировать Terraform:\n\n```bash\nterraform init\n```\n\nДалее можно скорректировать некоторые параметры в файле `main.tf`, которые передаются в модули, например, объём \nSFS, имя кластера и другие.\n\nЗатем необходимо задать переменные, в которых будут содержаться данные от аккаунта Selectel, в котором будет \nразвёрнута инфраструктура:\n\n- `selectel_domain_name` - ID Selectel-аккаунта;\n- `selectel_project_name` - название проекта;\n- `selectel_project_id` - ID проекта;\n- `selectel_user_name` - имя сервисного пользователя; \n- `selectel_user_id` - UID сервисного пользователя;\n- `selectel_user_password` - пароль сервисного пользователя.\n\nПеременные можно задать несколькими способами:\n\n- В качестве переменных окружения (для этого нужно добавить перед названием переменной `TF_VAR_`):\n\n```bash\nexport TF_VAR_selectel_domain_name=123123\nexport TF_VAR_selectel_project_name=Project\nexport TF_VAR_selectel_project_id=abcd1234abcd1234abcd1234abcd1234\nexport TF_VAR_selectel_user_name=foo\nexport TF_VAR_selectel_user_id=1234abcd1234abcd1234abcd1234abcd\nexport TF_VAR_selectel_user_password=bar\nterraform plan/apply\n```\n- Ввести вместе с командой `terraform plan/apply` с помощью параметра `-var`:\n\n```bash\nterraform plan/apply \\\n-var=\"selectel_domain_name=123123\" \\\n-var=\"selectel_project_name=Project\" \\\n-var=\"selectel_project_id=abcd1234abcd1234abcd1234abcd1234\" \\\n-var=\"selectel_user_name=foo\" \\\n-var=\"selectel_user_id=1234abcd1234abcd1234abcd1234abcd\" \\\n-var=\"selectel_user_password=bar\"\n```\n\n- Ввести с клавиатуры, если переменные не были заданы любым другим способом\n\nПосле успешного выполнения команды `terraform apply` в заданном проекте появятся указанные в `main.tf` ресурсы.\n\n## Структура репозитория\n\nРепозиторий включает в себя минимально необходимую структуру для запуска Terraform. В директории [modules](https://github.com/selectel/selectel-infra-examples/tree/main/modules) \nсобраны модули для создания различных компонентов в облаке Selectel.\n\n### Modules\n\n  * [craas](modules/craas) - создание [Container as a Service](https://selectel.ru/services/cloud/container-registry/)\n  * [flavor](modules/flavor) - создание flavor (тип инстанса)\n  * [floatingip](modules/floatingip) - создание плавающего ip адреса\n  * [image_datasource](modules/image_datasource) - считывание айдишника образа\n  * [keypair](modules/keypair) - создание ключевой пары для подключения по SSH\n  * [mks](modules/mks) - набор модулей для создания [Selectel Managed Kubernetes](https://selectel.ru/services/cloud/kubernetes/)\n    * [k8s-cluster](modules/mks/k8s-cluster) - создание master ноды k8s\n    * [k8s-cluster-standalone](modules/mks/k8s-cluster-standalone) - создание managed kubernetes кластера\n    * [k8s-nodegroup](modules/mks/k8s-nodegroup) - создание compute ноды k8s\n    * [k8s-nodegroup-gpu](modules/mks/k8s-nodegroup-gpu) - создание compute ноды с GPU k8s\n  * [nat](modules/nat) - создание nat сети\n  * [network](modules/network) - создание локальной сети\n  * [os_project_with_user](modules/os_project_with_user) - создание проекта в облаке Selectel\n  * [s3](modules/s3) - создание [объектного хранилища s3](https://selectel.ru/services/cloud/storage/)\n    * [s3-bucket](modules/s3-bucket) - создание s3 бакета\n    * [s3-credentials](modules/s3-credentioals) - создание s3 параметров авторизации\n  * [selectel-token](modules/selectel) - создание токена аккаунта Selectel\n  * [sfs](modules/sfs) - создание [файлового хранилища](https://selectel.ru/lab/file-storage/)\n  * [vm](modules/vm) - создание [виртуального облачного сервера](https://selectel.ru/services/cloud/servers/)\n  * [volume](modules/volume) - создание облачного диска\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselectel%2Fselectel-infra-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselectel%2Fselectel-infra-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselectel%2Fselectel-infra-examples/lists"}