○EclipseでGradleのSample「JavaQuickStart」をビルドすると失敗

現象

  • EclipseでGradleのSample「JavaQuickStart」をビルドする

→ FAILURE: Build failed with an exception. で失敗。

対策

  • Windowsの場合、C:\Users(yourname).gradle\gradle.properties に以下を記述する
    • org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_20

参考

■VMwarePlayerからVirtualBoxに移行したが「外に出れない」

現象

  • VMwarePlayerで稼動していたVMVirtualBoxに移行後、起動できたが ホストOSとゲストOS間でネットワーク疎通がとれない。

対策

  • (未解決)

参考

△「この仮想マシンを構成済み設定でパワーオンするのに十分な物理メモリがありません。」の対策

現象

  • VMwarePlayer上でそれまで普通に稼働していたCentOSが起動しなくなった

対策

  • KB2995388 をアンインストールしてOS再起動(Windows 8.1

参考

Jenkins on Vagrant

Jenkins で Fabricタスクを実行できるように実験してみたのでポイントをメモ。

参考

Jenkinsのインストール

  • 参考 1. を参考に。

  • 調整

    • Vagrant上だからなのか、iptablesSELinux の制限にはひっかかることはなかった。
    • しかしジョブを作成して実行したみたらビルド履歴に出てくる時刻が変。起動オプションに以下を追加して jenkins を restart。
      • vi /etc/sysconfig/jenkins
      • JENKINS_JAVA_OPTIONS="... -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Tokyo"

Jenkins Slave 追加

  • 手抜きしてすぐさま Slave ノードを追加しようとしたがやっぱり追加が完了せず。

  • 参考 2. を見て Slave にも openjdk と jenkins をインストール。

    • rpm パッケージは vagrant の共有領域に移動して、wget することなく入れた。
  • 無事にスクリプト実行成功。

    • sudo fab -V
      • master から接続するユーザーを vagrant にしたので、jenkins ユーザを wheel グループに追加することなく実行できた。
Started by user anonymous
Building remotely on multi01 in workspace /tmp/workspace/multi01_test
[multi01_test] $ /bin/sh -xe /tmp/hudson7715479142560578804.sh
+ sudo fab -V
Fabric 1.8.1
Paramiko 1.12.1
Finished: SUCCESS

次は

  • Groovy スクリプトが実行できるように、してみたい。(もしかしたらもうできる状態?)

Cygwin で Fabric (1)

Fabric を試したいと思って、vagrant を始め出したり、複数台の仮想マシンを立てたりしたのですが、 なんだか Windows でも Fabric インストールできてリモートホスト扱えるし、Cygwin にもやや苦戦は したもののインストールに成功した。 そこまでにつっかえたポイントがいくつかあったので、残しておこうと思って記録します。

参考

Windows に Fabric

  • 参考 1. の通りに入れてみた。

    • Python 2.7.5 はセットアップ済みだった。
    • setuptools 2.0.2 をインストール。
      • Windows のところにある ez_setup.py を、python.exe と同階層にダウンロードして置き、 python ez_setup.py で実行
    • easy_install で pip をインストール。
      • Scripts ディレクトリに easy_install.exe がなんだかあったので、easy_install pip を試しに実行
    • pip で fabric をインストール。
      • Scripts ディレクトリにこれまた pip.exe があったので、pip install fabric を試しに実行
  • インストールできたみたい。。

    • fab –version
      • Fabric 1.8.1
    • 簡単に作成したサンプル的な fabfile.py も期待動作
      • コンソールの文字化けがちょっと気に入らなかった。。

Cygwin に Fabric

  • 前提

    • CygwinPython 2.7.5 はセットアップ済み。
    • 環境変数 PYTHONPATH 設定済み。カレントディレクトリに関係なく python -V でバージョン確認可能。
  • 参考 2. に書いてある setuptools-0.6c11-py2.7.egg が見つからない

    • wget も 「証明書がない」的に弾かれ。
    • --no-check-certificate をつけてダウンロードには成功したが、sudo sh setuptools-0.6c11-py2.7.egg が完了できず。
      • だいたい、Cygwin に sudo はない。(いらない)
      • sh setuptools-0.6c11-py2.7.egg → 途中で弾かれた。(どこだったかは覚えていない)
  • うろうろと情報をあさっていたら、参考 3. を発見。

    • Cygwin セットアップし直し。。
      • あれ? 64 bit 版って、あったっけ?・・・
      • 迷ったが、根拠なく 32 bit 版 の setup.exe を取得し、実行。
      • 「Select the following packages:」に書いてあった7つを選択し、セットアップ完了を待つ。
    • OS再起動を覚悟したが、要求されなかった。
      • easy_install pip は成功した感じ。
      • pip install fabric で、なにやらコケている。バージョンが確認できないので、何かが失敗と判断。
$ pip install fabric
Requirement already satisfied (use --upgrade to upgrade): fabric in /usr/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): paramiko>=1.10.0 in /usr/lib/python2.7/site-packages (from fabric)
Requirement already satisfied (use --upgrade to upgrade): pycrypto>=2.1,!=2.4 in /usr/lib/python2.7/site-packages (from paramiko>=1.10.0->fabric)
Requirement already satisfied (use --upgrade to upgrade): ecdsa in /usr/lib/python2.7/site-packages (from paramiko>=1.10.0->fabric)
Cleaning up...
$ fab -version
-bash: fab: コマンドが見つかりません
  • ここで情報を確かめる。すると、参考 4. を発見。
    • upgrade を避け、uninstall → install
