【CentOS】ターミナルに「You have new mail in /var/spool/mail/vagrant」と表示されて鬱陶しい【Vagrant】

centos.png ローカルのVagrant上で作業しているとき、ターミナルで何か処理をするごとに「You have new mail in /var/spool/mail/vagrant」と表示されるようになった。多分ローカルのcrontabがエラーでも吐いているんだろうと思うんだけど、確認出来ないし削除出来ないし鬱陶しい。どうしたもんか。

とにかくメールを見てみる

メールを開くためにはmailコマンドが使えないとダメらしい。あいにく
$ mail
-bash: mail: command not found
とのことだったので、mailコマンドを使うためにmailxというアプリケーションをインストールする。
$ sudo yum install mailx
するとmailコマンドでメールの一覧が見れるようになる。
$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/vagrant": 2452 messages 2452 new
>N  1 (Cron Daemon)         Wed Feb 13 05:00  25/1065  "Cron <vagrant@nobodyp"
N  2 (Cron Daemon)         Tue Feb 19 09:00  25/1065  "Cron <vagrant@nobodyp"
N  3 (Cron Daemon)         Wed Feb 20 01:30  34/1435  "Cron <vagrant@nobodyp"
N  4 (Cron Daemon)         Thu Feb 21 04:18  30/1445  "Cron <vagrant@nobodyp"
N  5 (Cron Daemon)         Tue Feb 26 04:05  30/1445  "Cron <vagrant@nobodyp"
N  6 (Cron Daemon)         Thu Feb 28 04:00  25/1065  "Cron <vagrant@nobodyp"
N  7 (Cron Daemon)         Tue Mar 12 07:30  25/1065  "Cron <vagrant@nobodyp"
N  8 (Cron Daemon)         Tue Mar 19 00:00  25/1056  "Cron <vagrant@nobodyp"
N  9 (Cron Daemon)         Tue Mar 19 03:49  30/1445  "Cron <vagrant@nobodyp"
N 10 (Cron Daemon)         Tue Apr 16 03:03  30/1445  "Cron <vagrant@nobodyp
どうやら全部で2,452通も溜まっているらしい。マジか。一応チェックしたけど、ローカルでテストしてたRSSリーダーの更新エラーだった。今はもう新しい環境の方で構築していてローカルのRSSリーダーは止めているので必要ない。というかそれ以前に、crontabの結果がここに送られてきているのがおかしい。

crontabに宛先を設定

ローカルとは言え一応エラーは受け取りたいので、設定をしておく。
$ crontab -e
最上部に以下を書く。
MAILTO="hoge@gmail.com"
これで結果はここに送られるはず。

メールを一括削除

何通か見てみたけど全部同じっぽかったので、一括削除。 mailコマンドに一括削除ってあるのかなと思ったけど、メールの削除はあっても一括削除はないので、これで削除。
cat /dev/null > /var/spool/mail/vagrant
$ mail
No mail for vagrant
綺麗になった。

参考

Linux や mac で You have new mail in … と表示される | uuutee.log

続きを読む

【メモ】Chefがバージョンアップしてライセンスエラーが出るようになった【#np2020】

「Chef」が100%オープンソースに | OSDN Magazine

設定管理ツール「Chef」を開発する米Chefは4月2日、Chefソフトウェアを完全にオープンソースとして公開することを発表した。ライセンスはApache License 2.0で、商標ポリシーが守られている限りソースコードの使用、配布、収益化に制限を設けないという。  Chefはこれまでコア部分のみがオープンソースとして提供されていたが、今回プロダクトコードのすべてをオープンソースとする。これによりコミュニティの目標とChefの目標を連携させることができ、より良いソフトウェアの構築につながると期待を寄せている。  ライセンスは、Chef Infra、Chef InSpec、Chef Habitatと一貫性のあるApache License 2を採用、商標ポリシーが守られている限り、ソースコードの使用、配布、収益化に制限を設けないとしている。今後、Chefチームが生成するソフトウェアはすべてオープンなリポジトリに入り、ロードマップなどの製品開発プロセスについてもオープンにしていくという。

Chefがオープンソースになった影響なのか、ver.15からライセンスへの同意を設定ファイルに含めないといけなくなったらしく、そのままではエラーが出て動かない。
==> default: Chef Infra Client cannot execute without accepting the license Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete.
ドキュメントを読むとvagrantではこう追加せよとあったのでやってみたんだけど……

Accepting the Chef License — Chef Docs

Vagrant This license acceptance can be done via the arguments API:

