Category Archives: Amazon Web Services

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 […]

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 ―クラウドにおけるサーバ管理の原則とプラクティス posted with amazlet at 17.05.02 Kief Morris オライリージャパン 売り上げランキング: 9,259 Amazon.co.jpで詳細を見る

TerraformでAWSのVPC環境の構築自動化

    Terraformとは Terraformは、HashiCorp社によって提供され、環境構築の一連の手順をスクリプトで記述できる 所謂Infrastructure as codeを実現するためのツール群である。   TerraformはAWSに特化したツールというわけではなく、 Azure、Google Cloud、OpenStackやVMware vSphereの環境構築にも活用できる。   最初、AWSの環境構築自動化をCloudFormationで実現すべくJSONをしこしこ書いていたわけだが、 クライアントの気まぐれにより、Terraformで書き換えることになった。 まあ、これも1つの勉強か。   Terraformのインストール   インストールというか、ダウンロードして解凍してパス上に配置するだけである。 1、Amazon Linuxを起動してログイン 2、terraformをダウンロードして解凍 $mkdir terraform $cd terraform $wget https://releases.hashicorp.com/terraform/0.6.15/terraform_0.6.15_linux_amd64.zip $unzip terraform_0.6.15_linux_amd64.zip 3、/usr/binの下に配置 $cd .. $cp terraform /usr/bin/ 4、環境変数の設定。PATHと、AWSのアクセスキー、シークレットキー、デフォルトリージョンを設定 $cd $vim .bash_profile .bash_profileの内容 [text highlight=”10,14-16″] # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/bin/terraform export PATH export AWS_ACCESS_KEY_ID=”AKXXXXXXXXXXXXXXXX” export AWS_SECRET_ACCESS_KEY=”XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX” export AWS_DEFAULT_REGION=”ap-northeast-1″ [/text] 5、ホームディレクトリに、Terraformのスクリプトを配置するディレクトリを作成する $mkdir tf $cd tf 6、Terraformのスクリプトを作成する(変数編) Terraformのスクリプト処理で共通的に利用する変数は、 variables.tfファイルに記述する。 [text] # # Require User input variable “aws_key_name” {} variable “aws_region” {} variable “aws_vpc_cidr” {} variable “subnet_dmz1_cidr” {} variable “subnet_dmz2_cidr” {} variable “subnet_app1_cidr” {} […]