forked from NationTech/harmony
		
	Clippy is now added to the `check` in the pipeline Co-authored-by: Ian Letourneau <letourneau.ian@gmail.com> Reviewed-on: https://git.nationtech.io/NationTech/harmony/pulls/96
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use harmony::{
 | |
|     data::Version,
 | |
|     inventory::Inventory,
 | |
|     modules::lamp::{LAMPConfig, LAMPScore},
 | |
|     topology::{K8sAnywhereTopology, Url},
 | |
| };
 | |
| 
 | |
| #[tokio::main]
 | |
| async fn main() {
 | |
|     // This here is the whole configuration to
 | |
|     // - setup a local K3D cluster
 | |
|     // - Build a docker image with the PHP project builtin and production grade settings
 | |
|     // - Deploy a mariadb database using a production grade helm chart
 | |
|     // - Deploy the new container using a kubernetes deployment
 | |
|     // - Configure networking between the PHP container and the database
 | |
|     // - Provision a public route and an SSL certificate automatically on production environments
 | |
|     //
 | |
|     // Enjoy :)
 | |
|     let lamp_stack = LAMPScore {
 | |
|         name: "harmony-lamp-demo".to_string(),
 | |
|         domain: Url::Url(url::Url::parse("https://lampdemo.harmony.nationtech.io").unwrap()),
 | |
|         php_version: Version::from("8.4.4").unwrap(),
 | |
|         // This config can be extended as needed for more complicated configurations
 | |
|         config: LAMPConfig {
 | |
|             project_root: "./php".into(),
 | |
|             database_size: "4Gi".to_string().into(),
 | |
|             ..Default::default()
 | |
|         },
 | |
|     };
 | |
| 
 | |
|     //let monitoring = MonitoringAlertingScore {
 | |
|     //    alert_receivers: vec![Box::new(DiscordWebhook {
 | |
|     //        url: Url::Url(url::Url::parse("https://discord.idonotexist.com").unwrap()),
 | |
|     //        // TODO write url macro
 | |
|     //        // url: url!("https://discord.idonotexist.com"),
 | |
|     //    })],
 | |
|     //    alert_rules: vec![],
 | |
|     //    scrape_targets: vec![],
 | |
|     //};
 | |
| 
 | |
|     // You can choose the type of Topology you want, we suggest starting with the
 | |
|     // K8sAnywhereTopology as it is the most automatic one that enables you to easily deploy
 | |
|     // locally, to development environment from a CI, to staging, and to production with settings
 | |
|     // that automatically adapt to each environment grade.
 | |
|     harmony_cli::run(
 | |
|         Inventory::autoload(),
 | |
|         K8sAnywhereTopology::from_env(),
 | |
|         vec![Box::new(lamp_stack)],
 | |
|         None,
 | |
|     )
 | |
|     .await
 | |
|     .unwrap();
 | |
| }
 | |
| // That's it, end of the infra as code.
 |