読者です 読者をやめる 読者になる 読者になる

ようへいの日々精進XP

よかろうもん

EBS スナップショットから EC2 を復元するシェルスクリプトの例

ということで

以下のように OS と DATA で 2 つの EBS が繋がった EC2 でメンテナンスを行う際に、事前にスナップショットを取得しておくのだが、仮にメンテナンスに問題が発生した場合に、スナップショットから元の環境を復元する際に実行する処理をシェルスクリプトにしてみたのでメモしておきます。

f:id:inokara:20170122114857p:plain

なんばしよっと

スナップショット

まずは、以下のようなスクリプトでスナップショットを取得します。

gist.github.com

スナップショットを取得してから男は気づきました。そう、スナップショットには OS 上のデバイス情報が紐付いていない。

男は三日三晩悩みました...。そして、思いついたのがスナップショットのタグにデバイス名を書き込むことにしましたとさ。

$ for id in $(cat tmp/snapshot_ids); do aws ec2 describe-tags --filters "Name=resource-id,Values=${id}"; done
{
    "Tags": [
        {
            "ResourceType": "snapshot",
            "ResourceId": "snap-08xxxxxxxxxxxxxxxxx",
            "Value": "OS",
            "Key": "Name"
        },
        {
            "ResourceType": "snapshot",
            "ResourceId": "snap-08xxxxxxxxxxxxxxxxx",
            "Value": "/dev/sda1",
            "Key": "device"
        }
    ]
}
{
    "Tags": [
        {
            "ResourceType": "snapshot",
            "ResourceId": "snap-0xxxxxxxxxxxxxxxxx",
            "Value": "DATA",
            "Key": "Name"
        },
        {
            "ResourceType": "snapshot",
            "ResourceId": "snap-0xxxxxxxxxxxxxxxxx",
            "Value": "/dev/sdf",
            "Key": "device"
        }
    ]
}

アンサーソング(復元)

以下のアンサーソングスクリプトでスナップショットから EC2 を復元します。

gist.github.com

以上

waiter

待機中に何かメッセージを出せると良いと思いました。

メモでした

もっと良い方法がありそうですが、メモでした。