{"id":15103284,"url":"https://github.com/caravanacloud/cloud-janitor","last_synced_at":"2025-09-27T01:30:53.040Z","repository":{"id":37026594,"uuid":"459232934","full_name":"CaravanaCloud/cloud-janitor","owner":"CaravanaCloud","description":"Automating cleanup, maintenance and troubleshooting tasks in Cloud Computing","archived":true,"fork":false,"pushed_at":"2023-06-18T18:14:22.000Z","size":301640,"stargazers_count":83,"open_issues_count":110,"forks_count":10,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-01T18:21:20.065Z","etag":null,"topics":["aws","devops","java","quarkus"],"latest_commit_sha":null,"homepage":"https://github.com/CaravanaCloud/cloud-janitor","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CaravanaCloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"caravanacloud"}},"created_at":"2022-02-14T16:15:13.000Z","updated_at":"2024-08-03T12:50:44.000Z","dependencies_parsed_at":"2024-06-20T21:59:05.200Z","dependency_job_id":null,"html_url":"https://github.com/CaravanaCloud/cloud-janitor","commit_stats":{"total_commits":437,"total_committers":3,"mean_commits":"145.66666666666666","dds":"0.25171624713958807","last_synced_commit":"f60e78bf4408ba9b58174cca3ff52386e7594adf"},"previous_names":[],"tags_count":125,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaravanaCloud%2Fcloud-janitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaravanaCloud%2Fcloud-janitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaravanaCloud%2Fcloud-janitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaravanaCloud%2Fcloud-janitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CaravanaCloud","download_url":"https://codeload.github.com/CaravanaCloud/cloud-janitor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234369959,"owners_count":18821357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","devops","java","quarkus"],"created_at":"2024-09-25T19:23:10.973Z","updated_at":"2025-09-27T01:30:51.617Z","avatar_url":"https://github.com/CaravanaCloud.png","language":"Java","funding_links":["https://github.com/sponsors/caravanacloud"],"categories":[],"sub_categories":[],"readme":"# Cloud Janitor\n\nTL;DR: A convenience tool to automate operations in cloud computing, like creating clusters or cleaning up accounts.\n\nFor example, consider a 'create-cluster' task. Cloud janitor will lookup reasonable defaults, validate and backup configuration,\ninstall dependencies, create account-level resources, create cluster-level resources, wait for health check, install plugins and verify the application. \nAll that from a single invocation, using a command line like `cloud-janitor openshift-create-cluster` or the equivalent inside a container, github action or gitpod.io workspace.\n\nStart you gitpod workspace in the link below and try `cloud-jantor cowsay hello` or any other task, you can find a complete list with `cloud-janitor -cj:help` :)\n\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#github.com/CaravanaCloud/cloud-janitor)\n\n## Features\n\nAs developers and sysadmins we are used to building scripts and solutions to automate tasks. \nHowever, sharing those solutions can be difficult as they are executed in different machines and contexts.\nThis often leads to a lot of duplication of effort and code to perform the same tasks, such as creating clusters or cleaning up accounts.\n\n**Intent Resolution**\nTasks will look up reasonable defaults, using well-known tools and patterns. \nFor example, a \"create-cluster\" identify the cluster provider from the system configuration and generate reasonable defaults, including the cluster name. \n\n**Improved Security**\nSensitive outputs, such as administrator passwords, can be filtered out of output and stored in a secure location.\nAll sensitive operations are protected by a capability toggle and can be easily disabled for dry runs.\n\n**Easy to Run and Configure**\nAll settings are exposed as environment variables, yaml and others, as supported by [Quarkus and Smallrye Config](https://quarkus.io/guides/config). Code can be executed as a command line, jar package, container image, github action. Ansible and other tools to be added in future releases.\n\n**Resource Filtering \u0026 Resolution**\nOnly the matched resources, and their dependents, are affected.\n\n**Multi-region, Multi-account and Multi-cloud**\nCloud janitor will use your configured cloud credentials an any extra configuration \nto repeat actions across different contexts, such as cleaning up multiple cloud accounts.\n\n**Logs \u0026 Reporting**\nKeep a record of invocations and their results for queries, visualization and audits.\n\n**Rate Limiting**\nRespect API limits and throttling with backoffs and timeouts.\n\nCloud Janitor is also built to be easily extensible and contributions are most welcome!\n\n## Cloud Janitor on GitPod\n\nThis repository is ready to launch on gitpod, containing all configuration to start your development instance with Java, Quarkus, AWS CLI and all tools that you need to code.\n\nOnce your workspace is running use the command ```aws configure``` to setup your AWS account authentication. You can also use gitpod environment variables or dotfiles for that purpose. Check that authentication is correct with the command ```aws sts get-caller-identity```\n\nYou can run cloud-janitor in development mode by executing ```quarkus dev```, ```mvn quarkus:dev``` or simply running the class ```cj.Application```. The default task is called \"marvin\" and is mostly harmless. It will just log the most important reminder: \"Don't panic\" :) \n\nReady to start janitoring? Check the ```LearningFromTests``` class for some examples.\n\n## Contribute to Cloud Janitor\n\nYes, we need your help and would love to work with you :)\n\nBesides that, contributing to cloud janitor is a great way to learn Java and AWS. \n\nWe are glad to help you get started and build upon this repository as you'd like.\n\nIf you´d like to get in touch directly, besides here on github, you can find us on twitter.com/cj.\n\n## Executing Cloud Janitor\n\nHere are multiple ways you can execute this project. \n\nAll mentioned binaries can be found in the [project releases page](https://github.com/CaravanaCloud/cloud-janitor/releases).\n\n### Homebrew (todo)\nInstall it:\n```\nbrew tap cj/homebrew-tap\nbrew install cloud-janitor\n```\nRun it:\n```\ncloud-janitor\n```\n\n### From sources (dev mode)\nUsing the maven wrapper:\n```\n./mvnw quarkus:dev\n```\nUsing the Quarkus CLI:\n```\nquarkus dev\n```\nUsing your IDE, run the `cj.Main` class.\n\n### Executable Jar\n```bash\njava -jar java -jar cloud-janitor.jar\n```\n\n### Docker Container\n```bash\ndocker run --pull=always cj/cloud-janitor \n```\n\n### Github Action\n```\n- name: Cloud Janitor\n  uses: CaravanaCloud/cloud-janitor@v1.7.3\n```\n\n## Configuring Cloud Janitor\n\nCloud janitor can be configured to perform wide variety of tasks, from creating cluster to translating videos.\nTake a look at our configuration samples in the [config](./config) directory in this repository.\nRenaming any configuration file to `application.yaml` will make it the default configuration and executed by cloud-janitor.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaravanacloud%2Fcloud-janitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaravanacloud%2Fcloud-janitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaravanacloud%2Fcloud-janitor/lists"}