#postgresql #powershell #octopus-deploy
Вопрос:
Мы используем базу данных PostgreSQL в микросервисе, используя миграции кода, чтобы поддерживать ее в актуальном состоянии. Чтобы не создавать базу данных и не предоставлять разрешения пользователям в каждой среде вручную, мы хотим добавить шаг развертывания в octopus deploy, который проверяет, создана ли база данных, и создает ее, когда это не так. Мы хотим сделать то же самое с разрешениями для пользователя, но, вероятно, на отдельном этапе. У меня нет большого опыта работы со сценарием powershell в octopus deploy, я нашел несколько примеров, но они предназначены специально для SQL Server. Как я должен изменить следующее, чтобы это сработало?
Install-Module -Name SqlServer
$DatabaseToCreate = $OctopusParameters["Database.Name"]
$DbHost = $OctopusParameters["Database.Host"]
$DbName = "postgres"
$DbUsernameMigrations = $OctopusParameters["Database.UsernameMigrations"]
$DbPasswordMigrations = $OctopusParameters["Database.PasswordMigrations"]
$DbPort = $OctopusParameters["Database.Port"]
$DBConnectionString = "Driver={PostgreSQL UNICODE(x64)};Server=$DbHost;Port=$DbPort;Database=$DbName;Uid=$DbUsernameMigrations;Pwd=$DbPasswordMigrations;"
$DBConn = New-Object System.Data.Odbc.OdbcConnection;
$DBConn.ConnectionString = $DBConnectionString;
$DBConn.Open();
$DBCmd = $DBConn.CreateCommand();
$DBCmd.CommandText = "CREATE DATABASE " $DatabaseToCreate ";";
$DBCmd.ExecuteNonQuery();
$DBConn.Close();