意図
MackerelのAgent、EC2にインストールするときの手順は公式にあるのですが、対象サーバが複数台あると面倒なので、Ansible使って一気にインストールとエージェントの起動までしたいなあ、と思いました。
やり方
手順を見る限り、
- シェルスクリプトでリポジトリを登録
- yumでインストール
- コマンドでAPIキーの設定
- エージェント起動
ぐらいなので、簡単なPlaybookを一つ書いてしまえば十分かなあと。
てなわけで、下記のようにしてみました。
軽くこちらを参考にしてます。
インベントリファイル
[web]
xxx.xxx.xxx.xxx
yyy.yyy.yyy.yyy
[all:vars]
ansible_ssh_user=ec2-user
ansible_ssh_private_key_file=/path/to/ec2.pem
webのところに該当のホストのIPまたはパブリックDNSを記載。
SSHユーザはデフォルトのec2-user
鍵を指定してSSHするなら該当のホストに対するSSHに必要な秘密鍵のパスを記載
オプションで指定するのが面倒なのでここに書いてますが、
とりあえずSSHが通ればなんでもいいです(適当)
そもそもSSHが通らないとAnsible使えないのと、本題とそれるので細かくは割愛
Playbook
下記のようにしてみました。
---
- hosts: all
become: yes
tasks:
- name: Import GPG Key
rpm_key: state=present key=https://mackerel.io/assets/files/GPG-KEY-mackerel
- name: Install mackerel repo(Amazonlinux)
yum: name=http://yum.mackerel.io/amznlinux/latest/x86_64/mackerel-repo-1-0.noarch.rpm state=present
- name: Install yum mackerel angent
yum: name=mackerel-agent state=present
- name: Configure /etc/mackerel-agent/mackerel-agent.conf
command: mackerel-agent init -apikey="<YOUR_API_KEY>"
- name: Start mackerel-agent
service: name=mackerel-agent state=started enabled=yes
インストール手順中にあるシェルスクリプトの中身ですが、
- MackerelのドメインからGPGキーをダウンロードしてインポート
- rpmコマンドでリポジトリ追加
を行っているだけでした。前半の2つのタスクがそれに該当します。
シェルスクリプトそのまま使っても良かったんですが、
既にリポジトリを追加済みだった場合、
シェルスクリプトがエラーを返してしまいそこでfailedになってしまうので、
同様のことをPlaybookで行うこととしました。
rpm_keyモジュールでGPGキーのインポートができて、
yumモジュールでリポジトリ追加ができるとのことなので、そちらで行いました。
Ansible本当に便利だなあ…。
<YOUR_API_KEY>
のところは自分のAPIキーに置き換えてください。
あとは
ansible-playbook -i hosts Mackerel.yml
で行けるはずです。(hostsもMackerel.ymlもカレントディレクトリにある前提です。)
注意事項
AmazonLinuxでない場合URLが微妙に違ったりするので、Install mackerel repoのURLを変えないとダメだと思います。
RPMパッケージを使う場合(AmazonLinux以外)の手順は下記。
それ以外のところは公式サイトを。
https://mackerel.io/ja/docs/entry/howto/install-agent/rpm
何かあればご指摘くださると助かります。