Extensible auto-tagger for your IaC files. The ultimate way to link entities in the cloud back to the codified resource which created it.

Hacktoberfest

Maintained by Bridgecrew.io golangci-lint security gopherbadger-tag-do-not-edit slack-community Go Report Card Go Reference Docker pulls Chocolatey downloads GitHub All Releases

Yor is an open-source tool that helps add informative and consistent tags across infrastructure-as-code frameworks such as Terraform, CloudFormation, and Serverless.

Yor is built to run as a GitHub Action automatically adding consistent tagging logics to your IaC. Yor can also run as a pre-commit hook and a standalone CLI.

Features

  • Apply tags and labels on infrastructure as code directory
  • Tracing: yor_trace tag enables simple attribution between an IaC resource block and a running cloud resource.
  • Change management: git-based tags automatically add org, repo, commit and modifier details on every resource block.
  • Custom taggers: user-defined tagging logics can be added to run using Yor.
  • Skips: inline annotations enable developers to exclude paths that should not be tagged.

Demo

Table of contents

Getting Started

Installation

MacOS / Linux

brew tap bridgecrewio/tap
brew install bridgecrewio/tap/yor

OR

Windows

choco install yor

OR

Docker

docker pull bridgecrew/yor

docker run --tty --volume /local/path/to/tf:/tf bridgecrew/yor tag --directory /tf

GitHub Action

name: IaC trace

on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  yor:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        name: Checkout repo
        with:
          fetch-depth: 0
          ref: ${{ github.head_ref }}
      - name: Run yor action and commit
        uses: bridgecrewio/yor-action@main

Pre-commit

  - repo: git://github.com/bridgecrewio/yor
    rev: 0.0.44
    hooks:
      - id: yor
        name: yor
        entry: yor tag -d
        args: ["example/examplea"]
        language: golang
        types: [terraform]
        pass_filenames: false

Usage

tag : Apply tagging on a given directory.

 # Apply all the tags in yor on the directory tree terraform.
 yor tag --directory terraform/

# Apply all the tags in yor except the tags git_last_modified_by and yor_trace.
 yor tag --directory terraform/ --skip-tags git_last_modified_by,yor_trace

# Apply only the tags under the git tag group.
 yor tag --tag-groups git --directory terraform/

# Apply key-value tags on a specific directory
 export YOR_SIMPLE_TAGS='{ "Environment" : "Dev" }'
 yor tag --tag-groups simple --directory terraform/dev/

-o : Modify output formats.

yor tag -d . -o cli
# default cli output

yor tag -d . -o json
# json output

yor tag -d . --output cli --output-json-file result.json
# print cli output and additional output to file on json file -- enables programmatic analysis alongside printing human readable result

--skip-tags: Specify only named tags (allow list) or run all tags except those listed (deny list).

yor tag -d . --skip-tags yor_trace
## Run all but yor_trace

yor tag -d . --skip-tags yor_trace,git_modifiers
## Run all but yor_trace and git_modifiers

yor tag -d . --skip-tags git*
## Run all tags except tags with specified patterns

skip-dirs : Skip directory paths you can define paths that will not be tagged.

yor tag -d path/to/files
## Run on the directory path/to/files

yor tag -d path/to/files --skip-dirs path/to/files/skip,path/to/files/another/skip2
## Run yor on the directory path/to/files, skipping path/to/files/skip/ and path/to/files/another/skip2/

list-tag

yor list-tag-groups
 # List tag classes that are built into yor.

yor list-tags
 # List all the tags built into yor
yor list-tags --tag-groups git

 # List all the tags built into yor under the tag group git

What is Yor trace?

yor_trace is a magical tag creating a unique identifier for an IaC resource code block.

Having a yor_trace in place can help with tracing code block to its cloud provisioned resources without access to sensitive data such as plan or state files.

See demo here

Contributing

Contribution is welcomed!

We are working on extending Yor and adding more parsers (to support additional IaC frameworks) and more taggers (to tag using other contextual data).

