2014年5月10日土曜日

Vagrant1.6のGlobalStatus and Controlが地味に便利だった話

このエントリーをはてなブックマークに追加 はてなブックマーク - Vagrant1.6のGlobalStatus and Controlが地味に便利だった話

Vagrant1.6の大きな変更の一つ、GlobalStaus and Controlが地味に便利だったのでメモ。

この機能を使うと

  • Vagnratで管理しているVMの一覧とその状態などが確認出来る
  • いちいちVagrantfileのあるディレクトリに移動しなくてもVMの操作が可能。(起動、中断、SSH接続など)

という事が出来ます。

なお、公式のドキュメントは こちら参照のこと。

準備

Vagrant1.6をまだインストールしていない人はインストール(アップグレード)しましょう。

$vagrant -v
Vagrant 1.6.1

なお、アップグレードの場合のみだと思われますが、私の環境ではvagrant global-statusコマンドを初回実行時に以下のような事を言われました。

Vagrant is upgrading some internal state for the latest version. Please do not quit Vagrant at this time. While upgrading, Vagrant will need to copy all your boxes, so it will use a considerable amount of disk space. After it is done upgrading, the temporary disk space will be freed.

Press ctrl-c now to exit if you want to remove some boxes or free up some disk space.

Press any other key to continue.

vagrantのアップグレードで一時的にBoxのコピーが必要だからその間Vagrantを止めないでね、もし、ディスクスペースが少ない場合にはctrl-cで中断してBox削除してね、問題なければそれ以外のコマンド押してね、という感じっぽいです。(適当)

よっぽどディスクが逼迫していなければEnterキー押してしまって良い思います。

コマンド実行してみる

早速使ってみます。最初に書いたように実行はどこのディレクトリでもOKです。

$vagrant globa-status
id       name    provider   state    directory                              
----------------------------------------------------------------------------
4d3ea23  default virtualbox poweroff /Users/toshihirock/vagrant/ubuntu12_32 
96c9db6  default virtualbox running  /Users/toshihirock/vagrant/ubuntu14_64 

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

上記のようにVagrantで管理しているVMの一覧とその状態及びVagrantfileの位置などが分かります。

個人的にあれVagrantfileどこだっけ??という事がたまにあるのでVagrantfileの配置されたディレクトリが分かるのが嬉しいです。

今まで無かった情報としてVMごとに一意に決められたIDについても表示がされています。 これを使う事でVagrantfileのある場所に移動しなくても指定VMへの操作が出来ます。

例えばIDが96c9db6となっているVMにSSH接続したい場合には以下のようにします。

$vagrant ssh 96c9db6

公式ドキュメントを見る限り、SSHは勿論、up、destory、suspendなど基本的な操作も可能なようです。

また、こちらは公式には書いてませんでしたが、全てのIDを入力しなくても一意にIDできるまでの入力のみでもコマンド実行が可能なようです。

$vagrant ssh 9

これも覚えておくと地味に便利ですね。

2014年5月1日木曜日

Chefのレシピ管理ツールBerkshelfのversion3のドキュメントを和訳してみた

このエントリーをはてなブックマークに追加 はてなブックマーク - Chefのレシピ管理ツールBerkshelfのversion3のドキュメントを和訳してみた

Chefの管理ツールであるBerkshlefのversion3がやっとでリリースされ、しかもChef-DK(Chef Deploymant Kit)とかいうのSDKにも内包されるようになったようで、せっかくなのでversion3のドキュメントを非公式に和訳してみました。

今回、GithubのREADME.mdに書いてみました。

Github-TranslateBerkshelf

色々良い訳。

  • 本ページはBerkshelf version3のドキュメントを非公式に和訳したものです。
  • 2014年5月1日時点のものを参照したため、今後変更となる箇所がある可能性もあります。
  • 意訳した箇所もあります。
  • 動作確認を行えなかった箇所も多い為、その点はご了承ください。
  • 英語が得意!という訳でもないので、すいません、その点もご了承ください。
  • 記述誤りなどは @toshihirockまでご連絡頂くか、pull requestして頂くなどして頂ければ幸いです。

