Hatena::Grouptech

id:rx7(@namikawa)の技術メモ このページをアンテナに追加 RSSフィード

過去記事一覧 | Main Blog (元RX-7乗りの適当な日々) | SBM (id:rx7のBookmark)

2016/02/15

"extconf.rb:104:in `makemakefiles': unhandled exception"

| "extconf.rb:104:in `makemakefiles': unhandled exception" - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - "extconf.rb:104:in `makemakefiles': unhandled exception" - id:rx7(@namikawa)の技術メモ "extconf.rb:104:in `makemakefiles': unhandled exception" - id:rx7(@namikawa)の技術メモ のブックマークコメント


$ sudo gem install chef
Building native extensions.  This could take a while...
ERROR:  Error installing chef:
	ERROR: Failed to build gem native extension.

    /usr/bin/ruby2.0 extconf.rb
creating Makefile
/var/lib/gems/2.0.0/gems/libyajl2-1.2.0/ext/libyajl2
extconf.rb:104:in `makemakefiles': unhandled exception
	from extconf.rb:138:in `<main>'


Gem files will remain installed in /var/lib/gems/2.0.0/gems/libyajl2-1.2.0 for inspection.
Results logged to /var/lib/gems/2.0.0/gems/libyajl2-1.2.0/ext/libyajl2/gem_make.out

Chefをgemからインストールしようとすると、上記エラーが出た。

該当箇所は、makeを叩いている場所だったので、インストールされるているか確認したら、入ってなかった・・・。

ということで、

$ sudo apt-get install gcc make

で解決。

トラックバック - http://tech.g.hatena.ne.jp/rx7/20160215

2014/12/26

berkshelfで依存しているCookbook/RecipeをincludeするときにChefspecでエラーが出る時

| berkshelfで依存しているCookbook/RecipeをincludeするときにChefspecでエラーが出る時 - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - berkshelfで依存しているCookbook/RecipeをincludeするときにChefspecでエラーが出る時 - id:rx7(@namikawa)の技術メモ berkshelfで依存しているCookbook/RecipeをincludeするときにChefspecでエラーが出る時 - id:rx7(@namikawa)の技術メモ のブックマークコメント


タイトル通りだけど、以下のような感じでCookbookが無いと言われる。

  1) cookbook::default install hoge
     Failure/Error: end.converge(described_recipe)
     Chef::Exceptions::CookbookNotFound:
       Cookbook depend-cookbook not found. If you're loading depend-cookbook from another cookbook, make sure you configure the dependency in your metadata

公式ドキュメント通りだけど、"spec/spec_helper.rb"に、

require 'chefspec/berkshelf'

こんな感じでrequireしておけばOK。


ちなみに、Librarianを使っている時は、

require 'chefspec/librarian'

参考

トラックバック - http://tech.g.hatena.ne.jp/rx7/20141226

2012/04/24

Chef の Common Automatic Attributes

| Chef の Common Automatic Attributes - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - Chef の Common Automatic Attributes - id:rx7(@namikawa)の技術メモ Chef の Common Automatic Attributes - id:rx7(@namikawa)の技術メモ のブックマークコメント

ohaiによって自動で付与されるAttributesの一覧。

Ohai detects attributes on the node based on its own plugin system. The most commonly accessed attributes are:

  • node['platform'] - The node's platform. This determines what Providers are used by Resources.
  • node['platform_version'] - The node's platform version. This may be used in determining Providers as well.
  • node['ipaddress'] - The node's ipaddress is IPV4 address of the interface that has the default route. If the node does not have a default route, this attribute will be nil. Using the IP of the interface with the default route is deemed the most sane default.
  • node['macaddress'] - The node's macaddress, from the interface detected for ipaddress above.
  • node['fqdn'] - The fully qualified domain name, for example from hostname -f on Unix/Linux systems. This is also used as the node name unless otherwise set.
  • node['hostname'] - The hostname is the first field from splitting the FQDN on "." (dot).
  • node['domain'] - The domain is the rest of the FQDN after splitting on "." (dot).
  • node['recipes'] - The node's Run List is expanded for roles and recipes, and recipes are stored in this attribute.
  • node['roles'] - The node's Run List is expanded for roles and recipes, and roles are stored in this attribute.
  • node['ohai_time'] - Not commonly used in recipes, but this value is the time epoch of the node when ohai was run, and gets saved to the Chef Server. It is also used in the Knife "status" sub command.
