AWS Elastic BeanstalkにデプロイしたWARファイルの中身をsshで取り出す

EC2サービスのInstancesから対象のインスタンスを選択してConnectボタンを押せば、SSHの接続方法が表示されるんですが、その前に以下の2つを解決しないとエラーになります。

  • ポート22の開放
  • Key Pairsの登録

ポートの開放

  • インスタンスのデフォルトセキュリティグループを調べる(新規追加してデフォルトにするんでも可)
  • EC2ダッシュボードのSecurity Groupsから、上記のセキュリティグループを選択。
  • InboundにSSH設定を追加。

Key Pairsの登録

EC2ダッシュボードのKey Pairsに公開キーが登録されているかどうか、ではなく、インスタンスのKey Nameに値が設定されているかどうか。

  • Key Pairsがない場合は、EC2ダッシュボードのKey Pairsから、CreateかImportで公開キーを登録。
  • Elastic Beanstalkのダッシュボードを開く
  • ConfigurationタブからInstancesを選択
  • EC2 Key Pairで公開キーを選択してSave

WARファイルの中身

/usr/share/tomcat7/webapps/ROOT 以下に展開されているので、scp -rで取り出す。

Ansible Tutorialで詰まった

なぜかAnsible チュートリアル | Ansible Tutorial in Japaneseでつまったのでメモ。

1. Vagrant を使ってサーバーを準備する

vagrant 1.5.3なので、 vagrant init chef/centos-6.5 で初期化。VagrantfileのBOX名もそれに合わせて修正。
なぜかsshのポートフォワード設定が効いていないっぽい。

2. Ansible をインストールする

pyenv + pipでインストールしようとしたら、 error: could not create '/usr/share/ansible': Permission denied が出てインストール失敗。
sudoだとコマンド見つからないし、面倒だったので、Installation Guide — Ansible Documentationのとおりにインストールしました。
バージョンは1.6.1。

3. Ansible の疎通確認

自分の環境だと、inventory fileにホストが記載されていない場合、"ERROR: Unable to find an inventory file, specify one with -i ?" ではなく "No hosts matched"が出力されました。

で、inventory file指定時はというと

% ansible 192.168.33.12 -i hosts -m ping           
192.168.33.12 | FAILED => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue

で、エラー。

  • vvvvを付けてみたら、どうやら、~/.ssh/の下の秘密鍵を使おうとして"Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)."になっているっぽい。

ユーザーと秘密鍵を両方指定したらちゃんと動きました。

 % ansible 192.168.33.12 -i hosts -m ping -u vagrant --private-key ~/.vagrant.d/insecure_private_key
192.168.33.12 | success >> {
    "changed": false, 
    "ping": "pong"
}

これだと面倒なのでhostsで指定。
Working with Inventory — Ansible Documentationを見た感じ、それぞれansible_ssh_userとansible_ssh_private_key_fileで定義できるようです。
今の所、相対パスでも動いてます。

[test-servers]
192.168.33.12 ansible_ssh_user=vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key

4. 簡単な Playbook を書いて試す

"be sure httpd is running and enabled"タスク実行時にエラー。

 % ansible-playbook -i hosts simple-playbook.yml --check       

PLAY [test-servers] *********************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.33.12]

TASK: [be sure httpd is installed] ******************************************** 
changed: [192.168.33.12]

TASK: [be sure httpd is running and enabled] ********************************** 
failed: [192.168.33.12] => {"failed": true}
msg: cannot find 'service' binary or init script for service,  possible typo in service name?, aborting

FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/home/kamataro/simple-playbook.retry

192.168.33.12              : ok=2    changed=1    unreachable=0    failed=1   

Apache入ってない(dry runなので)からエラーになって当然な気がする。
実際、普通に実行すると正常終了するし、httpdも起動してました。

7.3. ServerSpec を実行してみる

tutorialのとおりだとsshの設定が指定されていないのでエラーに。
Vagrant + Chef Solo + serverspec + Jenkins でサーバー構築を CI - naoyaのはてなダイアリーを参考に、~/serverspec/spec/spec_helper.rb を修正してSSH_CONFIGを読み込むようにする。

14.04インストールしてみた

超適当なので、間違っているところもあるかと。
とりあえずクリーンインストールしたあとの設定の備忘録として。

とりあえずやっとく

$ sudo apt-get install automake bluez-compat curl git-core libreadline6-dev libssl-dev libsqlite3-dev
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(anyenv init -)"' >> ~/.bashrc
$ exec $SHELL -l
$ echo pyenv plenv ndenv rbenv phpenv jenv | xargs -n 1 anyenv install

bluetoothマウスをGUIで認識するけど接続ボタン押せない

原因不明。とりあえず毎回以下を実行。

sudo hidd --connect アドレス

bluetoothマウスが起動時に認識されない

原因不明。同上。

日本語キーボードなのに英字配列になる

キーボードのアイコンの[設定]から、[入力メソッド]を"キーボード-日本語"を一番上にして、"キーボード-英語(US)"を消したら解決。

13.10だとすんなりruby 2.1.1インストールできたのに何故か失敗するようになった。

rbenv installで失敗する問題を解消 on Arch Linux - Qiita のまんま

Vagrantの入れ方

Download - Vagrant by HashiCorpから落とす。
なんか直接開くとエラーになったので、一旦保存して実行したらインストールできた。

JDKの入れ方

Java SE Development Kit 8 - Downloadsからtar.gzをダウンロードして以下を実行で良いっぽい。

$ tar -zxvf jdk-8u5-linux-x64.tar.gz 
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv ./jdk1.8.0_05/ /usr/lib/jvm
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_05/
$ jenv add /usr/lib/jvm/jdk1.8.0_05/
$ jenv global oracle64-1.8.0.05

Chef入れたらknife configureで落ちる

