Giter Club home page Giter Club logo

yum-centos's Introduction

yum-centos Cookbook

Cookbook Version CI State OpenCollective OpenCollective License

Maintainers

This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working together to maintain important cookbooks. If you’d like to know more please visit sous-chefs.org or come chat with us on the Chef Community Slack in #sous-chefs.

Overview

The yum-centos cookbook takes over management of the default and optional repositoryids that ship with CentOS and CentOS Stream systems.

Below is a table showing which repositoryids we manage that are shipped by default with CentOS via the centos-release package:

Repo ID CentOS 7 CentOS 8 CentOS Stream 8
appstream ✔️ ✔️
base ✔️ ✔️ ✔️
centos-kernel ✔️
centosplus ✔️ ✔️ ✔️
contrib
cr ✔️ ✔️
debuginfo ✔️ ✔️ ✔️
extras ✔️ ✔️ ✔️
fasttrack ✔️ ✔️
highavailability ✔️ ✔️
powertools ✔️ ✔️
realtime ✔️
resilientstorage ✔️
updates ✔️

Additionally, this cookbook can manage the following CentOS repositories that can optionally be installed. The table below displays each repositories we support, which platform version they are supported on and what upstream release package it effectively replaces. Some of these repositories may depend on another related repository. This cookbook does not automatically account for such dependencies and this is up to the user to configure the appropriate repositories.

While upstream may provide additional versions for the repositories below, we only maintain the current release. Users are welcome to override those attributes as they see fit for their environment.

Repo ID CentOS 7 CentOS 8 CentOS Stream 8 Upstream release package
centos-advanced-virtualization ✔️ ✔️ centos-release-advanced-virtualization
centos-ansible ✔️ ✔️ ✔️ centos-release-ansible-29
centos-azure ✔️ centos-release-azure
centos-ceph ✔️ ✔️ ✔️ centos-release-ceph-pacific (C8/CS8), centos-release-ceph-nautilus (C7)
centos-dotnet ✔️ centos-release-dotnet
centos-fdio ✔️ centos-release-fdio
centos-gluster ✔️ ✔️ ✔️ centos-release-gluster9
centos-hyperscale ✔️ centos-release-hyperscale
centos-nfs-ganesha ✔️ ✔️ ✔️ centos-release-nfs-ganesha30
centos-nfv-extras ✔️ ✔️ centos-release-nfv-extras
centos-openshift-origin ✔️ centos-release-openshift-origin311
centos-openstack ✔️ ✔️ ✔️ centos-release-openstack-xena (CS8), centos-release-openstack-victoria (C8), centos-release-openstack-train (C7)
centos-opstools ✔️ ✔️ ✔️ centos-release-opstools
centos-ovirt ✔️ ✔️ ✔️ centos-release-ovirt44 (C8/CS8), centos-release-ovirt43 (C7)
centos-qemu-ev ✔️ centos-release-qemu-ev
centos-qpid-proton ✔️ ✔️ centos-release-qpid-proton
centos-rabbitmq ✔️ ✔️ centos-release-rabbitmq-38
centos-samba ✔️ ✔️ centos-release-samba415
centos-sclo-rh ✔️ centos-release-scl-rh
centos-sclo ✔️ centos-release-scl
centos-virt-xen ✔️ centos-release-xen-414

Requirements

Platforms

  • CentOS

Chef

  • Chef 12.14+

Cookbooks

  • none

Attributes

See individual repository attribute files for defaults.

If using the vault recipe, you can set node['yum-centos']['vault_repos']. See below for an example for CentOS 8:

# Enable 8.0.1905 vault release
node['yum-centos']['vault_repos']['8.0.1905']['enabled'] = true
node['yum-centos']['vault_repos']['8.0.1905']['managed'] = true
node['yum-centos']['vault_repos']['8.0.1905']['make_cache'] = true

include 'yum-centos::vault'

To enable multiple vault releases, you can do the following:

node['yum-centos']['vault_repos']['7.8']['enabled'] = true
node['yum-centos']['vault_repos']['7.8']['managed'] = true
node['yum-centos']['vault_repos']['7.8']['make_cache'] = true
node['yum-centos']['vault_repos']['7.9']['enabled'] = true
node['yum-centos']['vault_repos']['7.9']['managed'] = true
node['yum-centos']['vault_repos']['7.9']['make_cache'] = true

include 'yum-centos::vault'

The vault repositories only provides binary packages for the previous release which currently defaults to the following:

  • CentOS 7: 7.8.2003
  • CentOS 8: 8.3.2011

NOTE: CentOS Stream does not provide binaries via the vault repo

Some repositories provide a version attribute to set which version of the repository to use. Changing these will also update the version used in mirrorlist and description.

