{"id":23727740,"url":"https://github.com/voxpupuli/puppet-augeasproviders_grub","last_synced_at":"2025-12-11T21:47:50.612Z","repository":{"id":19404089,"uuid":"22645901","full_name":"voxpupuli/puppet-augeasproviders_grub","owner":"voxpupuli","description":"Augeas-based grub type and providers","archived":false,"fork":false,"pushed_at":"2025-08-12T18:31:12.000Z","size":296,"stargazers_count":10,"open_issues_count":21,"forks_count":35,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-08-22T12:43:34.836Z","etag":null,"topics":["augeas","augeasproviders","centos-puppet-module","configuration","configuration-files","configuration-management","debian-puppet-module","grub","grub-l","grub2","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","puppet-module","puppet-resources","redhat-puppet-module","ubuntu-puppet-module"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2014-08-05T14:08:58.000Z","updated_at":"2025-07-31T05:57:58.000Z","dependencies_parsed_at":"2023-01-13T20:21:19.295Z","dependency_job_id":"b73f533a-f297-43e5-b090-f930ba545b9c","html_url":"https://github.com/voxpupuli/puppet-augeasproviders_grub","commit_stats":{"total_commits":135,"total_committers":28,"mean_commits":4.821428571428571,"dds":0.6370370370370371,"last_synced_commit":"5b9a85c6f00afc16ee37362ba893a91b71d43de8"},"previous_names":["voxpupuli/augeasproviders_grub","hercules-team/augeasproviders_grub"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/voxpupuli/puppet-augeasproviders_grub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-augeasproviders_grub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-augeasproviders_grub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-augeasproviders_grub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-augeasproviders_grub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-augeasproviders_grub/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-augeasproviders_grub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273547397,"owners_count":25125051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["augeas","augeasproviders","centos-puppet-module","configuration","configuration-files","configuration-management","debian-puppet-module","grub","grub-l","grub2","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","puppet-module","puppet-resources","redhat-puppet-module","ubuntu-puppet-module"],"created_at":"2024-12-31T01:29:51.627Z","updated_at":"2025-12-11T21:47:50.604Z","avatar_url":"https://github.com/voxpupuli.png","language":"Ruby","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"# grub: type/provider for grub files for Puppet\n\n[![Build Status](https://github.com/voxpupuli/puppet-augeasproviders_grub/workflows/CI/badge.svg)](https://github.com/voxpupuli/puppet-augeasproviders_grub/actions?query=workflow%3ACI)\n[![Release](https://github.com/voxpupuli/puppet-augeasproviders_grub/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-augeasproviders_grub/actions/workflows/release.yml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/augeasproviders_grub.svg)](https://forge.puppetlabs.com/puppet/augeasproviders_grub)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/augeasproviders_grub.svg)](https://forge.puppetlabs.com/puppet/augeasproviders_grub)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/augeasproviders_grub.svg)](https://forge.puppetlabs.com/puppet/augeasproviders_grub)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/augeasproviders_grub.svg)](https://forge.puppetlabs.com/puppet/augeasproviders_grub)\n[![puppetmodule.info docs](https://www.puppetmodule.info/images/badge.svg)](https://www.puppetmodule.info/m/puppet-augeasproviders_grub)\n[![Apache-2 License](https://img.shields.io/github/license/voxpupuli/puppet-augeasproviders_grub.svg)](LICENSE)\n[![Donated by Herculesteam](https://img.shields.io/badge/donated%20by-herculesteam-fb7047.svg)](#transfer-notice)\n\nThis module provides a new type/provider for Puppet to read and modify grub\nconfig files using the Augeas configuration library.\n\nThe advantage of using Augeas over the default Puppet `parsedfile`\nimplementations is that Augeas will go to great lengths to preserve file\nformatting and comments, while also failing safely when needed.\n\nThis provider will hide *all* of the Augeas commands etc., you don't need to\nknow anything about Augeas to make use of it.\n\n## Requirements\n\nEnsure both Augeas and ruby-augeas 0.3.0+ bindings are installed and working as\nnormal.\n\nSee [Puppet/Augeas pre-requisites](http://docs.puppetlabs.com/guides/augeas.html#pre-requisites).\n\n**WARNING** Your system must be able to run the grub mkconfig scripts with BLS\nsupport if you are on a systen that uses BLS!\n\n## Installing\n\nOn Puppet 2.7.14+, the module can be installed easily ([documentation](http://docs.puppetlabs.com/puppet/latest/reference/modules_installing.html)):\n\n    puppet module install puppet/augeasproviders_grub\n\nYou may see an error similar to this on Puppet 2.x ([#13858](http://projects.puppetlabs.com/issues/13858)):\n\n    Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type `kernel_parameter` at ...\n\nEnsure the module is present in your puppetmaster's own environment (it doesn't\nhave to use it) and that the master has pluginsync enabled.  Run the agent on\nthe puppetmaster to cause the custom types to be synced to its local libdir\n(`puppet master --configprint libdir`) and then restart the puppetmaster so it\nloads them.\n\n## Compatibility\n\n### Puppet versions\n\nMinimum of Puppet 2.7.\n\n### Augeas versions\n\nAugeas Versions           | 0.10.0  | 1.0.0   | 1.1.0   | 1.2.0   |\n:-------------------------|:-------:|:-------:|:-------:|:-------:|\n**PROVIDERS**             |\nkernel\\_parameter (grub)  | **yes** | **yes** | **yes** | **yes** |\nkernel\\_parameter (grub2) | **yes** | **yes** | **yes** | **yes** |\ngrub\\_config (grub)       | **yes** | **yes** | **yes** | **yes** |\ngrub\\_config (grub2)      | **yes** | **yes** | **yes** | **yes** |\ngrub\\_menuentry (grub)    | **yes** | **yes** | **yes** | **yes** |\ngrub\\_menuentry (grub2)   |   N/A   |   N/A   |   N/A   |   N/A   |\ngrub\\_user (grub2)        |   N/A   |   N/A   |   N/A   |   N/A   |\n\n**Note**: grub\\_menuentry and grub\\_user for GRUB2 do not use Augeas at this\ntime due to lack of available lenses.\n\n## Documentation and examples\n\nType documentation can be generated with `puppet doc -r type` or viewed on the\n[Puppet Forge page](http://forge.puppetlabs.com/puppet/augeasproviders_grub).\n\n\n### kernel_parameter provider\n\nThis is a custom type and provider supplied by `augeasproviders`.  It supports\nboth GRUB Legacy (0.9x) and GRUB 2 configurations.\n\n#### manage parameter without value\n\n    kernel_parameter { \"quiet\":\n      ensure =\u003e present,\n    }\n\n#### manage parameter with value\n\n    kernel_parameter { \"elevator\":\n      ensure  =\u003e present,\n      value   =\u003e \"deadline\",\n    }\n\n#### manage parameter with multiple values\n\n    kernel_parameter { \"rd_LVM_LV\":\n      ensure  =\u003e present,\n      value   =\u003e [\"vg/lvroot\", \"vg/lvvar\"],\n    }\n\n#### manage parameter on certain boot types\n\nBootmode defaults to \"all\", so settings are applied for all boot types usually.\n\nApply only to the default boot:\n\n    kernel_parameter { \"quiet\":\n      ensure   =\u003e present,\n      bootmode =\u003e \"default\",\n    }\n\nApply only to normal boots. In GRUB legacy, normal boots consist of the default boot plus non-recovery ones. In GRUB2, normal bootmode is just an alias for default.\n\n    kernel_parameter { \"quiet\":\n      ensure   =\u003e present,\n      bootmode =\u003e \"normal\",\n    }\n\nOnly recovery mode boots (unsupported with GRUB 2):\n\n    kernel_parameter { \"quiet\":\n      ensure   =\u003e present,\n      bootmode =\u003e \"recovery\",\n    }\n\n#### manage parameter on multiple boot types\n\n    kernel_parameter { 'quiet:all':\n      ensure =\u003e absent,\n    }\n    kernel_parameter { 'quiet:recovery':\n      ensure =\u003e present,\n    }\n\n#### delete entry\n\n    kernel_parameter { \"rhgb\":\n      ensure =\u003e absent,\n    }\n\n#### manage parameter in another config location\n\n    kernel_parameter { \"elevator\":\n      ensure =\u003e present,\n      value  =\u003e \"deadline\",\n      target =\u003e \"/mnt/boot/grub/menu.lst\",\n    }\n\n### grub_config provider\n\nThis custom type manages GRUB Legacy and GRUB2 global configuration parameters.\n\nIn GRUB Legacy, the global items at the top of the `grub.conf` file are managed.\n\nIn GRUB2, the parameters in `/etc/defaults/grub` are managed.\n\nWhen using GRUB2, take care that you aren't conflicting with an option later\nspecified by `grub_menuentry`. Also, be aware that, in GRUB2, any global items\nhere will not be referenced unless you reference them by variable name per Bash\nsemantics.\n\n#### change the default legacy GRUB timeout\n\nThis will set the `timeout` global value in the Legacy GRUB configuration.\n\n    grub_config { 'timeout':\n      value =\u003e '1'\n    }\n\n#### change the default GRUB2 timeout\n\nThis will set the `GRUB_TIMEOUT` global value in the GRUB2 configuration.\n\n    grub_config { 'GRUB_TIMEOUT':\n      value =\u003e '1'\n    }\n\n### grub_menuentry provider\n\nThis is a custom type to manage GRUB Legacy and GRUB2 menu entries.\n\nThe GRUB Legacy provider utlizes Augeas under the hood but GRUB2 did not have\nan available Lens and was written in Ruby.\n\nThis will **not** allow for modifying dynamically generated system entries. You\nwill need to remove some of the native GRUB2 configuration scripts to be fully\nindependent of the default system values.\n\nThe GRUB2 output of this provider will be saved, by default, in\n`/etc/grub.d/05_puppet_managed_\u003crandom_string\u003e` where the `random_string` is a\nhash of the resource `name`.\n\n#### new entry preserving all existing values\n\nThis will create a new menu entry and copy over any default values if present.\nIf the entry currently exists, it will preserve all values and not overwrite\nthem with the default system values.\n\n    grub_menuentry { 'new_entry':\n      root           =\u003e '(hd0,0)',\n      kernel         =\u003e ':preserve:',\n      initrd         =\u003e ':preserve:',\n      kernel_options =\u003e [':preserve:']\n    }\n\n#### kernel option lines\n\nThere are many methods for identifying and manipulating kernel option lines and\nso a method was developed for handling the most common scenarios. You can, of\ncourse, simply denote every option, but this is cumbersome and prone to error\nover time.\n\nThe following format is supported for the new options:\n\n    ':defaults:'  =\u003e Copy defaults from the default GRUB entry\n    ':preserve:'  =\u003e Preserve all existing options (if present)\n\n    Note: ':defaults:' and ':preserve:' are mutually exclusive.\n\n    All of the options below supersede any items affected by the above\n\n    'entry(=.*)?'   =\u003e Ensure that `entry` exists *as entered*; replaces all\n                       other options with the same name\n    '!:entry(=.*)?' =\u003e Add this option to the end of the arguments\n                       preserving any other options of the same name\n    '-:entry'       =\u003e Ensure that all instances of `entry` do not exist\n    '-:entry=foo'   =\u003e Ensure that only instances of `entry` with value `foo` do not exist\n\n    Note: Option removals and additions have higher precedence than preservation\n\n### grub_user provider\n\nThis type manages GRUB2 users and superusers.\n\nThe output of this provider is stored, by default, in `/etc/grub.d/01_puppet_managed_users`.\n\nAny plain text passwords are automatically converted into the appropriate GRUB\nPBKDF2 format.\n\nNote: If no users are defined as superusers, then GRUB2 will not enforce user\nrestrictions on your entries.\n\n#### user with a plain text password\n\n    grub_user { 'test_user':\n      password =\u003e 'plain text password'\n    }\n\n#### user with a pre-hashed password\n\n    grub_user { 'test_user':\n      password =\u003e 'grub.pbkdf2.sha512.10000.REALLY_LONG_STRING'\n    }\n\n#### user that is a superuser with a plain text password and 20000 rounds\n\n    grub_user { 'test_user':\n      password  =\u003e 'plain text password',\n      superuser =\u003e true,\n      rounds    =\u003e '20000'\n    }\n\n## Issues\n\nPlease file any issues or suggestions\n[on GitHub](https://github.com/voxpupuli/augeasproviders_grub/issues).\n\n## Transfer Notice\n\nThis module was originally authored by [hercules-team](http://augeasproviders.com).\nThe maintainer preferred that Vox Pupuli take ownership of the module for future improvement and maintenance.\nExisting pull requests and issues were transferred over, please fork and continue to contribute here.\n\nPreviously: https://github.com/hercules-team/augeasproviders_grub\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-augeasproviders_grub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-augeasproviders_grub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-augeasproviders_grub/lists"}