Amazon Linuxでserverspec-initができない(`require’: cannot load such file — io/console (LoadError))

 


 

Amazon Linuxでserverspecのインストールはできるが、

serverspec-initができない。

Amazon LinuxのAMI IDはamzn-ami-hvm-2017.03.0.20170417-x86_64-gp2 (ami-923d12f5)、

Rubyのバージョンはruby 2.0.0p648 (2015-12-16) [x86_64-linux]、

rakeのバージョンはrake, version 12.0.0。

 
serverspec-initを実行すると、


[ec2-user@ip-192-168-11-11 serverspec]$ serverspec-init
/usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError)
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/net-ssh-4.1.0/lib/net/ssh/prompt.rb:1:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/net-ssh-4.1.0/lib/net/ssh/key_factory.rb:2:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/net-ssh-4.1.0/lib/net/ssh/authentication/key_manager.rb:2:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/net-ssh-4.1.0/lib/net/ssh/authentication/session.rb:4:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/net-ssh-4.1.0/lib/net/ssh.rb:12:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/specinfra-2.67.9/lib/specinfra/backend/ssh.rb:3:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/specinfra-2.67.9/lib/specinfra/backend.rb:3:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/specinfra-2.67.9/lib/specinfra/core.rb:7:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/specinfra-2.67.9/lib/specinfra.rb:1:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/serverspec-2.38.0/lib/serverspec.rb:2:in `'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/ec2-user/.gem/ruby/2.0/gems/serverspec-2.38.0/bin/serverspec-init:5:in `'
from /home/ec2-user/bin/serverspec-init:23:in `load'
from /home/ec2-user/bin/serverspec-init:23:in `

'

となる。

ログを見て、ああ、io-consoleがないのね、と思い、gem install io-console するが、


[ec2-user@ip-192-168-11-11 serverspec]$ gem install io-console
Fetching: io-console-0.4.6.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing io-console:
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/io-console-0.4.6 for inspection.

となる。

むむーーーーーー

ヘッダーファイルがみつからない的なエラーが出ているため、

sudo yum -y install ruby-devel

したが変わらず。

それではということで、

sudo yum install -y ruby20-devel gcc-c++

したらio-consoleインストールできた!!!!!!!!!

 
というわけで、無事serverspec-initもできた。

最近のAmazon LinuxのRubyだと起きる・・?
 

awspecでspecファイルをgenerateすると(中略)awsecrets-1.10.1/lib/awsecrets.rb:59:in `exist?’: no implicit conversion of nil into String (TypeError)

 


 

Infrastructure as codeである。

 
「エンタープライズにAWS?早い早い」などという担当者の方の冷笑はいまや昔。

今日ではあの三菱東京UFJ銀行までがAWSを利用しようかというご時勢である。

そんな時流に乗り、弊社も忙しい。とっても忙しい。

手のぬくもりを大切にした環境構築ではもはや追いつかない。

そこで自動化を推進するわけである。

Terraformは以前からちょいちょい触っていたが、インフラ構築にもTDDをということで、

awsspecを検証してみた。

 
Amazon Linuxに2.x系のRubyを入れ(詳細は割愛する)、


gem install awspec
mkdir awspec
cd awspec
awspec init

ここまでは順調。

問題はこの後、


echo "require 'spec_helper'" > spec/ec2_and_rds_spec.rb
awspec generate vpc vpc-xxxxxxxxxc >> spec/ec2_and_rds_spec.rb

しようとすると、


$ awspec generate vpc vpc-1871177c >> spec/ec2_and_rds_spec.rb
/home/ec2-user/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/awsecrets-1.10.1/lib/awsecrets.rb:59:in `exist?': no implicit conversion of nil into String (TypeError)

というエラーが出る。

 
“secrets”とあるからてっきりaws configure関連かと思ったが、実行しても変わりはない。

こんな時は公式サイトを見るのだ。

 
結局、

・specディレクトリの下にsecrets.ymlを作成

$ cat <<EOF > spec/secrets.yml
region: ap-northeast-1
aws_access_key_id: XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EOF

awsecretsをインストールする

$ gem install awsecrets

とやったところ、specファイルが生成され、自動テストが実行できるようになった。

 
パラメータシートとにらめっこして画面ショットを取るのもせつないので、

うまく活用していきたい。

 

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス
Kief Morris
オライリージャパン
売り上げランキング: 9,259

参加の操作を正しく完了できませんでした。これは、既存のXXという名前のコンピューター アカウントが以前、別の資格情報で作成された可能性があります。

 

EC2をベースにしたWindows Server 2012 R2のサーバをドメイン参加させようとしたところ、

参加の操作を正しく完了できませんでした。これは、既存のXXという名前のコンピューター アカウントが以前、別の資格情報で作成された可能性があります。別のコンピューター名を使うか、管理者に連絡して、競合を発生している無効なアカウントを削除してもらって下さい。エラー:

アクセスが拒否されました。

なるエラーが発生し、ドメイン参加に失敗した。

ad_error_20160618

始めて使うサーバ名であるため、コンピューターアカウントが競合するはずはない。

EC2で作ったWindows Serverのゴールデンイメージからsysprepして作った環境のため、

sysprepの失敗か?とも一瞬思ったが、原因は全然違った。

 
単純に、ドメイン参加時に入力を求められたアカウントに権限がなかっただけだった。

Domain Adminsグループに所属するアカウントで再度試行し、うまくいった。

 

標準テキスト Windows Server 2012 R2 構築・運用・管理パーフェクトガイド
SBクリエイティブ (2015-03-02)
売り上げランキング: 21,493