なお、vagrant berkshelfプラグインですが、私の環境では正しく動きませんでした。。。

vagrant-berkshelfは非推奨になるとのこと

上記記事からも非推奨となるようで、Vagrantと組み合わせて使う場合でも 以前ブログに書いたように使った方が良さそうな気がしました。

2014年4月19日土曜日

Ubuntu64bitでAndroidのadbコマンド実行するとNo such file or directoryとか出る時の対応

このエントリーをはてなブックマークに追加 はてなブックマーク - Ubuntu64bitでAndroidのadbコマンド実行するとNo such file or directoryとか出る時の対応

Ubuntu13.10の64bitでAndroidのadbコマンドを実行するとNo such file or directoryでエラーとなってしまった

$ adt-bundle-linux-x86_64-20140321/sdk/platform-tools/adb 
-bash: adt-bundle-linux-x86_64-20140321/sdk/platform-tools/adb: No such file or directory

調べるとAndroid SDKのページに以下のような記述があり、Linuxの64bitマシンでも32bitアプリが動くような環境にする必要があるらしい。

64-bit distributions must be capable of running 32-bit applications.

こちらのChefのレシピを参考にするとUbuntuのバージョンによってインストールする必要があるものは違うようだが、Ubuntu13.10の場合、lib32stdc++6をインストールすれば動くようになった。

$sudo apt-get install lib32stdc++6
$adt-bundle-linux-x86_64-20140321/sdk/platform-tools/adb version
Android Debug Bridge version 1.0.31

Ubuntu13.04以上の場合にはlib32stdc++6、Ubuntu11.10以上の場合にはlibstdc++6:i386、それ以外の場合にはlib32z1が必要らしいがこちらは未確認。

2014年4月12日土曜日

VagrantでVirtualBoxを利用する場合にVMの設定をVagrantfileで色々変えてみた

このエントリーをはてなブックマークに追加 はてなブックマーク - VagrantでVirtualBoxを利用する場合にVMの設定をVagrantfileで色々変えてみた

VagrantでVirtualBoxを利用する場合にVMの設定をVagrantfileを利用して変更する場合のメモを記載 。

やってみたこと。

  • GUIモードの起動
  • VM名称変更
  • メモリ変更
  • CPU数
  • ホストOSに対してのCPU利用制限率
  • HDDの追加

なお、基本的な記述は公式のこちら を参照の事。

GUIモードにする

Vagrantfileに以下の記述を追記すればGUI用のウィンドウが利用出来る。

config.vm.provider "virtualbox" do |vb|
  vb.gui = true
end

ただし、BOXにGUI用のソフトがインストールされていない場合には別途インストールが必要。

Ubuntuの場合、VagrantをGUIで立ち上げる(Ubuntu)を参考にして実施出来る事を確認。

VMの名称を設定する

デフォルトだとVMの名称はVagrantfileのあるフォルダ名称とタイムスタンプを利用したものになるので、以下で任意に設定可能

config.vm.provider "virtualbox" do |vb|
  vb.name = "my_vm"
end

ちなみに後述するvb.customizeを利用した以下でも設定可能。

config.vm.provider "virtualbox" do |vb|
  vb.customize ["modifyvm", :id, "--name", "my_vm"]
end

その他色々もっと変更したい

上記以外でも色々設定したい場合、Virtualboxの操作をCUIで行えるVBoxManageコマンドをvb.customizeをというような記述で記載する。

VBoxMangeに関する詳細は公式のこちら を参照の事。

例えばVBoxManage modifyvmというコマンドを利用して名称変更する場合には、以下のような記述となる。

config.vm.provider "virtualbox" do |vb|
  vb.customize ["modifyvm", :id,
                "--name", "my_vm"]
end

上記はコマンドラインで

$VBoxManage modifyvm ubuntu64_default_1397309544936_13521 --name my_vm

というのを実行した場合と同義となる。

なお、ubuntu64_default_1397309544936_13521というようなどのVMに対して処理を実行するかをコマンドからは指定する必要があるが、Vagrantfileに記述する場合には:idと記載すればVM名称となるようにしてくれる。

