Hi Tim,
> I don't have a yum module, but I have a yum.pp in /etc/puppet/
> manifests/classes which tells the puppetmaster to distribute a
> yum.conf and a repos.repo (a list of all local Fedora and CentOS
> repos) to the puppet clients.
Managing yum is a good place to start with puppet. It's somewhat
harmless to the system if you mess up & it can be as complex or as
simple as you want it to be. My yum.pp has 5 ways to get the repos out.
Only 2 are used while the other methods are left behind for my own
reference.
My site.pp contains "include yum". I
> don't
> have anything anywhere called *.repo.erb. If I made yum just one of
> many modules (put it in with ssh, amanda, mysql and all the others)
> I would just add a line to /etc/puppet/manifests/modules.pp and add
> something like your second snip into /etc/puppet/modules/yum/template/
> to point to the local mirrors.
Yup. The .erb files are template files. Puppet will read in the
specified template and replace any <%= VARIABLE %> it finds. This
worked great with the epel.repo because very little changes between
CentOS 4 & 5 in the actual epel.repo file. All I really needed to
change was The number 4 & 5 which Puppet figures out via Facter using
the $lsbmajdistrelease variable.
>
> But where should I put this first bit of syntax beginning case
> $operatingsystem and what should I call it? My current repos.repo
> refers to $basearch and $releasever which are obviously variables set
> from facter facts (like in your second snip) but I can't see where
> those are set at the moment.
Well, kinda. $basearch and $releasever are variables that ( I think )
yum uses. They have nothing to do with puppet. *This only applies to
templates*. Within your Puppet manifests $variable *are* puppet
variables. The only variable I use for puppet templating is <%=
lsbmajdistrelease %>
Templates are good if there are only minor changes that need to be made
in each file.
For more on templating check out
http://reductivelabs.com/trac/puppet/wiki/PuppetTemplating
Could I just change the current yum.pp to
> include the case$operating system?
Yes. The yum.pp is where you would put that case statement.
If you want to simplify things and not use templates, another way to do
it ( which I also use ) would be like this.
case $operatingsystem {
CentOS : {
file { "/etc/yum.repos.d/CentOS-Base.repo" :
ensure => file,
mode => 644,
owner => root,
group => root,
source =>
"puppet:///yum-module/noarch/etc/yum.repos.d/CentOS-Base.repo-$lsbdistid.$lsbmajdistrelease",
}
Fedora : {
file { "/etc/yum.repos.d/Fedora-Base.repo" :
ensure => file,
mode => 644,
owner => root,
group => root,
source =>
"puppet:///yum-module/noarch/etc/yum.repos.d/Fedora-Base.repo-$lsbdistid.$lsbmajdistrelease",
}
}
}
In this situation the case{} block would live in your yum.pp and the
repo files would live in:
/etc/puppet/modules/yum-module/files/noarch/etc/yum.repos.d/CentOS-Base.repo-CentOS.5
/etc/puppet/modules/yum-module/files/noarch/etc/yum.repos.d/CentOS-Base.repo-CentOS.4
/etc/puppet/modules/yum-module/files/noarch/etc/yum.repos.d/CentOS-Base.repo-Fedora.9
...
...
I don't have any fedora boxes to test so I'm not 100% sure facter
returns "Fedora" as the $lsbdistid variable. Run facter on one of your
Fedora boxes to find out.
Hopefully this helps you out. Left me know if you have any more
questions or hop into #puppet in freenode. There is usually someone
there who will answer any questions you have.
-Brandon Evans
> Help most welcome! Tim
>
> On Apr 30, 10:19 pm, Brandon Evans <[email protected]> wrote:
>> I prefer copying the repos over using a template. This way all my
>> CentOS boxes have the same repos. If I were to add any Fedora boxes to
>> the mix I'd add the repos to the Fedora {} block.
>>
>> case $operatingsystem {
>> CentOS : {
>>
>> file { "epel" :
>> path => "/etc/yum.repos.d/epel.repo",
>> owner => root,
>> group => root,
>> mode => 644,
>> content => template("yum-module/epel.repo.erb"),
>> ensure => file
>> }
>> }
>> Fedora : {
>> # Fedora repos here
>> }
>>
>> }
>>
>> Here is the template that goes in the
>> /etc/puppet/modules/yum-module/template/ directory
>>
>> == SNIP ==
>>
>> [epel]
>> name=Extra Packages for Enterprise Linux <%= lsbmajdistrelease %> -
>> $basearch
>> #baseurl=http://download.fedoraproject.org/pub/epel/<%=
>> lsbmajdistrelease %>/$basearch
>> mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-<%=
>> lsbmajdistrelease %>&arch=$basearch
>> failovermethod=priority
>> enabled=<%= enableme %>
>> gpgcheck=1
>> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
>>
>> == SNIP ==
>>
>> -Brandon
>>
>> [email protected] wrote:
>>> I'm running puppet 0.24.6 on CentOS 5.2 from a puppetmaster on a
>>> virtual server to a variety
>>> of client servers both virtual and metal running either CentOS 5.2 or
>>> Fedora Core 10. I want to
>>> extend this to servers running RHEL 5 (and 6) in the near future.
>>> My problem is I have puppet set up with all repositories (mirrored
>>> locally using cobbler)
>>> included in one file in /etc/yum.repos.d/kewrepos.repo on the
>>> puppermaster. This file contains
>>> both Centos and Fedora repos and when I run a yum update I just --
>>> disablerepo=whichever I don't want,
>>> which can be done as a cron job.
>>> The difficulty is sometimes puppet runs yum automatically, which loops
>>> on a CentOS webserver
>>> trying to reinstall httpd, getting confused by the presence of Fedora
>>> repositories.
>>> My question is how can I set up puppet so that I can tell, once and
>>> for all, The Fedora boxes to
>>> look at the Fedora repos and the CentOS boxes to CentOS repos only? I
>>> want to be able to
>>> configure unlimited repos in the future for workstations (Fedora) and
>>> servers (CentOS or RHEL).
>>> Thanks in advance
>>> Tim Kendall
>>> I just added Kew Gardens where I work to your Wiki list of users
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---