ERROR: The request could not be satisfied

Automatic Attribute Precedence

参考: ERROR: The request could not be satisfied

ohai$ grep -R "provides" -h lib/ohai/plugins|sed 's/^\s*//g'|sed "s/\\\"/\'/g"|sort|uniq|grep ^provides
provides 'block_device'
provides 'chef'
provides 'cloud'
provides 'command'
provides 'command/ps'
provides 'cpu'
provides 'dmi'
provides 'ec2'
provides 'etc', 'current_user'
provides 'eucalyptus'
provides 'filesystem'
provides 'fqdn', 'domain'
provides 'fqdn', 'hostname'
provides 'hostname', 'fqdn'
provides 'kernel'
provides 'kernel/os'
provides 'keys'
provides 'keys/ssh'
provides 'languages'
provides 'languages/c'
provides 'languages/erlang'
provides 'languages/groovy'
provides 'languages/java'
provides 'languages/lua'
provides 'languages/mono'
provides 'languages/perl'
provides 'languages/php'
provides 'languages/python'
provides 'languages/ruby'
provides 'lsb'
provides 'memory'
provides 'network'
provides 'network', 'counters/network'
provides 'network_ip_scope', 'privateaddress'
provides 'network/listeners'
provides 'ohai'
provides 'ohai_time'
provides 'os', 'os_version'
provides 'platform', 'platform_version'
provides 'platform', 'platform_version', 'platform_build'
provides 'rackspace'
provides 'system_profile'
provides 'uptime', 'idletime', 'uptime_seconds', 'idletime_seconds'
provides 'uptime', 'uptime_seconds'
provides 'virtualization'
トラックバック - http://tech.g.hatena.ne.jp/rx7/20120424

2012/01/27

CentOS 6.2 にchef-clientをインストール

| CentOS 6.2 にchef-clientをインストール - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - CentOS 6.2 にchef-clientをインストール - id:rx7(@namikawa)の技術メモ CentOS 6.2 にchef-clientをインストール - id:rx7(@namikawa)の技術メモ のブックマークコメント

特に躓く事もなく。

# cat /etc/redhat-release
CentOS release 6.2 (Final)

もともと、chef-clientはCentOS 5系でも、それほど苦労せずに入るのですが、

Rubyのバージョンがデフォルトで1.8.7になっているので、外部のRPMレポジトリを使わなくてもすむようになってた。

# yum install ruby ruby-devel ruby-ri ruby-rdoc ruby-static rubygems
# gem install chef

↑の2コマンドでインストールは終了。

# chef-client -v
Chef: 0.10.8

この通り。

トラックバック - http://tech.g.hatena.ne.jp/rx7/20120127

2010/10/13

Chefでローカルにあるファイルのコピーを行いたい場合

| Chefでローカルにあるファイルのコピーを行いたい場合 - id:rx7(@namikawa)の技術メモ を含むブックマーク はてなブックマーク - Chefでローカルにあるファイルのコピーを行いたい場合 - id:rx7(@namikawa)の技術メモ Chefでローカルにあるファイルのコピーを行いたい場合 - id:rx7(@namikawa)の技術メモ のブックマークコメント

Chefでローカルマシン内に既にあるファイルとかをコピーして別の場所に配置したい場合、

executeやscriptを使ってコマンドを書くしかないとばかり思っていたのだが、

"file" resource の "content" attribute が使えることに気付いた。recipeには以下のような感じで。

file "/tmp/example.txt" do
  content IO.read("/etc/hosts")
end

参考

トラックバック - http://tech.g.hatena.ne.jp/rx7/20101013