# Репозиторий с выполненным заданием 3

## Задание 4 - Использование remote state

Бывает так, что одни люди поддерживают модуль, а пользуются им другие. И тогда создается отдельный стейт для разворачивания модуля. Давайте выделим создание сервиса в отдельный стейт. С помощью remote_state мы возьмем некоторые необходимые данные из корневого стейта.

- Выделите создание сервиса в отдельный стейт, переместив файлы services.tf и outputs.tf в новую директорию — services, рядом с директориями infra и module_service. Скопируйте переменную `aws_region` из variables.tf. Также скопируйте в нее файл providers.tf и versions.tf, заменив в последнем переменную `key` стейта.

- Создайте файл data.tf и объявите дата-ресурс [terraform_remote_state](https://www.terraform.io/docs/language/state/remote-state-data.html), указав в качестве backend "s3", а внутри config указав bucket = имя созданного бакета, key = ключ корневого стейта (infra.tfstate), region = регион, который используется (us-east-1).

- Для использования переменных их требуется передать в output корневого стейта. Объявите output переменные в корневом модуле infra, как пример:

```hcl
output "ecs_cluster_id" {
  value = aws_ecs_cluster.main.id
}

...
```

- В объявлении сервиса замените ссылки на ресурсы на `data.terraform_remote_state.infra.outputs.переменная`

- Примените изменения сначала на инфраструктурном стейте (infra), а после на созданном (services), чтобы сначала создать переменные, а потом их взять.

infra: 6 ресурсов удалится, services: 6 ресурсов создастся.
