MackerelAgentをAnsibleでインストールする
こんにちわ、吉江です。
皆様はMackerelをご利用でしょうか?
今週の月曜日に200週連続リリースを達成し、進化が止まらないMackerelですが
今回はMackerelAgentをAnsibleでざっくりインストールしてみます。
用意するもの
- EC2インスタンス(AmazonLinux1を使用します)
サクッとやってみる
プレイブックを書きましょう
雑な作りになっている自覚はあります。(申し訳ございません) イメージとして頂ければと。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | --- - hosts: all become: yes environment: MACKEREL_APIKEY: '<APIキー>' tasks: # Mackerel-Agentインストーラーダウンロード - name: "Get Mackerel-Agent" get_url: dest: "/tmp/setup-all-yum.sh" # Mackerel-Agentインストーラー権限変更 - name: "Permission Mackerel-Agent" file: state: file path: /tmp/setup-all-yum.sh group: root owner: root mode: 0755 # Mackerel-Agentインストーラー実行 - name: "Install Mackerel-Agent" command: "/tmp/setup-all-yum.sh" # Mackerel-Agentサービス停止 - name: "Stopped Mackerel-Agent" service: name: mackerel-agent state: stopped # Mackerel-AgentホストID削除 - name: "HostID Delete" file: path: "/var/lib/mackerel-agent/id" state: absent # Mackerel-Agent_AutoRetirement有効(AutoScalingで使用される場合) - name: "AutoScaling_Action" lineinfile: state: present dest: /etc/sysconfig/mackerel-agent regexp: '^#\ AUTO_RETIREMENT=1' line: 'AUTO_RETIREMENT=1' |
各セクションずつ説明を書いてみます。
APIキーの変数化
MackerelAgentをインストールする際には環境変数にAPIキーを仕込んでおくことで、
セットアップスクリプトが環境変数からAPIキーをmackerelagent.confに書き込んでくれる模様です。
1 2 | environment: MACKEREL_APIKEY: '<APIキー>' |
Mackerel-Agentインストールタスク
ざっくり、mackerelのヘルプページにあるagentインストール方法をAnsibleで置き換えて記載しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # Mackerel-Agentインストーラーダウンロード - name: "Get Mackerel-Agent" get_url: dest: "/tmp/setup-all-yum.sh" # Mackerel-Agentインストーラー権限変更 - name: "Permission Mackerel-Agent" file: state: file path: /tmp/setup-all-yum.sh group: root owner: root mode: 0755 # Mackerel-Agentインストーラー実行 - name: "Install Mackerel-Agent" command: "/tmp/setup-all-yum.sh" |
ホストID削除
Mackerel-Agentはプロセス起動タイミングでホストIDを/var/lib/mackerel-agent/id
に生成します。
このホストIDごとにWebGUI側で管理が行われることからAMIを作成する際にこのホストIDファイルが存在していると
別インスタンスを起動した際にMackerel-Agentが起動失敗します。
1 2 3 4 5 6 7 8 9 10 11 | # Mackerel-Agentサービス停止 - name: "Stopped Mackerel-Agent" service: name: mackerel-agent state: stopped # Mackerel-AgentホストID削除 - name: "HostID Delete" file: path: "/var/lib/mackerel-agent/id" state: absent |
AutoScaling対応
mackerelは一度登録されたインスタンスは手動でリタイアメント(退役)を行う必要があります。
ですが、AWS EC2でAutoScalingによるスケールアウトを行うと、起動されるたびにインスタンスが増えることになり、
スケールインされた後も残り続けます。
この残り続けると最新の監視ホストが不明になることからMackerel-Agentのプロセス終了時に自動退役を行うよう、
AutoRetirementを有効にします。
1 2 3 4 5 6 7 | # Mackerel-Agent_AutoRetirement有効(AutoScalingで使用される場合) - name: "AutoScaling_Action" lineinfile: state: present dest: /etc/sysconfig/mackerel-agent regexp: '^#\ AUTO_RETIREMENT=1' line: 'AUTO_RETIREMENT=1' |
最後に
単純なプレイブックですが、本件を書き出してみました。
課題は多くあると思い、WindowsServerなどの他OSへの対応やAPIキーの秘匿化は
今後直さねばならない点として直していきたいと思います。