description = "The port the database is listening on"
}
Выполните terraformapply еще раз, и в терминале должны появиться ваши выходные переменные:
$ terraform apply
(...)
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
address = tf-2016111123.cowu6mts6srx.us-east-2.rds.amazonaws.com
port = 3306
Теперь они хранятся и в состоянии Terraform для базы данных, которое находится в вашем бакете S3 в файле stage/data-stores/mysql/terraform.tfstate. Чтобы код вашего кластера веб-серверов прочитал содержимое этого файла состояния, добавьте в файл stage/services/webserver-cluster/main.tf источник данных terraform_remote_state:
data "terraform_remote_state" "db" {
backend = "s3"
config = {
bucket = "(YOUR_BUCKET_NAME)"
key = "stage/data-stores/mysql/terraform.tfstate"
region = "us-east-2"
}
}
Благодаря этому источнику данных код кластера веб-серверов считывает файл состояния из тех же бакета S3 и папки, где свое состояние хранит база данных (рис. 3.11).
Рис. 3.11. База данных записывает свое состояние в бакет S3
Важно понимать, что, как и все источники данных в Terraform, terraform_remote_state возвращает только доступную для чтения информацию. У вас нет никакой возможности поменять это состояние в коде кластера веб-серверов, поэтому то, что вы извлекаете состояние базы данных, не подвергает ее никакому риску.
Все выходные переменные БД хранятся в файле состояния, и вы можете считывать их из источника данных terraform_remote_state, используя ссылку на атрибут следующего вида:
data.terraform_remote_state.
Например, вот как можно обновить пользовательские данные веб-серверов кластера, чтобы они извлекали из источника terraform_remote_state адрес и порт базы данных и возвращали их в виде HTTP-ответа:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии