2017-10-02 5 views
0

Je vais bien à create a new rds (postgre) instance with terraform. Mais j'ai besoin d'exécuter un sql (init.sql) après que l'instance est prête.comment exécuter init sql après avoir créé une nouvelle instance de postgre sur terraform

Ce sql doit être exécuté une fois seulement, que dois-je faire? J'ai essayé local-exec, ou remote-exec, je ne peux pas. RDS est créé dans un sous-réseau privé (couche de données) dans VPC, et c'est un service géré par aws. Il n'y a aucun moyen de se connecter pour exécuter sql cli.

+0

Qu'essayez-vous réellement d'accomplir ici? Avez-vous besoin de créer un schéma/des rôles sur les instances? Ou avez-vous un script SQL spécifique que vous aimeriez utiliser lors de la création? – ydaetskcoR

+0

similaires, tels que créer les bases de données, tables avec des données init. – Bill

+0

Il n'y a aucun moyen de le faire actuellement, je crois. Le moyen idéal de le faire serait de le faire depuis votre serveur d'application (ou quelque chose de similaire). Certaines options, parmi beaucoup d'autres 1. Si vous utilisez Terraform pour déployer votre serveur d'applications et en supposant que c'est EC2, vous pouvez d'abord créer l'instance RDS, puis créer votre serveur d'applications et utiliser remote-exec pour lancer init.sql scénario. 2. Si vous utilisez un pipeline CI pour déployer votre code, vous pouvez ajouter l'initialisation de votre base de données en tant qu'autre étape. 3. Vous pouvez également ajouter une logique à votre application pour initialiser votre base de données au cours du premier démarrage. – Animesh

Répondre

0

J'ai la même demande. Je termine avec la solution set a schedule task in ECS. Définir l'heure de planification à la date transmise, il ne fonctionnera pas, jusqu'à ce que je l'active manuellement avec l'heure actuelle.

Ainsi, après la base de données est créée par terraform, je me connecte console SSFE à cette tâche de programme actif pour exécuter une seule fois

Il sera utile à l'avenir, si le nouveau schéma doit être appliqué.

J'ajuste aussi l'image du docker client psql (https://hub.docker.com/r/jbergknoff/postgresql-client/) et j'y ajoute un cli aws, donc je peux copier le sql à partir de s3 et lancer les mises à jour.