I’ve posted a simple skeleton template that I use for setting up local yum repos for RHEL/Centos. There should be sufficient directions in the README (copied below).
Description =========== This is a very simple template of a yum repository. It is the structure that I use for maintaining a local repo of RPMs for RHEL/Centos 4/5/6. USAGE ===== There is a trivial makefile at the top level of the tree that will run the [createrepo](http://createrepo.baseurl.org/) utility on the 2nd level of directories in the tree and create/update a non-GPG signed yum repository. The tree structure should be as follows: . |-- 4 | |-- i386 | `-- x86_64 |-- 5 | |-- i386 | `-- x86_64 `-- 6 |-- i386 `-- x86_64 The `createrepo` command will be run on (4|5|6)(i386|x86_64) but not the first level dirs (4|5|6). After `createrepo` finishes running, you should have one usage repo for each major release number and architeture. . |-- 4 | |-- i386 | | `--repodata | `-- x86_64 | `--repodata |-- 5 | |-- i386 | | `--repodata | `-- x86_64 | | `--repodata `-- 6 |-- i386 | `--repodata `-- x86_64 `--repodata To create/modify the working repos just run after adding/removing RPMs from the appropriate $releasever/$basearch and your yum repo is ready for use. # copy rpm(s) to some arch dir like 5/x86_64 makefile Adding a different arch just recreates creating a directory in the correct place. For example, to add RHEL5 PPC support: mkdir 5/ppc64 # copy some .rpms --> 5/ppc makefile PUPPET EXAMPLE ============== Here is a simple example of a puppet class that will setup the repo with the Yumrepo type. It should work for RHEL/Centos 3/4/5/6 and beyond. class yum-local { case $operatingsystem { 'redhat', 'centos': { yumrepo { 'local': descr => 'my local repo', baseurl => 'http://example.org/nso/$releasever/$basearch', enabled => 1, gpgcheck => 0, priority => 1, } } } }