Fix bootstrap database creation - use BOOTSTRAP_DB_PASSWORD env var

This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2026-02-05 14:42:13 -03:00
parent 5d5be5546f
commit dfb18f75e6
2 changed files with 23 additions and 9 deletions

View file

@ -921,10 +921,12 @@ impl BootstrapManager {
if component == "tables" { if component == "tables" {
info!("Starting PostgreSQL database..."); info!("Starting PostgreSQL database...");
std::env::set_var("BOOTSTRAP_DB_PASSWORD", &db_password);
match pm.start("tables") { match pm.start("tables") {
Ok(_) => { Ok(_) => {
info!("PostgreSQL started successfully"); info!("PostgreSQL started successfully");
tokio::time::sleep(tokio::time::Duration::from_secs(3)).await; tokio::time::sleep(tokio::time::Duration::from_secs(3)).await;
} }
Err(e) => { Err(e) => {
@ -932,6 +934,8 @@ impl BootstrapManager {
} }
} }
std::env::remove_var("BOOTSTRAP_DB_PASSWORD");
info!("Running database migrations..."); info!("Running database migrations...");
let database_url = let database_url =
format!("postgres://gbuser:{}@localhost:5432/botserver", db_password); format!("postgres://gbuser:{}@localhost:5432/botserver", db_password);

View file

@ -1047,6 +1047,10 @@ Store credentials in Vault:
Ok(()) Ok(())
} }
pub fn run_commands(&self, commands: &[String], target: &str, component: &str) -> Result<()> { pub fn run_commands(&self, commands: &[String], target: &str, component: &str) -> Result<()> {
self.run_commands_with_password(commands, target, component, &String::new())
}
pub fn run_commands_with_password(&self, commands: &[String], target: &str, component: &str, db_password_override: &str) -> Result<()> {
let bin_path = if target == "local" { let bin_path = if target == "local" {
self.base_path.join("bin").join(component) self.base_path.join("bin").join(component)
} else { } else {
@ -1069,7 +1073,12 @@ Store credentials in Vault:
PathBuf::from("/opt/gbo/logs") PathBuf::from("/opt/gbo/logs")
}; };
let db_password = match get_database_url_sync() { let db_password = if let Ok(env_pwd) = std::env::var("BOOTSTRAP_DB_PASSWORD") {
env_pwd
} else if !db_password_override.is_empty() {
db_password_override.clone()
} else {
match get_database_url_sync() {
Ok(url) => { Ok(url) => {
let (_, password, _, _, _) = parse_database_url(&url); let (_, password, _, _, _) = parse_database_url(&url);
password password
@ -1078,6 +1087,7 @@ Store credentials in Vault:
trace!("Vault not available for DB_PASSWORD, using empty string"); trace!("Vault not available for DB_PASSWORD, using empty string");
String::new() String::new()
} }
}
}; };
for cmd in commands { for cmd in commands {