From 2a8441bc9f051caff22905e72c6bdffcd34acd98 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 4 Nov 2025 10:53:23 -0600 Subject: [PATCH 1/3] rfc 0001 decouple chef provisioner Signed-off-by: Corey Hemminger --- rfcs/0001-decouple_chef_provisioner.md | 117 +++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 rfcs/0001-decouple_chef_provisioner.md diff --git a/rfcs/0001-decouple_chef_provisioner.md b/rfcs/0001-decouple_chef_provisioner.md new file mode 100644 index 0000000..9f78de4 --- /dev/null +++ b/rfcs/0001-decouple_chef_provisioner.md @@ -0,0 +1,117 @@ +# Decouple chef Provisioner from Core Test Kitchen + +--- + +| **RFC** | **Author** | **Status** | **Type** | +|---------|-----------------------------------------|------------|--------------| +| 0001 | Corey Hemminger | Draft | Major Change | + +--- + +## Summary + +This RFC proposes removing the chef provisioner from the core test-kitchen gem and creating three separate plugin gems: + +- kitchen-chef: Official plugin maintained by Progress Chef. +- kitchen-legacy-chef: Community-maintained plugin preserving current behavior with deprecation warnings. +- kitchen-cinc: Community-maintained plugin for Cinc users. + +This change improves maintainability, clarifies ownership, and supports future evolution of both Progress Chef and community-driven workflows. + +--- + +## Motivation + +The chef provisioner is currently tightly coupled with the core test-kitchen gem. This creates challenges for: + +- Progress Chef: Maintaining licensing and support boundaries. +- Community: Supporting alternative distributions like Cinc. +- Contributors: Navigating diverging goals between Progress Chef and community users. + +By decoupling the provisioner, we enable: + +- Independent evolution of provisioners. +- Clear maintainership and support boundaries. +- Easier contribution and upstream sync between forks. + +--- + +## Proposal + +1. Remove chef Provisioner from Core + - Extract the current chef provisioner into a standalone gem: kitchen-chef. + - Maintained by Progress Chef, supporting licensed Chef Infra usage. +2. Create kitchen-legacy-chef Plugin + - Clone the current provisioner code into a new gem: kitchen-legacy-chef. + - Add deprecation warnings for Omnitruck-based downloads. + - Warn users that Omnitruck will be shut down in 2026. + - Recommend migration to kitchen-chef or kitchen-cinc. +3. Create kitchen-cinc Plugin + - Community-maintained plugin for Cinc users. + - Mirrors functionality of chef but uses Cinc downloads and tooling. + - Use cinc_ naming scheme for provioners to replace chef_infra, chef_zeo, etc... +4. Update Default Behavior Post-Omnitruck Shutdown + - After Omnitruck is shut down: + - Community test-kitchen will default to kitchen-cinc. + - Progress Chef will maintain a fork defaulting to kitchen-chef. + +This allows both ecosystems to co-exist without conflict. + +--- + +## Benefits + +- Modularization: Easier maintenance and testing of provisioners. +- Clear Ownership: Progress Chef owns kitchen-chef; community owns others. +- Future-Proofing: Avoids breakage when Omnitruck is shut down. +- Contribution Flow: Simplifies upstream/downstream sync between forks. + +--- + +## Implementation Plan + +1. Extract chef provisioner into kitchen-chef. +2. Create kitchen-legacy-chef and kitchen-cinc gems. +3. Update documentation and migration guides. +4. Add warnings to kitchen-legacy-chef. +5. Coordinate with Progress Chef and community maintainers on release of changes. +6. Update default behavior provisioners post-Omnitruck shutdown. + +--- + +## Alternatives Considered + +- Keeping chef in core: Leads to long-term maintenance and support issues. +- Single plugin with flags for Chef vs. Cinc: Adds complexity and blurs maintainablility. + +--- + +## Feedback Requested + +- Does this separation meet the needs of both Progress Chef and the community? +- Are there concerns about migration or compatibility? +- Suggestions for naming, messaging, or rollout? + +--- + +## Anticipated Downstream Impact + +- kitchen-dokken + - will need to update deps to add kitchen-cinc + - will need to update rb files requiring chef_infra or chef_zero methods available +- kitchen-dsc + - will need to update deps to add kitchen-cinc + - will need to update rb files requiring chef_infra or chef_zero methods available + +Possibly others I may not be aware of that rely on chef_infra or chef_zero provisioner methods. + +--- + +## Copyright + +This work is in the public domain. In jurisdictions that do not allow for this, +this work is available under CC0. To the extent possible under law, the person +who associated CC0 with this work has waived all copyright and related or +neighboring rights to this work. + +--- From ac5a3af810b1a8403c17de16a7348cac1579d949 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 4 Nov 2025 15:21:31 -0600 Subject: [PATCH 2/3] lint fix Signed-off-by: Corey Hemminger --- rfcs/0001-decouple_chef_provisioner.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/0001-decouple_chef_provisioner.md b/rfcs/0001-decouple_chef_provisioner.md index 9f78de4..15b52b0 100644 --- a/rfcs/0001-decouple_chef_provisioner.md +++ b/rfcs/0001-decouple_chef_provisioner.md @@ -49,7 +49,7 @@ By decoupling the provisioner, we enable: 3. Create kitchen-cinc Plugin - Community-maintained plugin for Cinc users. - Mirrors functionality of chef but uses Cinc downloads and tooling. - - Use cinc_ naming scheme for provioners to replace chef_infra, chef_zeo, etc... + - Use cinc_(name) naming scheme for provioners to replace chef_infra, chef_zeo, etc... 4. Update Default Behavior Post-Omnitruck Shutdown - After Omnitruck is shut down: - Community test-kitchen will default to kitchen-cinc. From 955852fca83a0f9830ede935bcfbf5fe8ad08b7b Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 11 Nov 2025 16:42:06 -0600 Subject: [PATCH 3/3] mark approved, updated kitchen-chef to kitchen-chef-enterprise, udpated kitchen-legacy-chef to kitchen-omnibus-chef Signed-off-by: Corey Hemminger --- rfcs/0001-decouple_chef_provisioner.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rfcs/0001-decouple_chef_provisioner.md b/rfcs/0001-decouple_chef_provisioner.md index 15b52b0..5021f22 100644 --- a/rfcs/0001-decouple_chef_provisioner.md +++ b/rfcs/0001-decouple_chef_provisioner.md @@ -4,7 +4,7 @@ | **RFC** | **Author** | **Status** | **Type** | |---------|-----------------------------------------|------------|--------------| -| 0001 | Corey Hemminger | Draft | Major Change | +| 0001 | Corey Hemminger | Aproved | Major Change | --- @@ -12,8 +12,8 @@ This RFC proposes removing the chef provisioner from the core test-kitchen gem and creating three separate plugin gems: -- kitchen-chef: Official plugin maintained by Progress Chef. -- kitchen-legacy-chef: Community-maintained plugin preserving current behavior with deprecation warnings. +- kitchen-chef-enterprise: Official plugin maintained by Progress Chef. +- kitchen-omnitruck-chef: Community-maintained plugin preserving current behavior with deprecation warnings. - kitchen-cinc: Community-maintained plugin for Cinc users. This change improves maintainability, clarifies ownership, and supports future evolution of both Progress Chef and community-driven workflows. @@ -39,13 +39,13 @@ By decoupling the provisioner, we enable: ## Proposal 1. Remove chef Provisioner from Core - - Extract the current chef provisioner into a standalone gem: kitchen-chef. + - Extract the current chef provisioner into a standalone gem: kitchen-chef-enterprise. - Maintained by Progress Chef, supporting licensed Chef Infra usage. -2. Create kitchen-legacy-chef Plugin - - Clone the current provisioner code into a new gem: kitchen-legacy-chef. +2. Create kitchen-omnitruck-chef Plugin + - Clone the current provisioner code into a new gem: kitchen-omnitruck-chef. - Add deprecation warnings for Omnitruck-based downloads. - Warn users that Omnitruck will be shut down in 2026. - - Recommend migration to kitchen-chef or kitchen-cinc. + - Recommend migration to kitchen-chef-enterprise or kitchen-cinc. 3. Create kitchen-cinc Plugin - Community-maintained plugin for Cinc users. - Mirrors functionality of chef but uses Cinc downloads and tooling. @@ -53,7 +53,7 @@ By decoupling the provisioner, we enable: 4. Update Default Behavior Post-Omnitruck Shutdown - After Omnitruck is shut down: - Community test-kitchen will default to kitchen-cinc. - - Progress Chef will maintain a fork defaulting to kitchen-chef. + - Progress Chef will maintain a fork defaulting to kitchen-chef-enterprise. This allows both ecosystems to co-exist without conflict. @@ -62,7 +62,7 @@ This allows both ecosystems to co-exist without conflict. ## Benefits - Modularization: Easier maintenance and testing of provisioners. -- Clear Ownership: Progress Chef owns kitchen-chef; community owns others. +- Clear Ownership: Progress Chef owns kitchen-chef-enterprise; community owns others. - Future-Proofing: Avoids breakage when Omnitruck is shut down. - Contribution Flow: Simplifies upstream/downstream sync between forks. @@ -70,10 +70,10 @@ This allows both ecosystems to co-exist without conflict. ## Implementation Plan -1. Extract chef provisioner into kitchen-chef. -2. Create kitchen-legacy-chef and kitchen-cinc gems. +1. Extract chef provisioner into kitchen-chef-enterprise. +2. Create kitchen-omnitruck-chef and kitchen-cinc gems. 3. Update documentation and migration guides. -4. Add warnings to kitchen-legacy-chef. +4. Add warnings to kitchen-omnitruck-chef. 5. Coordinate with Progress Chef and community maintainers on release of changes. 6. Update default behavior provisioners post-Omnitruck shutdown.