{"id":20811303,"url":"https://github.com/express42/terraform_examples","last_synced_at":"2025-05-07T09:25:54.358Z","repository":{"id":66323633,"uuid":"65886615","full_name":"express42/terraform_examples","owner":"express42","description":"Express 42 terraform selectel examples","archived":false,"fork":false,"pushed_at":"2016-10-07T07:33:59.000Z","size":15,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-31T08:38:48.716Z","etag":null,"topics":["aws","iac","selectel","terraform"],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/express42.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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}},"created_at":"2016-08-17T07:38:54.000Z","updated_at":"2018-04-03T12:09:13.000Z","dependencies_parsed_at":"2023-03-13T20:29:55.204Z","dependency_job_id":null,"html_url":"https://github.com/express42/terraform_examples","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fterraform_examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fterraform_examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fterraform_examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fterraform_examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/express42","download_url":"https://codeload.github.com/express42/terraform_examples/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252849500,"owners_count":21813820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws","iac","selectel","terraform"],"created_at":"2024-11-17T20:40:02.012Z","updated_at":"2025-05-07T09:25:54.350Z","avatar_url":"https://github.com/express42.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Структура репозитория\n[Selectel](https://github.com/express42/terraform_examples/tree/master/selectel) - примеры окружений/проектов в облаке Selectel\n\n* [simple_tier](https://github.com/express42/terraform_examples/tree/master/selectel/simple_tier) - базовый пример, небольшо проекта, состояющего из app/db/web серверов, связанных в одну приватную сеть.\n\n#Известные проблемы\n[Пересоздание инстансов при изменении count переменной](https://github.com/hashicorp/terraform/issues/3449) - обратить внимание на [коммент](https://github.com/hashicorp/terraform/issues/3449#issuecomment-218955964). Ожидаемый результат - горизонтальное масштабирование\nПри помощи блока lifecycle можно решить данную проблему. В данной реализации мы используем шаблон для формирования имени инстансов. Терраформ не может посчитать при планировании данные из шаблона, поэтому форсирует пересоздание инстансов при увеличении счетчика count. ignore_changes со списком параметров, которые получают свои данные из шаблона, помогает избежать данной проблемы.\n\n#Направления для исследования\n* Поддержка нескольких keypair\n* Создание своего образа, возможность разворачиваться из него. Текущая реализация подключает блочный девайс boot типа, на который ставится ОС. Это долго.\n* Provisioning в terraform\n* Поддержка управления инфраструктуры через libvirt\n* Интеграция с vault provider [TBA](https://github.com/hashicorp/terraform/issues/2221)\n* Внедрение output vars для более информативного вывода\n\n\n#Особенности реализации в Selectel\n* Для всех проектов, [external-gateway](https://github.com/express42/terraform_examples/blob/master/simple_tier/networking.tf#L21) имеет один и тот же ID.\n\n* Дополнительно создаем [keypair](https://github.com/express42/terraform_examples/blob/master/simple_tier/security.tf), поскольку управление пользователями в панеле управления его не использует\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fterraform_examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpress42%2Fterraform_examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fterraform_examples/lists"}