質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chef

ChefはRuby等で書かれた構成管理ツールです。 システム構築や、運用作業を自動化してくれます。

Q&A

2回答

3069閲覧

Chefでオペレータユーザーが作成できない

TakuyaKondo

総合スコア7

Chef

ChefはRuby等で書かれた構成管理ツールです。 システム構築や、運用作業を自動化してくれます。

0グッド

0クリップ

投稿2016/04/17 11:12

現在、仮想サーバー構築をVagrant/Chefを駆使して行っています。

site-cookbooksの中に、オペレータユーザーを作るカスタムレシピを作成中なのですが、
下記のようなエラーが発生し、成功時に出る、INFO: user[ops] createdというメッセージが見当たりません。

==> default: Running provisioner: chef_solo... ==> default: Detected Chef (latest) is already installed ==> default: Generating chef JSON and uploading... ==> default: Running chef-solo... ==> default: stdin: is not a tty ==> default: [2016-04-17T10:52:01+00:00] INFO: Forking chef instance to converge... ==> default: Starting Chef Client, version 12.10.5 ==> default: [2016-04-17T10:52:01+00:00] INFO: *** Chef 12.10.5 *** ==> default: [2016-04-17T10:52:01+00:00] INFO: Platform: x86_64-linux ==> default: [2016-04-17T10:52:01+00:00] INFO: Chef-client pid: 1433 ==> default: [2016-04-17T10:52:03+00:00] INFO: Setting the run_list to ["recipe[build-essential]", "recipe[git]", "recipe[memcached]", "recipe[nodejs]", "recipe[database]", "recipe[xml]", "recipe[ruby_build]", "recipe[rbenv::system]", "recipe[nginx]", "recipe[imagemagick]", "recipe[rails_book_cookbook::ops_user]"] from CLI options ==> default: [2016-04-17T10:52:03+00:00] INFO: Run List is [recipe[build-essential], recipe[git], recipe[memcached], recipe[nodejs], recipe[database], recipe[xml], recipe[ruby_build], recipe[rbenv::system], recipe[nginx], recipe[imagemagick], recipe[rails_book_cookbook::ops_user]] ==> default: [2016-04-17T10:52:03+00:00] INFO: Run List expands to [build-essential, git, memcached, nodejs, database, xml, ruby_build, rbenv::system, nginx, imagemagick, rails_book_cookbook::ops_user] ==> default: [2016-04-17T10:52:03+00:00] INFO: Starting Chef Run for vagrant-f6bd31b6 ==> default: [2016-04-17T10:52:03+00:00] INFO: Running start handlers ==> default: [2016-04-17T10:52:03+00:00] INFO: Start handlers complete. ==> default: Installing Cookbook Gems: ==> default: Compiling Cookbooks... ==> default: [2016-04-17T10:52:05+00:00] WARN: Chef::Provider::AptRepository already exists! Cannot create deprecation class for LWRP provider apt_repository from cookbook apt ==> default: [2016-04-17T10:52:05+00:00] WARN: AptRepository already exists! Deprecation class overwrites Custom resource apt_repository from cookbook apt ==> default: ==> default: ================================================================================ ==> default: Recipe Compile Error ==> default: ================================================================================ ==> default: ==> default: ==> default: Chef::Exceptions::RecipeNotFound ==> default: -------------------------------- ==> default: could not find recipe default for cookbook database ==> default: ==> default: ==> default: Platform: ==> default: --------- ==> default: x86_64-linux ==> default: ==> default: ==> default: ==> default: Running handlers: ==> default: [2016-04-17T10:52:05+00:00] ERROR: Running exception handlers ==> default: Running handlers complete ==> default: ==> default: [2016-04-17T10:52:05+00:00] ERROR: Exception handlers complete ==> default: Chef Client failed. 0 resources updated in 03 seconds ==> default: [2016-04-17T10:52:05+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out ==> default: [2016-04-17T10:52:05+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report ==> default: [2016-04-17T10:52:05+00:00] ERROR: could not find recipe default for cookbook database ==> default: [2016-04-17T10:52:05+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

ディレクトリ構造は以下のようになっています。
イメージ説明

ops_user.rbに以下のコードを記載しています。

# # Cookbook Name:: rails_book_cookbook # Recipe:: ops_user user 'ops'

そして適用するためにVagrantfileには以下のように記述しています。

config.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["./cookbooks", "./site-cookbooks"] chef.add_recipe 'build-essential' chef.add_recipe 'git' chef.add_recipe 'memcached' chef.add_recipe 'nodejs' chef.add_recipe 'database' chef.add_recipe 'xml' chef.add_recipe 'ruby_build' chef.add_recipe 'rbenv::system' chef.add_recipe 'nginx' chef.add_recipe 'imagemagick' chef.add_recipe 'rails_book_cookbook::ops_user' chef.json = { "rbenv" => { "global" => "2.1.2", "rubies" => ["2.1.2"], "gems" => { "2.1.2" => [ { 'name' => 'bundler'} ] } } } end

エラーの原因・解決策がわかるかたいらっしゃいましたらよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

rails_book_cookbook/cookbooks/database/recipe/*のファイルにdefault.rbがないために
Vagrantfileにchef.add_recipe 'database'としてもうまくいきません。

###【もしdefault.rbがある場合】
ファイルの中身をみると、

ruby

1# Cookbook Name::database 2# Recipe::default 3 4# 以下、略 5

となっているわけで、これだったらchef.add_recipe 'database'でVagrantfileにレシピを追加できます。

###【でも実際はsqlite.rbとpostgresql.rbしかない】
sqlite.rbのレシピを読み込みたいとする。sqlite.rbの中身をよく見るとわかるが、

ruby

1# Cookbook Name:: 2# Recipe:: 3 4#↑の記述がない 5 6#以下略 7

のようにCookbook NameとRecipeの記述はないですが、database/recipies/sqlite.rb(<Cookbook Name>/recipies/<Recipe>)となっているのでchef.add_recipe 'database::sqlite'で読むことになります。

ruby

1# Cookbook Name::database 2# Recipe::sqlite 3 4#以下,略

と書いてあったほうが他の人が見るときにわかりやすいと思うのでCookbook NameとRecipeは書いたほうがいいかもしれません。

おそらくパーフェクトrailsのp290あたりで困られているのではないかと想像してます。
上記のような直接的な記述はないですが、p286の”レシピ”を読むと仕組みがわかるかと思います。

投稿2016/06/04 15:38

編集2016/06/04 16:03
yukihirop

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーメッセージに

==> default: could not find recipe default for cookbook database

とあることから、databaseクックブックのdefaultレシピが見つからないためにエラーとなっています。

指定したクックブック・パス("./cookbooks"および"./site-cookbooks")にdatabaseというクックブックがあり、さらにdefaultというレシピが存在するか確認してみてください。

あるいは、そもそもdatabaseというクックブックが不要なのであれば、Vagrantfileから

sh

1chef.add_recipe 'database'

という一行を削除してください。

投稿2016/04/17 17:06

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問