LoginSignup
1
0

More than 5 years have passed since last update.

ChefTips: bootstrap時に カスタマイズした client.rb を配布する

Last updated at Posted at 2018-08-24

解決したい課題

chef-client の設定ファイルである client.rb に追記・修正したい場合は、通常 chef-client cookbook を使用します。

chef-cookbooks/chef-client

しかし、この方法では chef-client は すでにBootstrapされている前提なので、例えば『Bootstrap時にカスタマイズした client.rb ファイルを配布したい』という要件があった場合、採用することができません。

本記事では、公式で紹介されていた Bootstrap の Custom Templates を使って、上記要件を満たす方法をご紹介します。

knife bootstrap時にカスタマイズした client.rb を配布する方法

以下で紹介されていた方法を使います。

knife bootstrap - Custom Templates
https://docs.chef.io/knife_bootstrap.html#custom-templates

(1) chef-full.erb ファイルに追記

knife bootstrapコマンドを実行する Chef Workstation上で、knife bootstrapの振る舞いを定義する chef-full.erbファイルをカスタマイズします。直接カスタマイズしてしまってもいいのですが、念の為、Chef-repo直下/.chef/bootstrap/ 以下あたりにコピーしてからカスタマイズしましょう。

$ mkdir .chef/bootstrap 
$ cp -ip $(find /opt/chefdk/embedded/lib/ruby -type f -name chef-full.erb) .chef/bootstrap/.

chef-full.erb のパスは環境によって少し異なります。/opt/chefdk/embedded/lib/ruby 配下で chef-full.erb を find してみてください

chef-full.erb ファイルの以下あたりに client.rbに追記したい内容を記述してみてください。ここでは、Chef::Config[:follow_client_key_symlink] = true という記述を追記します。

cat > /etc/chef/client.rb <<'EOP'
<%= config_content %>
EOP

# 以下を追記
cat >> /etc/chef/client.rb <<'EOP'
Chef::Config[:follow_client_key_symlink] = true
EOP

(2) erbファイルを指定して knife bootstrap

chef-full.erb ファイルのカスタマイズが終わったら、実際に knife bootstrap してみましょう。以下の例のように --bootstrap-template オプションで先程カスタマイズした chef-full.erb を指定してあげてください。

$ knife bootstrap vcent74 --sudo -N vcent74 --bootstrap-template .chef/bootstrap/chef-full.erb

毎回、--bootstrap-template オプションをつけるのが面倒だという方は、knifeコマンドの設定ファイルである .chef/knife.rbファイルに以下の記述をつけてあげることで省略可能です。


knife[:bootstrap_template] = "#{current_dir}/bootstrap/chef-full.erb"

補足

本記事でご紹介した『bootstrap時に カスタマイズした client.rb を配布する』方法は、以下の記事で紹介されている AIX における Bootstrapも問題を回避する際にも有効です。

AIX V7 にて chef-client を使用する際の integer 137438954242 too big to convert to `int' エラー

1
0
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
1
0