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の良いところかと思いますので。