From 21d2ad1f8a074cc269be8ab38443d27fe37cfa79 Mon Sep 17 00:00:00 2001 From: NathanFlurry Date: Fri, 12 Apr 2024 06:55:32 +0000 Subject: [PATCH] chore: replace auto-generate public ip with 127.0.0.1 (#650) ## Motivation Most people test the OSS repo locally. By defaulting to the public IP, the Terraform cluster fails to finish booting because it can't be accessed. We'll provide better docs on the config after our OSS refresh. --- lib/bolt/cli/src/commands/secret.rs | 3 +- lib/bolt/core/src/tasks/config/generate.rs | 217 +-------------------- 2 files changed, 9 insertions(+), 211 deletions(-) diff --git a/lib/bolt/cli/src/commands/secret.rs b/lib/bolt/cli/src/commands/secret.rs index 52f7d72413..bf96565f21 100644 --- a/lib/bolt/cli/src/commands/secret.rs +++ b/lib/bolt/cli/src/commands/secret.rs @@ -59,8 +59,7 @@ impl SubCommand { Self::Set { path, value } => { let path = path.split("/").collect::>(); - let mut generator = - ConfigGenerator::new(rivet_term::terminal(), ctx.path(), ctx.ns_id()).await?; + let mut generator = ConfigGenerator::new(ctx.path(), ctx.ns_id()).await?; generator.set_secret(&path, toml_edit::value(value)).await?; generator.write().await?; } diff --git a/lib/bolt/core/src/tasks/config/generate.rs b/lib/bolt/core/src/tasks/config/generate.rs index fe911621ea..a2b0632fab 100644 --- a/lib/bolt/core/src/tasks/config/generate.rs +++ b/lib/bolt/core/src/tasks/config/generate.rs @@ -24,8 +24,6 @@ const NS_CONFIG_COMMENT: &str = r#"# Documentation: doc/bolt/config/NAMESPACE.md /// Helper for generating configs. pub struct ConfigGenerator { - term: rivet_term::console::Term, - #[allow(unused)] ns_id: String, @@ -41,11 +39,7 @@ pub struct ConfigGenerator { } impl ConfigGenerator { - pub async fn new( - term: rivet_term::console::Term, - project_path: &Path, - ns_id: impl ToString, - ) -> Result { + pub async fn new(project_path: &Path, ns_id: impl ToString) -> Result { let ns_id = ns_id.to_string(); // Load namespace config @@ -69,7 +63,6 @@ impl ConfigGenerator { }; Ok(Self { - term, ns_id, ns_path, ns, @@ -94,23 +87,6 @@ impl ConfigGenerator { Ok(()) } - /// Moves a value's location. Useful for updating schemas. - // async fn move_config(&mut self, from_path: &[&str], to_path: &[&str]) -> Result<()> { - // // Read the parent - // if let Some(parent_value) = - // get_value_mut(self.ns.as_item_mut(), &from_path[0..(from_path.len() - 1)]) - // .and_then(|x| x.as_table_mut()) - // { - // // Remove the item - // if let Some(value) = parent_value.remove(from_path.last().unwrap()) { - // // Write to the new path - // write_value(self.ns.as_item_mut(), to_path, value); - // } - // } - - // Ok(()) - // } - /// Inserts a config value if does not exist. async fn generate_config( &mut self, @@ -129,22 +105,6 @@ impl ConfigGenerator { Ok(()) } - /// Prompts user for config value if does not exist. - // async fn prompt_config(&mut self, message: &str, docs: &str, path: &[&str]) -> Result<()> { - // // Check if item already exists - // if get_value(self.ns.as_item(), path).is_none() { - // let x = rivet_term::prompt::PromptBuilder::default() - // .message(message) - // .docs_url(docs) - // .build()? - // .string(&self.term) - // .await?; - // write_value(self.ns.as_item_mut(), path, value(x)); - // } - - // Ok(()) - // } - /// Sets & overrides a secret. pub async fn set_secret(&mut self, path: &[&str], value: toml_edit::Item) -> Result<()> { write_value(self.secrets.as_item_mut(), path, value); @@ -169,46 +129,11 @@ impl ConfigGenerator { Ok(()) } - - /// Prompts user for config value if does not exist. - async fn prompt_secret(&mut self, message: &str, docs: &str, path: &[&str]) -> Result<()> { - self.prompt_secret_multiple(message, docs, &[path]).await - } - - /// Prompts user for multiple config values if does not exist. Useful when - /// there's multiple secrets that are OK being set to the same value for the - /// default config. - async fn prompt_secret_multiple( - &mut self, - message: &str, - docs: &str, - paths: &[&[&str]], - ) -> Result<()> { - // Check if item already exists - if !paths - .iter() - .all(|x| get_value(self.secrets.as_item(), x).is_some()) - { - let x = rivet_term::prompt::PromptBuilder::default() - .message(message) - .docs_url(docs) - .build()? - .string_secure(&self.term) - .await?; - for path in paths { - write_value(self.secrets.as_item_mut(), path, value(&x)); - } - } - - Ok(()) - } } /// Generates a new config & secrets based on user input. pub async fn generate(project_path: &Path, ns_id: &str) -> Result<()> { - let term = rivet_term::terminal(); - - let mut generator = ConfigGenerator::new(term, &project_path, ns_id).await?; + let mut generator = ConfigGenerator::new(&project_path, ns_id).await?; // MARK: Cluster generator @@ -230,10 +155,14 @@ pub async fn generate(project_path: &Path, ns_id: &str) -> Result<()> { .get("distributed") .is_none() { + generator + .generate_config(&["cluster", "id"], || async { + Ok(value(Uuid::new_v4().to_string()).into()) + }) + .await?; generator .generate_config(&["cluster", "single_node", "public_ip"], || async { - let public_ip = fetch_public_ip().await?; - Ok(value(public_ip).into()) + Ok(value("127.0.0.1").into()) }) .await?; @@ -245,114 +174,6 @@ pub async fn generate(project_path: &Path, ns_id: &str) -> Result<()> { .await?; } - // TODO: Prompt for provisioning servers - // // MARK: Linode - // generator - // .prompt_secret( - // "Linode Token", - // "doc/bolt/config/LINODE.md", - // &["linode", "terraform", "token"], - // ) - // .await?; - - // // MARK: Pools - // if generator.ns.get("pools").is_none() { - // let mut pools = toml_edit::ArrayOfTables::new(); - - // for (i, name_id) in ["lnd-sfo", "lnd-fra"].iter().enumerate() { - // let base_netnum = i as i64 * 3; - - // let mut job = toml_edit::Table::new(); - // job["pool"] = value("job"); - // job["version"] = value("01"); - // job["region"] = value(*name_id); - // job["count"] = value(1); - // job["size"] = value("g6-standard-1"); - // job["netnum"] = value(base_netnum + 1); - // pools.push(job); - - // let mut gg = toml_edit::Table::new(); - // gg["pool"] = value("gg"); - // gg["version"] = value("01"); - // gg["region"] = value(*name_id); - // gg["count"] = value(1); - // gg["size"] = value("g6-standard-1"); - // gg["netnum"] = value(base_netnum + 2); - // pools.push(gg); - - // let mut ats = toml_edit::Table::new(); - // ats["pool"] = value("ats"); - // ats["version"] = value("01"); - // ats["region"] = value(*name_id); - // ats["count"] = value(1); - // ats["size"] = value("g6-standard-1"); - // ats["netnum"] = value(base_netnum + 3); - // pools.push(ats); - // } - - // generator.ns["pools"] = toml_edit::Item::ArrayOfTables(pools); - // } - - // TODO: Prompt for DNS - // // MARK: DNS - // generator - // .prompt_config( - // "Domain Main", - // "doc/bolt/config/DNS.md", - // &["dns", "domain", "main"], - // ) - // .await?; - // generator - // .prompt_config( - // "Domain CDN", - // "doc/bolt/config/DNS.md", - // &["dns", "domain", "cdn"], - // ) - // .await?; - // generator - // .prompt_config( - // "Domain Job", - // "doc/bolt/config/DNS.md", - // &["dns", "domain", "job"], - // ) - // .await?; - - // // MARK: Cloudflare - // generator - // .prompt_config( - // "Cloudflare Account ID", - // "doc/bolt/config/CLOUDFLARE.md", - // &["dns", "cloudflare", "account_id"], - // ) - // .await?; - // generator - // .prompt_secret_multiple( - // "Cloudflare Auth Token", - // "doc/bolt/config/CLOUDFLARE.md", - // &[ - // // Permissions: - // // - Zone > DNS > Edit - // // - // // Zone Resources: - // // - rivet.run - // &["cloudflare", "persistent", "auth_token"], - // // Permissions: - // // - Account > Cloudflare Tunnel > Edit (if using access) - // // - Account > Access: Apps and Policies > Edit (if using access) - // // - Account > Worker Scripts > Edit - // // - Zone > Workers Routes > Edit - // // - Zone > SSL and Certificates > Edit - // // - Zone > DNS > Edit - // // - // // Zone Resources: - // // - rivet.gg - // // - rivet.game - // // - rivet.run - // &["cloudflare", "terraform", "auth_token"], - // ], - // ) - // .await?; - // MARK: S3 if generator.ns.get("s3").is_none() { generator.ns["s3"] = { @@ -363,22 +184,6 @@ pub async fn generate(project_path: &Path, ns_id: &str) -> Result<()> { }; } - // TODO: Prompt login - if generator - .ns - .get("email") - .and_then(|x| x.get("sendgrid")) - .is_some() - { - generator - .prompt_secret( - "SendGrid Key", - "doc/bolt/config/SENDGRID.md", - &["sendgrid", "key"], - ) - .await?; - } - // MARK: SSH generator .generate_secret(&["ssh", "server", "private_key_openssh"], || async { @@ -571,12 +376,6 @@ fn write_value(item: &mut toml_edit::Item, path: &[&str], value: toml_edit::Item } } -/// Returns the public IP of this machine. -async fn fetch_public_ip() -> Result { - let response = reqwest::get("https://ipinfo.io/ip").await?.text().await?; - Ok(response.trim().to_string()) -} - /// Generates an OpenSSH key and returns the private key. async fn generate_private_key_openssh() -> Result { block_in_place(|| {