LoginSignup
2
2

More than 5 years have passed since last update.

【Chef】 ChefDKとknife-soloをインストール&cook

Last updated at Posted at 2015-10-27

1からchefをインストールすることになったので、メモ。
※今回はAmazon Linuxが対象です。

ChefDK

まずはChefDKをインストール
今回はRed Hat Enterprise Linux 6をダウンロードしました。

wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.9.0-1.el6.x86_64.rpm

ダウンロード後は以下でインストール。

sudo rpm -Uvh chefdk-0.2.0-2.el6.x86_64.rpm

インストールが完了したら以下を~/.bashrcに記述してパスを通します。

~/.bashrc
# chef
export PATH=/opt/chefdk/embedded/bin:$PATH

これでChefDKのインストールと実行準備は完了です。

knife-solo

リモート環境のCookを実行したいので、knife-soloもインストールします。
まず事前準備としてruby-develをインストール。

$ sudo yum -y install ruby-devel

※ruby-develがインストールされていないと以下のエラーが出ます。

Building native extensions.  This could take a while...
ERROR:  Error installing bson_ext:
        ERROR: Failed to build gem native extension.

    /usr/bin/ruby2.0 extconf.rb
mkmf.rb can't find header files for ruby at /usr/share/ruby/include/ruby.h


Gem files will remain installed in /home/ec2-user/.gem/ruby/2.0/gems/bson_ext-1.10.2 for inspection.
Results logged to /home/ec2-user/.gem/ruby/2.0/gems/bson_ext-1.10.2/ext/cbson/gem_make.out

そしたらgemでknife-soloをインストール。

$ chef gem install knife-solo

chefのgemを使って下さい。ChefDKインストールでgemsとknifeがインストールされており、パスを/opt/chefdkに通しているため、
chef配下のgemでインストールしないと認識されません。

無事インストールが完了しました。

Cookbook作成

以下コマンドでテンプレートを作成します。
※具体的な内容はいろんなサイトがあるので割愛します。

$ knife cookbook create cookbook名】 -o site-cookbooks

Berkshelf

既にBerkshelfはインストールされているので、berksコマンドを実行します。

$ berks

するとBerksfile.lockができて、依存関係がロックされます。

次に以下コマンドを実行

$ berks vendor cookbooks/

これで依存関係のあるサードパーティーCookbookがインストールされます。

Cook

さて、インストールも無事完了したのでknife solo cookを実行してみたら以下のメッセージが出ました。

Deprecated features used!
  Cannot specify both default and name_property together on property path of resource yum_globalconfig. Only one (name_property) will be obeyed. In Chef 13, this will become an error. at 1 location:
    - /tmp/solo/cookbooks-2/yum/resources/globalconfig.rb:76:in `class_from_file'
  version nil currently does not overwrite the value of version. This will change in Chef 13, and the value will be set to nil instead. Please change your code to explicitly accept nil using "property :version, [MyType, nil]", or stop setting this value to nil. at 3 locations:
    - /tmp/solo/cookbooks-2/python/recipes/pip.rb:52:in `block in from_file'
    - /tmp/solo/cookbooks-2/python/recipes/virtualenv.rb:25:in `block in from_file'
    - /tmp/solo/cookbooks-2/python/providers/pip.rb:98:in `load_current_resource'

調べてみたら、公式のgithubに以下issueを発見!!

https://github.com/chef-cookbooks/yum/issues/140

要は対応しまっせ、気にしないでねみたいな感じでしょうか。

あとがき

最近Docker(コンテナ)が話題に上がり、Chefはチョット下火な印象ですがやはりまだまだ便利ですので、
今後も利用&トレースしていきたいと思います。

2
2
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
2
2