Como criar usuário de banco de dados e atribuir função a ele com terraform

Como criar usuário de banco de dados e atribuir função a ele com terraform

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.

informação relacionada