using putty alternative Tera Term

最近 Tera Term の代わりに putty を使うようにした。
あんまり何がそんなに便利なのかよくわかってないんだけど、世界的に見ると putty 使いが圧倒的なシェアを誇っているみたいなので、 putty を積極的に使っていきたい。

Vagrant の使い方まとめ

Vagrant は仮想マシンを実験できる素晴らしいツールです。
毎度毎度やりたいことを自分で掘り起こすのにつらみを感じてきたのでまとめました。
随時まとめていきます。
最近は Otto も出てきたのでそっちに移行したいですが。

ポートフォワーディングの設定

こんな感じでやると http://localhost:8888/ で 8080 でリッスンする仮想マシンにアクセスできます。

  config.vm.network "forwarded_port", guest: 8080, host: 8888

ブリッジしたい

DHCP

  config.vm.network "public_network"

IP 指定したい

サブネットごえするばあいは VM の中にデフォルトゲートウェイを指定してあげる必要があります。

  config.vm.network "public_network", ip: "192.168.0.17"

NIC を指定する

この場合上だけだと vagrant up するたびにブリッジする NIC を聞かれてうざいので、NIC を指定します。

  config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"

Vagrant box を指定する

僕はよく puppetlabs で提供されている
前までは chef で提供されているものを使ってたんですが、なくなりました。
ATLAS で探してみましょう。

puppetlabs | Atlas by HashiCorp

  config.vm.box = "puppetlabs/centos-7.2-64-nocm"

ATLAS ができる前は野良 Vagrant box を以下から拾ってきたり、セキュリティが気になる場合は Packer で自分で作る必要がありました。

A list of base boxes for Vagrant – Vagrantbox.es

スペックを指定したい(VirtualBox)

デフォルトだと 1 CPU の 2 GB の割当なので、コンピューティングリソースをもう少し増強したい場合は以下の様な指定をする。

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

複数の VM を立ち上げる

何も 1 台構成だけが脳じゃありません。
こんな 3 台構成もできる。

  config.vm.define "web" do |instance|
    instance.vm.box = "puppetlabs/centos-7.2-64-nocm"
    instance.vm.network :private_network, ip: "192.168.33.10"
  end

  config.vm.define "ap" do |instance|
    instance.vm.box = "puppetlabs/centos-7.2-64-nocm"
    instance.vm.network :private_network, ip: "192.168.33.11"
  end

  config.vm.define "db" do |instance|
    instance.vm.box = "puppetlabs/centos-7.2-64-nocm"
    instance.vm.network :private_network, ip: "192.168.33.12"
  end

Windows ユーザーが喜ぶ vagrant ssh の代わりに Tera Term を手軽に使える vagrant-teraterm プラグイン

私も 1 行だけコミットした vagrant-teraterm プラグインというのがあります。
vagrant ssh でもできるが、コマンドプロンプト内で Linux に入るという行為自体がキモい。
これ知る前は毎回 SSH のフォワーディングポート調べて Tera Term 手動で立ち上げて SSH してたんですが、
これで毎回フィンガープリントを確認される不自由から開放されます。
でも、正直 Mac のほうが使いやすいですよ。

vagrant plugin install vagrant-teraterm
vagrant up
vagrant teraterm

シェルプロビジョニングをする

Ansible や Chef を使うほどではないが、毎回立ち上げるたびにコマンドコチコチ入力するのも面倒だというときに一番強力なのがシェルプロビジョニングです。

  config.vm.provision "shell", inline: <<-SHELL
    sudo yum -y install epel-release
    sudo yum -y install --eneblerepo=epel nginx
  SHELL

ある程度出来上がった Vagrant の実行イメージを出力する

これはけっこう強力で、例えばLAN内のローカルミラーを参照するように設定したり、
例えば毎回 vagrant up するたびに Nginx や MySQL をインストールするのは正直だるいって時には vagrant package サブコマンドを使う。
Packer でがんばってやらなくてもいいのでお手軽でおススメ。

ある程度まとまった開発環境ができあがったらそれを他の開発者に配布するという使い方もできる。

vagrant package
rename package.box centos-7.2-x86_64-mysql-5.6.box
vagrant box add centos-7.2-x86_64-mysql-5.6 centos-7.2-x86_64-mysql-5.6.box

add し終わったら Vagrantfile の box 名指定するところにそれを指定して vagrant up すれば特定の役割を持った仮想マシンがいろんなミドルウェアを入れるオーバーヘッドがなくなるので楽ちんなのだ。

プライベートな Vagrant box Registry がほしいなあ。。。

参考リンク

  1. Documentation - Vagrant by HashiCorp
  2. 「hbstudy#60 SerfとConsulでシステム運用を楽しくしよう!」に行ってきました&Serf試してみました - 戦場のプログラマー
  3. RedHat 系 Linux のホスト名を設定する - 戦場のプログラマー
  4. vagrant teraterm が便利すぎてしょうがない件 - 戦場のプログラマー
  5. vagrant-digitalocean provider の簡単な使い方 - 戦場のプログラマー
  6. vagrant-digitalocean で vagrant up すると NoMethodError となる件 - 戦場のプログラマー
  7. Macでvagrant-omnibusプラグインのインストール中にnokogiriのインストールでコケるというお話 - 戦場のプログラマー