と思ったら非常にいろいろハマったのでメモ。
環境
- OS X Mountain Lion
- Vagrant 1.3.4
Vagrant のインストール
Vagrant のサイト から最新な 1.3.4 をインストール。ちなみに /usr/bin/vagrant くらいにシンボリックリンクが貼られるので、 rbenv な vagrant は uninstall した。
Fedora 19 を入れる
Vagrantbox.es から最新な Fedora19 を使うことに。$ vagrant box add fodora-19 https://dl.dropboxusercontent.com/u/86066173/fedora-19.boxこれで box がダウンロードされる。
box は直接起動する訳じゃなくて、
$ vagrant upした時にコピーされて起動するみたい。
なので
$ vagrant destroyしても box そのものは消えない。
Puppet で MySQL を入れる
入れようと思ったら大量にハマるなど。以下に導入ログとトラブルシュートなログ類。
Puppet の Install
$ vagrant plugin install puppetくらい。 gem からでも入るっぽいけれど、vagrant な例に習って gem の puppet は uninstall した。
Puppet の設定
Vagrantfile に書かれているやつをコメントアウトする。config.vm.provision :puppet do |puppet|とか。
puppet.manifests_path = "manifests"
puppet.manifest_file = "mysql.pp"
end
mysql.pp とかはマニフェストの名前。何でも良いはず。
ディレクトリ構成は
.みたいな感じになる。
├── Vagrantfile
└── manifests
└── mysql.pp
この状態で mysql.pp に設定を書いていく感じ。
Puppet の実行
puppet で環境を構築するのは provision すると良いみたい。up の時に provision も実行するなら
$ vagrant up --provisionしないなら
$ vagrant up --no-provision1.3 系だと up は初回は provision が走って、次回以降は走らないのがデフォらしい。
ちなみに up してる時にも
$ vagrant provisionで provision が実行されて puppet が走る。
エラーログ
ここからエラーログIP アドレスが取得できないっぽい
$ vagrant provisionした時に
Running Puppet with mysql.pp...とか怒られる。
Could not retrieve macaddress: undefined method `each_line' for nil:NilClass
Could not retrieve macaddress: undefined method `each_line' for nil:NilClass
Could not retrieve macaddress: undefined method `each_line' for nil:NilClass
Could not retrieve ipaddress6: undefined method `scan' for nil:NilClass
Could not retrieve netmask: undefined method `split' for nil:NilClass
Warning: Could not retrieve fact ipaddress
IP が見えてないっぽい。
fedora19 には最初から ifconfig とかが入ってないらしいので
$ yum install net-toolsしておく必要があるみたい。
この辺も manifest に書いておくと怒られない。
ちなみにこう怒られたのは yum update の時。
hostname と DNS 周りが変らしい
warning: Could not retrieve fact fqdnとも言われた。
この辺は hostname が fqdn に対応してない(のかな?)っぽいのと、dnsな設定が変らしい。
どうやら VM の domain が適切に設定できてないとダメらしい。
/etc/resolve.conf に domain な記述が無いといけないらしい。
んで、 resolve.conf は vagrant が勝手に設定するらしいので、実行するホストの環境によっては設定されなかったりするっぽい。
generated by NetworkManager とか書かれてたので vagrant 側じゃなくて fedora 側が勝手に作ってるのかもしれないけれど。
無理矢理 /etc/hostname に hostname を書いて、 /etc/resolve.conf に domain を書くと出ない。
ちなみに hostname と dnsdomainname コマンドがおかしい時に出てくるエラーらしい。
あと vagrant ssh して
$ factor | grep fqdnすると、エラーが出る方には fqdn な値が無かったり。
この辺設定できるとエラーは出ないのかもしれない。
そもそも MySQL が Fedora19 に無い
$ yum install mysqlとかがダメで
$ yum intall community-mysqlとからしい。
しかも接続してみると MySQL じゃなくて MariaDB とか出てくる。
調べてみると fedora19 から MySQL の default が MariaDB だとか。
Vagrantfile と manifests/mysql.pp
書き方はググりながらだったので省略するとして、最終的にできた Vagrantfile と manifest はこんな感じ。mysql をインストール + 有効化とパッケージのアップデートをしてくれます。
あと hostname の設定。
最終的に
$ vagrant up
$ vagrant provisionで起動と環境構築をしてくれるようになりました。
便利だけれど実行できるようになるまで大分ハマった。
この辺ささっとできると良いのかなーうーん。
0 件のコメント:
コメントを投稿