この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
おはようございます、もきゅりんです。
あけましておめでとうございます。
今回は機会があって作ることになったMackerelエージェント導入済みAMIについてまとめておきます。
どなたか必要になった際にご活用頂ければと思います。
なお、ユーザーデータで同様の対応するものとしては下記があります。
MackerelエージェントをAuto Scaling環境へ導入する
前提となるPackerに関する詳しい図や概念の説明については古い記事なのですが、こちらをご確認下さい。
簡単にAMIを作ってくれるよ、というのがPackerです。
PackerでAmazon LinuxのAMI(Amazon Machine Image)を作成する
今回やること
- 最新のAmazon Linux2 に apache と Mackerelエージェントをインストール
- Auto Scaling環境で利用するための設定を行う
1 については、こちらの通り。
Amazon Linuxにmackerel-agentをインストールする
2 については、公式で記載されているとおりなのですが、以下の処理を行います。
Auto Scaling環境で使う - Mackerel ヘルプ
- ホスト起動時にホストステータスを
working
にする - ホスト縮退時に自動退役させる
なお、公式に記載されている /var/lib/mackerel-agent/id
を消すコマンドはあえて実行していません。記載すると、amazon-ebs: rm: cannot remove ‘/var/lib/mackerel-agent/id’: No such file or directory
と怒られます。Mackerelヘルプにも確認しましたが、Packerでエージェント起動して即停止するため、ホストIDを取得することなくシャットダウンするようです。
やってみる
しばらくPackerを触っていなかったので更新しておきます。
$ packer version
Packer v1.4.3
Your version of Packer is out of date! The latest version
is 1.5.1. You can update by downloading from www.packer.io/downloads.html
$ brew upgrade packer
==> Upgrading 1 outdated package:
packer 1.4.3 -> 1.5.1
Packerがお初のMacユーザの方はbrewでいけます。
$ brew update
$ brew install packer
下記ファイルを作成します。
# packer-apache-mackerel.json
{
"variables": {
"mfa_code": "000000"
},
"builders": [
{
"type": "amazon-ebs",
"ami_name": "apache-mackerel",
"region": "ap-northeast-1",
"source_ami_filter": {
"filters": {
"name": "amzn2-ami-hvm-*-x86_64-gp2"
},
"owners": ["137112412989"],
"most_recent": true
},
"instance_type": "t2.micro",
"ssh_username": "ec2-user",
"profile": "switch",
"mfa_code": "{{user `mfa_code`}}"
}
],
"provisioners": [
{
"type": "shell",
"inline": [
"sudo yum -y update",
"sudo yum -y install httpd",
"sudo systemctl start httpd && sudo systemctl enable httpd",
"curl -fsSL https://mackerel.io/file/script/amznlinux/setup-all-yum-v2.sh | MACKEREL_APIKEY='YOUR_MACKEREL_APIKEY' sh",
"sudo sed -i -e '/^#\\s*\\[host_status\\]/s/^#\\s*//' /etc/mackerel-agent/mackerel-agent.conf",
"sudo sed -i -e '/^#\\s*on_start\\s*=\\s*\"working\"/s/^#\\s*//' /etc/mackerel-agent/mackerel-agent.conf",
"sudo sed -i -e '/^#\\s*AUTO_RETIREMENT\\s*=\\s*1/s/^#\\s*//' /etc/sysconfig/mackerel-agent"
]
}
]
}
MACKEREL_APIKEY
はご自身の環境のAPIKEYを代入下さい。
とりあえず apache
をインストールしてますが、必要なミドルウェアにして下さい。
mfa仕様となっていますので、不要であれば該当箇所を削ってお使い下さい。
あとは下記叩いてAMIは出来上がりです。
packer build -var "mfa_code=123456" packer-apache-mackerel.json
以上です。
どなたかのお役に立てば幸いです。