{"id":16635726,"url":"https://github.com/voxpupuli/puppet-mrepo","last_synced_at":"2025-04-04T12:06:53.848Z","repository":{"id":1560053,"uuid":"1969393","full_name":"voxpupuli/puppet-mrepo","owner":"voxpupuli","description":"Puppet module for creating and managing RPM based repository mirrors.","archived":false,"fork":false,"pushed_at":"2025-03-19T20:16:14.000Z","size":401,"stargazers_count":17,"open_issues_count":1,"forks_count":46,"subscribers_count":139,"default_branch":"master","last_synced_at":"2025-03-28T05:46:09.479Z","etag":null,"topics":["centos-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/puppet/mrepo","language":"Puppet","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"appleparts/octokit.rb","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},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2011-06-28T22:51:34.000Z","updated_at":"2025-03-19T20:16:17.000Z","dependencies_parsed_at":"2023-12-19T08:35:27.902Z","dependency_job_id":"75d2eb73-89b5-4afd-8c92-5c6e2a406fdf","html_url":"https://github.com/voxpupuli/puppet-mrepo","commit_stats":{"total_commits":257,"total_committers":36,"mean_commits":7.138888888888889,"dds":0.6420233463035019,"last_synced_commit":"c037c44e7a7f83258d868cd2313eb89fd25e8c24"},"previous_names":["puppetlabs/puppetlabs-mrepo"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-mrepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-mrepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-mrepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-mrepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-mrepo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174407,"owners_count":20896076,"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","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":["centos-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module"],"created_at":"2024-10-12T06:04:31.756Z","updated_at":"2025-04-04T12:06:53.820Z","avatar_url":"https://github.com/voxpupuli.png","language":"Puppet","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"# Puppet Mrepo\n\n[![Build Status](https://github.com/voxpupuli/puppet-mrepo/workflows/CI/badge.svg)](https://github.com/voxpupuli/puppet-mrepo/actions?query=workflow%3ACI)\n[![Release](https://github.com/voxpupuli/puppet-mrepo/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-mrepo/actions/workflows/release.yml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/mrepo.svg)](https://forge.puppetlabs.com/puppet/mrepo)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/mrepo.svg)](https://forge.puppetlabs.com/puppet/mrepo)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/mrepo.svg)](https://forge.puppetlabs.com/puppet/mrepo)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/mrepo.svg)](https://forge.puppetlabs.com/puppet/mrepo)\n[![puppetmodule.info docs](https://www.puppetmodule.info/images/badge.svg)](https://www.puppetmodule.info/m/puppet-mrepo)\n[![Apache-2.0 License](https://img.shields.io/github/license/voxpupuli/puppet-mrepo.svg)](LICENSE)\n[![Donated by Puppet](https://img.shields.io/badge/donated%20by-Puppet-fb7047.svg)](#transfer-notice)\n\n# Transfer Notice\n\nThis module creates and synchronizes rpm based repositories by managing mrepo.\nIt is maintained by [Vox Pupuli](https://voxpupuli.org/) having kindly been migrated from [Puppet Inc](https://www.puppet.com/).\n\n## Synopsis ##\n\nInstall and configure a basic mrepo installation\n\n    node default {\n      class { 'mrepo': }\n    }\n\nOverride default values and enable redhat network support for use in other classes\n\n    class { 'mrepo':\n      selinux       =\u003e true,\n      rhn           =\u003e true,\n      rhn_username  =\u003e 'user',\n      rhn_password  =\u003e 'pass',\n    }\n\nOr using Hiera for parameters (same example)\n\n  code:\n    class { 'mrepo': }\n\n  Hiera:\n    mrepo::selinux: true\n    mrepo::rhn: true\n    mrepo::rhn_username: user\n    mrepo::rhn_password: pass\n\nMirror multiple centos 5 repositories\n\n    mrepo::repo { 'centos5-x86_64':\n      ensure    =\u003e present,\n      update    =\u003e 'nightly',\n      repotitle =\u003e 'CentOS 5.6 64 bit',\n      arch      =\u003e 'x86_64',\n      release   =\u003e '5.6',\n      urls      =\u003e {\n        addons      =\u003e 'rsync://mirrors.kernel.org/centos/$release/addons/$arch/',\n        centosplus  =\u003e 'rsync://mirrors.kernel.org/centos/$release/centosplus/$arch/',\n        updates     =\u003e 'rsync://mirrors.kernel.org/centos/$release/updates/$arch/',\n      }\n    }\n\n    mrepo::repo { 'centos5-i386':\n      ensure    =\u003e present,\n      update    =\u003e 'nightly',\n      repotitle =\u003e 'CentOS 5.6 64 bit',\n      arch      =\u003e 'i386',\n      release   =\u003e '5.6',\n      urls      =\u003e {\n        addons      =\u003e 'rsync://mirrors.kernel.org/centos/$release/addons/$arch/',\n        centosplus  =\u003e 'rsync://mirrors.kernel.org/centos/$release/centosplus/$arch/',\n        updates     =\u003e 'rsync://mirrors.kernel.org/centos/$release/updates/$arch/',\n      }\n    }\n\nMirror multiple rhel channels\n\n    mrepo::repo { 'rhel6server-x86_64':\n      ensure      =\u003e present,\n      update      =\u003e 'nightly',\n      repotitle   =\u003e 'Red Hat Enterprise Linux Server $release ($arch)',\n      rhn         =\u003e true,\n      type        =\u003e 'rhn',\n      arch        =\u003e 'x86_64',\n      release     =\u003e '6',\n      typerelease =\u003e '6Server',\n      iso         =\u003e 'rhel-server-6.0-$arch-dvd.iso',\n      urls        =\u003e {\n        updates       =\u003e 'rhns:///rhel-$arch-server-$release',\n        vt            =\u003e 'rhns:///rhel-$arch-server-vt-$release',\n        supplementary =\u003e 'rhns:///rhel-$arch-server-supplementary-$release',\n        fasttrack     =\u003e 'rhns:///rhel-$arch-server-fasttrack-$release',\n        hts           =\u003e 'rhns:///rhel-$arch-server-hts-$release',\n        rhn-tools     =\u003e 'rhns:///rhn-tools-rhel-$arch-server-$release',\n      }\n    }\n\nFetch and place an ISO file for the above rhel6server-x86_64 repo\n\n    mrepo::iso { 'rhel-server-6.0-$arch-dvd.iso':\n      source_url =\u003e 'http://some.domain.tld/path/to/isodir',\n      repo       =\u003e 'rhel6server-x86_64',\n    }\n\n## Usage ##\n\nIf you need to customize the mrepo default settings, include the mrepo\nclass and include the appropriate variables. Else, you should be able to use\nthe mrepo::repo by itself to instantiate repositories.\n\nFor class/define specific documentation, view the puppet doc in the given file.\n\n## Prerequisites ##\n\nThis module expects the following modules to be available:\n\n  - puppetlabs-apache\n  - puppetlabs-stdlib\n  - puppetlabs-vcsrepo\n\nIt also is configured for a redhat derived system and makes assumptions about\nthe available users and groups. Alternate parameters may override these\nassumptions.\n\nMirror data can grow extremely large, so you will want to ensure that src\\_root\nis located on a large volume.\n\nIf you are planning on using ISOs, you will also need fuse-iso.\n\n## Repository URL formatting ##\n\nYou can take advantage of the variables that mrepo itself supports when\ndefining a repository or ISO to mirror. Mrepo uses the following variables:\n\n  - $dist is set to the title of the resource\n  - $arch is set to the arch parameter\n  - $nick is set to $dist-$arch\n  - $repo is set to the key of the specific repository\n  - $release is set to the release parameter\n\nNote that these are variables within mrepo; if you are using them, make sure to\nsurround the string in single quotes so puppet doesn't try to expand them.\n\nSo this:\n\n    mrepo::repo { 'centos5-x86_64':\n      ensure    =\u003e present,\n      update    =\u003e 'nightly',\n      repotitle =\u003e 'CentOS 5.6 64 bit',\n      arch      =\u003e 'x86_64',\n      release   =\u003e '5.6',\n      urls      =\u003e {\n        addons      =\u003e 'rsync://mirrors.kernel.org/centos/$release/$repo/$arch/',\n        centosplus  =\u003e 'rsync://mirrors.kernel.org/centos/$release/$repo/$arch/',\n        updates     =\u003e 'rsync://mirrors.kernel.org/centos/$release/$repo/$arch/',\n      }\n    }\n\nIs equivalent to this:\n\n    mrepo::repo { 'centos5-x86_64':\n      ensure    =\u003e present,\n      update    =\u003e 'nightly',\n      repotitle =\u003e 'CentOS 5.6 64 bit',\n      arch      =\u003e 'x86_64',\n      release   =\u003e '5.6',\n      urls      =\u003e {\n        addons      =\u003e 'rsync://mirrors.kernel.org/centos/5.6/addons/x86_64/',\n        centosplus  =\u003e 'rsync://mirrors.kernel.org/centos/5.6/centosplus/x86_64/',\n        updates     =\u003e 'rsync://mirrors.kernel.org/centos/5.6/updates/x86_64/',\n      }\n    }\n\nBe warned that you can make a repository with the name of 'release'; however,\nthis will overwrite the actual release variable. If you have a repository with\na name of release, change the key to something else, and explicitly define the\nurl instead of using a variable.\n\nFor full details on how mrepo is used, see [the mrepo usage\npage](https://github.com/dagwieers/mrepo/blob/master/docs/usage.txt).\n\n## Caveats ##\n\n### Params Pattern ###\n\nThis module was previously using a design where the params class was used as the main class and included in other classes.\n\nIt now follows the params pattern, where parameters are set in the params\nclass as default, inherited, then overwritten as needed when calling the base class.\n\n#### Before:\n\nUsing classes\n\n```puppet\nclass { 'mrepo::params':\n  selinux       =\u003e true,\n  rhn           =\u003e true,\n  rhn_username  =\u003e 'user',\n  rhn_password  =\u003e 'pass',\n}\n```\n\n#### After:\n\n```puppet\nclass { 'mrepo':\n  selinux       =\u003e true,\n  rhn           =\u003e true,\n  rhn_username  =\u003e 'user',\n  rhn_password  =\u003e 'pass',\n}\n```\n\n\n### SELinux ###\n\nDefault SELinux policy prevents the httpd context from manipulating loopback\ndevices without having an explicit httpd context. This can be corrected by\nchanging the context as a mount option for a regular mount. However, fuseiso\ndoes not have the capability to change selinux contexts. If you are planning on\nmounting ISOs, either do so as root, change the httpd context to permit fuseiso\nto run using audit2allow, or disable SELinux. If neither of these are viable\noptions, you can locate and mirror an outside repository of the ISO data.\n\nFurther clarification of this issue can be found on [the repoforge tools\nlist](http://lists.repoforge.org/pipermail/tools/2007-July/000877.html).\n\n### Fuse ISO ###\n\nFuse iso is not available in any yum repository. You will need to locate an RPM or source file and install it for yourself. In addition, if you are using a non-root user to mount the ISOs, you will need to ensure that the user is in the 'fuse' group.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-mrepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-mrepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-mrepo/lists"}