Windows8.1 + Vagrant 1.6.5 + Virtualbox 4.3.18 は動かない

タイトルの通り。

chocolateyvagrantvirtualbox インストールして、vagrant up ってやっても起動しない。

$ vagrant up

The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'starting, running'. The machine is in the
'poweroff' state. Please verify everything is configured
properly and try again.

If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run `vagrant up` while the
VirtualBox GUI is open.

ググれば色々出てくる。再インストールしろ、とかバージョン落とせとか。 結果的には後者が正解でした。

【解決済】Windwos7でVirtualboxとVagrantで仮想マシンが起動できずハマった件 - 終電23時15分って早くね?

を参考にさせていただき、VirtualBox 4.3.16 まで落としたのですが、状況変わらず。 途方にくれていたところ、

VirtualBox kernal error in Windows 10 trying to run Vagrant - Super User

ってのを発見。

I'm trying to run Vagrant 1.6.5 on VirtualBox 4.3.16 for Windows 10 64bit.

でもダメなのかーと思い、下を見ると

Try to install VirtualBox 4.3.12 (older version). That works just fine for me.

だって。VirtualBox 4.3.12 までバージョン落とすと、無事起動出来ました。原因は何なんだろう。

Vagrant で Windows に Postgres on CentOS 環境を構築

PostgreSQL Deep Dive: VagrantでPostgreSQL 9.3の動く仮想サーバを自動構築してみる

をベースにもう少し設定したので、忘備録として。

事前準備

コンソール

Windows の標準コマンドプロンプトだと色々ツライ。個人的に今は cmder を使用中。

cmder | Console Emulator

仮想環境

おなじみ virtualbox

Oracle VM VirtualBox

Vagrant のインストール

Download Vagrant - Vagrant から Windows インストーラをダウンロードしてインスコ

λ vagrant -v
Vagrant 1.6.2

とパス通ってることを確認。

Vagrant box を追加

A list of base boxes for Vagrant - Vagrantbox.es からベースとなる box を選択。

λ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box

Vagrantfile を作成

λ mkdir c:\postgres93
λ cd c:\postgres93
λ vagrant init

Vagrantfile を編集

# 利用する box の名前
config.vm.box = "centos64"
# プロビジョニングに使用するシェル
config.vm.provision :shell, :path => "provision_postgresql93.sh"
# Windows 側からアクセスする IP
config.vm.network "private_network", ip: "192.168.33.10"

と、編集(コメントを外す)しておきます。

プロビジョニングシェルを用意

以下のファイルを Vagrantfile を同じディレクトリに用意しておきます。

# Yumレポジトリを登録
sudo rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm

# RPMをインストール
sudo yum install -y postgresql93 postgresql93-server postgresql93-contrib postgresql93-libs

# initdbコマンドでデータベースクラスタを初期化
sudo -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/9.3/data --no-locale -E utf-8 -k

# サービスを自動起動するように設定
sudo /sbin/chkconfig postgresql-9.3 on

# サービスを起動
sudo /sbin/service postgresql-9.3 start

# postgresql.conf の設定
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /var/lib/pgsql/9.3/data/postgresql.conf
sudo sed -i "s/#port = 5432/port = 5432/"                               /var/lib/pgsql/9.3/data/postgresql.conf
sudo sed -i "s/timezone = 'UTC'/timezone = 'Asia/Tokyo'/"               /var/lib/pgsql/9.3/data/postgresql.conf

# pg_hba.conf の設定
echo 'host    all             all             0.0.0.0/0               trust' | sudo tee -a /var/lib/pgsql/9.3/data/pg_hba.conf

# 再起動
sudo /sbin/service postgresql-9.3 restart

# F/W の設定
sudo perl -pi -e 's/--dport 22 -j ACCEPT/--dport 22 -j ACCEPT\n-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT/' /etc/sysconfig/iptables
sudo /etc/rc.d/init.d/iptables restart

# MAC アドレスマッピングを無効化
sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