config.vm.provision "chef_zero" do |chef|
chef.arguments = "--chef-license accept"
end
怒られた。
==> default: /opt/chef/embedded/lib/ruby/gems/2.6.0/gems/mixlib-cli-2.0.3/lib/mixlib/cli.rb:230:in `parse_options’: invalid option: –chef-license (OptionParser::InvalidOption)
「–chef-license」っていうオプションなんか知らねーって言われてるみたい。多分、何かをアップデートしたら動くようになるんだろうなと思いつつ、面倒くさかったのでドキュメントにあったもうひとつの方法「Chefのバージョンを固定する」を試す。
config.vm.provision "chef_zero" do |chef|
chef.version = "14.12.3"
end
無事、vagrant起動。初めからこうしておけばよかったんや…… とはいえ、バージョンアップしないというのもアレなので、そのうち何かしたいと思います。どうしたらいいかわかんないけど。誰か教えてください。

続きを読む

【メモ】Vagrant上のAdminerで「不正なCSRFトークン。再送信してください」エラー

adminer.png Vagrant上に入れたAdminerでデータベース操作をしようと思ったら以下のエラーが。

不正なCSRFトークン。再送信してください
まあセッションの権限に問題あるよねということで調べると、セッションディレクトリ「/var/lib/php/session」の権限は以下のようになってました。
Access: (0770/drwxrwx---)  Uid: (    0/    root)   Gid: ( 1000/ apache)
WordPressなど共有ディレクトリの権限問題を解決するために、このローカルサーバのApacheは、
User: vagrant
Group: vagrant
で動いています。 途中で変えたので、このセッションディレクトリのように権限が上手く行っていない場所があるんですね。なるほど。

続きを読む

Vagrant のゲストOSに任意のユーザーでSSH接続する【#np2020】

vagrant.pngのサムネイル画像 なんか地味にハマったのでメモがてら。 デプロイのテスト用サーバをローカルに用意しようと思ってVagrantインスタンスを立ち上げたんだけど、実運用上のログインユーザーは「vagrant」ではないので、ローカルでも基本的に実運用上のログインユーザー(例えば「webuser」)でログインするようにしたい。「vagrant」でログインして変更しても別に良いんだけど、面倒なので。 手順は以下の通り。

  1. ゲストOSでユーザーを作成する
  2. su が使えるようにする
  3. 秘密鍵・公開鍵を生成する
  4. 公開鍵をゲストOS上に配置する
  5. パスワード無しでsudo出来るように設定する

続きを読む

【メモ】Vagrantのスナップショット機能の補足【#np2020】

vagrant Vagrant1.8以降ではスナップショット機能が使えます。 コマンドを打つだけでスナップショットの作成、復元が行えてとても便利です。

保存

$ vagrant snapshot save backup

復元

$ vagrant snapshot restore backup
詳しくはこちらの記事にまとまっているので参考にしてください。 Vagrant1.8で追加されたSnapshot機能のまとめ – Qiita

続きを読む

Vagrantで共有フォルダのマウントに失敗するときの対処方法(原因がGuestAdditionsでは無いとき)

vagrant.pngのサムネイル画像 いくつかVMを動かしていて一つだけ上手く動かない。 どうやら共有フォルダをマウントするときに失敗している様子。

manager: /vagrant => E:/project/ansible_manager
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: Protocol error
ログを見てわかるとおり、WindowsのフォルダをゲストのCentOSにマウントしたい。 Vagrantfileは以下の様に設定されていて、他のVMではきちんと動いているのになぜかこれだけ動かない。。
manager.vm.synced_folder "E:\\project\\ansible_manager", "/vagrant", owner: "vagrant", group: "vagrant", type: "virtualbox"

続きを読む

Vagrantで複数サーバー起動してAnsibleを動かしてみるテスト【#np2020】

ansible.png

業務では前任者が選定した「Chef」を使って環境構築を行っているのですが、色々調べるに最近は「Ansible」を使うのが主流っぽいので次のサーバではそれを使うことにしてみました。概念としては、管理用のサーバを1つ用意してそこにAnsibleの設定を書いておいて、そこでコードを実行することで、更新対象のサーバに一斉に設定を反映できる仕組み、という感じですよね。なにそれやばい。しかし見たことも触ったこともないのでいまいち設定や実行のイメージがつかめない。だったらまあ、簡単な環境を作ってハンズオン(体験学習ぐらいの意味)してみればいいんじゃない? やってみた。

続きを読む