Cloudkeeper is “housekeeping for clouds” - find leaky resources, manage quota limits, detect drift and clean up.

Overview

Cloudkeeper

Housekeeping for Clouds!

Table of contents

Overview

Cloudkeeper is “housekeeping for clouds” - find leaky resources, manage quota limits, detect drift and clean up.

Cloudkeeper indexes resources, captures dependencies and maps out your infrastructure in a graph so that it’s understandable for a human. The graph contains metrics for each resource. Developers and SREs can search the graph with a query language, and create alerting and clean-up workflows. Metrics can be aggregated and exported to a time series database like Prometheus.

If you ever

  • had a standstill in your CI pipeline because a broken job leaked cloud resources which triggered a quota limit
  • wanted to find all expired certificate
  • had to change the tags of thousands of EC2 instances at once
  • needed to delete all unused EBS volumes that had no I/O in the past month
  • wished for a god view that lets you explore all cloud usage across all clouds
  • reported the cost of a project across different accounts or even across clouds
  • cleaned up orphaned load balancers that had no active backends
  • wanted to automate any of the above

Those are the kinds of situations Cloudkeeper was built for.

Currently it can collect AWS, Google Cloud, VMWare Vsphere, OneLogin and Slack. The later can also be used for notification of resource cleanups. If the cloud you are using is not listed it is easy to write your own collectors. An example can be found here.

Cloudkeeper consists of multiple components described in the component list below

The latest Docker image is: ghcr.io/someengineering/cloudkeeper:2.0.0a6
The latest Documentation can be found on https://docs.some.engineering

Docker based quick start

In this quick start guide, we’re showing you three things, how to:

1. install Cloudkeeper for AWS with docker
2. use the Cloudkeeper CLI to run your first collect process
3. query the results of the collect process 

The docker set-up takes 2-5 minutes. The duration of the first collect process depends on the size of your environment - usually 5-10 minutes.

Examples and data in this guide are based on a small AWS Cloud9 environment.
To start exploring you need AWS credentials and a working Docker environment with access to AWS APIs.
We assume you are familiar with basic Docker operations and how to operate a Linux shell.

Continue reading the Quick Start Guide
--> https://docs.some.engineering/getting_started/quick_start.html

Cloning this repository

This Git repo uses Git Large File Storage (LFS).

If you would like to work on the UI ckui, before cloning the repo make sure to have git-lfs installed!

One time setup:

$ git clone https://github.com/someengineering/cloudkeeper.git
$ cd cloudkeeper/
$ git lfs install  # installs git-lfs hooks

Once set up you can interact with the repo like any other Git project. All large UI assets will be retrived from Github's LFS servers.

If you have no need for the UI assets git-lfs is optional.

Component list

Contact

If you have any questions feel free to join our Discord or open a GitHub issue.

License

