Я больше не занимаюсь системным администрированием вручную. Я рассматриваю свою инфраструктуру как программируемый объект и отношусь к ней как к таковой, настраивая системы с помощью инструментов, автоматизирующих управление конфигурацией, обслуживание узлов EC2 и т. Д. Инструменты в моем наборе инструментов:
- Ruby (мой любимый язык сценариев / инструментов)
- Git (контроль версий)
- Повар Opscode (написанный на Ruby) (1)
- Capistrano (специальное массовое обслуживание)
- Инструменты Amazon EC2 API для поддержки экземпляров и изображений.
- Драгоценный камень AWS от RightCale (привязки Ruby для EC2)
(1) - Раскрытие, я работаю на Opscode. Другие инструменты заполняют это пространство, как «Кукольный» в «Редуктивной лаборатории»
Я связываю AMI, когда у меня есть узел, построенный так, как мне нужно для конкретной функции. Например, если я собираю сервер приложений Rails, я установлю все необходимые пакеты, чтобы сэкономить время на сборку.
Когда все остальное терпит неудачу, я вхожу в системы с SSH. Я много лет занимался ручным системным администрированием, это старая шляпа.
Используете ли вы какую-либо форму оконной системы и эквивалент удаленного рабочего стола для доступа к блоку, или это все из командной строки?
Я не устанавливаю никакой графический интерфейс на серверах, если пакет не имеет зависимости, а один автоматически устанавливается.
Есть ли эквивалент в этом в мире Linux? (передача файлов)
Я обычно делаю два типа передачи файлов / обслуживания файлов.
- Установка пакета
- Конфигурационные файлы
Для пакетов, встроенных в платформу, я использую стандартный инструмент управления пакетами, такой как APT или YUM. Для исходных установок (thing.tar.gz) я обычно скачиваю через wget.
Файлы конфигурации обычно представляют собой шаблоны ERB, управляемые Chef.
Я использую SSH и SCP / SFTP для передачи файлов вручную.
Вы вносите изменения в конфигурацию / скриптовые настройки прямо на машине? Или у вас есть что-то настроенное на вашем локальном ящике для удаленного редактирования этих файлов? Или вы просто редактируете их удаленно, а затем переносите их при каждом сохранении?
Я храню все, что связано с управлением системами, в репозитории программного обеспечения. Вот мой типичный рабочий процесс при обновлении конфигурации в одной или нескольких системах. Я начинаю с моей локальной рабочей станции.
- Извлеките из основного репозитория Git для других изменений.
- Редактировать файл (ы) локально (например, обновить файл конфигурации).
- Подтвердите изменение, нажмите, чтобы освоить.
- На сервере Chef (авторизованном через SSH) извлеките последние внесенные мною изменения.
- Разверните конфигурацию в соответствующем месте на сервере Chef (для этого я использую Rake).
- Клиенты Chef работают с интервалом, поэтому они будут получать изменения каждые 30 минут. Если мне что-то нужно немедленно, я запускаю chef-client вручную.
- Проверьте изменение!
Как вы перемещаете файлы назад и вперед между EC2 и вашей локальной средой? FTP? Какой-то Mapped Drive через VPN?
Есть несколько мест, где могут храниться файлы, которые я использую на узлах EC2.
- Шеф-сервер. Шаблоны конфигурации в основном, небольшие пакеты тоже.
- GitHub. Мы храним наш код (проекты с открытым исходным кодом) на GitHub. Узлы EC2 могут легко добраться до этого (например, для проверки последней версии чего-либо).
- Amazon S3 ведра. Некоторые вещи хранятся в ведре.
Я много работаю в EC2, в основном тестирую среды и изменения. Благодаря моим инструментам и рабочему процессу, я трачу больше времени на работу над тем, что мне действительно нужно, и меньше на работу с отдельными файлами и на размышления о конкретных конфигурациях.