Puppetのyumrepoリソースでよく指定する属性

#puppet

Puppetのyumrepoリソースは属性が多くて覚えにくいので、「この属性は必要だ」と思った項目についてまとめた。

その前にyumrepoリソースについて

外部リポジトリをPuppet manifestsで管理したい場合に、yumrepoリソースがある。

ちなみに、各属性の意味については、yum.conf(5)の各項目との対応付けが公式ドキュメントに記載されている。

yumrepoリソースの属性は多すぎる

Type Referenceのyumrepoリソースを見ると、yumrepo固有の属性は38個もある。 中にはs3_enabledみたいな普段使わなさそうな属性もあったり、何よりこれだけ属性があると優先順位が分からない。

普段指定する属性

サンプル

場合によってはgpgkey, gpgcheckも付けなかったりするけど、まあこれまであれば大体不自由なく動く。 rpm -ivhでインストールしても、だいたいこれぐらいの項目とプラスアルファが付いてくる。

# a sample manifest
yumrepo { 'epel':
  descr    => 'Extra Packages for Enterprise Linux 6 - x86_64',
  enabled  => 1,
  baseurl  => 'http://download.fedoraproject.org/pub/epel/6/$basearch',
  gpgkey   => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6',
  gpgcheck => 1,
}

descr

descrをつけないと、yum.conf(5)のnameパラメタが指定されず、yum実行時に以下のような警告が出る。

Repository 'REPOSITORYID' is missing name in configuration, using id

これは地味にうざいので、descrはちゃんとつけたほうがいいと思う。

enabled

コレがなかったらどうするのと言うレベルで必要な奴。

baseurl

上に同じく。 これが無いとリポジトリにアクセス出来ないし。

gpgkey

epelとかpuppetlabsとかにちゃんとGPGキーは付いてるので、コレは属性としてあった方が良さそう。

gpgcheck

gpgkeyつけるならこちらも。たまにどっちも省いたり、わざとチェックしないとかもするけど、基本的にはチェックした方がいいと思う。

悩んだけど付けなかった項目

mirrorlist

epelとかrpmforgeにはついてくるミラーリスト指定用の属性。

だけどyumrepoリソースを使って管理したい外部リポジトリって、epelやrpmforgeよりも、treasuredataやpuppetlabs, あるいはオレオレyumリポジトリだったりするので、まあ良いかなという感じ。

ちなみにepelやrpmforgeであれば、packageリソースでインストールすれば良いと思う。

package { 'epel-release':
  ensure   => installed,
  source   => 'http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm',
  provider => rpm,
}

failovermethod

mirrorlistを省いたのでこちらも省いた。

おまけ: neosnippets.vim用snippet

普段Puppet manifestsに使っているyumrepo用snippetを残しておく。

snippet yumrepo
  yumrepo { '${1:repo name}':
    descr    => '${2:$1}',
    enabled  => ${3:1},
    baseurl  => '${4:url}',
    gpgkey   => '${5:key}',
    gpgcheck => ${6:1},
  }