みなさんこんにちは。
$ subjのスクリプトを共有したい。 おそらく誰かが便利だと思うでしょう。
問題声明:AWSには多数のEC2サーバーがさまざまな地域に散在しています。 リカバリを簡単かつ迅速に行うために、バックアップを自動化する必要があります。
実際、スクリプト自体:
ec2-automate-backup2ami.sh説明:
README.mdクラウンで実行するスクリプトラッパー:
ec2-backup-wrapper.shスクリプトを機能させるには、まず次のことを行う必要があります。
- ec2-api-toolsパッケージをインストールします(バージョン1.6.7.3があります)
- ec2-automate-backup2ami.shへのパスとログファイルを指定して、ラッパースクリプトを編集します。
- AWS IAMでバックアップ用の別のユーザーを作成し、同様のポリシーを割り当てます:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1389911824000", "Effect": "Allow", "Action": [ "ec2:CreateImage", "ec2:CreateSnapshot", "ec2:CreateTags", "ec2:DeleteSnapshot", "ec2:DeregisterImage", "ec2:DescribeRegions", "ec2:DescribeSnapshotAttribute", "ec2:ModifySnapshotAttribute", "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeSnapshots", "ec2:DescribeTags", "ec2:DescribeVolumeAttribute", "ec2:DescribeVolumeStatus", "ec2:DescribeVolumes" ], "Resource": [ "*" ] } ] }
- 作成されたユーザーのアクセスパラメータを使用してファイルを作成します。
[ec2-user@zenoss ~]$ cat .stage export AWS_ACCESS_KEY=access_key export AWS_SECRET_KEY=secret_key export AWS_ACCESS_KEY_ID=access_key export AWS_SECRET_ACCESS_KEY=secret_key
- EC2_HOMEを指定します
- バックアップが必要な各インスタンスにタグTrueのフラグを付けます
crontabは次のようになります。
[ec2-user@backup ~]$ crontab -l PATH=$PATH:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin EC2_HOME=/usr/local SHELL=/bin/bash 00 2 * * * ./ec2-backup-wrapper.sh stage "alerts1@mydomain.cc alerts2@mydomain.cc"
スクリプトの結果は、ec2-automate-backup2ami.stage.logの形式のログファイルに書き込まれます。 実行エラーが発生した場合、指定されたメールアドレスに送信されます。
パラメータを含むファイルが呼び出されることに注意してください
。 ステージ、およびスクリプトはドットなしの名前で呼び出されます。
正常に実行されると、ec2ab_server.domain.cc_YYYY-MM-DDという名前のイメージがAWS AMIに次のタグとともに表示されます。
- 名前 -EC2インスタンス名
- InitiatingHost-バックアップサーバーのFQDN
- PurgeAfterFE -UNIX時間形式のイメージの削除日
- PurgeAfter -YYYY-MM-DD形式のイメージの削除日(管理者の便宜のために、スクリプトはPurgeAfterFEを使用します)
- PurgeAllow-自動イメージ削除を許可します(デフォルトはtrueです)
- インスタンス -EC2 インスタンス ID
- 作成済み -YYYY-MM-DD形式のイメージの作成日
PSスクリプトは、
colinbjohnsonからの
ec2-automate-backup (地域による反復なしのEBSドライブのバックアップ)に基づいて作成されました。
PPS Mac OS / Xではおそらくスクリプトは正しく動作しません(get_purge_after_date()関数の4行目を参照)が、確認する方法はありません。
PPPSスナップショットを作成する前に、スクリプトはファイルシステムバッファーをフラッシュしないため、バックアップに一貫性がない場合があります。 一貫性のあるスナップショットを作成するには、
ec2-consistent-snapshotを使用することをお
勧めします
UPDバックアップ中に作成されたAMIイメージを他のリージョンに自動的にコピーする機能が追加されました。 このオプションを有効にするには、スクリプト起動のコマンドラインで
-yスイッチを指定し、対応するタグをインスタンス設定に追加します。 リージョンは、可能なすべてのバックアップから、または
-oスイッチ(区切り文字-スペース)を使用してコマンドラインで指定されたリストからランダムにバックアップを作成する前に選択されます。 つまり、1回のスクリプト実行ですべてのコピーが1つの領域に分類されます。
例:
/usr/local/bin/ec2-automate-backup2ami.sh -s tag -t "Backup=true" -k 14d -p -h -u -n -y "CopyRegion=true" -o "us-west-1 eu-west-1"
上記の例では、スクリプトは次のことを行います。
- 値がtrue(-s、-t)のBackupタグを持つすべてのインスタンスをバックアップします
- 13日以上前に作成されたバックアップを削除する(-k、-p)
- バックアップに異なる情報タグを追加します(-h、-u、-n)
- スクリプトの開始時にランダムに選択された2つのリストのいずれかにすべてのバックアップをコピーします(-y、-o)
リージョン名のリストは、
ec2-describe-regionsコマンドを使用して取得できます。
コピー後、コピーされたリージョンに対応する値を持つ
CopyRegionタグが元のAMIに追加されます。 そして、コピーされたAMIに対して、
SourceRegionタグはソース領域を識別します。