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

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

ただいまの
回答率

90.49%

  • Chef

    65questions

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

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

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,006

TakuyaKondo

score 1

現在、仮想サーバー構築を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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

エラーメッセージに

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

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

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

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

chef.add_recipe 'database'

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

【もしdefault.rbがある場合】

ファイルの中身をみると、

# Cookbook Name::database
# Recipe::default

# 以下、略

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

【でも実際はsqlite.rbとpostgresql.rbしかない】

sqlite.rbのレシピを読み込みたいとする。sqlite.rbの中身をよく見るとわかるが、

# Cookbook Name::
# Recipe::

#↑の記述がない

#以下略

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

# Cookbook Name::database
# Recipe::sqlite

#以下,略


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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • Chef

    65questions

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