default['yum-centos']['ansible_version'] = '29'
default['yum-centos']['ceph_version'] =
  value_for_platform(%w(centos redhat) =>
  {
      '>= 8.0' => 'octopus',
      '~> 7.0' => 'nautilus',
  })
default['yum-centos']['gluster_version'] = '7'
default['yum-centos']['nfs_ganesha_version'] =
  value_for_platform(%w(centos redhat) =>
  {
      '>= 8.0' => '3',
      '~> 7.0' => '30',
  })
default['yum-centos']['openshift_version'] = '311'
default['yum-centos']['openstack_version'] =
  value_for_platform(%w(centos redhat) =>
  {
      '>= 8.0' => 'ussuri',
      '~> 7.0' => 'train',
  })
default['yum-centos']['opstools_version'] =
  value_for_platform(%w(centos redhat) =>
  {
      '>= 8.0' => '-collectd-5',
      '< 8.0' => '',
  })
default['yum-centos']['ovirt_version'] = '4.3'
default['yum-centos']['rabbitmq_version'] = '38'
default['yum-centos']['virt_xen_version'] =
  value_for_platform(%w(centos redhat) =>
  {
      '~> 7.0' => '412',
  })

NOTE: If you are migrating from using node['yum-centos']['keep_scl_repositories'], you will need to do the following to enable the repositories using this cookbook:

node.default['yum']['centos-sclo']['enabled'] = true
node.default['yum']['centos-sclo']['managed'] = true
node.default['yum']['centos-sclo-rh']['enabled'] = true
node.default['yum']['centos-sclo-rh']['managed'] = true

include_recipe 'yum-centos'

Recipes

  • yum-centos::default Generates yum_repository configs for latest CentOS release. By default the base, extras, and updates repos are enabled on CentOS 7. For CentOS 8 and CentOS Stream 8, base, extras and appstream repos are enabled by default.

NOTE: If you are running an older CentOS release, i.e. 7.7 when 7.8 is the latest 7.x release, you may want to consider the yum-centos::vault recipe.

  yum_repository 'base' do
    mirrorlist 'http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os'
    description 'CentOS-$releasever - Base'
    enabled true
    gpgcheck true
    gpgkey 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever'
  end
  • yum-centos::vault Generate yum configuration for non-current versions of CentOS. Instead of using mirrorlist, baseurl is set to http://vault.centos.org/....

Usage Example

To disable the CentOS Extras repository through a Role or Environment definition

default_attributes(
  'yum' => {
    'extras' => {
      'enabled' => {
        false
       }
     }
   }
 )

Uncommonly used repositoryids are not managed by default. This is speeds up integration testing pipelines by avoiding yum-cache builds that nobody cares about. To enable the CentOS Plus repository with a wrapper cookbook, place the following in a recipe:

node.default['yum']['centosplus']['managed'] = true
node.default['yum']['centosplus']['enabled'] = true
include_recipe 'yum-centos'

More Examples

Point the base and updates repositories at an internally hosted server.

node.default['yum']['base']['enabled'] = true
node.default['yum']['base']['mirrorlist'] = nil
node.default['yum']['base']['baseurl'] = 'https://internal.example.com/centos/7/os/x86_64'
node.default['yum']['base']['sslverify'] = false
node.default['yum']['updates']['enabled'] = true
node.default['yum']['updates']['mirrorlist'] = nil
node.default['yum']['updates']['baseurl'] = 'https://internal.example.com/centos/7/updates/x86_64'
node.default['yum']['updates']['sslverify'] = false

include_recipe 'yum-centos'

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers!

https://opencollective.com/sous-chefs#backers

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website.

https://opencollective.com/sous-chefs/sponsor/0/website https://opencollective.com/sous-chefs/sponsor/1/website https://opencollective.com/sous-chefs/sponsor/2/website https://opencollective.com/sous-chefs/sponsor/3/website https://opencollective.com/sous-chefs/sponsor/4/website https://opencollective.com/sous-chefs/sponsor/5/website https://opencollective.com/sous-chefs/sponsor/6/website https://opencollective.com/sous-chefs/sponsor/7/website https://opencollective.com/sous-chefs/sponsor/8/website https://opencollective.com/sous-chefs/sponsor/9/website

yum-centos's People

Contributors

andphe avatar chasebolt avatar chewi avatar damacus avatar dblessing avatar dermusikman avatar iennae avatar kitchen-porter avatar klangrudbke avatar nvwls avatar ramereth avatar renovate[bot] avatar sauraus avatar scalp42 avatar tas50 avatar xorima avatar xorimabot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yum-centos's Issues

Add support for multiple release vaults