11.12.2はバグあるみたいなので、面倒だし11.10.4を入れる。

VirtualBoxの入れ方

Linux_Downloads – Oracle VM VirtualBoxのまま。
ただしtrustyのURLが無かったので、とりあえずsaucy用のだけsource.listに追加。

$ sudo echo 'deb http://download.virtualbox.org/virtualbox/debian saucy contrib' >> /etc/apt/sources.list
$ wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install virtualbox-4.3

ほとんどの現場はこれでなんとかなるんじゃないか的な、SAStruts用S2JUnit4設定

3年ぶりくらいにS2JUnit4を使ったら思ったより時間取られたので、いまさら需要あるか知らないけどまとめ。
https://gist.github.com/okamatake/5706238

  • 初期化中に落ちる原因がMessageResourcesUtilにある場合は、servletContextにS2PropertyMessageResourcesをセット。
  • Actionクラスの初期化でModuleConfigが原因で落ちる場合は、servletContextにS2ModuleConfigをセット。
  • javaee5.diconの代わりにapp.diconをインクルード

「はじめる!Cucumber」をRails3で試してみる

2.1〜2.2章あたり環境構築の内容の備忘録。
Ubuntu 13 64bitをVirtualBoxにインストールして、とりあえずそこで試してみる。

Ubuntuの設定

Ubuntuの日本語環境 | Ubuntu Japanese Teamのとおり設定。
あと、Ubuntuは.profileがあるせいで.bash_profileを読まないっぽいので、.bashrcから読みこむように修正。

$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ wget https://www.ubuntulinux.jp/sources.list.d/raring.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt-get update
$ sudo apt-get upgrade
$ echo ". $HOME/.bash_profile" >> ~/.bashrc

プロジェクトの作成

$ sudo apt-get install curl git-core
$ curl -L https://get.rvm.io | bash -s stable --autolibs=enabled
$ rvm install 1.9
$ gem install rails
$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh
$ source ~/.nvm/nvm.sh
$ nvm install v0.10
$ rails new cuke-handson
$ cd cuke-handson

Gemfileに以下を追加

group :test do
  gem 'database_cleaner'
  gem 'rspec-rails'
  gem 'capybara'
  gem 'cucumber-rails'
  gem 'cucumber-rails-training-wheels'
end
$ bundle install --path vendor/bundle
$ rails generate cucumber:install ja --capybara --rspec
      create  config/cucumber.yml
      create  script/cucumber
       chmod  script/cucumber
      create  features/step_definitions
      create  features/support
      create  features/support/env.rb
       exist  lib/tasks
      create  lib/tasks/cucumber.rake
        gsub  config/database.yml
        gsub  config/database.yml
       force  config/database.yml
$ rails generate cucumber_rails_training_wheels:install ja
       exist  features/step_definitions
      create  features/step_definitions/web_steps.rb
       exist  features/support
      create  features/support/paths.rb
      create  features/support/selectors.rb
$ rake db:migrate
$ rake cucumber
/home/kamataro/.rvm/rubies/ruby-1.9.3-p429/bin/ruby -S bundle exec cucumber  --profile default
Using the default profile...
0 scenarios
0 steps
0m0.000s

ネットプリントで決算書を印刷する場合の印刷マージン

青色申告決算書をネットプリントで印刷する場合、[その他設定] - [印刷範囲]で [余白をつける]を選択すること。
やらないとフリガナと作成日時が切れる。
B表はどっちでも問題なし。


毎年忘れるけど、UIというか名前も悪い気がする


あと、PDFは提出用・控え・台紙で小まめに分割すること。(DL時のチェックボックス指定で可能)
特に台紙はサイズが違うので、分けないとネットプリントにアップロードした後エラーになる。
これも毎年忘れるけど、その都度修正するのが手間なので、一応メモ。

HDD交換

SMARTの定期テストで以下のようなエラーメッセージが飛んできたので、HDDを交換してみました。

 [HDD SMART] HDD 1 Full Test result: Completed: read failure.

交換手順を探すのに手こずったので、備忘録としてまとめておきます。

現状

  • TS-639 ProなのでSATA3は非対応。今回調べたらPro IIはSATA3に対応してたので、もうちょっと待てば良かった…。
  • HDDはWDのEARS(SATA2)を使っていたものの、型番落ちしていて店頭では見つからなかったので、EARX(SATA3)を購入。
  • RAID6で構成中。
  • HDD1が壊れたので、HDD1を交換

手順

0. 万が一のために、バックアップが必要なものはバックアップしとく。

1. 抜きたいHDDを止める
http://docs.qnap.com/nas/jp/index.html?raid_management.htmを参考にHDDを抜けるようにします。
具体的には以下の通り。

  1. "Disk Management" (ディスク管理) > "RAID Management" (RAID管理)ページにて、拡張するドライブボリュームを選択し、"Expand Capacity" (容量を拡張)をクリックします。
  2. 交換したい(=壊れている)"ハードドライブに対し"Change" (変更)をクリックします。 指示に従い続行します。"

2. HDDを抜く
ビープ音が2回します。この時点でHDDは3台ですが、縮退運転されます。
ログには以下のように出力されるはず。

[RAID6 Disk Volume: Drive 1 2 3 4] RAID device in degraded mode.
[RAID6 Disk Volume: Drive 1 2 3 4] Drive 1 removed.
Drive 1 plugged out.

3. 新しいHDDを差す。
ちゃんと、ディスクの上に緑色のLEDが点灯するまで差し込む事。

4. NASをリスタートする。
http://docs.qnap.com/nas/jp/index.html?raid_management.htmの記述どおりならこの時点でリビルドされるはずなんですが、一向に"Drive 1 plugged out."が消えないので、NASをリスタートしたところ、リビルド開始しました。