Chef11でPostgresqlのyumリポジトリを追加してみる。(まだできてない)

Zabbix2.2をPostgeSQL9.3でインストールをChefのCookbookにした。にて、yum_repository というChefのresouceが使えるかもと思って挑戦してみました。

■参考URL

公式 http://docs.opscode.com/lwrp_yum.html
はじめてのChef  http://www.sharkpp.net/blog/2014/04/18/first-step-chef.html


■変更前


# repository
script "zabbix repo install" do
  not_if "rpm -qa | grep #{node[:zabbix][:repo_rpm]}"
  command "/bin/rpm -ivh #{node[:zabbix][:repourl]}"
end



■変更後


yum_repository 'postgresql' do
  description "postgresql repo"
  baseurl "#{node[:postgresql][:repourl]}"
  action :create
end



まずはこんなものだろうと、公式文書を斜め読みで書いてみました。gpgkey は元のPostgreSQLのインストールから発見できなかったので、ぬかしました。

■出力されたエラー


================================================================================
Recipe Compile Error in cookbooks/postgresql9/recipes/default.rb
================================================================================
 
 
NameError
---------
Cannot find a resource for yum_repository on centos version 6.5
 
 
Cookbook Trace:
---------------
  cookbooks/postgresql9/recipes/default.rb:16:in `from_file'
 
 
Relevant File Content:
----------------------
cookbooks/postgresql9/recipes/default.rb:
 
  9:  
 10:  # yum repository rpm install 
 11:  #script "postgresql repo install" do
 12:  #  not_if "rpm -qa | grep -i #{node[:postgresql][:repo_rpm]}"
 13:  #  command "/bin/rpm -ivh #{node[:postgresql][:repourl]}"
 14:  #end 
 15:  
 16>> yum_repository 'postgresql' do
 17:    description "postgresql repo"
 18:    baseurl "#{node[:postgresql][:repourl]}"
 19:    action :create
 20:  end
 21:  
 22:  # rpm install
 23:  node[:postgresql][:package].each do |package_name|
 24:    package package_name do
 25:      action :install





NameError
———
Cannot find a resource for yum_repository on centos version 6.5


名前が違うと出ていました。

# yum repolist
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
epel/metalink                                                                                        | 5.2 kB     00:00     
 * epel: ftp.iij.ad.jp
base                                                                                                 | 3.7 kB     00:00     
epel                                                                                                 | 4.4 kB     00:00     
epel/primary_db                                                                                      | 6.2 MB     00:00     
extras                                                                                               | 3.4 kB     00:00     
pgdg93                                                                                               | 3.7 kB     00:00     
updates                                                                                              | 3.4 kB     00:00     
zabbix                                                                                               |  951 B     00:00     
zabbix-non-supported                                                                                 |  951 B     00:00     
repo id                                     repo name                                                                status
base                                        CentOS-6 - Base                                                          6352+15
*epel                                       Extra Packages for Enterprise Linux 6 - x86_64                             10992
extras                                      CentOS-6 - Extras                                                             14
pgdg93                                      PostgreSQL 9.3 6 - x86_64                                                    213
updates                                     CentOS-6 - Updates                                                       1132+13
zabbix                                      Zabbix Official Repository - x86_64                                           81
zabbix-non-supported                        Zabbix Official Repository non-supported - x86_64                             15
repolist: 18799





pgdg93 PostgreSQL 9.3 6 – x86_64 213


これを入れるのかな?とおもってyum_repository のところに色々と入れてみたのですが、いまだにdry runすら通りません。

入れてみたものを列挙
・yum_repository ‘pgdg93’ do ← yum repolistの結果から
・yum_repository ‘pgdg-9.3’ do ← chef社のサンプルからhttps://github.com/opscode-cookbooks/yum-pgdg
・yum_repository ‘pgdg-93-centos’ do ← /etc/yum.repos.d/pgdg-93-centos.repoこのファイル名。参考にしたこのサイトから https://supermarket.getchef.com/cookbooks/yum


今のところダメです。追記できるといいなぁ。

追記2014/07/14
実のところ、yum_repositoryで追加を諦めました。理由としては下記のようなものです。
yum-pgdgのcookbookを読んでみて、recipiの記入内容が/etc/yum.repos.d/のファイルの中身を記入するようなものだったので、自分でメンテナンスするときには一度RPMなどで入れた時にできたファイルをみて更新するのかなと思いました。

でもそれならば、RPMをインストールする現在のやり方でも大差ないというか、手間が省けます。メンテナンスする場合は、該当するRPMのURLを探し出せばよいだけですので。

もちろん、cookbookのほうが安心して使えると思いますし、他の人のcookbookを持ってきて構成することが前提な構築ポリシーであれば、RPMを入れるよりも一元化できてよいかと思いました。

要は使い分け…だと思います。僕のcookbookでも、該当するリポジトリ追加部分を削除して、インストールするのも汎用性を高める行為だと思います。まあ、何より、自分が使いやすいレシピに変えていくことができるのはchefの良いところかと思いますので。