Skip to main content

ログ取得ツール

Category: GNU/Linux

chefなんて最初からいらんかったんや!

結局のところ、最近はchef使ってないですね。Vagrantの場合はshell providerで過ごしてます。Vagrantfileの中にサクッと書けるし、共通で使い続けるもの(yumのミラーサイトに社内のURLを設定したり、プロキシの設定とかtimezoneの設定とか)はgistにシェルスクリプトを書いといてそのURLを書いたり、たまには共有フォルダの中にスクリプトを置いたりもする。

chefを使うと設定項目が複数のファイルに分かれがちになるし、設定ファイルがVagrantfileがあるディレクトリと離れて、下の階層に追いやられてしまう。オーバースペックゆえに単純なことが把握できなくなるというデメリットをどうしても見過ごせなかったんだ。

今のところ実マシンの管理者をやってない単なる利用者なので、という事情もある。Vagrantで操作する実験用のテンポラリVMしか管理する必要がないのよね。これなら毎日帰るときにdestroyすりゃいいので気が楽。

initctl

upstartってUbuntuで使われているものなので、良さそうだけど縁がないと思っていたが、CentOSとかでも普通に使えるんですね。最近気づきました。 initctlコマンドはそれなりに使いやすいし、設定ファイルも分かりやすい。sysvinitは私は慣れてるけど不格好だし、systemdはいまいち動作をつかめる気がしない。 これは良いことを知ったぞ。 Macはlaunchdというまた別のものなんですね…しかもcronの仕事もこいつにさせてるのか。

Vagrant + AWSメモ

vagrantのawsプラグインを今更ながら使う。Macになって、VagrantもWindowsから使ってた頃よりも使いやすくなったので。普段はVirtualBoxなんですが、台数を稼ぎたい時なんかには必要だろうなぁと。自宅で遊ぶのに台数が必要か? と言われると困るが。

  • security group(ファイアウォール)を正しく設定しないとsshで入れない。Vagrantfileでもそれを指定する。
  • Amazon Linuxの場合はユーザ名がec2-user、RHELはroot、Ubuntuはubuntuと選択するOSによって異なる。これもVagrantfileに書く。
  • sshの秘密鍵(keypair)をVagrantfileと同じディレクトリに置くと、rsyncでVMの/vagrantに転送されてしまう。Vagrantfileは転送されない。
    • だがvagrant rsyncでどちら方向にもコピーされてないような気が…
  • Amazon Linuxのsudoersはrequirettyが有効なので/vagrantを作れなくてエラーになる。
    • requirettyの行をコメントアウトしてvagrant provisionでOK
  • 警告の消し方が分からない

警告というのは、これ。

vagrantとchefを使うときの注意点 (1)

ふつう/tmpはtmpfsにしたいと思ってこういうrecipeを書くじゃないですかーやだなーもう。

mount "/tmp" do
  pass 0
  fstype "tmpfs"
  device "none"
  action [:mount, :enable]
end

それをVagrantで操作しているVMに適用するような操作をすると、cookbookが見つからないとかいうエラーが出るじゃないですかー。

Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'cent64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Fixed port collision for 22 => 2222. Now on port 2200.
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2200 (adapter 1)
[default] Running 'pre-boot' VM customizations...
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
DL is deprecated, please use Fiddle
[default] Machine booted and ready!
[default] The guest additions on this VM do not match the installed version of
VirtualBox! In most cases this is fine, but in rare cases it can
prevent things such as shared folders from working properly. If you see
shared folder errors, please make sure the guest additions within the
virtual machine match the version of VirtualBox you have installed on
your host and reload your VM.