デフォルトで既に記述があるが、メモリを変えたい場合には以下のようにする。

config.vm.provider "virtualbox" do |vb|
  vb.customize ["modifyvm", :id,
                "--memory", "1024"]
end

CPUの数を変えたい場合はこんな感じ。

config.vm.provider "virtualbox" do |vb|
  vb.customize ["modifyvm", :id,
                "--cpus", "2"]
end

ホストマシンのCPUをどれぐらいの利用制限率とするかも以下で変更出来る。

config.vm.provider "virtualbox" do |v|
  vb.customize ["modifyvm", :id,
                "--cpuexecutioncap", "50"]
end

また、こちらを参考に、以下のようにするとHDDの追加も可能だった。

config.vm.provider :virtualbox do |vb|
      file_to_disk = "./tmp/disk.vdi"
      if not File.exist?(file_to_disk) then
        vb.customize ["createhd",
                      "--filename", file_to_disk,
                      "--size", 100 * 1024]
      end
      vb.customize ['storageattach', :id,
                    '--storagectl', 'SATAController',
                    '--port', 1,
                    '--device', 0,
                    '--type', 'hdd',
                    '--medium', file_to_disk]
end

なお、上記のSATACOntrollerという箇所はSATA Controllerとなっている場合もあり、その場合には対応する記述にしないとエラーとなるので注意。

2014年4月2日水曜日

Vagrantを利用して作成したVMからVMへ.ssh/configを設定して簡単にログインする

このエントリーをはてなブックマークに追加 はてなブックマーク - Vagrantを利用して作成したVMからVMへ.ssh/configを設定して簡単にログインする

.ssh/configを利用して

$ssh hoge

みたいなやり方でログイン出来るようにする。

構成

  • Ubuntu12.04 32bit
  • ログインする方(192.168.33.20)、ログインされる方(192.168.33.21)
  • Vagrantにて上記VMを作成し、起動(vagrant up)済み
  • ホスト名はsound
  • ログインするアカウントはvagrantアカウント

ログインする方(vagrantユーザーでログイン)

# 秘密鍵、公開鍵を作成
$ssh-keygen -t rsa
$cd ~/.ssh

# 公開鍵を表示して何かにコピペ
$cat id_rsa.pub

# sshログインの情報設定
$vi config

Host sound
HostName 192.168.33.21
User vagrant
IdentityFile ~/.ssh/id_rsa

ログインされる方(vagrantユーザーでログイン)

# authorized_keysの末尾にid_rsa.pubの内容を追加
$vi ~/.ssh/authorized_keys

この状態でログインする方のVMで

$ssh sound

とするとパスワードなしでログインが可能となる。

参考

.ssh/configで設定すると接続が楽になる方法

2014年3月21日金曜日

JenkinsのGitPluginでコメントが文字化けした時の解消方法

このエントリーをはてなブックマークに追加 はてなブックマーク - JenkinsのGitPluginでコメントが文字化けした時の解消方法

UbuntuにJenkinsをインストールしてGitPluginを入れて連携させた時にコミットコメントが文字化けしたので解消方法をメモ。

原因はJenkinsのファイルエンコーディングがUTF–8になっていないためなので、これを直す。

パッケージインストール(apt-getなど)の場合、/etc/default/jenkinsにJAVA_ARGS=“-Dfile.encoding=utf–8”を追記してJenkinsをリスタートすればOK

$sudo vi /etc/default/jenkins
JAVA_ARGS="-Dfile.encoding=utf-8"
$sudo service jenkins restart

これで直るはず。

warを利用してtomcatで動かしている場合、CATALINA_OPTSにDfile.encoding=utf–8を指定した後に起動すればOK。

Tomcatユーザーで起動している場合、

$vi ~/.bashrc
CATALINA_OPTS="-Dfile.encoding=utf-8"
export CATALINA_OPTS
$source ~/.bashrc

としてtomcatを再起動すれば問題ないはず。

参考

Ubuntu 12.04にJenkinsをインストールしてApacheでポート80で動かす

