defenseunicorns / uds-cli

Apache License 2.0
24 stars 10 forks source link

Expand package selection to include components within those packages #648

Open blancharda opened 3 months ago

blancharda commented 3 months ago

Is your feature request related to a problem? Please describe

As a bundle maintainer, sometimes it would be very useful to deploy individual components within a package.

Describe the solution you'd like

The --packages flag allows us to deploy a csv list of packages within the bundle. We could expand this to allow specifying a component within the package with a dot syntax such as: --packages=uds-core.grafana

Multiple related (and targeted) items could still be added via CSV. For example, to update an istio gateway setting and redeploy a gitlab configuration: --packages=uds-core.istio-tenant-gateway,gitlab

This would functionally just be an extension of --packages to Zarf's --component flag.

Additional context

This relates to the following issues, but I think they solve different use-cases:

Obviously there are some potential pitfalls here and the user would need detailed knowledge about the target package/component, but I think that's a fair expectation if you're parsing a bundle deployment down to the component level..

UncleGedd commented 1 month ago

Crazy idea: instead of adding this functionality to UDS CLI's --packages flag, what if we allowed you to target packages and components using uds zarf directly? That way you get all the component selection features of Zarf without the extra logic layers in UDS CLI?

blancharda commented 1 month ago

I think under the hood those are the same thing... but I mean.. if one is easier to implement? šŸ¤·

What would an example deploy command look like that targets a subcomponent of core and another package in the bundle?

UncleGedd commented 2 weeks ago

Now that core is being broken up into packages as opposed to components, is this issue still valuable @blancharda ?

I'm a bit nervous to delve into component selection, especially if the atomic unit of a bundle is a packer (as opposed to a component).