Eu criei o sql server e o banco de dados com o terraform, agora tenho que criar o usuário do banco de dados e atribuir uma função a ele.
Como posso fazer isso. Por favor, sugira-me.
Responder1
Comecei a trabalhar em um provedor Terraform que fará isso emhttps://github.com/jayway/terraform-provider-mssql. Ainda é um trabalho muito inicial, mas consegui provisionar logins e usuários para esses logins em uma instância local do SQL Server (que já estava em execução, então não testei em conjunto com, por exemplo, o provedor AzureRM) . Testes e contribuições são muito bem-vindos (mas não use isso ainda para cenários de produção)!
Responder2
A criação de utilizadores e funções é uma função do SQL Server, não da plataforma Azure. Como tal, o provedor Terraforms ARM não lida com isso e, até onde posso ver, o Terraform não possui um provedor MSSQL para este trabalho (ele possui MYSQL e Postgres). Você precisaria fazer esse trabalho usando scripts SQL.
Responder3
Veja como fiz isso usando postgres/psql.
Primeiro, gere o hash da senha md5 anexando o nome de usuário à senha:
$ echo -n mypasswordbob|md5sum
fd9c9714184c4ae189ca83f1c21aeeb8
Anexe a string 'md5' ao hash resultante para obter o formato de senha criptografada que o Postgres aceitará:
md5fd9c9714184c4ae189ca83f1c21aeeb8
Em seguida, adicione um arquivo de modelo independente com os comandos do banco de dados que você deseja executar:
data "template_file" "db_roles" {
vars {
username_bob = "bob"
password_bob = "md5fd9c9714184c4ae189ca83f1c21aeeb8"
}
template = <<EOF
create user $${username_bob};
alter user $${username_bob} WITH ENCRYPTED PASSWORD '$${password_bob}';
EOF
}
Por fim, adicione um provisionador de execução remota como parte da criação do servidor:
provisioner "remote-exec" {
inline = [
"set -x",
"cat > db_roles.sql <<EOL\n${data.template_file.db_roles.rendered}\nEOL",
"psql -U myuser < db_roles.sql",
]
}
Responder4
Use o provisionador de arquivos Terraform para implantar o SQL e, em seguida, use o provisionador de execução remota para carregá-lo no SQL Server.