Copyright 2021 Some Engineering Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Helm chart

    Helm chart

    Very much draft PR, but submitting to get early feedback:

    • Chart structure - does using deployments make sense? the structure of the values.yaml make sense?
    • Directory structure: Wasn't sure what the best structure? maybe install/helm instead of kubernetes/helm?
    • I created a ./kubernetes/setup-kind.sh as a starting point for an end-to-end test. I plan to add an e2e test in the github actions
    • Helm unit tests. I'm not familiar with python options; i saw a declarative one here. I never used it before, so wanted to get consensus before i add tests.
    • Doc is very much WIP
    • Releasing - how do you want this chart released? i see that you currently don't use github releases. This can also be in follow-up PR.
    opened by yuval-k 12
  • [plugins/aws][feat] Collect tags and enable tagging methods for Route53 Hosted Zones

    [plugins/aws][feat] Collect tags and enable tagging methods for Route53 Hosted Zones

    Description

    Collect tags and enable tagging methods for Route53 Hosted Zones.

    To-Dos

    • [x] Add test coverage for new or updated functionality
    • [x] Lint and test with tox
    • [ ] Document new or updated functionality (someengineering/resoto.com#XXXX)

    Code of Conduct

    By submitting this pull request, I agree to follow the code of conduct.

    opened by anjafr 6
  • AWS user missing mtime

    AWS user missing mtime

    Description

    A user's atime should be the time the account was last used, a users mtime should be the time the password was last updated. The new AWS collector is missing this info.

    Version

    main

    Environment

    No response

    Steps to Reproduce

    No response

    Logs

    No response

    Additional Context

    No response

    opened by lloesche 6
  • Create Helm Chart repository

    Create Helm Chart repository

    Motivation

    Currently, the Helm Chart needs to be pulled from the GitHub repository.

    Desired Behavior

    The Helm Chart should be published in a repository.

    Additional Context

    No response

    Code of Conduct

    • [X] I agree to follow the Code of Conduct
    enhancement 
    opened by TheCatLady 6
  • [plugins/k8s][feat] Add argument to collect all contexts in config file

    [plugins/k8s][feat] Add argument to collect all contexts in config file

    Description

    This avoids the need to specify every context in order to have it imported.

    Added a new argument rather than a magic value like all for --k8s-context to avoid any potential conflicts.

    To-Dos

    • [x] Add test coverage for new or updated functionality (to the extent that there's existing coverage to extend)
    • [x] Lint and test with tox
    • N/A ~Document new or updated functionality (someengineering/resoto.com#XXXX)~

    Code of Conduct

    By submitting this pull request, I agree to follow the code of conduct.

    opened by tdickers 5
  • [resotocore] `Update process interrupted` with large graph updates

    [resotocore] `Update process interrupted` with large graph updates

    Description

    When collecting a large number of accounts *1 the graph merge fails with any version newer than v2.0.0a13.

    Using https://github.com/someengineering/resoto/pull/608 (on a v2.0.0a15 image) to dump the collected graph and model:

    -rw-r--r--   1 marv  staff   306M Feb  7 23:31 resoto-graph-zasag9am.ndjson
    -rw-r--r--   1 marv  staff   103K Feb  7 23:27 resoto-model-bag5nlua.json
    

    Trying the steps @lloesche documented, I was unable to reproduce the behaviour locally (macOS, current main, graphdb in Docker). The graphs imports fine, albeit very slowly (which might just be due to the graphdb being undersized etc).

    Trying to understand whats going on from the provided stack trace:

    1. Import process starts at 19:49:07
    2. Import process dies at 19:49:40 - 33 seconds later.

    This kind of leads me to believe that Queue#get(True, 30) hits its 30 second timeout. Without diving too deep yet, the underlying locking mechanism seems like it might be platform/os dependent and therefore explains why I'm not seeing the same behaviour locally.

    Unfortunately I wont be able to supply the collected graph for debugging.

    Version

    v2.0.0a14+

    Environment

    Linux, Resoto one-for-all container image running on GKE

    Steps to Reproduce

    1. Collect a large graph, let resotoworker send it to resotocore for merge, grep logs of the spawned import process

    Logs

    22-02-07 19:49:01|resotoworker| INFO|85|worker-collect_cleanup  resotocore Event Handler called
    22-02-07 19:49:01|resotocore| INFO|84|MainThread  127.0.0.1 [07/Feb/2022:19:49:01 +0000] "POST /graph/resoto HTTP/1.1" 200 414 "-" "python-requests/2.27.1"
    22-02-07 19:49:04|resotocore| INFO|84|MainThread  127.0.0.1 [07/Feb/2022:19:49:02 +0000] "PATCH /model HTTP/1.1" 200 138466 "-" "python-requests/2.27.1"
    22-02-07 19:49:05|resotocore| INFO|84|MainThread  Received merge_graph request
    ======== Running on http://0.0.0.0:8900 ========
    (Press CTRL+C to quit)
    22-02-07 19:49:07|resotocore| INFO|497|MainThread  Import process started: 497
    22-02-07 19:49:07|resotocore| INFO|497|MainThread  Create ArangoHTTPClient with timeout=900 and verify=True
    22-02-07 19:49:33|resotocore| INFO|84|MainThread  127.0.0.1 [07/Feb/2022:19:49:33 +0000] "GET /metrics HTTP/1.1" 200 30633 "-" "Prometheus/2.32.1"
    22-02-07 19:49:40|resotocore|ERROR|497|MainThread  Update process interrupted. Preemptive Exit. 
    Traceback (most recent call last):
      File "/usr/local/resoto-venv-pypy3/lib/pypy3.8/site-packages/core/model/db_updater.py", line 155, in run
        result = asyncio.run(self.setup_and_merge())
      File "/usr/local/pypy/lib/pypy3.8/asyncio/runners.py", line 44, in run
        return loop.run_until_complete(main)
      File "/usr/local/pypy/lib/pypy3.8/asyncio/base_events.py", line 616, in run_until_complete
        return future.result()
      File "/usr/local/pypy/lib/pypy3.8/asyncio/futures.py", line 178, in result
        raise self._exception
      File "/usr/local/pypy/lib/pypy3.8/asyncio/tasks.py", line 280, in __step
        result = coro.send(None)
      File "/usr/local/resoto-venv-pypy3/lib/pypy3.8/site-packages/core/model/db_updater.py", line 145, in setup_and_merge
        result = await self.merge_graph(db)
      File "/usr/local/resoto-venv-pypy3/lib/pypy3.8/site-packages/core/model/db_updater.py", line 125, in merge_graph
        nxt = self.next_action()
      File "/usr/local/resoto-venv-pypy3/lib/pypy3.8/site-packages/core/model/db_updater.py", line 120, in next_action
        return self.read_queue.get(True, 30)  # type: ignore
      File "/usr/local/pypy/lib/pypy3.8/multiprocessing/queues.py", line 108, in get
        raise Empty
    queue.Empty
    22-02-07 19:49:40|resotocore| INFO|497|MainThread  Shutdown initiated for current process.
    

    Additional Context

    *1 - about 2000-ish GCP projects, only few select resource types resulting in a 306M resoto-graph .ndjson file

    bug 
    opened by MrMarvin 5
  • [resoto][feat] CDK construct

    [resoto][feat] CDK construct

    Description

    Added a CDK construct for a one command resoto deployment to AWS.

    To-Dos

    • [ ] Store container data on a different volume

    • [ ] Document new or updated functionality (someengineering/resoto.com#XXXX)

    Code of Conduct

    By submitting this pull request, I agree to follow the code of conduct.

    opened by meln1k 4
  • Digitalocean collector fails because of an unhandled error

    Digitalocean collector fails because of an unhandled error

    Description

    When running workflows run collect, the collector for DigitalOcean fais with An unhandled error occurred while collecting team XXXXXX (where XXXXX is the our team ID).

    Version

    2.4.1

    Environment

    Docker compose running on macOS 10.15

    Steps to Reproduce

    1. Setup the worker as described here: https://resoto.com/docs/getting-started/configure-cloud-provider-access/digitalocean
    2. Run workflows run collect
    3. Check the log to see the error

    Logs

    resoto-resotoworker-1        | {"timestamp": "2022-09-16T11:53:39", "level": "INFO", "message": "Collecting k8s_clusters in digitalocean_team XXXXXX", "pid": 136, "thread": "digitalocean", "process": "resotoworker"}
    resoto-resotoworker-1        | {"timestamp": "2022-09-16T11:53:39", "level": "INFO", "message": "Collecting snapshots in digitalocean_team XXXXXX", "pid": 136, "thread": "digitalocean", "process": "resotoworker"}
    resoto-resotoworker-1        | {"timestamp": "2022-09-16T11:53:45", "level": "ERROR", "message": "An unhandled error occurred while collecting team XXXXXXX", "pid": 136, "thread": "digitalocean", "process": "resotoworker", "exception": "Traceback (most recent call last):\n  File \"/usr/local/resoto-venv-python3/lib/python3.10/site-packages/resoto_plugin_digitalocean/__init__.py\", line 66, in collect_team\n    dopc.collect()\n  File \"/usr/local/resoto-venv-python3/lib/python3.10/site-packages/resoto_plugin_digitalocean/collector.py\", line 243, in collect\n    collector()\n  File \"<decorator-gen-24>\", line 2, in collect_snapshots\n  File \"/usr/local/resoto-venv-python3/lib/python3.10/site-packages/prometheus_client/context_managers.py\", line 81, in wrapped\n    return func(*args, **kwargs)\n  File \"/usr/local/resoto-venv-python3/lib/python3.10/site-packages/resoto_plugin_digitalocean/collector.py\", line 740, in collect_snapshots\n    self.collect_resource(\n  File \"/usr/local/resoto-venv-python3/lib/python3.10/site-packages/resoto_plugin_digitalocean/collector.py\", line 372, in collect_resource\n    log.debug(f\"Parent resource for {resource_instance.rtdname} automatically set to {pr.rtdname}\")\nAttributeError: 'list' object has no attribute 'rtdname'"}
    resoto-resotoworker-1        | {"timestamp": "2022-09-16T11:53:45", "level": "INFO", "message": "Collector of plugin digitalocean finished in 140.2884s", "pid": 136, "thread": "collector_digitalocean", "process": "resotoworker"}
    

    Additional Context

    No response

    bug 
    opened by Mayeu 4
  • [resotocore][fix] Allow for empty Discord alert message & move to embed description

    [resotocore][fix] Allow for empty Discord alert message & move to embed description

    Description

    As I was editing the Discord how-to guide, I noticed that the current Discord alerts look a little unpolished: image

    We should allow for users to omit the alert message entirely if they only want to specify the title. Also, the message text should be contained within the embed object for a cleaner look (and also so that the message doesn't look like a title).

    To-Dos

    • [ ] Add test coverage for new or updated functionality
    • [ ] Lint and test with tox

    Code of Conduct

    By submitting this pull request, I agree to follow the code of conduct.

    opened by TheCatLady 4
  • [resotocore][feat] Allow configuration of workflow schedules

    [resotocore][feat] Allow configuration of workflow schedules

    Description

    Allow configuration of workflow schedules.

    To-Dos

    • [x] Add test coverage for new or updated functionality
    • [x] Lint and test with tox

    Code of Conduct

    By submitting this pull request, I agree to follow the code of conduct.

    opened by aquamatthias 4
  • [resotocore] Help text is hard to read in Ubuntu Terminal

    [resotocore] Help text is hard to read in Ubuntu Terminal

    Description

    In logs section I've pasted a text version of this screenshot.

    The screenshot shows how the text renders with colors in Ubuntu Terminal.

    The messages that start with hashes such as "# Show all available kinds." are almost impossible to read because the background is dark blue and the text is slightly darker blue.

    image

    Version

    2.0.0a16

    Environment

    Ubuntu 20.04.3 LTS

    Steps to Reproduce

    1. Start an Ubuntu Terminal session.
    2. Start resh using docker run.
    3. Run a help command such as help kind.
    4. Struggle to see the darker blue text on a dark blue background.

    Logs

    > help kind
    kind: Retrieves information about the graph data kinds.                                                  
    
    ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ kind [-p property_path] [name]                                                                        │
    └───────────────────────────────────────────────────────────────────────────────────────────────────────┘
    
    kind gives information about the available graph data kinds.                                             
    
    
                                                     Options                                                 
    
     • -p [Optional] property_path: lookup the kind for the defined property path. This will do a reverse    
       lookup and search all kinds for the specified property path.                                          
    
    
                                                   Parameters                                                
    
     • name [Optional]: show available information about the kind with provided name.                        
    
    
                                                    Examples                                                 
    
    ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │                                                                                                       │
    │ # Show all available kinds.                                                                           │
    │ > kind                                                                                                │
    │ access_key                                                                                            │
    │ .                                                                                                     │
    │ .                                                                                                     │
    │ zone                                                                                                  │
    │                                                                                                       │
    │ # Show details about a specific kind.                                                                 │
    │ > kind graph_root                                                                                     │
    │ name: graph_root                                                                                      │
    │ bases:                                                                                                │
    │ - graph_root                                                                                          │
    │ properties:                                                                                           │
    │ - description: The name of this node.                                                                 │
    │   kind: string                                                                                        │
    │   name: name                                                                                          │
    │   required: false                                                                                     │
    │ - description: All attached tags of this node.                                                        │
    │   kind: dictionary[string, string]                                                                    │
    │   name: tags                                                                                          │
    │   required: false                                                                                     │
    │                                                                                                       │
    │ # Lookup the type of the given property path in the model.                                            │
    │ > kind -p reported.tags.owner                                                                         │
    │ name: string                                                                                          │
    │ runtime_kind: string                                                                                  │
    └───────────────────────────────────────────────────────────────────────────────────────────────────────┘
    >
    

    Additional Context

    No response

    bug 
    opened by iainelder 4
  • [plugin/aws] Refactor AwsEc2SecurityGroup pre_delete_resource

    [plugin/aws] Refactor AwsEc2SecurityGroup pre_delete_resource

    Motivation

    In the past the resource didn't have group_ip_permissions and group_ip_permissions_egress so the pre_delete method fetched them. Now that they are being collected and part of the node that extra fetch during deletion is no longer necessary.

    Desired Behavior

    Use the data already present in the node, instead of fetching it again.

    Additional Context

    No response

    enhancement 
    opened by lloesche 0
  • AWS Route53 ResourceRecordSets can't be deleted

    AWS Route53 ResourceRecordSets can't be deleted

    Description

    Currently RRSets are only collected but can't be deleted: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets

    Version

    3.0.0

    Environment

    No response

    Steps to Reproduce

    No response

    Logs

    No response

    Additional Context

    No response

    bug 
    opened by lloesche 0
  • Load balancer `backends` not filled in for DigitalOcean and K8S

    Load balancer `backends` not filled in for DigitalOcean and K8S

    Description

    Load balancer backends not filled in for DigitalOcean and K8S

    Version

    3.0.0

    Environment

    No response

    Steps to Reproduce

    No response

    Logs

    No response

    Additional Context

    No response

    bug 
    opened by lloesche 0
  • Graph operations

    Graph operations

    Motivation

    I'd like to be able to save a version of my infrastructure graph, export it and import it into another Resoto installation.

    Desired Behavior

    > graph snapshot <snapshot_name> [graph_name]
    > graph export <filename> [graph_name]
    > graph import <filename> <graph_name>
    > graph delete <graph_name>
    > graph rename <graph_name> <new_graph_name>
    > model export <filename>
    > model import <filename>
    

    Additional Context

    No response

    enhancement 
    opened by lloesche 0
  • Select random elements of list

    Select random elements of list

    Motivation

    I often find myself wanting to look at the contents of a random element of a search result. Most of the time I do

    search ... | tail -1 | dump
    

    Or the head equivalent, but if I want a third sample I need to copy'paste it from the list output.

    Desired Behavior

    search ... | random | dump   # returns 1 random element
    search ... | random 3 | dump   # returns 3 random elements
    

    Additional Context

    No response

    enhancement 
    opened by lloesche 0
  • Add `grep`

    Add `grep`

    Motivation

    kinds | grep certificate would be great, since kinds is a very long list

    Desired Behavior

    grep filters for string

    Additional Context

    No response

    enhancement 
    opened by lloesche 0
Releases(3.0.3)
  • 3.0.3(Dec 27, 2022)

    Release Notes

    https://resoto.com/news/2022/12/27/3.0.3

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.3
    • somecr.io/someengineering/resotoworker:3.0.3
    • somecr.io/someengineering/resotoshell:3.0.3
    • somecr.io/someengineering/resotometrics:3.0.3
    Source code(tar.gz)
    Source code(zip)
  • 3.0.2(Dec 22, 2022)

    Release Notes

    https://resoto.com/news/2022/12/22/3.0.2

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.2
    • somecr.io/someengineering/resotoworker:3.0.2
    • somecr.io/someengineering/resotoshell:3.0.2
    • somecr.io/someengineering/resotometrics:3.0.2
    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Dec 13, 2022)

    Release Notes

    https://resoto.com/news/2022/12/13/3.0.1

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.1
    • somecr.io/someengineering/resotoworker:3.0.1
    • somecr.io/someengineering/resotoshell:3.0.1
    • somecr.io/someengineering/resotometrics:3.0.1
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Dec 2, 2022)

    Release Notes

    https://resoto.com/news/2022/12/02/3.0.0

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0
    • somecr.io/someengineering/resotoworker:3.0.0
    • somecr.io/someengineering/resotoshell:3.0.0
    • somecr.io/someengineering/resotometrics:3.0.0
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0rc4(Dec 1, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0rc4
    • somecr.io/someengineering/resotoworker:3.0.0rc4
    • somecr.io/someengineering/resotoshell:3.0.0rc4
    • somecr.io/someengineering/resotometrics:3.0.0rc4
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0rc3(Nov 30, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0rc3
    • somecr.io/someengineering/resotoworker:3.0.0rc3
    • somecr.io/someengineering/resotoshell:3.0.0rc3
    • somecr.io/someengineering/resotometrics:3.0.0rc3
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0rc2(Nov 29, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0rc2
    • somecr.io/someengineering/resotoworker:3.0.0rc2
    • somecr.io/someengineering/resotoshell:3.0.0rc2
    • somecr.io/someengineering/resotometrics:3.0.0rc2
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0rc1(Nov 25, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0rc1
    • somecr.io/someengineering/resotoworker:3.0.0rc1
    • somecr.io/someengineering/resotoshell:3.0.0rc1
    • somecr.io/someengineering/resotometrics:3.0.0rc1
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0a4(Nov 24, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0a4
    • somecr.io/someengineering/resotoworker:3.0.0a4
    • somecr.io/someengineering/resotoshell:3.0.0a4
    • somecr.io/someengineering/resotometrics:3.0.0a4
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0a3(Nov 24, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0a3
    • somecr.io/someengineering/resotoworker:3.0.0a3
    • somecr.io/someengineering/resotoshell:3.0.0a3
    • somecr.io/someengineering/resotometrics:3.0.0a3
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0a2(Nov 22, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0a2
    • somecr.io/someengineering/resotoworker:3.0.0a2
    • somecr.io/someengineering/resotoshell:3.0.0a2
    • somecr.io/someengineering/resotometrics:3.0.0a2
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0a1(Nov 21, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0a1
    • somecr.io/someengineering/resotoworker:3.0.0a1
    • somecr.io/someengineering/resotoshell:3.0.0a1
    • somecr.io/someengineering/resotometrics:3.0.0a1
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0a0(Nov 18, 2022)

    Docker Images

    • somecr.io/someengineering/resotocore:3.0.0a0
    • somecr.io/someengineering/resotoworker:3.0.0a0
    • somecr.io/someengineering/resotoshell:3.0.0a0
    • somecr.io/someengineering/resotometrics:3.0.0a0
    Source code(tar.gz)
    Source code(zip)
  • 2.4.7(Nov 17, 2022)

    Release Notes

    https://resoto.com/news/2022/11/17/2.4.7

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.7
    • somecr.io/someengineering/resotoworker:2.4.7
    • somecr.io/someengineering/resotoshell:2.4.7
    • somecr.io/someengineering/resotometrics:2.4.7
    Source code(tar.gz)
    Source code(zip)
  • 2.4.5(Oct 22, 2022)

    Release Notes

    https://resoto.com/news/2022/10/22/2.4.5

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.5
    • somecr.io/someengineering/resotoworker:2.4.5
    • somecr.io/someengineering/resotoshell:2.4.5
    • somecr.io/someengineering/resotometrics:2.4.5
    Source code(tar.gz)
    Source code(zip)
  • 2.4.4(Oct 19, 2022)

    Release Notes

    https://resoto.com/news/2022/10/19/2.4.4

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.4
    • somecr.io/someengineering/resotoworker:2.4.4
    • somecr.io/someengineering/resotoshell:2.4.4
    • somecr.io/someengineering/resotometrics:2.4.4
    Source code(tar.gz)
    Source code(zip)
  • 2.4.3(Oct 11, 2022)

    Release Notes

    https://resoto.com/news/2022/10/11/2.4.3

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.3
    • somecr.io/someengineering/resotoworker:2.4.3
    • somecr.io/someengineering/resotoshell:2.4.3
    • somecr.io/someengineering/resotometrics:2.4.3
    Source code(tar.gz)
    Source code(zip)
  • 2.4.2(Oct 5, 2022)

    Release Notes

    https://resoto.com/news/2022/10/05/2.4.2

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.2
    • somecr.io/someengineering/resotoworker:2.4.2
    • somecr.io/someengineering/resotoshell:2.4.2
    • somecr.io/someengineering/resotometrics:2.4.2
    Source code(tar.gz)
    Source code(zip)
  • 2.4.1(Sep 3, 2022)

    Release Notes

    https://resoto.com/news/2022/09/03/2.4.1

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.1
    • somecr.io/someengineering/resotoworker:2.4.1
    • somecr.io/someengineering/resotoshell:2.4.1
    • somecr.io/someengineering/resotometrics:2.4.1
    Source code(tar.gz)
    Source code(zip)
  • 2.4.0(Aug 16, 2022)

    Release Notes

    https://resoto.com/news/2022/08/16/2.4.0

    Docker Images

    • somecr.io/someengineering/resotocore:2.4.0
    • somecr.io/someengineering/resotoworker:2.4.0
    • somecr.io/someengineering/resotoshell:2.4.0
    • somecr.io/someengineering/resotometrics:2.4.0
    Source code(tar.gz)
    Source code(zip)
  • 2.3.2(Jun 24, 2022)

    Release Notes

    https://resoto.com/news/2022/06/24/2.3.2

    Docker Images

    • somecr.io/someengineering/resotocore:2.3.2
    • somecr.io/someengineering/resotoworker:2.3.2
    • somecr.io/someengineering/resotoshell:2.3.2
    • somecr.io/someengineering/resotometrics:2.3.2
    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Jun 22, 2022)

    Release Notes

    https://resoto.com/news/2022/06/22/2.3.1

    Docker Images

    • somecr.io/someengineering/resotocore:2.3.1
    • somecr.io/someengineering/resotoworker:2.3.1
    • somecr.io/someengineering/resotoshell:2.3.1
    • somecr.io/someengineering/resotometrics:2.3.1
    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(May 13, 2022)

    Release Notes

    https://resoto.com/news/2022/05/13/2.2.0

    Docker Images

    • somecr.io/someengineering/resotocore:2.2.0
    • somecr.io/someengineering/resotoworker:2.2.0
    • somecr.io/someengineering/resotoshell:2.2.0
    • somecr.io/someengineering/resotometrics:2.2.0
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Apr 28, 2022)

    Release Notes

    https://resoto.com/news/2022/04/28/2.1.0

    Docker Images

    • somecr.io/someengineering/resotocore:2.1.0
    • somecr.io/someengineering/resotoworker:2.1.0
    • somecr.io/someengineering/resotoshell:2.1.0
    • somecr.io/someengineering/resotometrics:2.1.0
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Apr 22, 2022)

    Release Notes

    https://resoto.com/news/2022/04/22/2.0.2

    Docker Images

    • somecr.io/someengineering/resotocore:2.0.2
    • somecr.io/someengineering/resotoworker:2.0.2
    • somecr.io/someengineering/resotoshell:2.0.2
    • somecr.io/someengineering/resotometrics:2.0.2
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Apr 14, 2022)

    Release Notes

    https://resoto.com/news/2022/04/14/2.0.1

    Docker Images

    • somecr.io/someengineering/resotocore:2.0.1
    • somecr.io/someengineering/resotoworker:2.0.1
    • somecr.io/someengineering/resotoshell:2.0.1
    • somecr.io/someengineering/resotometrics:2.0.1
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Apr 12, 2022)

    Release Notes

    https://resoto.com/news/2022/04/12/2.0.0

    Docker Images

    • somecr.io/someengineering/resotocore:2.0.0
    • somecr.io/someengineering/resotoworker:2.0.0
    • somecr.io/someengineering/resotoshell:2.0.0
    • somecr.io/someengineering/resotometrics:2.0.0
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0rc2(Apr 9, 2022)

    Docker Images

    All-in-One

    • somecr.io/someengineering/resoto:2.0.0rc2

    Components

    • somecr.io/someengineering/resotocore:2.0.0rc2
    • somecr.io/someengineering/resotoworker:2.0.0rc2
    • somecr.io/someengineering/resotoshell:2.0.0rc2
    • somecr.io/someengineering/resotometrics:2.0.0rc2
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0rc1(Apr 6, 2022)

    Docker Images

    All-in-One

    • somecr.io/someengineering/resoto:2.0.0rc1

    Components

    • somecr.io/someengineering/resotocore:2.0.0rc1
    • somecr.io/someengineering/resotoworker:2.0.0rc1
    • somecr.io/someengineering/resotoshell:2.0.0rc1
    • somecr.io/someengineering/resotometrics:2.0.0rc1
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0rc0(Apr 5, 2022)

    Docker Images

    All-in-One

    • somecr.io/someengineering/resoto:2.0.0rc0

    Components

    • somecr.io/someengineering/resotocore:2.0.0rc0
    • somecr.io/someengineering/resotoworker:2.0.0rc0
    • somecr.io/someengineering/resotoshell:2.0.0rc0
    • somecr.io/someengineering/resotometrics:2.0.0rc0
    Source code(tar.gz)
    Source code(zip)
Owner
Some Engineering
Some Engineering
Terraform module to ship CloudTrail logs stored in a S3 bucket into a Kinesis stream for further processing and real-time analysis.

AWS infrastructure to ship CloudTrail logs from S3 to Kinesis This repository contains a Terraform module to ship CloudTrail logs stored in a S3 bucke

Nexthink 8 Sep 20, 2022
Microservice to extract structured information on EVM smart contracts.

Contract Serializer Microservice to extract structured information on EVM smart contract. Why? Modern NFT contracts may have different names for getPr

WeBill.io 8 Dec 19, 2022
A telegram bot writen in python for mirroring files on the internet to our beloved Google Drive

[] Mirror Bot This is a telegram bot writen in python for mirroring files on the internet to our beloved Google Drive. Deploying on Heroku Give Star &

43 Mar 06, 2022
Python Discord Server Nuker

Untitled Nuker Python Discord Server Nuker Features: Ban Everyone Kick Everyone Rename Everyone Spam To All Channels Delete All Channels Delete All Ro

22 Dec 22, 2022
Telegram hack bot [ For Dev ]

Telegram hack bot [ For Dev ]

Alison Parker 1 Jul 04, 2022
GitHub Activity Generator - A script that helps you instantly generate a beautiful GitHub Contributions Graph for the last year.

GitHub Activity Generator A script that helps you instantly generate a beautiful GitHub Contributions Graph for the last year. Before 😐 😶 😒 After ?

1 Dec 30, 2021
Automatically Forward files from groups to channel & FSub

Backup & ForceSub Automatically Forward files from groups to channel & Do force sub on members Variables API_ID : Get from my.telegram.org API_HASH :

Arunkumar Shibu 7 Nov 06, 2022
An open-source Discord bot that alerts your server when it's Funky Monkey Friday!

Funky-Monkey-Friday-Bot An open-source Discord bot that alerts your server when it's Funky Monkey Friday! Add it to your server here! https://discord.

Cole Swinford 0 Nov 10, 2022
A telegram smoot and high quality music player bot.

▪︎ Music Player ▪︎ A smooth telegram music bot with high quality songs ■ [Features] • Fast Starts streaming your inputs while downloading and converti

Simple Boy 3 Feb 05, 2022
Instagram Account Creator 🥰

Instagram Account Creatorr Instagram account creator that uses requests instead of selenium! Report Bug · Request Feature Features Request based Conta

dropout 9 Oct 27, 2021
Paginator for Dis-Snek Python Discord API wrapper

snek-paginator Paginator for Dis-Snek Python Discord API wrapper Installation: pip install -U snek-paginator Basic Example: from dis_snek.client impo

1 Nov 04, 2021
Terraform Cloud CLI for Managing Workspace Terraform Versions

Terraform Cloud Version Manager This tiny script makes it easy to update the Terraform Version on all of the Workspaces inside Terraform Cloud. It wil

Robert Hafner 1 Jan 07, 2022
Slash util - A simple script to add application command support to discord.py v2.0

slash_util is a simple wrapper around slash commands for discord.py This is writ

Maya 28 Nov 16, 2022
A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat.

TgTwitterStreamer A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat. For Getting ENV's Refer this Link

Anonymous 69 Dec 20, 2022
Online Marketplace API

Online Marketplace API Table of Contents Setup Instructions Documentation Setup instructions Make sure you have python installed Clone the repository

Kanat 3 Jul 13, 2022
Provide fine-grained push access to GitHub from a JupyterHub

github-app-user-auth Provide fine-grained push access to GitHub from a JupyterHub. Goals Allow users on a JupyterHub to grant push access to only spec

Yuvi Panda 20 Sep 13, 2022
Python SDK for accessing the Hanko Authentication API

Hanko Authentication SDK for Python This package is maintained by Hanko. Contents Introduction Documentation Installation Usage Prerequisites Create a

Hanko.io 3 Mar 08, 2022
A Python library for rendering ASS subtitle file format using libass.

ass_renderer A Python library for rendering ASS subtitle file format using libass. Installation pip install --user ass-renderer Contributing # Clone

1 Nov 02, 2022
A Discord Bot that tracks and displays cryptocurrencies using the CoinMarketCap API

PyBo - A Crypto Inspired Discord Bot Pybo (paɪ boʊ) is a Discord bot that utilizes the discord.py API wrapper to run the bot. Pybo also integrates the

0 Nov 17, 2022
✨ A simple project to automate some stuffs in Habbo with G-Earth ✨

⚡️ Habbo G-Earth extensions ⚡️ ✨ A simple project to automate some stuffs in Habbo with G-Earth ✨ About | Getting Started | Authors ➤ Getting Started

Lucca Pessoa 1 Jan 09, 2022