$ pip uninstall fabric

$ pip uninstall paramiko

$ pip uninstall pycrypto

$ pip uninstall ecdsa


$ pip install ecdsa

$ pip install pycrypto

$ pip install paramiko
Requirement already satisfied (use --upgrade to upgrade): paramiko in /usr/lib/python2.7/site-packages
Cleaning up...

$ pip install fabric
  • バージョン確認。
    • 成功。fabfile.py も期待動作。
$ fab --version
Fabric 1.8.1
Paramiko 1.12.0

おまけ

Windows 7 で Vagrant (2)

目的

  • Vagrant で複数台のVMを立てられるようにする

  • それらで、相互にSSH接続できるようにする

参考

手順

Windows 7 で Vagrant (1) の続き)

  1. Vagrant 1.4.1 にアップグレード

    • 「private_network がうまく動かない」 の壁に当たったので。少しの間 github にあったパッチファイルを適用していたが、1.4.1 が出たと知りそちらを採用することに。
    • アンインストール時、再インストール時の2回再起動を求められる。
  2. Vagrantfile の調整

    • 参考のサイトをほぼまる写し、以下のように定義。

      #Vagrantfile
      VAGRANTFILE_API_VERSION = "2"
      Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      # multi_01 という仮想サーバを定義
      config.vm.define :multi_01 do |multi_01|
      # 中は、以前と同じですが、config.vmとなっていたところがmulti_01.vmとなっています。
      multi_01.vm.box = "centos64_01"
      multi_01.vm.hostname = "multi01"
      multi_01.vm.network :private_network, ip:"192.168.33.11"
      end
      # multi_02 という仮想サーバを定義
      config.vm.define :multi_02 do |multi_02|
      # こちらはconfig.vmがmulti_02.vmに変わります。
      multi_02.vm.box = "centos64_01"
      multi_02.vm.hostname = "multi02"
      multi_02.vm.network :private_network, ip:"192.168.33.12"
      end
      # multi_03 という仮想サーバを定義
      config.vm.define :multi_03 do |multi_03|
      # こちらはconfig.vmがmulti_03.vmに変わります。
      multi_03.vm.box = "centos64_01"
      multi_03.vm.hostname = "multi03"
      multi_03.vm.network :private_network, ip:"192.168.33.13"
      end
      end

  3. vagrant up して、SSH接続してみるが・・・

    • 1台目には接続成功。しかし、2台目に接続しようとしたら「ネットワークで同一のIPアドレスを検出しました」のメッセージが出て、接続できず。

    • パーソナルファイアウォールの設定を調整したら、問題を回避できた。

  4. 相互SSH接続確認

    • 以下手順が順調に成功。

      ssh vagrant@192.168.33.11
      ssh vagrant@192.168.33.12
      ssh vagrant@192.168.33.13

おまけ:おかげで助かりました情報

IntelliJ IDEA Browse Remote Host

#この投稿は IntelliJ IDEA Advent Calendar 2013 の 16日目 の投稿です。
#字ばっかりですみません。。時間切れが近づいてしまったのでまずは上げます。。


自分はふだん、多数のサーバーをお相手にしていて、
IntelliJ IDEA の Browse Remote Host 機能をよく使います。
というわけで、(飛躍)、使い方のメモを、共有してみます。

はじめに

  • 環境情報
    • Windows 7 Professional (以下、「Windows7」) 
    • IntelliJ IDEA 13.0 Ultimate Editon (以下、「IDEA」) 
      • Community Edition にはない機能(だと思っています)

