forked from github-starred/komodo
monrun
This commit is contained in:
11
Cargo.lock
generated
11
Cargo.lock
generated
@@ -920,6 +920,16 @@ version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
|
||||
|
||||
[[package]]
|
||||
name = "colored"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "convert_case"
|
||||
version = "0.4.0"
|
||||
@@ -2338,6 +2348,7 @@ version = "1.0.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
"colored",
|
||||
"futures",
|
||||
"monitor_client",
|
||||
"partial_derive2",
|
||||
|
||||
@@ -91,4 +91,5 @@ aws-sdk-ec2 = "1.34.0"
|
||||
|
||||
# MISC
|
||||
derive_builder = "0.20.0"
|
||||
colored = "2.1.0"
|
||||
typeshare = "1.0.2"
|
||||
|
||||
@@ -13,6 +13,7 @@ monitor_client.workspace = true
|
||||
# mogh
|
||||
partial_derive2.workspace = true
|
||||
# external
|
||||
colored.workspace = true
|
||||
anyhow.workspace = true
|
||||
tokio.workspace = true
|
||||
serde.workspace = true
|
||||
|
||||
@@ -1,46 +1,49 @@
|
||||
[[build]]
|
||||
name = "test_logger"
|
||||
tags = ["test"]
|
||||
config.builder = "mogh-builder"
|
||||
config.repo = "mbecker20/test_logger"
|
||||
config.branch = "master"
|
||||
config.github_account = "mbecker20"
|
||||
config.docker_account = "mbecker2020"
|
||||
name = "monitor_core"
|
||||
description = "Public monitor core build"
|
||||
tags = ["monitor"]
|
||||
|
||||
[build.config]
|
||||
builder_id = "mogh-builder"
|
||||
repo = "mbecker20/monitor"
|
||||
branch = "main"
|
||||
docker_account = "mbecker2020"
|
||||
build_path = "."
|
||||
dockerfile_path = "bin/core/Dockerfile"
|
||||
|
||||
[[build]]
|
||||
name = "alert_logger"
|
||||
tags = ["test"]
|
||||
config.builder = "mogh-builder"
|
||||
config.repo = "mbecker20/monitor"
|
||||
config.branch = "next"
|
||||
config.build_path = "."
|
||||
config.dockerfile_path = "bin/alert_logger/Dockerfile"
|
||||
config.docker_account = "mbecker2020"
|
||||
name = "monitor_core_dev"
|
||||
description = ""
|
||||
tags = ["monitor", "dev"]
|
||||
|
||||
[[build]]
|
||||
name = "update_logger"
|
||||
tags = ["test"]
|
||||
config.builder = "mogh-builder"
|
||||
config.repo = "mbecker20/monitor"
|
||||
config.branch = "next"
|
||||
config.build_path = "."
|
||||
config.dockerfile_path = "bin/update_logger/Dockerfile"
|
||||
config.docker_account = "mbecker2020"
|
||||
[build.config]
|
||||
builder_id = "mogh-builder"
|
||||
repo = "mbecker20/monitor"
|
||||
branch = "main"
|
||||
docker_account = "mbecker2020"
|
||||
build_path = "."
|
||||
dockerfile_path = "bin/core/Dockerfile"
|
||||
|
||||
## BUILDER
|
||||
|
||||
# BUILDER
|
||||
[[builder]]
|
||||
name = "mogh-builder"
|
||||
description = "the builder for the mogh images"
|
||||
config.type = "Aws"
|
||||
config.params.region = "us-east-2"
|
||||
config.params.instance_type = "c5.2xlarge"
|
||||
config.params.volume_gb = 20
|
||||
config.params.ami_id = "ami-01c8bdba63708cde6"
|
||||
config.params.subnet_id = "subnet-02ae5ad480eacc4bc"
|
||||
config.params.key_pair_name = "mogh-key"
|
||||
config.params.assign_public_ip = true
|
||||
config.params.use_public_ip = false
|
||||
config.params.port = 8000
|
||||
config.params.security_group_ids = ["sg-049d98c819f9ace58", "sg-006c0ca638af8eb44"]
|
||||
config.params.github_accounts = ["mbecker20"]
|
||||
config.params.docker_accounts = ["mbecker2020"]
|
||||
description = ""
|
||||
tags = []
|
||||
|
||||
[builder.config]
|
||||
type = "Aws"
|
||||
|
||||
[builder.config.params]
|
||||
region = "us-east-2"
|
||||
instance_type = "c5.2xlarge"
|
||||
volume_gb = 20
|
||||
port = 8120
|
||||
ami_id = "ami-0005a05fa63a080ab"
|
||||
subnet_id = "subnet-02ae5ad480eacc4bc"
|
||||
security_group_ids = ["sg-049d98c819f9ace58", "sg-006c0ca638af8eb44"]
|
||||
key_pair_name = "mogh-key"
|
||||
assign_public_ip = true
|
||||
use_public_ip = false
|
||||
github_accounts = []
|
||||
docker_accounts = []
|
||||
@@ -1,51 +1,168 @@
|
||||
[[deployment]]
|
||||
name = "hello-world"
|
||||
tags = ["test"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Image"
|
||||
config.image.params.image = "hello-world"
|
||||
name = "monitor-proxy"
|
||||
description = ""
|
||||
tags = ["monitor"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "on-failure"
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
|
||||
[deployment.config.image.params]
|
||||
image = "jc21/nginx-proxy-manager"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/data/nginx/data"
|
||||
container = "/data"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/data/nginx/letsencrypt"
|
||||
container = "/etc/letsencrypt"
|
||||
|
||||
[[deployment]]
|
||||
name = "test_logger"
|
||||
tags = ["test"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Build"
|
||||
config.image.params.build = "test_logger"
|
||||
name = "monitor-mongo"
|
||||
description = ""
|
||||
tags = ["monitor"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "no"
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
params.image = "mongo"
|
||||
|
||||
[[deployment]]
|
||||
name = "alert_logger"
|
||||
tags = ["test"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Build"
|
||||
config.image.params.build = "alert_logger"
|
||||
name = "monitor-core"
|
||||
description = ""
|
||||
tags = ["monitor"]
|
||||
|
||||
[[deployment]]
|
||||
name = "update_logger"
|
||||
tags = ["test", "logging"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Build"
|
||||
config.image.params.build = "update_logger"
|
||||
[[deployment.config.environment]]
|
||||
variable = "MONITOR_ADDRESS"
|
||||
value = "http://localhost:9001"
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "no"
|
||||
|
||||
[[deployment]]
|
||||
name = "vector"
|
||||
tags = ["logging"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Image"
|
||||
config.image.params.image = "timberio/vector"
|
||||
|
||||
[[deployment]]
|
||||
name = "loki"
|
||||
tags = ["logging"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Image"
|
||||
config.image.params.image = "grafana/loki"
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
params.image = "mbecker2020/monitor_core"
|
||||
|
||||
[[deployment]]
|
||||
name = "grafana"
|
||||
tags = ["frontend"]
|
||||
config.server = "mogh-server"
|
||||
config.image.type = "Image"
|
||||
config.image.params.image = "grafana/grafana"
|
||||
description = ""
|
||||
tags = ["logging"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "unless-stopped"
|
||||
extra_args = ["--user root"]
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
params.image = "grafana/grafana"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/data/grafana"
|
||||
container = "/var/lib/grafana"
|
||||
|
||||
[[deployment.config.environment]]
|
||||
variable = "GF_SERVER_HTTP_PORT"
|
||||
value = "3080"
|
||||
|
||||
[[deployment]]
|
||||
name = "loki"
|
||||
description = ""
|
||||
tags = ["logging"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "unless-stopped"
|
||||
extra_args = ["--user root"]
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
params.image = "grafana/loki"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/data/loki"
|
||||
container = "/loki"
|
||||
|
||||
[[deployment]]
|
||||
name = "tempo"
|
||||
description = ""
|
||||
tags = ["logging"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "unless-stopped"
|
||||
process_args = "-server.http-listen-port=3200 -server.grpc-listen-port=9096 --storage.trace.backend=local --storage.trace.local.path=/tmp/tempo/traces --storage.trace.wal.path=/tmp/tempo/wal"
|
||||
extra_args = ["--user root"]
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
params.image = "grafana/tempo"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/data/tempo"
|
||||
container = "/tmp/tempo"
|
||||
|
||||
[[deployment]]
|
||||
name = "vector"
|
||||
description = ""
|
||||
tags = ["logging"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
network = "host"
|
||||
restart = "unless-stopped"
|
||||
process_args = "--config /etc/vector/*.toml"
|
||||
extra_args = ["--user root"]
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Image"
|
||||
params.image = "timberio/vector:latest-debian"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/home/ubuntu/.config/vector"
|
||||
container = "/etc/vector"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/data/vector"
|
||||
container = "/var/lib/vector"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/var/run/docker.sock"
|
||||
container = "/var/run/docker.sock"
|
||||
|
||||
[[deployment]]
|
||||
name = "monitor-core-dev"
|
||||
description = ""
|
||||
tags = ["monitor", "dev"]
|
||||
|
||||
[deployment.config]
|
||||
server_id = "monitor-01"
|
||||
redeploy_on_build = true
|
||||
network = "host"
|
||||
restart = "no"
|
||||
|
||||
[deployment.config.image]
|
||||
type = "Build"
|
||||
params.build_id = "monitor_core"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/home/ubuntu/.config/monitor/dev.core.config.toml"
|
||||
container = "/config/config.toml"
|
||||
|
||||
[[deployment.config.volumes]]
|
||||
local = "/etc/monitor/repos/monitor-dev-frontend/frontend/dist"
|
||||
container = "/frontend"
|
||||
|
||||
[[deployment.config.labels]]
|
||||
variable = "vector"
|
||||
value = "rust"
|
||||
@@ -1 +1,8 @@
|
||||
[[procedure]]
|
||||
name = "test-procedure"
|
||||
description = ""
|
||||
tags = []
|
||||
|
||||
[procedure.config]
|
||||
procedure_type = "Sequence"
|
||||
executions = []
|
||||
18
bin/monrun/resources/repos.toml
Normal file
18
bin/monrun/resources/repos.toml
Normal file
@@ -0,0 +1,18 @@
|
||||
[[repo]]
|
||||
name = "monitor-dev-frontend"
|
||||
description = "Used as frontend for monitor-core-dev"
|
||||
tags = ["monitor", "dev"]
|
||||
|
||||
[repo.config]
|
||||
server_id = "monitor-01"
|
||||
repo = "mbecker20/monitor"
|
||||
branch = "main"
|
||||
github_account = ""
|
||||
|
||||
[repo.config.on_clone]
|
||||
path = ""
|
||||
command = ""
|
||||
|
||||
[repo.config.on_pull]
|
||||
path = "frontend"
|
||||
command = "sh on_pull.sh"
|
||||
@@ -1,13 +1,51 @@
|
||||
[[server]]
|
||||
name = "mogh-server"
|
||||
description = "main mogh server"
|
||||
tags = ["mogh", "prod"]
|
||||
config.address = "http://localhost:8001"
|
||||
config.region = "us-east-2"
|
||||
name = "monitor-01"
|
||||
description = ""
|
||||
tags = ["monitor"]
|
||||
|
||||
[[server]]
|
||||
name = "testo"
|
||||
description = "test server 1"
|
||||
tags = ["mogh", "test"]
|
||||
config.address = "http://locahost:8120"
|
||||
config.enabled = false
|
||||
[server.config]
|
||||
address = "http://localhost:8120"
|
||||
enabled = true
|
||||
stats_monitoring = true
|
||||
auto_prune = true
|
||||
send_unreachable_alerts = true
|
||||
send_cpu_alerts = true
|
||||
send_mem_alerts = true
|
||||
send_disk_alerts = true
|
||||
region = "us-east-2"
|
||||
|
||||
## TEMPLATE
|
||||
|
||||
[[server_template]]
|
||||
name = "mogh-template"
|
||||
description = ""
|
||||
tags = []
|
||||
|
||||
[server_template.config]
|
||||
type = "Aws"
|
||||
|
||||
[server_template.config.params]
|
||||
region = "us-east-2"
|
||||
instance_type = "t3.medium"
|
||||
ami_id = "ami-0005a05fa63a080ab"
|
||||
subnet_id = "subnet-02ae5ad480eacc4bc"
|
||||
key_pair_name = "mogh-key"
|
||||
assign_public_ip = true
|
||||
use_public_ip = false
|
||||
port = 8120
|
||||
user_data = ""
|
||||
security_group_ids = ["sg-049d98c819f9ace58", "sg-006c0ca638af8eb44"]
|
||||
|
||||
[[server_template.config.params.volumes]]
|
||||
device_name = "/dev/sda1"
|
||||
size_gb = 20
|
||||
volume_type = "gp2"
|
||||
iops = 0
|
||||
throughput = 0
|
||||
|
||||
[[server_template.config.params.volumes]]
|
||||
device_name = "/dev/sdb"
|
||||
size_gb = 10
|
||||
volume_type = "gp3"
|
||||
iops = 0
|
||||
throughput = 0
|
||||
@@ -1,28 +0,0 @@
|
||||
[[user_group]]
|
||||
name = "uso_groupo"
|
||||
users = ["becker.maxh", "defi moses"]
|
||||
|
||||
[[user_group.permission]]
|
||||
target.type = "Server"
|
||||
target.id = "mogh-server"
|
||||
level = "Read"
|
||||
|
||||
[[user_group.permission]]
|
||||
target.type = "Deployment"
|
||||
target.id = "monitor-core-v1-dev"
|
||||
level = "Execute"
|
||||
|
||||
[[user_group.permission]]
|
||||
target.type = "Deployment"
|
||||
target.id = "monitor-frontend-v1-dev"
|
||||
level = "Execute"
|
||||
|
||||
[[user_group.permission]]
|
||||
target.type = "Build"
|
||||
target.id = "monitor-core-next"
|
||||
level = "Execute"
|
||||
|
||||
[[user_group.permission]]
|
||||
target.type = "Build"
|
||||
target.id = "monitor-frontend-next"
|
||||
level = "Execute"
|
||||
@@ -5,6 +5,7 @@ use std::{io::Read, path::PathBuf, str::FromStr, sync::OnceLock};
|
||||
|
||||
use anyhow::Context;
|
||||
use clap::{Parser, Subcommand};
|
||||
use colored::Colorize;
|
||||
use monitor_client::{api::read, MonitorClient};
|
||||
use serde::{de::DeserializeOwned, Deserialize};
|
||||
|
||||
@@ -20,12 +21,15 @@ fn cli_args() -> &'static CliArgs {
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(version, about, long_about = None)]
|
||||
struct CliArgs {
|
||||
/// Sync or Exec
|
||||
#[command(subcommand)]
|
||||
command: Command,
|
||||
/// The path to a creds file.
|
||||
#[arg(long, default_value_t = String::from("./creds.toml"))]
|
||||
creds: String,
|
||||
/// Log less (just resource names).
|
||||
#[arg(long, default_value_t = false)]
|
||||
verbose: bool,
|
||||
quiet: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Subcommand)]
|
||||
@@ -90,7 +94,7 @@ fn parse_toml_file<T: DeserializeOwned>(
|
||||
}
|
||||
|
||||
fn wait_for_enter(message: &str) -> anyhow::Result<()> {
|
||||
println!("\nPress ENTER to {message}\n");
|
||||
println!("\nPress {} to {}\n", "ENTER".green(), message.bold());
|
||||
let buffer = &mut [0u8];
|
||||
std::io::stdin()
|
||||
.read_exact(buffer)
|
||||
|
||||
@@ -17,8 +17,6 @@ pub async fn run_sync(path: &Path) -> anyhow::Result<()> {
|
||||
|
||||
let resources = resource_file::read_resources(path)?;
|
||||
|
||||
println!("{resources:#?}");
|
||||
|
||||
let (server_template_creates, server_template_updates) =
|
||||
ServerTemplate::get_updates(resources.server_templates).await?;
|
||||
let (server_creates, server_updates) =
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use colored::Colorize;
|
||||
use monitor_client::{
|
||||
api::write::{UpdateDescription, UpdateTagsOnResource},
|
||||
entities::{
|
||||
@@ -93,40 +94,47 @@ pub trait ResourceSync {
|
||||
}
|
||||
}
|
||||
|
||||
let verbose = cli_args().verbose;
|
||||
let quiet = cli_args().quiet;
|
||||
|
||||
if !to_create.is_empty() {
|
||||
if verbose {
|
||||
println!("\n{} TO CREATE:\n{to_create:#?}", Self::display(),);
|
||||
} else {
|
||||
if quiet {
|
||||
println!(
|
||||
"\n{} TO CREATE: {:#?}",
|
||||
"\n{} {}: {:#?}",
|
||||
Self::display(),
|
||||
"TO CREATE".green(),
|
||||
to_create
|
||||
.iter()
|
||||
.map(|item| item.name.as_str())
|
||||
.collect::<Vec<_>>()
|
||||
);
|
||||
} else {
|
||||
println!(
|
||||
"\n{} {}:\n{to_create:#?}",
|
||||
Self::display(),
|
||||
"TO CREATE".green()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if !to_update.is_empty() {
|
||||
if verbose {
|
||||
if quiet {
|
||||
println!(
|
||||
"\n{} TO UPDATE:\n{:#?}",
|
||||
Self::display(),
|
||||
to_update.iter().map(|(_, r)| r).collect::<Vec<_>>()
|
||||
);
|
||||
} else {
|
||||
println!(
|
||||
"\n{} TO UPDATE: {}",
|
||||
"\n{} {}: {}",
|
||||
Self::display(),
|
||||
"TO UPDATE".blue(),
|
||||
to_update
|
||||
.iter()
|
||||
.map(|(_, item)| item.name.as_str())
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ")
|
||||
);
|
||||
} else {
|
||||
println!(
|
||||
"\n{} {}:\n{:#?}",
|
||||
Self::display(),
|
||||
"TO UPDATE".blue(),
|
||||
to_update.iter().map(|(_, r)| r).collect::<Vec<_>>()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user