Project Description

The goal of this project is to create a lightweight multi-cloud metadata CLI for Public Cloud environments. There are cloud specific packages that exist but they all have different API and many are developed in Python which is quite heavy for cloud images, especially containers. Leveraging a compiled language will help with keeping the CLI lightweight.

Goal for this Hackweek

  • A multi-cloud metadata package that works in all cloud frameworks (as support is added)
  • Developed in Go to keep the package and dependencies lightweight
  • Developed using Plugin Oriented Programming style to allow for easy inclusion of new Cloud Frameworks. Ideally with a simple config file (no new code).

Resources

  • Go (https://go.dev/)
  • jmespath (https://jmespath.org/)
  • POP (https://pop-book.readthedocs.io/en/latest/)
  • TBD

Looking for hackers with the skills:

golang cloud publiccloud cli

This project is part of:

Hack Week 21

Activity

  • over 2 years ago: ucaliskan liked this project.
  • over 2 years ago: amunoz joined this project.
  • over 2 years ago: amunoz liked this project.
  • over 2 years ago: jesus_bv joined this project.
  • over 2 years ago: RicardoFelipeKlein liked this project.
  • over 2 years ago: seanmarlow started this project.
  • over 2 years ago: seanmarlow added keyword "golang" to this project.
  • over 2 years ago: seanmarlow added keyword "cloud" to this project.
  • over 2 years ago: seanmarlow added keyword "publiccloud" to this project.
  • over 2 years ago: seanmarlow added keyword "cli" to this project.
  • over 2 years ago: seanmarlow originated this project.

  • Comments

    • seanmarlow
      over 2 years ago by seanmarlow | Reply

      Unfortunately I will only have a couple days to work on this for Hackweek. Otherwise it would be nice to coordinate the project with anyone interested in joining. What I plan to get to is:

      • Getting started with Golang
      • "Psuedo" programming the basic concept in Python
      • Put together yaml config files for the 3 major CSPs (Azure, AWS, GCP)

      The idea is that there's hopefully no new code to add a csp. The config files would map attr names to a jmespath query such as:

      azure.yaml metadata-url: http://169.254.169.254/metadata/instance?api-version=2021-02-01 private-ipv4-addrs: network.interface[].ipv4.ipAddress[].privateIpAddress private-ipv6-addrs: network.interface[].ipv6.ipAddress[].privateIpAddress private-ip-addrs: network.interface[].*.ipAddress[][].privateIpAddress region: compute.location

    • seanmarlow
      over 2 years ago by seanmarlow | Reply

      I think the challenge will be AWS as Azure and GCE both have ways to get the entire metadata dictionary with a single get request. Afaik AWS doesn't provide this functionality.

    • seanmarlow
      over 2 years ago by seanmarlow | Reply

      It gets a bit complex to query certain items such as the Azure image URN:

      compute.storageProfile.imageReference.[publisher,offer,sku,version] | join(':', @)

      And as above (after ipAddress) when you do a wildcard for some reason it adds an extra nested list to the next object:

      network.interface[].*.ipAddress[][].privateIpAddress

    Similar Projects

    suse-rancher-supportconfig by eminguez

    Description

    SUSE's supportconfig [suppo...


    Learn enough Golang and hack on CoreDNS by jkuzilek

    Description

    I'm implementing a split-horizo...


    Dartboard TUI by IValentin

    Description

    Our scalability and performance...


    ClusterOps - Easily install and manage your personal kubernetes cluster by andreabenini

    Description

    ClusterOps is a Kubernetes ...


    iSCSI integration in Warewulf by ncuralli

    Description

    This Hackweek project aims to...


    Mortgage Plan Analyzer by RMestre

    Project Description

    Many people face chal...


    Save pytorch models in OCI registries by jguilhermevanz

    Description

    A prerequisite for running ap...


    suse-rancher-supportconfig by eminguez

    Description

    SUSE's supportconfig [suppo...


    Dartboard TUI by IValentin

    Description

    Our scalability and performance...


    file-organizer: A CLI Tool for Efficient File Management by okhatavkar

    Description

    Create a Go-based CLI tool t...


    Implement a CLI tool for Trento - trentoctl by nkopliku

    Description

    Implement a trentoctl CLI for...


    A CLI for Harvester by mohamed.belgaied

    [comment]: # Harvester does not officially come...