リモートホストの設定

  • メニューから

    • [Tools] > [Deployment] > [Browse Remote Host]
    • [View] > [Tool Window] > [Remote Host]
      • 「Remote Host」ツールウィンドウが起動。「...」ボタンで設定ダイアログを起動できる
    • [Ctrl + Alt + S] で Settings ダイアログを呼び出し、Deployment を検索、でも設定画面に進める
  • Deployment ダイアログで

    • 左上の [+] ボタンを押下すると、「Add Server」ダイアログが出る。

      • Name: 任意のサーバー名を設定。例えば、「192.168.33.10」 や 「Vagrant_test_01」 など。
      • Type: 「SFTP」を選択。(他の選択肢は、自分は使ったことがない)
    • 「192.168.33.10」(設定したサーバー名で表示)の接続設定1(「Connection」タブ)

      • SFTP host: IPアドレスまたはホスト名(IDEA使用環境から名前解決できる前提)を指定。「127.0.0.1」「localhost」とか。
      • Port: ポート番号を指定。通常はデフォルトのまま「22」、場合によっては「2222」とか。
      • User name: SSH接続する、サーバー側のユーザー名を指定。「vagrant」とか。
      • Auth type: 「Password」 または 「Key pair(Open SSH)」 から選択。
        「Password」の場合、 Password: に SSH接続する際のパスワードを指定。「vagrant」とか。
        「Key pair(Open SSH)」の場合、 Private key file: SSH接続する際の private key ファイルのパスを指定。「・・・(事情により略)・・・\insecure_private_key」とか。
      • → 「Test SFTP Connection...」 で接続テスト。 Succesfully のメッセージが出れば OK。
    • 「192.168.33.10」の接続設定2(「Mappings」タブ)

      • Local Path: ローカル側(Windows7)のパスを指定。「C:\test\Vagrant_test_01\html」とか。
      • Deployment path on server '(Name)': リモート側のパスを指定。「/var/www/html」や「/vagrant」とか。
      • → 「Remote Host」ツールウィンドウで、対象のリモートホストを指定したときに、リモート側のパスが特別な色で表示されていれば設定 OK。

リモートホストに、実装してみたコードをアップする

  • 以下の通りのシンプルなコードをアップしてみます。
<html>
  <head>
    <title>タイトル:XXX!</title>
  </head>
  <body>
    Hello Vagrant !
  </body>
</html>
  1. 「Project」ツールウィンドウで、アップする html (ファイル。ディレクトリでも可能)を選択
  2. 右クリック(など)して、コンテキストメニューを呼び出す
  3. [Upload...]を選択
  4. 「Choose Server to Upload to」 ポップアップダイアログで、アップするサーバーを指定 (「192.168.33.10」とか)
    • オーナー・パーミッションに問題なければ、「転送した」旨のメッセージがコンソールウィンドウに表示されます。
    • 残念ながら問題あって Failed to transfer ... で失敗してしまう場合は以下のどちらかの対処になると思います。
      • /tmp などの、パーミッションが 777 のディレクトリに一旦転送して、ターミナル操作で場所を移動。
        ( sudo chown XXX:YYY ; sudo cp -pr ZZZ ; などで。 ターミナル操作も IDEA でできます。)
      • 転送先のディレクトリのパーミッションを 777 にする。
        ( 開発機ならまあこれもありかと。)
  5. ブラウザで表示確認する
    • 「Hello Vagrant !」が表示されれば OK。

リモートホストから現状のソースを取得する

  • アップするのとは逆に、ディレクトリ構成を維持したまま、リモート側にあるコードを取得することもできます。

    1. 「Remote Host」ツールウィンドウで、ダウンロードする ファイル or ディレクトリ を選択
    2. 右クリック(など)して、コンテキストメニューを呼び出す
    3. [Download From here]を選択
      • 接続設定しているユーザーに Read のパーミッションがありさえすれば、「転送した」旨のメッセージがコンソールウィンドウに表示されます。
    4. IDEAで表示確認する
      • 上述の、「シンプルなコード」が表示されれば OK。

おわりに

  • 自分が IDEA を採用する理由

    • 「万能メカ」なところ
      • Java に特化して言えば EclipseNetbeans に劣るのかもしれないですが、PHP でも html でも Javascript でも シェルスクリプト でも、これから身につけていく(はずの) Python でも Groovy でも Ruby でも同様の操作感で使えるのがとてもありがたいと感じています。
    • 「軽い」ところ
      • ほかのブラウザやらアプリやら、さらには VMware Player や Virtual Box (両方同時は経験ないですが)が上がっていても、苦なくオペレーションできています。ExcelやPowerPointが絡むと例外もありますが。。
    • この「Browse Remote Host」機能
      • Webアプリケーションを開発するうえで、コードを書いて開発機にアップして、すぐに動作をチェックすることを All-in-One で実現できるこの機能が、自分はとても気に入っています。他のツールを組み合わせて駆使すれば同様のことを無償でも実現できることがわかっていても、この使用感、覚えると離れられないです。
    • 違った使い方やもっと掘り下げたオペレーション等、寄せていただければ願ったり叶ったりです。
  • 募集

    • [Tool] > [Start SSH Session] でTerminalを起動できますが、これの操作をログに記録する方法・設定があればとても知りたいです。 できれば、ログファイル名を、TeraTerm.ini でできるような、IPや日付を自動で決めてくれるキーワードがあるとパーフェクトです。