Скрипт для автоматизации создания и управления снимками 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 на вашем сервере, вот что вы можете сделать.

Этот скрипт не только создаст резервную копию с заданным интервалом, но и удалит снимки, которые были старше, чем указано.

  1. Откройте SSH соединение с вашим сервером.
  2. Перейдите в папку

    $ cd /usr/local/
    
  3. Клонировать эту суть в ec2 папка

    $ git clone https://gist.github.com/9738785.git ec2
    
  4. Перейти в эту папку

    $ cd ec2
    
  5. Делать backup.php исполнимый

    $ chmod +x backup.php
    
  6. Открытые выпуски проекта AWS PHP SDK github и скопируйте URL aws.zip кнопка. Теперь загрузите его на свой сервер.

    $ wget https://github.com/aws/aws-sdk-php/releases/download/2.6.0/aws.zip
    
  7. Распакуйте этот файл в aws каталог.

    $ unzip aws.zip -d aws 
    
  8. редактировать 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";
    
  9. Попробуй это. Запустите этот скрипт

    $ ./backup.php
    

    Тест снимок был создан.

  10. Если все в порядке, просто добавьте cronjob.

    * 23 * * * /usr/local/ec2/backup.php
    
Другие вопросы по тегам