To maintain our conventions, please run lint on your branch before opening a PR. To run lint:

golangci-lint run --fix --skip-dirs tests/yor_plugins

Support

For more support contact us at https://slack.bridgecrew.io/.

Owner
Bridgecrew
Secure public cloud infrastructure
Bridgecrew
Comments
  • Can't run yor on MacOS

    Can't run yor on MacOS

    MacOS Version 10.14.6 Terraform v0.14.6 Go version go1.16.4 darwin/amd64

    All yor commands fail to run, including yor --version. This is the same when installed through homebrew and when build from source.

    Expected output:

    yor version 0.1.59
    

    Actual output:

    ./yor --version
    runtime: netpoll: break fd ready for -2
    fatal error: runtime: netpoll: break fd ready for something unexpected
    runtime stack:
    runtime.throw(0x5df86e7, 0x39)
    	/usr/local/Cellar/go/1.16.4/libexec/src/runtime/panic.go:1117 +0x72
    runtime.netpoll(0x16ea5e, 0x14bdedda9e06)
    	/usr/local/Cellar/go/1.16.4/libexec/src/runtime/netpoll_kqueue.go:147 +0x33e
    runtime.findrunnable(0xc000073800, 0x0)
    	/usr/local/Cellar/go/1.16.4/libexec/src/runtime/proc.go:2923 +0x3ee
    runtime.schedule()
    	/usr/local/Cellar/go/1.16.4/libexec/src/runtime/proc.go:3169 +0x2d7
    runtime.park_m(0xc000001b00)
    	/usr/local/Cellar/go/1.16.4/libexec/src/runtime/proc.go:3318 +0x9d
    runtime.mcall(0x80000)
    	/usr/local/Cellar/go/1.16.4/libexec/src/runtime/asm_amd64.s:327 +0x5b
    goroutine 1 [runnable, locked to thread]:
    golang.org/x/text/internal/language.getLangID(0xc0005acb18, 0x2, 0x20, 0x80, 0x5bbf260, 0x5468617)
    	/Users/blackdenc/go/pkg/mod/golang.org/x/[email protected]/internal/language/lookup.go:39 +0xbb
    golang.org/x/text/internal/language.parseTag(0xc00051cbd8, 0x0, 0x0, 0x0, 0x5dab424)
    	/Users/blackdenc/go/pkg/mod/golang.org/x/[email protected]/internal/language/parse.go:294 +0x6d
    golang.org/x/text/internal/language.parse(0xc00051cbd8, 0x5dab424, 0xe, 0x0, 0x0, 0x0, 0x6169636e656c, 0x0)
    	/Users/blackdenc/go/pkg/mod/golang.org/x/[email protected]/internal/language/parse.go:265 +0x236
    golang.org/x/text/internal/language.Parse(0x5dab424, 0xe, 0x0, 0x0, 0x0, 0x1, 0xc00004e220)
    	/Users/blackdenc/go/pkg/mod/golang.org/x/[email protected]/internal/language/parse.go:250 +0x215
    golang.org/x/text/internal/language.MustParse(...)
    	/Users/blackdenc/go/pkg/mod/golang.org/x/[email protected]/internal/language/tags.go:10
    golang.org/x/text/internal/language/compact.init.0()
    	/Users/blackdenc/go/pkg/mod/golang.org/x/[email protected]/internal/language/compact/compact.go:59 +0x13e
    goroutine 19 [select]:
    go.opencensus.io/stats/view.(*worker).start(0xc00013de50)
    	/Users/blackdenc/go/pkg/mod/[email protected]/stats/view/worker.go:154 +0xcd
    created by go.opencensus.io/stats/view.init.0
    	/Users/blackdenc/go/pkg/mod/[email protected]/stats/view/worker.go:32 +0x57
    
  • Feature request: support prefixes for generated tags

    Feature request: support prefixes for generated tags

    Is your feature request related to a problem? Please describe. Yes, the problem is described in this blog post https://gsd.fundapps.io/how-we-make-yor-work-with-terraform-caller-and-child-modules-22216afd775d where the author wants to tag remote module resources and the module-calling resource. Therefore he needs to remap the "incoming" tags from the caller.

    Describe the solution you'd like Yor should support a --prefix (or similar) option which would generate prefixed tags. This way one could run yor tag -d . --prefix "module_" for the module terraform code and would get module_yor_trace, module_git_commitand so on. The caller terraform code would run yor tag -d . as usual. No remapping is needed as the caller tags won't overwrite module tags.

    Describe alternatives you've considered The alternative is already described in the blog post mentioned to remap values.

  • Yor is writing temp.[0-9]+.tf files instead of changing the source code

    Yor is writing temp.[0-9]+.tf files instead of changing the source code

    Describe the bug Executing yor via pre-commit hook results in many temporary files, but none of my Terraform files is changed.

    modules/global_export/temp.3293289490.tf
    modules/global_keys/temp.1193803556.tf
    modules/messaging/sns/temp.3597613450.tf
    modules/shared/temp.813126445.tf
    temp.82075535.tf
    

    Looks like that yor created one temporary file per Terraform source file. No error message is shown.

    Using yor via Docker works as expected.

    To Reproduce

    repos:
    -   repo: https://github.com/bridgecrewio/yor
        rev: 0.1.143
        hooks:
          - id: yor
            name: yor
            entry: yor tag --directory
            args: ["."]
            language: golang
            types: [terraform]
            pass_filenames: false
    

    Install the pre-commit hook and change a Terraform file. After git commit the temporary file appears.

    Expected behavior Have the Terraform source code changed (tags added).

    Desktop (please complete the following information):

    • OS: Windows 10
    • Yor: 0.1.143
  • Unable to tag modules using a generic git repository as source

    Unable to tag modules using a generic git repository as source

    Describe the bug Yor will not tag a module that is using a generic git repository as source:

    module "my_module" {
      source = "git::https://internal.repo.com/my-terraform-module.git?ref=vX.X.X"
      var1   = var.var1
      var2   = var.var2
      ...
    }
    

    Module not tagged when running yor tag -d . Output:

      __    __
      \ \  / /
       \ \/ /___  _  ____
        \  /  _ \| |/  __|
        | |  |_| |   /
        |_|\____/|__|v0.1.139
     Yor Findings Summary
     Scanned Resources:	  5
     New Resources Traced: 	  0
     Updated Resources:	  0
    

    Expected behavior Module to be properly tagged

    • Yor Version: 0.1.139
  • Hard to understand error

    Hard to understand error "no provider exists with the given name"

    I was trying to run yor for testing on one of our dev applications in our terraform monorepo. When I ran it I got the following error which doesn't really indicate what I can do to fix it. Eg. which provider is it having issues with, etc.

    ❯ yor tag --directory envs/cetus/receipts
    2021/05/27 14:00:16 [ERROR] failed to install provider for directory envs/cetus/receipts because of errors no provider exists with the given name
    
  • Cloudformation: yor overwrites existing tag values

    Cloudformation: yor overwrites existing tag values

    Take this sample VPC CloudFormation template:

    ---
    AWSTemplateFormatVersion: 2010-09-09
    
    Parameters:
      EnvironmentName:
        Description: An environment name that is prefixed to resource names
        Type: String
    
      VpcCIDR:
        Description: Please enter the IP range (CIDR notation) for this VPC
        Type: String
        Default: 10.192.0.0/16
    
    Resources:
      VPC:
        Type: AWS::EC2::VPC
        Properties:
          CidrBlock: !Ref VpcCIDR
          EnableDnsSupport: true
          EnableDnsHostnames: true
          Tags:
            - Key: Name
              Value: !Ref EnvironmentName
     
      InternetGateway:
        Type: AWS::EC2::InternetGateway
        Properties:
          Tags:
            - Key: Name
              Value: !Ref EnvironmentName
    

    When running yor, it correctly adds tags, but it changes the Name tag (the !Ref is removed) :

    $ yor tag -d .
    [...]
    $ cat vpc.yml
    [...]
      VPC:
        Type: AWS::EC2::VPC
        Properties:
          CidrBlock: !Ref VpcCIDR
          EnableDnsSupport: true
          EnableDnsHostnames: true
          Tags:
            - Key: Name
              Value: EnvironmentName
            - Key: yor_trace
              Value: def86a84-eff9-4054-a7cb-1890919a6bb5
    [...]
    
  • Tagging adds a second set of tags to each file with syntax errors

    Tagging adds a second set of tags to each file with syntax errors

    Describe the bug When running the standard Yor tagging, we see a second set of tags added to the "merge" function in the tags section of the IaC files. We also see the variable in the value field after the second "Name" tag has two "$" instead of just one as is intended.

    To Reproduce Steps to reproduce the behavior:

    1. Go to CMD.exe
    2. Run cli command 'docker run --tty --volume C:<path>\Repositories\Github\terragoat:\terraform bridgecrew/yor tag --directory \terraform'
    3. The output in the IaC files tags look like this:
        Name = "${local.resource_prefix.value}-ec2"
        }, {
        git_commit           = "N/A"
        git_file             = "terraform/aws/ec2.tf"
        git_last_modified_at = "2022-09-28 21:33:04"
        git_last_modified_by = "[email protected]"
        git_modifiers        = "nimrodkor"
        git_org              = "cmartinsjr"
        git_repo             = "terragoat"
        yor_trace            = "347af3cd-4f70-4632-aca3-4d5e30ffc0b6"
        }, {
        Name                 = "$${local.resource_prefix.value}-ec2"
        git_commit           = "N/A"
        git_file             = "terraform/aws/ec2.tf"
        git_last_modified_at = "2022-09-28 21:33:04"
        git_last_modified_by = "[email protected]"
        git_modifiers        = "nimrodkor"
        git_org              = "cmartinsjr"
        git_repo             = "terragoat"
        yor_trace            = "347af3cd-4f70-4632-aca3-4d5e30ffc0b6"
      })
    }
    

    Expected behavior The expectation is that it should only have one set of tags applied and the "Name" value should only have a single "$" at the start of its variable.

    Desktop (please complete the following information):

    • OS: Windows 10
    • Yor Version 0.1.151/latest version as of 9/28/22
  • Implement Dry Run Feature

    Implement Dry Run Feature

    By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

    The following PR addresses #254. Implementation is based on the logic proposed by @schosterbarak here.

  • Terragrunt dynamically construct terraform - add flag to allow tagging local modules

    Terragrunt dynamically construct terraform - add flag to allow tagging local modules

    "our modules aren’t present in our repo at the point that Yor is run. They’re pulled in via Terrafile into a directory that isn’t checked into git" and are missed from the tagging process.

    Can a flag be added to allow local modules to be tagged?

  • yor Incorrectly updating git_modifiers tag

    yor Incorrectly updating git_modifiers tag

    Describe the bug git_modifiers tag is being updated with incorrect user name.

    My .gitconfig file is

    ❯ cat ~/.gitconfig
    [user]
            name = devbyaccident 
            email = [email protected]
    

    But when yor adds the below tags to my resource.

       git_last_modified_by = "[email protected]"
       git_modifiers        = "github"
    

    It looks like it's pulling the first part of my email address instead of my git username for the tag. Ideally, it should be pulling the username.

    To Reproduce

    1. Set .gitconfig
    2. Run yor tag -d .
    3. Observe git_modifiers tag

    Expected behavior git_modifiers should reflect the username value from .gitconfig, in this case, the expected results should mirror below:

       git_last_modified_by = "[email protected]"
       git_modifiers        = "devbyaccident"
    

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: MacOS 10.14.6
    • yor version 0.1.84

    Additional context N/A

  • [Question] Does yor support a --dry-run option

    [Question] Does yor support a --dry-run option

    We avoid automation that changes the source tree without human feedback but this seems to be the model that yor currently uses (e.g. the GitHub action that adds tags to all the things and then commits them to the branch).

    In our workflow (we do this with terraform fmt and black for python) we expect the branch as it is committed/pushed by the user to be correct and we have tests that run to confirm it is so (e.g., pytest-black or a script that runs terraform fmt -check).

    I'd like to do something similar with yor; make it the responsibility of the dev to run yor and confirm that it did the right thing and write a test that calls yor --check or yor --dry-run and examine its exit code.

    I can't see any yor cli flags that would make this possible.

    Is it possible (am I missing something?)?

    If not, how much work would it require (how big of a change is it?)?

  • Yor adding labels to google_monitoring_notification_channel resource

    Yor adding labels to google_monitoring_notification_channel resource

    Describe the bug Yor is adding labels to google_monitoring_notification_channel resources which doesn't accept custom labels.

    │ Error: Error creating NotificationChannel: googleapi: Error 400: Field "notification_channel.labels['yor_trace']" is not allowed; labels must conform to the channel type's descriptor; permissible label keys for "email" are: {"email_address"}.

    To Reproduce Steps to reproduce the behavior:

    1. Execute yor tag --directory against terraform file with google_monitoring_notification_channel
    2. It adds custom labels
    3. Terraform errors on apply
    resource "google_monitoring_notification_channel" "this" {
      display_name = "GDOS Development Team email"
      force_delete = false
      labels = {
        email_address = "[email protected]"
        yor_trace     = "330d221a-39ad-4fde-9d1a-710c2e406ad4"
      }
      project = module.project.project_id
      type    = "email"
    }
    

    Expected behavior Yor doesn't add labels to google_monitoring_notification_channel resource.

    Desktop (please complete the following information):

    • OS: MacOS
    • Yor Version 0.1.158
  • fix: adding sops as an skipped provider

    fix: adding sops as an skipped provider

    This PR adds SOPS(https://registry.terraform.io/providers/carlpett/sops/0.7.1) as an skipped provider as it doesn't support tagging. Trying to run yor as a pre-commit hook with sops as a provider will fail with the following message: Screenshot 2022-11-28 at 11 01 18

  • Skip tags and Tags are ignored

    Skip tags and Tags are ignored

    Describe the bug A clear and concise description of what the bug is.

    When running yor against a directory of terraform resources all default tags are added.

    Both of the following documented options are ignored:

    OPTIONS:
       --tags value, -t value            run yor only with the specified tags (default: "yor_trace")
       --skip-tags value, -s value       run yor skipping the specified tags
    

    When specifying --tags, all tags are added. When specifying --skip-tags, all tags are added.

    To Reproduce Steps to reproduce the behavior:

    1. Go to any directory of Terraform resources
    2. Run cli command yor tag -t yor_trace -d .
    3. See all tags are added to the resource
    {
        git_commit           = "11111111111111"
        git_file             = "test.tf"
        git_last_modified_at = "2022-11-15 20:00:00"
        git_last_modified_by = "[email protected]"
        git_modifiers        = "john.smith"
        git_org              = "me"
        git_repo             = "test-resources"
        yor_trace            = "11111-1111-1111-11111-111111"
      }
    

    Expected behavior A clear and concise description of what you expected to happen. When specifying --tags yor_trace only the trace tag should be added as documented

    { 
         yor_trace            = "11111-1111-1111-11111-111111"
      }
    

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • yor version 0.1.151

    Additional context Add any other context about the problem here (e.g. code snippets).

  • Make sure new line is before tags attribute

    Make sure new line is before tags attribute

    Is your feature request related to a problem? Please describe.

    I format my Terraform code such that tags is always the last attribute on a resource and there's always a newline between it and the previous attributes. I can't find any way to make sure that yor does this, other than going in after it runs the first time and adding the newline.

    Describe the solution you'd like

    A new config flag to enable this behavior

    Describe alternatives you've considered

    The terraform fmt command doesn't do this. I can go in and do this by hand but it's annoying to have to do so.

  • fix: Properly detect taggability of remote modules

    fix: Properly detect taggability of remote modules

    Changes in this commit make sure that Yor searches in the right folder when determining if module in question is taggable.

    For example, before this commit, Yor will skip the policy module:

    module "policy" {
      source  = "terraform-aws-modules/iam/aws//modules/iam-policy"
      version = "5.5.4"
      # more here
    }
    

    The problem was that Yor was searching for the variables block in the .terraform/modules/policy/*.tf, ignoring the fact that module source tells us that we need to use modules/iam-policy subdirectory.

    To remedy the situation, We added a new function that extracts subdirectory from the source and appends it to the search path.

    By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)

Terraform Provider for Azure (Resource Manager) Version 2.x of the AzureRM Provider requires Terraform 0.12.x and later, but 1.0 is recommended. Terra

Oct 16, 2021
Apachedist-resource - A concourse resource to track updates of an apache distribution, e.g. tomcat

Apache Distribution Resource A concourse resource that can track information abo

Feb 2, 2022
Crane (FinOps Crane) is an opensource project which manages cloud resource on Kubernetes stack, it is inspired by FinOps concepts.
Crane (FinOps Crane) is an opensource project which manages cloud resource on Kubernetes stack, it is inspired by FinOps concepts.

Crane (FinOps Crane) is an opensource project which manages cloud resource on Kubernetes stack, it is inspired by FinOps concepts. Goal of Crane is to provide an one-stop shop project to help Kubernetes users to save cloud resource usage with a rich set of functionalities.

Jan 3, 2023
provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
Git-auto-push - Auto commit and push to github repositories

Auto commit and push to github repositories. How to use git clone https://github

Dec 19, 2022
expose controller, when deployment created service and ingress will be created

expose-controller expose controller, when deployment created service and ingress will be created How to test git clone repository cd expose-controller

Dec 23, 2021
The Ultimate Engineer Toolbox YouTube 🔨 🔧
 The Ultimate Engineer Toolbox YouTube 🔨 🔧

The Ultimate Engineer Toolbox YouTube ?? ??

Jan 8, 2023
Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers
Fluxcdproj -  The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Fluxcdproj - The Ultimate Swiss Army knife for DevOps, Developers and Platform Engineers

Feb 1, 2022
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Jan 2, 2023
A Controller written in kubernetes sample-controller style which watches a custom resource named Bookstore

bookstore-sample-controller A Controller written in kubernetes sample-controller style which watches a custom resource named Bookstore. A resource cre

Jan 20, 2022
An Oracle Cloud (OCI) Pulumi resource package, providing multi-language access to OCI

Oracle Cloud Infrastructure Resource Provider The Oracle Cloud Infrastructure (OCI) Resource Provider lets you manage OCI resources. Installing This p

Dec 2, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
Jan 4, 2022
Cloud Service Auto Cert

CSAC (Cloud Service Auto Cert) Features Tencent Cloud Auto DNS Certification Auto Upload Cert File Auto Update CDN HTTPS Cert Auto Update CLB HTTPS Ce

May 6, 2022
An extensible tool for creating your own in cluster health endpoints

healthyk8s an extensible tool for creating your own "in cluster" health endpoints Why? allows for creating a health endpoint for anything - external r

Oct 26, 2021
Repository belajar docker ALTA Immerseive Back-End Batch 4

Belajar Docker Repository belajar docker ALTA Immerseive Back-End Batch 4 Untuk materi ini teman-teman bisa download docker sesuai dengan OS masing-ma

Nov 12, 2021
Oc-clusteroperator - OpenShift CLI plugin to change the state of ClusterOperators from managed to unmanaged and back again

oc-clusteroperator OpenShift CLI plugin to change the state of ClusterOperators

Feb 15, 2022
LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio
LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio

LinkPage LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio Features Self hostable and open source

Dec 22, 2022