3 votes

Comment créer un utilisateur de base de données et lui attribuer un rôle avec terraform ?

J'ai créé un serveur sql et une base de données avec terraform. Je dois maintenant créer un utilisateur de la base de données et lui attribuer un rôle.

Comment je peux le faire. Veuillez me conseiller.

3voto

Jaykul Points 6484

J'ai commencé à travailler sur un fournisseur Terraform qui fera cela à l'adresse suivante https://github.com/jayway/terraform-provider-mssql . C'est encore un travail très précoce, mais j'ai réussi à lui faire provisionner des logins et des utilisateurs pour ces logins dans une instance locale de SQL Server (qui était déjà en cours d'exécution, donc je ne l'ai pas testé du tout en conjonction avec par exemple le fournisseur AzureRM). Les tests et les contributions sont les bienvenus (mais ne l'utilisez pas pour des scénarios de production pour le moment) !

2voto

Mat Points 2512

La création d'utilisateurs et de rôles est une fonction du serveur SQL, et non de la plateforme Azure. En tant que tel, le fournisseur ARM de Terraform ne s'en occupe pas, et pour autant que je sache, Terraform ne dispose pas d'un fournisseur MSSQL pour ce travail (il dispose de MYSQL et Postgres). Vous devrez effectuer ce travail en utilisant des scripts SQL.

2voto

Tom McCarty Points 41

Voici comment j'ai procédé en utilisant postgres/psql.

Tout d'abord, générez le hachage md5 du mot de passe en ajoutant le nom d'utilisateur au mot de passe :

$ echo -n mypasswordbob|md5sum
fd9c9714184c4ae189ca83f1c21aeeb8

Ajoutez la chaîne 'md5' au hachage résultant pour obtenir la forme de mot de passe crypté que Postgres acceptera : md5fd9c9714184c4ae189ca83f1c21aeeb8

Ajoutez ensuite un fichier modèle autonome contenant les commandes de base de données que vous souhaitez exécuter :

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
}

Enfin, ajoutez un provisioner remote-exec dans le cadre de la création de votre serveur :

  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",
    ]
  }

0voto

Rupesh Points 1590

Utilisez le provisionneur de fichiers Terraform pour déployer le SQL, puis utilisez le provisionneur remote-exec pour le charger dans SQL Server.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X