blog/content/post/2013-05-06-chef_package_ins...

6.3 KiB
Raw Blame History

title author date url has_been_twittered tmac_last_id wordtwit_post_info categories
Chefで事前応答ファイルを準備してパッケージをインストールする kazu634 2013-05-06 /2013/05/06/chef_package_installation_with_preseedings/
yes
368535674695479296
O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";s:1:"1";s:5:"delay";s:1:"0";s:7:"enabled";s:1:"1";s:10:"separation";i:60;s:7:"version";s:3:"3.0";s:14:"tweet_template";b:0;s:6:"status";i:3;s:6:"result";a:0:{}s:13:"tweet_counter";i:1;s:13:"tweet_log_ids";a:0:{}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
chef
インフラ

普段手動でパッケージをインストールする際に対話的にパスワードなどを聞かれることがあります。例えばmysql-serverをインストールする場合には、次のような画面が表示されます:

1. Default (ssh)

こうした対話的な問い合わせに対して、事前に応答する内容を記述したファイルを用意することで対話的なインターフェースをバイパスできます。今回は Debian/Ubuntu 系の場合に事前応答ファイルを準備してインストールする方法をまとめます。

検証した環境

Ubuntu 12.04で検証しています。

レシピの書き方

Chefのマニュアルには次のように記載されています:

Use of a response_file is only supported on Debian and Ubuntu at this time. Providers need to be written to support the use of a response_file, which contains debconf answers to questions normally asked by the package manager on installation. Put the file in files/default of the cookbook where the package is specified and Chef will use the cookbook_file resource to retrieve it.

To install a package with a response_file:

package "sun-java6-jdk" do

response_file "java.seed" end

現時点では Debian/Ubuntu 系の preseeding しかサポートしておらず、また、response_file で指定すればよさそうです。

response_fileの内容

response_fileの内容はここを参考にすると幸せになれます:

mysql-serverのインストール時に root のパスワードを指定しますが、その際に「123qweASD」を指定した場合のresponse_fileの内容は次のようになります:

mysql-server-5.5 mysql-server/root_password_again password 123qweASD
mysql-server-5.5 mysql-server/root_password password 123qweASD

Ubuntuデフォルトでインストールされるmysqlのバージョンが5.6になったら修正する必要が出てきそうですが、とりあえず上記の内容で mysql.seed という名前で保存をし、 files/default/ 配下に格納します。

実際にレシピを書いてみる

結果的に次のようになります:

package "mysql-server" do
  action :install

  response_file "mysql.seed"
end

入門Chef Solo - Infrastructure as Code
伊藤直也 (2013-03-11)
売り上げランキング: 252