Создать схему базы данных с помощью terraform - PullRequest
0 голосов
/ 26 января 2020

Я создал экземпляр RDS, используя aws_db_instance (main.tf):

resource "aws_db_instance" "default" {
    identifier           = "${module.config.database["db_inst_name"]}"
    allocated_storage    = 20
    storage_type         = "gp2"
    engine               = "mysql"
    engine_version       = "5.7"
    instance_class       = "db.t3.micro"
    name                 = "${module.config.database["db_name_prefix"]}${terraform.workspace}"
    username             = "${module.config.database["db_username"]}"
    password             = "${module.config.database["db_password"]}"
    parameter_group_name = "default.mysql5.7"
    skip_final_snapshot  = true
}

Могу ли я также создать схемы базы данных из файла schema.sql с помощью terraform apply?

$ tree -L 1                                                                                               
.
├── main.tf
└── schema.sql

1 Ответ

2 голосов
/ 27 января 2020

Вы можете использовать провайдера (https://www.terraform.io/docs/provisioners/index.html) для этого:

resource "aws_db_instance" "default" {
    identifier           = "${module.config.database["db_inst_name"]}"
    allocated_storage    = 20
    storage_type         = "gp2"
    engine               = "mysql"
    engine_version       = "5.7"
    instance_class       = "db.t3.micro"
    name                 = "${module.config.database["db_name_prefix"]}${terraform.workspace}"
    username             = "${module.config.database["db_username"]}"
    password             = "${module.config.database["db_password"]}"
    parameter_group_name = "default.mysql5.7"
    skip_final_snapshot  = true

    provisioner "local-exec" {
      command = "mysql --host=${self.address} --port=${self.port} --user=${self.username} --password=${self.password} < ./schema.sql"
    }
}

mysql клиент должен быть установлен на вашем устройстве.

Если у вас нет прямого доступа к вашей БД, есть также поставщик remote-exec, где вы можете использовать хост-бастион (сначала переместите файл в удаленное место с помощью file инициатора).

Если ваша схема это не сложно, вы также можете использовать MySQL провайдер terraform: https://www.terraform.io/docs/providers/mysql/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...