Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding support for legacy compilers (#448) #495

Merged
merged 37 commits into from
Sep 25, 2024
Merged

Adding support for legacy compilers (#448) #495

merged 37 commits into from
Sep 25, 2024

Conversation

CoMfUcIoS
Copy link
Contributor

@CoMfUcIoS CoMfUcIoS commented Sep 9, 2024

Summary

  • Adding support for legacy compilers

  • Adding inventory file to test upgrade legacy workflow

  • feat(documentation): add instructions for converting compilers to legacy

This commit introduces a new section in the convert.md documentation. It provides instructions on how to convert compilers to legacy compilers for Puppet Enterprise installations using puppetlabs-peadm version 3.21 or later, as well as for versions prior to 3.21. The new section includes specific commands to run and references to other relevant documentation.


Co-authored-by: Ioannis Karasavvaidis [email protected]
Co-authored-by: Neil Anderson [email protected]
Co-authored-by: Aaron Shannon [email protected]

Checklist

  • 🟢 Spec tests.
  • 🟢 Acceptance tests.

Changes include test coverage?

  • Yes
  • Not needed

Have you updated the documentation?

  • Yes, I've updated the appropriate docs
  • Not needed

ragingra and others added 26 commits September 16, 2024 11:51
* Adding support for legacy compilers

* Adding inventoryfile to test upgrade legacy workflow

* feat(documentation): add instructions for converting compilers to legacy

This commit introduces a new section in the `convert.md` documentation. It provides instructions on how to convert compilers to legacy compilers for Puppet Enterprise installations using puppetlabs-peadm version 3.21 or later, as well as for versions prior to 3.21. The new section includes specific commands to run and references to other relevant documentation.

* Fixing lint and regenerating referencemd

* PE-38772 Node groups added for legacy compilers (#455)

* Fixing typo for parameter in docs

---------

Co-authored-by: Ioannis Karasavvaidis <[email protected]>
Co-authored-by: Neil Anderson <[email protected]>
Co-authored-by: Aaron Shannon <[email protected]>
Added legacy compilers section, and updated compilers with legacy compilers oid

Co-authored-by: Neil Anderson <[email protected]>
* feat(peadm): add support for legacy compilers

- Added `legacy_compilers` parameter to `peadm::install`, `peadm::subplans::install`, and `peadm::subplans::configure` plans.
- Updated `peadm::assert_supported_architecture` function to handle `legacy_compilers`.
- Modified various plans to include `legacy_compilers` in the installation and configuration processes.
- Updated documentation to reflect the changes and added examples for `legacy_compilers`.

This change allows the PEADM module to support legacy compilers in addition to the standard compilers.

* feat(assert_supported_architecture): normalize and combine compiler variables

- Normalize `$legacy_compilers` and `$compiler_hosts` to arrays, handling both strings and arrays.
- Combine the normalized arrays into `$all_compilers`.
- Set `$has_compilers` to `undef` if `$all_compilers` is empty, otherwise set it to `true`.
- Update tests to cover scenarios with both `compiler_hosts` and `legacy_compilers`.

This change ensures that the function correctly handles different types for compiler variables and improves robustness.

* Updated REFERENCE.md to document the new parameter.

* style(tests): use single quotes for consistency in spec files

Updated all double quotes to single quotes in the `assert_supported_architecture_spec.rb` and `install_spec.rb` files to maintain consistency in string literals across the test suite.

* refactor(plans): rename legacy_targets to legacy_compiler_targets

Renamed the variable `legacy_targets` to `legacy_compiler_targets` across multiple plans for better clarity and consistency. This change affects the following plans:
- convert_compiler_to_legacy.pp
- subplans/configure.pp
- subplans/install.pp

The new variable name more accurately reflects its purpose, which is to target legacy compiler hosts.

* docs(install): correct grammar in installation requirements section

Corrected the grammar in the installation requirements section by changing "Puppets must not be installed" to "Puppet must not be installed" for clarity and accuracy.
…476)

* feat(convert): add support for legacy compilers

- Introduced `legacy_compilers` parameter to handle legacy compiler hosts.
- Added logic to filter and categorize legacy compiler targets.
- Updated certificate modification steps to include legacy compiler targets with appropriate extensions.

* feat(convert): ensure all targets are up-to-date post conversion

- Added a step to run puppet on all targets after restarting services.
- Ensures all targets are fully up-to-date after conversion.

* docs(convert): update documentation for PEADM module

- Corrected the module name from 'peadm' to 'PEADM' for consistency.
- Added 'legacy_compilers' section in the example JSON parameters.
- Improved clarity in the description of the `begin_at_step` parameter.
- Fixed minor grammatical issues in the instructions for converting compilers to legacy.

* - Updated REFERENCE.md to include the new parameter.
- Introduced a new task `check_legacy_compilers.rb` to verify legacy compilers.
- Updated `convert.pp` to run the new task and display warnings if legacy compilers are detected.
- Clarified the message indicating which legacy compilers are classified as Puppet primary nodes.
- Improved the remediation message to specify that the upgrade cannot proceed until the compilers are no longer classified as Puppet primary nodes.
- Updated the message to specify that the upgrade can only proceed if the compilers are no longer recognized as Puppet primary nodes.
Updated the compiler versions in the test-upgrade-legacy.yaml GitHub workflow from 2023.6.0 and 2023.7.0 to 2023.7.0 and 2023.8.0. Also, made formatting changes for consistency.
Added the console_password parameter to the test-upgrade-legacy.yaml GitHub workflow to ensure the console password is passed securely from secrets.
…iler_to_legacy.pp

Removed the commands to stop Puppet and PuppetDB services when the remove_pdb parameter is true in the convert_compiler_to_legacy plan. This simplifies the plan and avoids unnecessary service stops.
…ress

- Updated the variable reference for `internal_compiler_b_pool_address` and `internal_compiler_a_pool_address` in `peadm::setup::legacy_compiler_group` class.
- Ensured the correct scope is used for the variables.
- Added missing newline at the end of the file.
- Added logic to stop and disable `pe-puppetdb` service if `remove_pdb` is true in `convert_compiler_to_legacy` plan.
…and added trusted cert along with internal compiler address
- Replaced `${trusted['certname']}` with `$internal_compiler_a_pool_address` and `$internal_compiler_b_pool_address` in `puppetdb_host` for `puppet_enterprise::profile::master` class.
- Applied `.filter |$_| { $_ }` to ensure non-empty values.
- Removed lint ignore comments for single quote string with variables.

This change ensures that the correct internal compiler pool addresses are used for the `puppetdb_host` configuration.
…er info

- Added information about the `remove_pdb` parameter to the documentation.
- Updated `convert_compiler_to_legacy` plan to set `remove_pdb` default to `true`.

This change provides clarity on how to retain PuppetDB service on converted compilers.
…grade-legacy.yaml

- Added missing `inputs` key for `ssh-debugging` under `workflow_dispatch`.

This change ensures proper YAML structure for the workflow configuration.
- Changed workflow name to "Upgrade PE with one legacy compiler (test)" for better identification.

fix(convert_compiler_to_legacy): ensure proper handling of legacy compilers

- Added architecture validation for supported architectures.
- Split legacy compiler targets into groups A and B based on availability group or cluster.
- Modified certificate extensions for legacy compilers.
- Ensured proper stopping of PuppetDB service on legacy compilers when `remove_pdb` is true.
- Updated node manager YAML and legacy compiler group setup to include internal compiler pool addresses.
- Adjusted Puppet run tasks to include all compiler targets.

These changes improve the handling and configuration of legacy compilers during the upgrade process.
…formatting

- Changed `remove_pdb` parameter type to `Optional[Boolean]` for better flexibility.
- Improved alignment and formatting of parameters and variables for better readability.
- Updated `$compiler_targets` assignment to use `peadm::get_targets` for consistency.
- Added SSH configuration setup to ensure stable connections.
- Grouped preparation and conversion steps for better readability in logs.
- Updated `primary_host` to handle cases where `certname` is undefined.
- Added conditional logic to default to `$primary_target` if `certname` is undefined.
- Changed the `version` in the test-upgrade-legacy workflow from 2023.7.0 to 2021.7.9.
- Ensured compatibility with older versions for testing purposes.
…th-dr

- Changed the `architecture` in the test-upgrade-legacy workflow from `large-with-two-compilers` to `large-with-dr`.
- Updated the `version` from `2021.7.9` to `2023.7.0`.
- Added a task to run the puppet agent on all nodes after the installation plan.
- Removed the redundant task to run the puppet agent on all nodes after installation.
- Simplified the install_test_cluster plan by eliminating unnecessary steps.
…iler_to_legacy plan

- Added a step to gather certificate extension information from all systems using the `peadm::cert_data` task.
- This information is used to filter legacy compiler targets based on availability group.

This enhancement improves the accuracy of the conversion process by ensuring that the correct certificate data is used.
…ation

- Added steps to gather certificate extension information from all systems using the `peadm::cert_data` task.
- Updated variable names for clarity and consistency.
- Filtered legacy compiler targets based on availability group using the gathered certificate data.

This enhancement improves the accuracy of the conversion process by ensuring that the correct certificate data is used.
…ation

- Updated `puppetdb_host` to include both internal compiler pool addresses.
- Modified `convert_compiler_to_legacy` plan to gather certificate extension information from legacy targets using the `peadm::cert_data` task.
- Adjusted filtering of legacy compiler targets based on availability group using the gathered certificate data.

This enhancement improves the accuracy of the conversion process by ensuring that the correct certificate data is used.
…ation

- Added steps to apply `peadm::setup::node_manager_yaml` class on the primary target.
- Ensured `primary_host` is set correctly based on the primary target's certname.
- Improved the setup process by gathering certificate extension information.

This enhancement ensures that the correct certificate data is used, improving the accuracy of the conversion process.
…ation

- Added steps to apply `peadm::setup::legacy_compiler_group` class with internal compiler pool addresses.
- Ensured `primary_host` is set correctly based on the primary target's certname.
- Removed redundant application of `peadm::setup::node_manager_yaml` and `peadm::setup::legacy_compiler_group` classes.

This enhancement ensures that the correct certificate data is used, improving the accuracy of the conversion process.
…ss retrieval

- Changed retrieval of `internal_compiler_a_pool_address` and `internal_compiler_b_pool_address` to use `getvar` function.
- Ensured compatibility with updated cluster parameter structure.

This update improves the robustness of the plan by ensuring correct retrieval of internal compiler pool addresses.
- Deleted `.github/workflows/test-upgrade-legacy.yaml` file.
- Removed workflow for testing PE upgrade with one legacy compiler.

This change simplifies the CI configuration by removing an outdated or unnecessary workflow.
],
classes => {
'puppet_enterprise::profile::master' => {
'puppetdb_host' => [$internal_compiler_a_pool_address, $internal_compiler_b_pool_address].filter |$_| { $_ },
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the purpose of the .filter call to delete undef values? nice hack.

- Updated the version reference from 3.21 to 3.25 in the upgrade documentation.
- Added instructions for using the `peadm::convert_compiler_to_legacy` plan.
- Removed outdated steps for updating certificate extensions and converting legacy compilers.
- Simplified the upgrade process description for Puppet Enterprise using puppetlabs-peadm module 3.25 or later.
@CoMfUcIoS CoMfUcIoS merged commit 39d5f7d into main Sep 25, 2024
68 checks passed
@CoMfUcIoS CoMfUcIoS deleted the legacy_compilers branch September 25, 2024 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants