AWS Elastic BeanstalkにデプロイしたWARファイルの中身をsshで取り出す
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マウスが起動時に認識されない
原因不明。同上。
日本語キーボードなのに英字配列になる
キーボードのアイコンの[設定]から、[入力メソッド]を"キーボード-日本語"を一番上にして、"キーボード-英語(US)"を消したら解決。
13.10だとすんなりruby 2.1.1インストールできたのに何故か失敗するようになった。
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
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を抜けるようにします。
具体的には以下の通り。
- "Disk Management" (ディスク管理) > "RAID Management" (RAID管理)ページにて、拡張するドライブボリュームを選択し、"Expand Capacity" (容量を拡張)をクリックします。
- 交換したい(=壊れている)"ハードドライブに対し"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をリスタートしたところ、リビルド開始しました。