6.3 KiB
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/ |
|
|
|
|
普段手動でパッケージをインストールする際に対話的にパスワードなどを聞かれることがあります。例えばmysql-serverをインストールする場合には、次のような画面が表示されます:
こうした対話的な問い合わせに対して、事前に応答する内容を記述したファイルを用意することで対話的なインターフェースをバイパスできます。今回は 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
売り上げランキング: 252