[小ネタ] PackerでAuto Scaling 用のMackerelエージェント導入済みAMIを作った
はじめに
おはようございます、もきゅりんです。
あけましておめでとうございます。
今回は機会があって作ることになった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
以上です。
どなたかのお役に立てば幸いです。