From 1c3669cb47e9a04edccef1d6500cc62f485afc8a Mon Sep 17 00:00:00 2001 From: Willem Date: Fri, 2 May 2025 11:56:27 -0400 Subject: [PATCH 1/3] chore: added default mariadb size and pass env variables to php app --- harmony/src/modules/lamp.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/harmony/src/modules/lamp.rs b/harmony/src/modules/lamp.rs index 2110904..7d2b28d 100644 --- a/harmony/src/modules/lamp.rs +++ b/harmony/src/modules/lamp.rs @@ -3,6 +3,7 @@ use dockerfile_builder::instruction::{CMD, COPY, ENV, EXPOSE, FROM, RUN, WORKDIR use dockerfile_builder::{Dockerfile, instruction_builder::EnvBuilder}; use non_blank_string_rs::NonBlankString; use serde_json::json; +use std::collections::HashMap; use std::fs; use std::path::{Path, PathBuf}; use std::str::FromStr; @@ -17,8 +18,8 @@ use crate::{ data::{Id, Version}, interpret::{Interpret, InterpretError, InterpretName, InterpretStatus, Outcome}, inventory::Inventory, - modules::k8s::deployment::K8sDeploymentScore, - score::Score, +modules::k8s::deployment::K8sDeploymentScore, +score::Score, topology::{K8sclient, Topology, Url}, }; @@ -36,6 +37,7 @@ pub struct LAMPScore { pub struct LAMPConfig { pub project_root: PathBuf, pub ssl_enabled: bool, + pub database_size: String, } impl Default for LAMPConfig { @@ -43,6 +45,7 @@ impl Default for LAMPConfig { LAMPConfig { project_root: Path::new("./src").to_path_buf(), ssl_enabled: true, + database_size: "2Gi".to_string(), } } } @@ -113,6 +116,10 @@ impl Interpret for LAMPInterpret { } } }, + { + "name": "MYSQL_HOST", + "value": secret_name + }, ]), }; @@ -152,6 +159,11 @@ impl LAMPInterpret { inventory: &Inventory, topology: &T, ) -> Result { + let mut mariadb_overrides = HashMap::new(); + mariadb_overrides.insert( + NonBlankString::from_str("primary.persistence.size").unwrap(), + self.score.config.database_size.clone(), + ); let score = HelmChartScore { namespace: self.get_namespace(), release_name: NonBlankString::from_str(&format!("{}-database", self.score.name)) @@ -161,7 +173,7 @@ impl LAMPInterpret { ) .unwrap(), chart_version: None, - values_overrides: None, + values_overrides: Some(mariadb_overrides), create_namespace: true, install_only: true, values_yaml: None, @@ -257,6 +269,13 @@ opcache.fast_shutdown=1 sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf" )); + // Set env vars + dockerfile.push(RUN::from( + "echo 'PassEnv MYSQL_PASSWORD' >> /etc/apache2/sites-available/000-default.conf \ + && echo 'PassEnv MYSQL_USER' >> /etc/apache2/sites-available/000-default.conf \ + && echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf", + )); + // Create a dedicated user for running Apache dockerfile.push(RUN::from( "groupadd -g 1000 appuser && \ From e1133ea114c5e8f1daf1d167f435d3917f47e49e Mon Sep 17 00:00:00 2001 From: Willem Date: Fri, 2 May 2025 15:02:50 -0400 Subject: [PATCH 2/3] use default database_size None in LampConfig to default to value from helm chart --- harmony/src/modules/lamp.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/harmony/src/modules/lamp.rs b/harmony/src/modules/lamp.rs index 7d2b28d..47d6ca9 100644 --- a/harmony/src/modules/lamp.rs +++ b/harmony/src/modules/lamp.rs @@ -18,8 +18,8 @@ use crate::{ data::{Id, Version}, interpret::{Interpret, InterpretError, InterpretName, InterpretStatus, Outcome}, inventory::Inventory, -modules::k8s::deployment::K8sDeploymentScore, -score::Score, + modules::k8s::deployment::K8sDeploymentScore, + score::Score, topology::{K8sclient, Topology, Url}, }; @@ -37,7 +37,7 @@ pub struct LAMPScore { pub struct LAMPConfig { pub project_root: PathBuf, pub ssl_enabled: bool, - pub database_size: String, + pub database_size: Option, } impl Default for LAMPConfig { @@ -45,7 +45,7 @@ impl Default for LAMPConfig { LAMPConfig { project_root: Path::new("./src").to_path_buf(), ssl_enabled: true, - database_size: "2Gi".to_string(), + database_size: None, } } } @@ -159,11 +159,13 @@ impl LAMPInterpret { inventory: &Inventory, topology: &T, ) -> Result { - let mut mariadb_overrides = HashMap::new(); - mariadb_overrides.insert( - NonBlankString::from_str("primary.persistence.size").unwrap(), - self.score.config.database_size.clone(), - ); + let mut values_overrides = HashMap::new(); + if let Some(database_size) = self.score.config.database_size.clone() { + values_overrides.insert( + NonBlankString::from_str("primary.persistence.size").unwrap(), + database_size, + ); + } let score = HelmChartScore { namespace: self.get_namespace(), release_name: NonBlankString::from_str(&format!("{}-database", self.score.name)) @@ -173,7 +175,7 @@ impl LAMPInterpret { ) .unwrap(), chart_version: None, - values_overrides: Some(mariadb_overrides), + values_overrides: Some(values_overrides), create_namespace: true, install_only: true, values_yaml: None, @@ -181,7 +183,6 @@ impl LAMPInterpret { score.create_interpret().execute(inventory, topology).await } - fn build_dockerfile(&self, score: &LAMPScore) -> Result> { let mut dockerfile = Dockerfile::new(); From 78fffcd725d3c5f38feee4d68a1d99eed946b731 Mon Sep 17 00:00:00 2001 From: Willem Date: Fri, 2 May 2025 15:07:39 -0400 Subject: [PATCH 3/3] fix: specified 2Gi db size from LAMPconfig --- examples/lamp/src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/lamp/src/main.rs b/examples/lamp/src/main.rs index 41adfb4..1aaca90 100644 --- a/examples/lamp/src/main.rs +++ b/examples/lamp/src/main.rs @@ -24,6 +24,7 @@ async fn main() { // This config can be extended as needed for more complicated configurations config: LAMPConfig { project_root: "./php".into(), + database_size: format!("2Gi").into(), ..Default::default() }, };