CATALINA_OPTSの指定

2014年3月19日水曜日

特定のAndroid SDKをCUIでインストールする方法

このエントリーをはてなブックマークに追加 はてなブックマーク - 特定のAndroid SDKをCUIでインストールする方法

AndroidサイトにあるAndroidSDKを落としきても最新のAndroidSDK(Andorid19)のみしかなく、昔のSDKでビルドする必要がある場合、別途ダウンロードが必要である。

GUIであれば簡単だが、XWindowsがないなどの場合にCUIのみで実施する必要があり、その場合のメモ。

また、全てのパッケージをダウンロードするとめちゃくちゃ時間が掛かるので特定の奴だけダウンロードする方法を記載する。

まず、現在利用可能なパッケージは以下のコマンドで確認する。

$android list sdk
Packages available for installation or update: 45
   1- Android SDK Tools, revision 22.6.1
   2- Documentation for Android SDK, API 19, revision 2
   3- SDK Platform Android 4.3, API 18, revision 2
   4- SDK Platform Android 4.2.2, API 17, revision 2
   5- SDK Platform Android 4.1.2, API 16, revision 4
   6- SDK Platform Android 4.0.3, API 15, revision 3
   7- SDK Platform Android 4.0, API 14, revision 3
   8- SDK Platform Android 3.2, API 13, revision 1
   9- SDK Platform Android 3.1, API 12, revision 3
  10- SDK Platform Android 3.0, API 11, revision 2
  11- SDK Platform Android 2.3.3, API 10, revision 2
  12- SDK Platform Android 2.2, API 8, revision 3
  13- SDK Platform Android 2.1, API 7, revision 3
  14- SDK Platform Android 1.6, API 4, revision 3
  15- SDK Platform Android 1.5, API 3, revision 4
  16- Android Wear ARM EABI v7a System Image, Android API 19, revision 1
  17- ARM EABI v7a System Image, Android API 19, revision 2
  18- Intel x86 Atom System Image, Android API 19, revision 2
  19- Google APIs (x86 System Image), Android API 19, revision 2
  20- Google APIs (ARM System Image), Android API 19, revision 3
  21- Google APIs, Android API 18, revision 3
  22- Google APIs, Android API 17, revision 3
  23- Google APIs, Android API 16, revision 3
  24- Google APIs, Android API 15, revision 2
  25- Glass Development Kit Sneak Peek, Android API 15, revision 2
  26- Google APIs, Android API 14, revision 2
  27- Google APIs, Android API 13, revision 1
  28- Google TV Addon, Android API 13, revision 1
  29- Google APIs, Android API 12, revision 1
  30- Google APIs, Android API 11, revision 1
  31- Google APIs, Android API 10, revision 2
  32- Google APIs, Android API 8, revision 2
  33- Google APIs, Android API 7, revision 1
  34- Google APIs, Android API 4, revision 2
  35- Google APIs, Android API 3, revision 3
  36- Android Support Repository, revision 4
  37- Google Analytics App Tracking SDK, revision 3
  38- Google Play services for Froyo, revision 12
  39- Google Play services, revision 15
  40- Google Repository, revision 6
  41- Google Play APK Expansion Library, revision 3
  42- Google Play Billing Library, revision 5
  43- Google Play Licensing Library, revision 2
  44- Google Web Driver, revision 2
  45- Intel x86 Emulator Accelerator (HAXM), revision 3

上記のようにリスト表示されるので、自分のインストールしたいパッケージの番号を確認する。 上記の例だとSDK Platform Android 4.0, API 14, revision 3をインストールしたい場合には7となる。

メモが終わったら、以下のように–filterオプションを付与して、updateを実施することで特定のパッケージのみインストールできる。

$android update sdk --no-ui --filter 7

なお、–filterオプションを指定しないと全てのパッケージをダウンロードするため、かなり時間がかかる。

参考

Updating SDK from command-line

2014/6/9追記

以下のような記述でもインストール可能でした。こちらだとリストを調べなくてもよいのでより便利ですね。

$android update sdk --no-ui --filter android-10