Cookbook version

3.0

Chef-client version

14.1.12

Platform Details

CentOS 7.5

Scenario:

Provide yum access to previous CentOS 7.x releases from centos-vault

Steps to Reproduce:

Find a package in the CentOS 7.0 release not found in CentOS 7.x, such as kernel-3.10.0-123.el7.x86_64. Look for it in any yum repository enabled by this cookbook For example, "yum list kernel-3.10.0-123.el7.x86_64 --enablerepo=*'

Expected Result:

Packages installed from previous CentOS releases should be reported as present from previous vaults.

Actual Result:

If the CentOS-Vault.repo has been successfully kept up-to-date, the package will be reported from there, It will not be visible to this cookbook's published vaults.

The fix is to publish vault entries based on a hash of available CentOS releases, not on merely the current release.

chef 13 support

You might want to fix these before chef 13 will be released:

         username nil currently does not overwrite the value of username. This will change in Chef 13, and the value will be set to nil instead. Please change your code to explicitly accept nil using "property :username, [MyType, nil]", or stop setting this value to nil. at 1 location:
           - /tmp/kitchen/cache/cookbooks/yum-centos/recipes/default.rb:57:in `block (2 levels) in from_file'

undefined method `capitalize' for nil:NilClass

Hey folks,

This morning I started seeing an issue, I believe related to the 4.0.0 upgrade.

I'm running in Kitchen on an Ubuntu 18.04 machine where yum-centos is included as a dependency, getting the following errors.

Looks like node['yum-centos']['ceph_version'] just needs to be checked if it's nil first.

