LoginSignup
7
5

More than 5 years have passed since last update.

chef の rpm_package リソースで http 経由で rpm をインストールする

Last updated at Posted at 2015-01-16

chef の rpm_package リソースで http 経由で rpm をインストールしようと

rpm_package 'xxx' do
  source 'http://xxx/xxx.rpm'
end

としたができなかった。コードを読むと、どうやら chef のロジックに File.exist?(@resource.source) のような余計なチェックが入っているようで、そこで弾かれてしまっているようだ。

そこで、http 経由で rpm をインストールできるようにしたのでメモ。

その1 - remote_file でファイルを落としてくる

remote_file で http 経由でファイルを落として来て、それを rpm_package で入れる。

そういう definitions を定義してしまえばよい。

コードはこちらにある => https://gist.github.com/sonots/c538cb368b3c2b366632

その2 - rpm_package のロジックを変える

rpm_package をカスタムして、HTTP 指定の場合は File.exists? チェックしないようにする。

コードはこちらにある => https://gist.github.com/sonots/7def97e78bc7e04847eb

おわりに

個人的には、複数のリソースを1度に動かしとログにたくさん結果が出てしまうので、1つのリソースで完結する2の方が気に入っている。

ただ、ホントは rpm コマンドを叩く前に、HTTP HEAD でファイルの存在確認をしたほうが良くって、まだそこができてない。そこを実装したら PR 送れる。FTP のパターンもあってめんどくさい。

追記: まだチェックはいれてないけど、とりあえずプルリった => https://github.com/opscode/chef/pull/2770

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5