Mackerel で mkr を使用した CLI 操作の続きです。
ホスト一覧取得と退役操作を行います。
hosts
ホスト一覧を取得します。ホストを対象とする操作を行う際のidを抽出する為に使用します。
オプション
オプション |
ロングオプション |
説明 |
-n |
--name |
ホスト名で検索。 完全一致。 |
-s |
--service |
サービス名で検索 |
-r |
--role |
ロール名で検索。複数指定可。 サービス未指定だと無視。 |
-st |
--status |
ステータスで検索。複数指定可。デフォルト working もしくは standby。 |
-f |
--format |
出力フォーマット指定 |
-v |
--verbose |
詳細表示 |
-f | --format
READMEを参照すると以下の様な指定方法のようです。mkrはjqと組み合わせて使う事が多いので、固有の指定方法ではなく、jq側でフォーマット調整をすることになりそうです。
mkr hosts -f '{{range .}}{{if (len .Interfaces)}}{{(index .Interfaces 0).IPAddress}}{{end}}{{"\t"}}{{.Name}}{{"\n"}}{{end}}'
id 抽出
READMEを真似て id を抜き出してみると以下のようになります。
$ mkr hosts -f '{{range .}}{{.ID}}{{"\n"}}{{end}}'
XXXXXXXXes1
XXXXXXXXWNU
XXXXXXXXAJd
・・・略・・・
素直に jq 使用
私はjqの方が慣れているのでこちらを使用すると思います。
mkr hosts | jq -r '.[].id'
-v | --verbose
オプション無し
$ mkr hosts -n ip-172-31-3-172
[
{
"id": "XXXXXXXX37m",
"name": "ip-172-31-3-172",
"status": "working",
"roleFullnames": [
"test:testrole"
],
"isRetired": false,
"createdAt": "Mar 23, 2016 at 4:39pm (JST)",
"ipAddresses": {
"eth0": "172.31.3.172"
}
}
]
オプション有り
オプション無しの出力と出力形式が変わり、CPUやメモリ情報が追加されます。
createAt はUNIXTIMEになるのでスクリプト等で使用する場合はこちらの方が扱い易いと思います。
$ mkr hosts -n ip-172-31-3-172 -v
[
{
"id": "XXXXXXXX37m",
"name": "ip-172-31-3-172",
"type": "unknown",
"status": "working",
"roles": {
"test": [
"testrole"
]
},
"createdAt": 1458718748,
"meta": {
"agent-revision": "7d278aa",
"agent-version": "0.30.0",
"block_device": {
"loop0": {
"removable": "0",
"size": "0"
},
・・・略・・・
"ram0": {
"removable": "0",
"size": "131072"
},
・・・略・・・
"xvda": {
"removable": "0",
"size": "16777216"
}
},
"cpu": [
{
"cache_size": "25600 KB",
"core_id": "0",
"cores": "1",
"family": "6",
"mhz": "2500.066",
"model": "62",
"model_name": "Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz",
"physical_id": "0",
"stepping": "4",
"vendor_id": "GenuineIntel"
}
],
"filesystem": {
"/dev/xvda1": {
"kb_available": 5.8507e+06,
"kb_size": 8.115168e+06,
"kb_used": 1.829192e+06,
"mount": "/",
"percent_used": "24%"
},
・・・略・・・
},
"kernel": {
"machine": "x86_64",
"name": "Linux",
"os": "GNU/Linux",
"release": "3.13.0-48-generic",
"version": "#80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015"
},
"memory": {
"active": "474800kB",
"anon_pages": "55116kB",
"bounce": "0kB",
"buffers": "136852kB",
"cached": "482840kB",
・・・略・・・
"writeback": "0kB"
}
},
"interfaces": [
{
"name": "eth0",
"ipAddress": "172.31.3.172",
"macAddress": "00:00:00:00:00:7d"
}
]
}
]
retire
ホストの退役を行います。
オプションは --force のみで、違いは y/n プロンプトの有無です。
USAGE:
mkr retire hostIds...
オプション有無
オプション未指定では y/n を聞いてきます。
# forceオプション無
$ mkr retire XXXXXXXXCVE
Retire following hosts.
XXXXXXXXCVE
Are you sure? (y/n) [y]: y
retired XXXXXXXXCVE
# forceオプション有
$ mkr retire --force XXXXXXXXHwG
retired XXXXXXXXHwG
キャンセル (n押下)
明示的に "n" を指定しないと、 "y" を指定した際と同じ動作です。
# n 押下でキャンセル
$ mkr retire XXXXXXXX1N5
Retire following hosts.
XXXXXXXX1N5
Are you sure? (y/n) [y]: n
retirement is canceled.
# n 以外押下だと y 押下と同様に削除
$ mkr retire XXXXXXXX1N5
Retire following hosts.
XXXXXXXX1N5
Are you sure? (y/n) [y]:
retired XXXXXXXX1N5
スペース区切りで複数指定が可能です。
% mkr retire XXXXXXXXUmG XXXXXXXXrdm
Retire following hosts.
XXXXXXXXUmG
XXXXXXXXrdm
Are you sure? (y/n) [y]:
retired XXXXXXXXUmG
retired XXXXXXXXrdm
PowerOffを全てretire
hosts コマンドから id を抽出して削除する例です。
mkr retire --force $(mkr hosts --status poweroff | jq -r '.[].id' | tr '\n' ' ')
ホストの退役はWeb画面上からだと1ホストずつしか行えないため、一括退役をさせる場合に非常に便利です。
おそらく次回に続きます