koukiblog

たぶんweb系の話題

mackerel-agentをchefでamazon-linuxにインストールするとエラーになった件

公式の手順にあるようにchefのcookbookを利用してインストールすると、サービスの起動時にエラーになる。

mackerel.io

エラーの内容は以下

Starting mackerel-agent:/etc/init.d/mackerel-agent: 36 :  7214 Trace/breakpoint trap   $BIN ${APIBASE:+--apibase=$APIBASE} ${APIKEY:+--apikey=$APIKEY} --pidfile=$PIDFILE --root=$ROOT $OTHER_OPTS >> $LOGFILE 2>&1

結論:
最新版(v1.2.1)を利用する

cookbook 'mackerel-agent', tag: 'v1.1.0'

ではなく

cookbook 'mackerel-agent', tag: 'v1.2.1'

以下調べた履歴

mackerel.io
で、Amazon Linux AMI 2016.03での不具合が報告されているものの、修正済みのはず。

試しにchefではなく公式の手順で手動でインストールしてみると問題なくインストールできる。
手順は下記の内容
mackerel.io

この手順で入るってことは、何か別のものをインストールしているのかも?ってことで公式の手順にある "https://mackerel.io/file/script/amznlinux/setup-yum.sh"の内容を確認してみると

# import GPG key
  gpgkey_path=`mktemp`
  curl -fsS -o $gpgkey_path https://mackerel.io/assets/files/GPG-KEY-mackerel
  rpm --import $gpgkey_path
  rm $gpgkey_path

  # add config for mackerel yum repos
  rpm -ivh http://yum.mackerel.io/amznlinux/latest/x86_64/mackerel-repo-1-0.noarch.rpm

となっていて、amazon linux用のレポジトリを用意している様子。
一方chefのrecipeは

if platform?('centos') or platform?('redhat') or platform?('amazon')
~
yum_repository "mackerel" do
    gpgkey gpgkey_url if yum_cookbook_ver >= Gem::Version.new('3.0.0')
    description "mackerel-agent monitoring"
    url "http://yum.mackerel.io/centos/$basearch"
    action :add
  end

となっていて、これが原因だった。

"http://yum.mackerel.io/centos/$basearch"を"http://yum.mackerel.io/amznlinux/$releasever/$basearch"に書き換えたところ問題なく動作した。

そしてここまでたどり着いたところで、最新のレポジトリでは対応済みなことに気づいた。。
Support Amazon Linux repo · mackerelio/cookbook-mackerel-agent@499d779 · GitHub