Compiling Cookbooks...

       ================================================================================
       Recipe Compile Error in /var/tmp/kitchen/cache/cookbooks/yum-centos/attributes/centos-ceph.rb
       ================================================================================

       NoMethodError
       -------------
       undefined method `capitalize' for nil:NilClass

       Cookbook Trace:
       ---------------
         /var/tmp/kitchen/cache/cookbooks/yum-centos/attributes/centos-ceph.rb:6:in `from_file'

       Relevant File Content:
       ----------------------
       /var/tmp/kitchen/cache/cookbooks/yum-centos/attributes/centos-ceph.rb:

         1:  # centos-release-ceph-nautilus : CentOS 7
         2:  # centos-release-ceph-octopus  : CentOS 8
         3:  ver = node['yum-centos']['ceph_version']
         4:
         5:  default['yum']['centos-ceph']['repositoryid'] = 'centos-ceph'
         6>> default['yum']['centos-ceph']['description'] = "CentOS-$releasever - Ceph #{ver.capitalize}"
         7:  default['yum']['centos-ceph']['enabled'] = false
         8:  default['yum']['centos-ceph']['make_cache'] = true
         9:  default['yum']['centos-ceph']['managed'] = false
        10:  default['yum']['centos-ceph']['mirrorlist'] =
        11:    "http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=storage-ceph-#{ver}"
        12:  default['yum']['centos-ceph']['gpgkey'] = 'https://www.centos.org/keys/RPM-GPG-KEY-CentOS-SIG-Storage'
        13:  # testing
        14:  default['yum']['centos-ceph-testing']['repositoryid'] = 'centos-ceph-testing'
        15:  default['yum']['centos-ceph-testing']['description'] = "CentOS-$releasever - Ceph #{ver.capitalize} - Testing"

       System Info:
       ------------
       chef_version=14.15.6
       platform=ubuntu
       platform_version=18.04
       ruby=ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]
       program_name=/opt/chef/bin/chef-client
       executable=/opt/chef/bin/chef-client


       Running handlers:
       [2020-07-20T16:46:51+00:00] ERROR: Running exception handlers
       Running handlers complete
       [2020-07-20T16:46:51+00:00] ERROR: Exception handlers complete
       Chef Client failed. 0 resources updated in 09 seconds
       [2020-07-20T16:46:51+00:00] FATAL: Stacktrace dumped to /var/tmp/kitchen/cache/chef-stacktrace.out
       [2020-07-20T16:46:51+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
       [2020-07-20T16:46:51+00:00] FATAL: NoMethodError: undefined method `capitalize' for nil:NilClass

Thanks in advance!

CentOS yum repo file is not removed

In my use of the cookbook, the default recipe is not properly removing the files / etc/yum.repos/CentOS- *. The correct would be using .repo in the end:

file '/etc/yum.repos.d/CentOS-Base.repo' do
action :delete
end

file '/etc/yum.repos.d/CentOS-Debuginfo.repo' do
action :delete
end

file '/etc/yum.repos.d/CentOS-Media.repo' do
action :delete
end

file '/etc/yum.repos.d/CentOS-Vault.repo' do
action :delete
end

My OS version is: CentOS release 6.5 (Final)

version constrain for yum

Cookbook version

latest

Chef-client version

12.x

Platform Details

centos

introduced by this commit:
1f756bf

version contrain for yum now uses 3 digits separated by points.
this lead to a downgrade of yum cookbook from 3.11.x to 3.10.x

please allow newer version of yum cookbook

Broken compatibility with Chef <14 due to .delete_prefix use

Hello,

With version 4.0.0 and 4.0.1 the compatibility with older Chef clients has been broken.
The .delete_prefix method has been added to the ::String class in ruby 2.5.0, however Chef started to ship this version only in 14.0.0.

I know version older than 14.0.0 are deprecated by Chef, but the current cookbook still advertise a Chef 12.15 compatibility.

Should we fix the bug or change the Chef version support?

Thanks in advance.

chef-client 11.x fails to converge

looks like the converge fails for all chef client version 11.x

   NoMethodError
   -------------
   undefined method `[]' for nil:NilClass

   Cookbook Trace:
   ---------------
     /tmp/kitchen/cache/cookbooks/yum-centos/recipes/default.rb:27:in `block in from_file'
     /tmp/kitchen/cache/cookbooks/yum-centos/recipes/default.rb:26:in `each'
     /tmp/kitchen/cache/cookbooks/yum-centos/recipes/default.rb:26:in `from_file'

   Relevant File Content:
   ----------------------
   /tmp/kitchen/cache/cookbooks/yum-centos/recipes/default.rb:

    20:  
    21:  node.default['yum-centos']['repos'] << value_for_platform(centos: {
    22:                                           '>= 7.0' => 'cr',
    23:                                           '< 7.0' => 'contrib'
    24:                                       })
    25:  
    26:  node['yum-centos']['repos'].each do |repo|
    27>>   if node['yum'][repo]['managed']
    28:      yum_repository repo do
    29:        baseurl node['yum'][repo]['baseurl']
    30:        cost node['yum'][repo]['cost']
    31:        description node['yum'][repo]['description']
    32:        enabled node['yum'][repo]['enabled']
    33:        enablegroups node['yum'][repo]['enablegroups']
    34:        exclude node['yum'][repo]['exclude']
    35:        failovermethod node['yum'][repo]['failovermethod']
    36:        fastestmirror_enabled node['yum'][repo]['fastestmirror_enabled']


   Running handlers:
   [2015-07-09T17:48:07+00:00] ERROR: Running exception handlers
   Running handlers complete
   [2015-07-09T17:48:07+00:00] ERROR: Exception handlers complete
   [2015-07-09T17:48:07+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
   Chef Client failed. 0 resources updated in 6.687364766 seconds
   [2015-07-09T17:48:07+00:00] ERROR: undefined method `[]' for nil:NilClass
   [2015-07-09T17:48:07+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

Do not delete CentOS-Vault.repo

Stop trying to delete CentOS-Vault.repo alone. It's very useful for environments that need to match packages with a slightly older deployed environment, or to use the "yum list extras" command on systems that have had 'centos-release' updated but not all other components.

conflict with Software Collections repo

Cookbook version

3.0.0

Chef-client version

13.11.10

Platform Details

CentOS 7

Scenario:

package 'centos-release-SCL'
inlcude_recipe 'yum-centos'

Steps to Reproduce:

run recipe

Expected Result:

centos repo is deleted, but Software Collections repo exists

Actual Result:

both centos and Software Collections repos are deleted

Reason:

Software Collections repos are

CentOS-SCLo-scl-rh.repo
CentOS-SCLo-scl.repo

those code delete them:
https://github.com/chef-cookbooks/yum-centos/blob/master/recipes/default.rb#L36-L40

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

github-actions
.github/workflows/ci.yml
  • sous-chefs/.github 3.1.1
  • actions/checkout v4
.github/workflows/stale.yml
  • actions/stale v9

  • Check this box to trigger a request for Renovate to run again on this repository

8-stream vault and 9-stream support

🙍 Problem Statement

  • 8-stream EOL'd on 31 May 2024, the mirrorlist does have a baseurl replacement targeting a vault repo
  • 9-stream does exist, and it appears to be supported in Chef. Can it be added to the supported list?

❔ Possible Solution

  • Update the targeting for 8-stream to be the vault baseurl's
  • Add 9-stream as a functional target for the resource providers

⤴️ Describe alternatives you've considered

Dropping this cookbook and CentOS, but this is hard lift, atm.

➕ Additional context

Upgrading is hard, keeping systems in functional status is hard. Leveraging this well architected cookbook over any slap-dash creation of my own, priceless.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.