環境を作成する

λ vagrant up

で、実際に box から仮想環境起動、ポスグレインストールし、あとは

λ vagrant ssh

で中に入って、 psql でデータベース作ればおk。ホスト Windows 側から pgadmin とかで 192.168.33.10:5432 に繋いで確認する。

更に

λ vagrant plugin install sahara
λ vagrant sandbox on

と、プラグイン sahara を入れておくと、いつでも

λ vagrant sandbox rollback

で戻れるから便利です。

Postgres でユーザマップの情報を変更する

外部データラッパー使ってて、接続ユーザのパスワードを設定し忘れた。

公式ドキュメントの例には

--サーバfooのユーザマップbobのパスワードを変更します。
ALTER USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'public');

って書いてあるけど、嘘じゃねーか。

ERROR: option "bob" provided more than once Error

ERROR: option "bob" provided more than once SQL state: 42710

本当は

--サーバfooのユーザマップbobのパスワードを"追加"
ALTER USER MAPPING FOR bob SERVER foo OPTIONS (add password 'public');

--サーバfooのユーザマップbobのパスワードを"変更"
ALTER USER MAPPING FOR bob SERVER foo OPTIONS (set password 'public');

よく読みます、ごめんなさい。

SourceTree でリモートブランチをリフレッシュする方法

Git 上ではマージしたブランチがいつまでも見えているのが嫌だなーと思っていたら↓。

How can I remote prune origin in SourceTree? - Atlassian Answers

ツールバーの Fetch ボタンを押して、'Prune tracking branches no longer on the remote(s)'ってオプションをつけて実行すると綺麗になりました。

Remotes の右クリックから出てくる Fetch では出ないから、最初分からなかったよー。。

NewRelic で監視アカウントを変更した場合の設定変更箇所について

あまりないケースだと思いますがー。

既存アカウントで監視していたサーバーを、新規アカウントでの監視に変更したい時。監視対象サーバーに仕込んだエージェントの情報の送り先を変更する方法です。

エージェントは、情報の送り先を LicenseKey で管理しています。 https://rpm.newrelic.com/accounts/XXXXXX/applications の XXXXXX の部分。

エージェントダウンロード時に表示されてたやつです。 この LicenseKey を新しく作ったアカウントの LicenseKey に変更します。

私の監視対象は WindowsServer だったので、以下のページを参照しました。

.NET agent configuration

変更箇所

%ALLUSERSPROFILE%\New Relic.NET Agent の下にある newrelic.config 内で licenseKey 属性を編集します。

以後新しく作ったアカウントで情報見れるようになりました。

Jenkins on Windows の時に、net use を使うとエラーが発生する

Jenkins のジョブで UNC パスを扱いたくて、 net use で接続しようとするとエラーとなる現象に遭遇。

指定されたログオンセッションは存在しません。そのセッションは既に終了している可能性があります。

というエラーメッセージ。色々調べたけど、結論はここにありました。

LocalSystem ユーザだと net use が使えない?そんなことはない - pudding - diary(2012-11-24)

Jenkins をサービス登録して起動していると、 LocalSystem で起動されるのでエラーとなっていたようです。

試しに

  • サービスじゃなくて jenkins.bat で起動する
  • サービスの実行ユーザーをログインユーザーなどに変更する

などしてみると確かに問題なく動きました。

いちいち起動するのは面倒、デフォルトの設定を出来るだけ崩したくない、というそれぞれの理由でこの2つの対応は却下。 上記参考サイトの通り、ユーザー名をフルパスで指定するようにプログラムを改修して乗り切りました。

PowelShell で UNC パスのフォルダをプログレスバー付きでコピーする

PowelShell で UNC パスのフォルダを扱う記事が意外となかったので、色々調べました。 まぁ結局 PowelShell に限った話しではなくて、ただの Windows バッチと同じだったりするのですが。。。

psake の形式になっていますけど、自分のメモとして投下。