Скрипт для автоматизации создания и управления снимками EC2 EBS
Каков наилучший способ автоматизировать (ежедневные) снимки моих томов EBS (2) и управлять ими.
Под "управлением" я подразумеваю, что я ищу сценарий, который не только будет создавать ежедневные резервные копии (я предполагаю, что будет задействована работа cron), но также будет удалять снимки, которые старше x дней, чтобы избежать чрезмерного использования данных.,
Я верю, что такие сценарии существуют где-то там, но я не могу их закрепить.
Ty
4 ответа
Я уверен, что есть другая реализация этого вида скрипта, но вот моя:
http://www.capsunlock.net/2009/10/deleting-old-ebs-snapshots.html
Я использовал аналогичный инструмент с открытым исходным кодом на http://awsmissingtools.com/ - инструмент "ec2-automate-backup" при следующем запуске: "ec2-automate-backup -s tag -t Backup-true -k 14 -p"создаст резервную копию всех томов EBS с тегом Backup=true и настроит удаление этих снимков по истечении -k дней - вы можете сохранять снимки в течение 14 дней с помощью -k 14 или сохранять снимки в течение всего года с помощью -k 365,
Я сталкивался со многими людьми, которые искали инструмент для администрирования снимков EBS. Я нашел несколько инструментов в Интернете, но они были просто сценариями и неполными решениями. Наконец я решил создать программу более гибкую, централизованную и простую в администрировании.
Идея состоит в том, чтобы иметь централизованную программу для управления всеми снимками EBS (локальными для экземпляра или удаленных пользователей).
Я создал небольшую Perl-программу, https://github.com/sciclon/EBS_Snapshots
Некоторые функции: * Программа работает в режиме демона или скрипта (crontab)
Вы можете выбрать только локальные подключенные тома или пульты.
Вы можете определить файл журнала
Вы можете определить для каждого объема количество снимков
Вы можете определить для каждого тома частоту среди них
Частота и количество будут работать как "циклический перебор", когда он достигнет предела, удаляя самый старый снимок.
Вы можете перенастроить за один шаг то количество, которое я имею в виду, если у вас есть 6 снимков, и вы изменили количество в 3, процесс перенастроит его автоматически.
Вы можете определить выполнение "предзаказа". Вы можете добавить свой код для выполнения перед выполнением снимка, например, вы хотели бы попытаться отключить том или остановить какой-либо сервис, или, возможно, проверить загрузку экземпляра. Родительский процесс будет ожидать код выхода, "0" означает успех, вы можете определить, продолжить или нет, в зависимости от кода выхода.
Вы можете определить выполнение "postscript" для выполнения любого сценария после создания снимка (например, по электронной почте с сообщением об этом)
Вы можете добавить "Защищенные снимки", чтобы пропустить определенный снимок, я имею в виду, что они будут "только для чтения" и никогда не будут удалены.
Вы можете перенастроить скрипт "на лету", когда он работает в режиме демона, скрипт принимает сигналы и IPC.
Он имеет локальный кэш, чтобы не запрашивать API несколько раз. Вы можете добавить или изменить любую конфигурацию в файле конфигурации и перезагрузить ее, не прерывая процесс.
Я столкнулся с той же проблемой. В результате я создаю специальный скрипт. Если у вас установлен PHP на вашем сервере, вот что вы можете сделать.
Этот скрипт не только создаст резервную копию с заданным интервалом, но и удалит снимки, которые были старше, чем указано.
- Откройте SSH соединение с вашим сервером.
Перейдите в папку
$ cd /usr/local/
Клонировать эту суть в
ec2
папка$ git clone https://gist.github.com/9738785.git ec2
Перейти в эту папку
$ cd ec2
Делать
backup.php
исполнимый$ chmod +x backup.php
Открытые выпуски проекта AWS PHP SDK github и скопируйте URL
aws.zip
кнопка. Теперь загрузите его на свой сервер.$ wget https://github.com/aws/aws-sdk-php/releases/download/2.6.0/aws.zip
Распакуйте этот файл в
aws
каталог.$ unzip aws.zip -d aws
редактировать
backup.php
PHP-файл и установить все настройки в строке5-12
$dryrun = FALSE; $interval = '24 hours'; $keep_for = '10 Days'; $volumes = array('vol-********'); $api_key = '*********************'; $api_secret = '****************************************'; $ec2_region = 'us-east-1'; $snap_descr = "Daily backup";
Попробуй это. Запустите этот скрипт
$ ./backup.php
Тест снимок был создан.
Если все в порядке, просто добавьте cronjob.
* 23 * * * /usr/local/ec2/backup.php