Guest Additions Version: 4.2.16
VirtualBox Version: 4.3
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /tmp/vagrant-cache
[default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[default] Running provisioner: chef_solo...
[default] Configuring cache buckets...
Generating chef JSON and uploading...
Running chef-solo...
[2014-01-24T14:08:47+00:00] INFO: Forking chef instance to converge...
[2014-01-24T14:08:47+00:00] INFO: *** Chef 11.6.0 ***
[2014-01-24T14:08:48+00:00] INFO: Setting the run_list to ["recipe[base::tmpfs]", "recipe[base::ntp]", "recipe[base::timezone]", "recipe[base::epel]"] from JSON
[2014-01-24T14:08:48+00:00] INFO: Run List is [recipe[base::tmpfs], recipe[base::ntp], recipe[base::timezone], recipe[base::epel]]
[2014-01-24T14:08:48+00:00] INFO: Run List expands to [base::tmpfs, base::ntp, base::timezone, base::epel]
[2014-01-24T14:08:48+00:00] INFO: Starting Chef Run for localhost
[2014-01-24T14:08:48+00:00] INFO: Running start handlers
[2014-01-24T14:08:48+00:00] INFO: Start handlers complete.
[2014-01-24T14:08:48+00:00] WARN: Cloning resource attributes for service[ntpdate] from prior resource (CHEF-3694)
[2014-01-24T14:08:48+00:00] WARN: Previous service[ntpdate]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/base/recipes/ntp.rb:21:in `block in from_file'
[2014-01-24T14:08:48+00:00] WARN: Current  service[ntpdate]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/base/recipes/ntp.rb:27:in `block in from_file'
[2014-01-24T14:08:48+00:00] WARN: Cloning resource attributes for service[ntpd] from prior resource (CHEF-3694)
[2014-01-24T14:08:48+00:00] WARN: Previous service[ntpd]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/base/recipes/ntp.rb:21:in `block in from_file'
[2014-01-24T14:08:48+00:00] WARN: Current  service[ntpd]: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/base/recipes/ntp.rb:27:in `block in from_file'
[2014-01-24T14:08:48+00:00] WARN: Cloning resource attributes for execute[rpmkey] from prior resource (CHEF-3694)
[2014-01-24T14:08:49+00:00] INFO: mount[/tmp] mounted
[2014-01-24T14:08:49+00:00] INFO: mount[/tmp] enabled

================================================================================
Error executing action `install` on resource 'yum_package[ntp]'
================================================================================


Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of /usr/bin/python /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/provider/package/yum-dump.py --options --installed-provides ----
STDOUT: [option installonlypkgs] kernel kernel-bigmem installonlypkg(kernel-module) installonlypkg(vm) kernel-enterprise kernel-smp kernel-debug kernel-unsupported kernel-source kernel-devel kernel-PAE kernel-PAE-debug
STDERR: yum-dump Repository Error: Error making cache directory: /var/cache/yum/x86_64/6/base error was: [Errno 2] No such file or directory: '/var/cache/yum/x86_64'
---- End output of /usr/bin/python /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/provider/package/yum-dump.py --options --installed-provides ----
Ran /usr/bin/python /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/provider/package/yum-dump.py --options --installed-provides returned 1


Resource Declaration:
---------------------
[2014-01-24T14:08:50+00:00] INFO: Running queued delayed notifications before re-raising exception
[2014-01-24T14:08:50+00:00] ERROR: Running exception handlers
[2014-01-24T14:08:50+00:00] ERROR: Exception handlers complete
[2014-01-24T14:08:50+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.

Vagrantはcookbookやキャッシュを/tmp以下にマウントするんですよね。だからcookbookの中で/tmpをマウントしてカラにしたらcookbookのファイルが読めなくなってダメなんですな。actionからmountを外せば問題は解消しますが、/tmpがtmpfsになるのはリブート後ということになります。

dockerは普通にCentOSでも使えた

EPELに入ってる。CentOS6系で普通に使える。これは便利。docker自体の使い方はググってもらうと分かりますが、非常に便利です。LXCを苦労して使おうとしていた時代が嘘のようで、なんて快適なんだと思える。

まずはEPELを有効にしておく。

docker-ioをインストールして、、、

  • yum install docker-io
  • sudo service docker start
  • sudo usermod -Ga docker $USER
  • logout/login
  • docker pull busybox
  • docker run -t -i busybox /bin/sh

普通に使える。CoreOSについてくるdockerよりもバージョンは新しく、0.7.0だった。最新は0.7.1なので、docker versionコマンドでplease update dockerが出る。ただCoreOSのdockerは今だと0.6.7なので。CoreOSはvagrant経由で動かすとguest additionsが入らないから共有フォルダを使えない。CentOSでdockerがまともに動くなら、CentOSでやったほうがいいかもしれない。

ミニ知識としては、プロキシ経由でWebアクセスしなければいけない環境でdockerを使う場合、dockerはデーモン側でイメージをダウンロードするので、デーモン(docker -d)を実行するときに環境変数http_proxyを設定しておく必要がある。逆に、ユーザ側のコマンド(runとか)のときはプロキシの設定は必要ない。

Vagrantのboxを作ってみよう…と思ったが例題が難しかったかもしれない

(主に)VirtualBoxのVMを簡単に操作できるVagrant。けっこう便利そうだし、プラグインを書けたり、boxを自前で作れたりする。VirtualBox用のboxのフォーマットはけっこう簡単なようなので、自作できる気がする。

ほかに似た目的を持つものとしてdockerに注目していたりするのだが、dockerはLinux(特にUbuntu)でLXCが必須なので、順番的にはVagrantで遊ぶのが先かなと。実際はdockerもVagrantで作ったVMの上で動かしたりするケースが多い状態、らしい。まだ、LXCをまともに使える環境は限られてますからね。

ともかく、試しに何かやってみよう。

  • ユーザvagrantの~/.ssh/authorized_keysにinsecure public keyを入れておくとsshで入れる
  • VirtualBoxのGuest Additionsを入れると/vagrant以下がホスト側と共有できてうれしい
  • PuppetやChefが入っているとポイントが高いらしい

で、vmdkファイルといくつかのメタデータのファイルを置いたtar.gzファイルを作ればboxになってくれるようだ。ubuntuやFedora、CentOSのboxはけっこうある。

スペックアップ来たよー

ずいぶん前に申し込んでいた、このサーバのスペックアップがついに実施されました。この作業がなんと無料という太っ腹ヤッター。

ストレージ容量が増えたのはいいとして、大きいのはメモリサイズの拡大。今まで何度メモリ不足のエラーに心を痛めたことか。ほとんど遊びがないから、何も試せない感じだったのです。

これからはいろいろ楽しめそうです。

移行完了(?)

低価格なプランを新たに契約して、CentOS6/x86_64に移行しよう、という計画だった。

新サーバを契約して少し経ったところで、バージョンアップとかでメモリやHDDの容量がグレードアップされるという案内が。申請すればいいらしいので申し込んでおいた。いつか勝手にアップグレードされてリブートされるらしい。低価格プランではメモリが足りなくなりがち(ちょっと処理させてみるとログインできなくなる)という状態だったので、元のプランのほうを初期化して生かそうかなどと思っていたところだった。ディスク容量はともかく、メモリが増えるのは実際助かる。ディスク容量を勝手に増やせちゃうのはOS仮想化のOpenVZだからやりやすかったんだと思う。KVMとかの仮想化の場合はゲスト側の作業(e2resizeとかpvresizeとかvgresizeとかlvresize)も必要になる。

全体的に新サーバはdovecot/thunderbirdは調子が悪いままだし、メモリが足りなくなることを恐れてApacheの設定も控え目な状態。あとは、spamassassinのメモリ食いも気になっている。しかしながら、見切り発車に近いが新しいほうに切り替えた。書きたいWordPressのプラグインがあるのだけど、メモリが増えるまではローカルのVMで遊ぶだけになるだろう。

owncloudのインストーラ

owncloudがなかなか良い感じです。インストーラがphpですからね。8KBくらいのsetup-owncloud.phpファイルをWebサーバにアップしてそこにブラウザでアクセスし、ボタンを2回くらい押すとサーバサイドでファイルがダウンロードされ、インストールが完了します。これは楽ちん。

実際このインストール方法はなかなか良いと思いました。Progressが出ないのはちょっと不満かもしれないが、それは今後に期待か。Webアプリのインストーラは今後このやり方が標準になるかもしれない。Wordpressもプラグインのインストールがこれと同じような感じですが、本体のインストール方法もこうなればいいんじゃないかな。

インストール後の操作もWebブラウザだけでできる。ファイルをアップロードしたり管理的なことも。

ストレージ機能も、WebDAVで見たりクライアント側にソフトを入れて同期したり、だいたいのことはできるようだ。CalDAV対応もうれしい。

環境を変えようと思って…

このサーバ(wtnb.mydns.jp)の不満は以下の2点。

  • 32bit…ダサい
  • CentOS5…古い

こう古くては入れたいソフトも入れられないし、入っても古くて機能が足りなかったりする。同じ環境を手元に置きたいとしても、こんな古いVMを持っておくのも馬鹿らしい。

というわけで、CentOS6系の64bitにしようと思った。CentOS6/x86_64なら会社の仕事(小遣い稼ぎに会社勤めもしてるんです)でも主戦場だから何かと都合が良い。

別件で借りているさくらのVPSを流用してもいいのだけど、ここは同じ系列(DTIのServersMan)で新しいVPSを借りてみよう。DTIなら何もしなくてもIPv6アドレスをくれるし、今はちゃんと6系の64bitも選べる。DTIのいいところは最小構成のサーバを選べるところ。つまり、変なソフトがやたらにインストールされてない。VPSに変なGUIや使わないサーバソフトとか入ってると、アンインストールが面倒なんですよね。フルインストールでOpenOfficeやFirefoxまで入ってて何なのこれ、みたいなことがない(詳しくは言えないが、そういうこともある。最初の起動後の数十分を怒涛のyum removeに費やすことになる)。